효율적인 줌 조정 알고리즘

아이폰에서 보통 두개의 손가락으로 줌을 조정할 때가 있다. 이때 핀치 스케일이라는 변수를 함수에서 던져준다. pinch.scale 이 값이 보통 0.0 ~ 5.0 정도 나오는거 같다. 로그를 찍어보니 그렇다. 내가 하고 싶은 건 1.0 미만은 1.0으로 고정하고 4.0 이상은 2.0으로 고정하되 나머지 값은 배율로 정하기로 했다. 보통 일단 이렇게 구성한다. if pinch.scale < 1.0 {     zoomFactor = 1.0 } else if pinch.scale > 4.0 {     zoomFactor = 2.0 } else {     zoomFactor = ((pinch.scale - 1.0) / 3) + 1.0 } 이것도 잘 돌아간다. 좀 더 짧고 잘 돌아가게 할 수 없을까? zoomFactor = max(1.0, min(((pinch.scale - 1.0) / 3) + 1.0, 2.0) 이렇게 하면 한줄로 표시된다. 하지만 코드 추적하기 어렵다. 뒤에 오는 사람을 위해 좀 더 알아보기 쉽게 한줄 더 쓰자 let scale = ((pinch.scale - 1.0) / 3) + 1.0 zoomFactor = max(1.0, min(scale, 2.0) 이렇게 하면 보기 쉽고 깔끔한거 같다. 뭐 정답은 없지만... 눈길을 걸을 땐 발자국이 잘 찍히는지 확인하면서 가자. 뒤에 오는 사람을 위해서... 그 걸음이 쌓이면 길이 될테니까....,

Android java 에서 YouTube Player 구동할 때 youtube 플레이어를 초기화하는 중에 오류가 발생했습니다 오류 나올 때

안드로이드 스튜디오에서 자바로 개발할 때이다. 유튜브 플레이어를 붙이는데 많이 번거롭다. 아이폰 보다 더 번거롭다. 일단 jar 파일을 수동으로 인포트 하고 구동하는데 오류가 난다. 오류내용 : youtube 플레이어를 초기화하는 중에 오류가 발생했습니다 수정 방법은 다음과 같다. AndroidManifest.xml 파일에 다음을 추가하면 된다. <queries> <intent> <action android :name ="com.google.android.youtube.api.service.START" /> </intent> </queries> <application  위에 넣으니까 잘된다.

루트로 알수 없는 아이피 접속되어 있을 때

  테스트용으로 운영하는 서버에 $ netstat -an | grep EST | more 로 확인해보니 이상한 IP 가 연결되어 있어서 확인 했더니 중국 산동성이네.. 심지어 루트로 접속 되어 있음... $ sudo lsof -I TCP:22 로 PID 찾아내어 제거하고 포트 변경하고 비밀번호 변경하였음. 비밀번호가 뚫린건 아닌거 같은데... 뭐지... 프로세스를 좀 추적해보니 걍 접속만 되어 있던데.. git 소스 받은데서 뭔가 연결되어 있다가 안 끊어진건가? 그 아이피가 텐센트 클라우드로 나오긴 하덴데.... 암튼 기본 포트 변경하고 $ sudo ufw enable 다시 한번 더 설정하고 확인하니 없어졌음.

맥북 프로 2019 몬터레이로 올리고 테더링 안되는 문제 해결 방법

맥북 프로 2019를 사용하다 발열 때문에 빅서로 다운그레이드를 사용중이었다. 하지만 갑자기 충전이 되지 않는다. 업그레이드를 해야 한다고 권고를 하여 다시 몬터레이로 업그레이드를 하였다. 이제는 테더링이 되지 않는다. 그래도 USB 테더링은 되었었다. 블루투스 테더링만 되지 않았다. 자료를 찾아보니 꽤 된 오류인데 조치를 취하지 않나보다. NVRAM을 초기화 하면 된다고 해서 한번 시도 했더니 이제 USB 테더링이 되지 않는다. HoRNDIS-9.2.pkg 파일을 다운 받아서 노트북에 넣고 다시 설치했으나 역시나 되지 않는다. 복구 모드로 부팅 한 후 터미널에서 # csrutil disable 명령어로 무슨 모드를 끈다. 이거 다시 올리면 USB 테더링 되지 않는다. 이 상태로 사용해야겠다.

맥북에서 안드로이드 스튜디오 오류(Missing essential plugin) 조치 방법

이미지
 맥북에서 안드로이드 스튜디오 오류가 난다. 오류 내용은 위와 같다. 검색한 결과 disabled_plugins 파일을 찾아서 지우라고 하는데 아무리 찾아도 나오지 않는다. 한참을 헤메이다가 터미널에서 아래와 같은 명령어로 찾으니 나온다. 이렇게 찾은 폴더로 터미널에서 이동하니 찾아진다. 그곳에서 해당 파일을 삭제 후 실행하니 구동이 되고 소스도 잘 열린다. 아마도 파인드에서 찾으려고 해서 나온 문제인거 같다. 파인드에서는 라이브러리가 기본적으로 보이지 않아서 나오고 터미널에서도 ls -al 명령어로는 해당 파일이 보이지 않는거 같다. 암튼 이 방법으로 해결이 되어서 다행이다.

맥북 2019 전원 케이블 충전 안됨

 맥북 2019를 사용중이다. 잘 사용하다 노트북 발열이 심하고 종료하기 전에 너무 뜨거워서 인텔시퓨 마지막 버전인 빅서로 다운그레이드 하여 사용하고 있다. 하지만 어느 날부터인가 전원 케이블로 충전이 되지 않는다. 물론 전원 케이블은 정품을 사용 중이다. 그 전원 케이블을 휴대폰에 꼽으면 충전이 잘된다. SMC 를 초기화 하면 된다고 하여 시도하였지만 마찬가지였다. 최신 버전으로 업그레이드 하면 해결된다는 말이 있어서 어쩔 수 없이 최신 버전으로 업그레이드를 하게 되었다. 결과는 충전 잘 된다. 하지만 예전처럼 다시 발열이 날까봐 걱정이지만 아직까지 순항중이다. 걍 몬터레이에 적응을 해야 하나보다.

Oracle 9i 에 node로 connect하는 방법

 node koa  를 활용하여 Oracle 9i 에 접속하는 방법이다. 최신의 오라클은 접속이 잘 되지만 오래된 버전은 접속하는 방법 찾기가 어려웠다. 구형 데이터베이스인 오라클 9i 버전을 운영중인데 이를 EAI 도구를 통해서 동기화 하는데 너무 오래 걸리고 자꾸 죽어서 노드를 활용하여 데이터베이스 내용을 동기화 할 예정이다. https://oracle.github.io/node-oracledb/INSTALL.html#instzip 오라클 정식 매뉴얼은 위와 같다. 여기 순서대로 설치 했더니 ORA-03113 오류가 난다. 많은 자료를 찾아본 결과 instanctclient 11.2 버전을 설치하면 된다고 한다. 위 매뉴얼대로 하면 11 버전도 설치된거 같은데 아닌가 보다. 난 zip 파일로 압축된 파일을 받아서 /opt/oracle/ 폴더 밑에 이동시켰다. 그런 다음 다음과 같은 명령어를 실행했다. $ sudo sh -c "echo /opt/oracle/instantclient_11_2 > /etc/ld.so.conf.d/oracle-instantclient.conf" $ sudo ldconfig 이 명령어를 친 다음에 node app.js 파일에 연결하고 간단한 질의문을 실행 했더니 결과가 나왔다. 괜히 다른 설정을 찾는다고 많은 시간을 허비한거 같다. 처음부터 버전을 맞추었다면 시간을 절약할 수 있었을 거 같다.