아이폰에서 LTE(셀룰러) 데이터 소모량 줄이는 방법

평소 와이파이가 되는 지역에서만 핸드폰을 사용해서 데이터에 신경쓰지 않았었다. 그런데 기본제공 데이터를 모두 사용했다는 문자가 왔다. 그래서 우선 리필쿠폰을 사용해서 데이터를 충전하고, 폰을 살펴봤다.

어떤 앱에서 많이 사용했는지 확인했다. 그렇지만 너무 오랫동안 데이터가 쌓여서 어디가 문제인지 확인하기가 어려웠다.

20170411-아이폰 설정 화면-셀룰러2.PNG

그래서 통계 재설정을 했다.

20170411-아이폰 설정 화면-셀룰러.PNG

그리고 하루동안 사용을 하고 확인을 했다.

카카오톡이나 트위터, 사파리 같이 자주 사용하는 앱이 상위권을 차지했는데, 이런건 이해가 됐다. 그러나 “시스템 서비스”에서 특히 “시간 및 위치”에서 꽤 많이 차지하고 있었다. 위 사진에서는 문제를 해결하고 난 후라서 14.4MB이고, 문자게 있을 당시는 수백메가였다. 앱을 사용하지 않는데도 GPS를 많이 사용하는 것으로 생각했다.

20170411-아이폰 설정 화면-위치서비스.PNG

그래서 위치 서비스 설정에 들어갔다. 항상으로 되어 있는게 많은데, 이런 것들이 앱을 사용하지 않아도 GPS를 사용하는 것으로 보였다. 그래서 사용하는 동안으로 설정을 변경했다.

그리고 시스템 서비스에서도 “나의 iPhone 찾기”를 제외하고, 모두 비활성화했다.

추가로 필요없는 푸시 알림 메시지를 모두 껐다.

20170411-아이폰 설정 화면-알림.PNG

백그라운드 새로고침 기능은 전혀 필요없어서 모든 앱을 비활성화했다.

20170411-아이폰 설정 화면-백그라운드 앱 새로고침.PNG

이정도 설정을 하니 확실하게 LTE 소모량이 크게 줄었다.

서브라임텍스트 사용 팁

서브라임텍스트에서 자주 사용하고, 유용한 팁을 정리했다.

Word Wrap(워드랩)

에디터를 사용하다보면 사이드바를 늘리고, 레이아웃을 4분할을 쓰게 되면 코딩영역이 작아져서 가로 스크롤이 생겨 불편한 경우가 있다. 이 때 메뉴에서 워드랩을 설정해 불편함을 없앴 수 있다.

가이드 라인도 워드랩에 맞게 설정한다.

현재 줄을 위 아래로 이동하는 방법

단축키:

블럭을 지정해서 블럭단위로 위 아래로 이동할 수도 있다.

정렬하는 커맨드

커맨드 팔레트에서 다음 커맨드를 통해 정렬 기능을 사용할 수 있다.

  • Shffle : 랜덤
  • Sort : 오름차순
  • Reverse : 내림차순
  • Unique : 중복 제거

다음 예제로 블럭을 지정한 후 테스트할 수 있다.


레이아웃 분할

단축키 :

숫자키 기능
1 단독창
2 Column 2개
3 Column 3개
4 Column 4개
5 Grid
8 (윈도 전용) Row 2개
9 (윈도 전용) Row 3개

라인 단위로 쪼개기

단축키:

메뉴:

또 하나의 팁. 선택 후 “ 또는 { 를 입력하면 선택영역이 해당 문자로 감싸게 된다.

라인 지우기

현재 라인에서 커서 이후로 모두 지운다.

단축키:

현재 라인에서 처음부터 커서까지 모두 지운다.

커맨드 팔렛트 실행

함수 리스트 보기

파일명으로 찾기

새창으로 서브라임 띄우기

아이콘을 만들 때 다음 옵션을 줘서 이미 열려진 서브라임텍스트 외에 추가로 빈 에디터를 띄울 수 있다.

선택 대문자로 바꾸기

선택된 단어를 모두 찾아 선택하기

단축키:

해제는 ESC 또는 위 단축키를 다시 누르면 된다.

CR/LF 변환하기

최근 프로젝트 삭제 방법

다음 파일 수정:

(윈도)

(OSX – Sublime Text 2)

(OSX – Sublime Text 3)

Supervisor. 프로세스 관리, 로그 확인

supervisor는 유닉스 계열의 시스템에서 여러 프로세스를 모니터링하고, 제어하는 프로그램이다.

여러 프로젝트를 진행할 때, 개발서버를 환경에 따라 매번 세팅해야 했다.이 프로젝트는 이 개발서버, 저건 저 개발 서버, 프로젝트가 많아지면서 개발서버가 분산되어 관리하기가 어려워져갔다. docker로 로컬 PC에서 환경을 돌려서 꽤 오랫동안 정착했었지만, 몇몇 문제점이 나타나게 됐다.

윈도 환경이라 docker-machine을 올리려면 Virtualbox를 써야 하는데, 리소스가 부족한 경우가 많이 발생했다. 보안 업데이트 때문에 재부팅하면 docker-machine 올리고, 컨테이너 올리고, 프로세스를 실행하는 작업을 해줘야 했는데, 꽤 귀찮았다. 그리고 개발할 때는 컨테이너가 실행되고, 자동으로 프로세스가 뜨도록 세팅하지 않아야 할 경우도 많았다.

그래서 원격의 한 개발서버에서 모든 프로젝트를 작업할 수 있게 환경을 만들었다. 이 때, Supervisor를 사용해서 스위치 on/off 하는 방식으로 프로세스를 관리하며 작업을 할 수 있게 만들었다.

Supervisor 설치하기 :

python 모듈이라서 간단하게 설치할 수 있다.

이제 설정파일을 어떻게 작성하는지 보겠다.

예:

기존 설정파일 다른 부분은 수정하지 않고, 다음과 같이 파이선 프로그램을 추가했다.

설명
command 어떤 커맨드를 실행할지 정의
directory 어떤 디렉토리에서 실행할지 정의
autostart supervisor 데몬이 시작할 때 이 프로세스도 같이 실행할지 정의

이번에는 supervisorctl로 프로세스 관리하는 방법을 알아볼 것이다.

이렇게 실행하면 REPL 상태가 된다. 여기서 각종 커맨드를 사용할 수 있다. 위 예에서는 python 프로세스 3개, webpack 프로세스 1개, 파일 동기화 하는 프로세스 1개를 보여주고 있다.

현재 다음과 같은 프로세스를 사용하고 있다.

  • node.js(gulp + webpack 포함) : 프론트엔드, 백엔드 개발
  • nginx : lua 개발
  • elasticsearch
  • python(flask, zeromq, …)
  • php-fpm

mysql이나 apache 등도 foreground로 실행하도록 추가하면 되지만 이미 서비스스크립트가 있어서 따로 등록하지 않았지만 이들도 supervisor를 통해 관리할 수 있다.

production 환경에서도 사용하면 supervisor를 통해 로그를 볼 수 있고, 프로세스를 관리할 수 있어서 편할 것 같다. 그 전에 production에 사용한 사례가 있는지 확인은 필요할 것 같다.

Elasticsearch 1.0.0 설치와 사용방법

Elasticsearch와 관련해서 참고할 만한 내용을 기록했다. 오래된 프로젝트를 다시 세팅하면서 썼고, Elasticsearch 버전은 1.0.0이다.

설치하기

우선 Elasticsearch 다운로드 페이지에서 파일을 다운로드 받는다.

기본

Query String Query

Query String Query 관련 공식페이지

쿼리 문자열은 단어와 연산자의 연속으로 이뤄진다.

기본 형태는 다음과 같다. QUERY_STRING_SYNTAX라고 되어 있는 부분에 쿼리를 사용할 수 있다.

Query String 문법 기본:

이런식으로 복잡한 쿼리도 사용할 수 있다.

allow_leading_wildcard 옵션은 *이나 ?를 첫 번째 문자로 허용여부를 설정할 수 있다. 기본값은 True다. 정규식에서는 이 옵션의 영향을 받지 않는다. 다음과 같은 쿼리는 Elasticsearch가 인덱스의 모든 단어를 강제로 찾게한다.

analyze_wildcard 옵션은 기본적으로 검색어에 있는 와일드카드를 분석하지 않는다. 세팅을 true로 하면 와일드카드를 분석하려고 최대한 노력하게 된다.

토큰화와 관련해서 검색시 주의할 점

예를들어 다음과 같은 데이터가 있다.

f_name이 AcroRd32라는 단어와 VV11.0.14.16VV라는 단어가 모두 포함된 경우를 찾으려고 했다. 그래서 이런식으로 검색하면 될 줄 알았다.

안된다. 표준 토크나이저로 토큰화되므로 필드의 본래의 텍스트에 검색을 하는 것이 아니라 토큰화된 단어를 검색한다. 따라서 다른 토크나이저로 변경할 필요가 있다.

스냅샷과 스냅샷을 통한 복원

공식 페이지 문서

스냅샷 저장소를 만들고, 현재 상태를 스냅샷해서, 저장소 디렉토리에 보관이 되고, 이것을 다른 클러스터에서 복원할 수 있다.

Reroute

위에서 다른 클러스터로 복원했을 때, 리플리케이션과 샤드 세팅이 다르면 Unassigned 상태가 된다. 이런 경우 Unassigned 상태를 정상적인 상태로 만들고 싶을 때 reroute를 사용한다. reroute 커맨드는 클러스터가 reroute 할당 명령을 실행하도록 해준다.

스냅샷 했던 서버의 상태:

  • replication : 5
  • shard : 2

복원 할 서버 상태:

  • replication : 0
  • shard : 1

index를 만들지 않은 상태에서 복원해서 그럴 수도 있는데, 그건 테스트 하지 않았다.

Javascript 개발 노트

Javascript로 개발하면서 자주 사용하는 내용을 정리했다.

이벤트

마우스 관련 :

이벤트 핸들러 설명
onmouseenter 포인터가 한 요소로 이동될 때 발생
onmouseleave 포인터가 요소의 바깥으로 나갈 때 발생
onmousemove 요소 위에서 포인터가 움직일 때
onmousedown 요소에서 마우스 버튼을 눌렀을 때 발생
onmouseup 요소위에서 마우스 버튼을 눌렀을 때 발생(release)

자주 사용하는 이벤트 메소드 :

이벤트 핸들러 설명
e.preventDefault() 기본 기능이 동작하는 걸 막는다.
e.stopPropagation() 부모 노드 방향으로 이벤트가 전파되지 않도록 한다.

배열

map

template (ES6)

유용한 객체

ES6 Generator 예제

Generator는 빠져나갔다가 나중에 다시 돌아올 수 있는 함수다.

파일 업로드 처리 하는데, 동시에 처리하는 파일의 갯수를 제한할 필요가 있었다. while과 setInterval 조합으로 처리하려다가 좀 더 세련되고, 최근 기술을 사용하고 싶어서 Generator를 사용했다.

1번 예제는 써도 괜찮지만 2번 예제는 보완이 필요해 보인다.

비동기 함수를 순차적으로 실행하는 예제

다음은 Generator를 사용해서 비동기 함수를 순차적으로 실행하는 간단한 코드다.

동시에 10개씩 처리하는 예제

이번에는 10개씩 동시 처리하는 예제다.

윈도 배치파일에서 자주 사용하는 코드

윈도에서 배치파일 작업을 하면서 자주 사용하는 코드를 정리했다.

변수 정의하고 사용하기

새창으로 실행

인자 받아오는 변수

test.bat:

다음과 같은 결과를 보인다.

For문

bat 파일:

결과:

cmd.exe 사용

윈도 파워쉘에서는 배치파일이 동작하지 않아서 cmd.exe를 사용하는 경우가 있다.

다음은 cmd.exe에서 잘 사용하는 옵션이다.

옵션 기능
/K 계속 남아있음
/C 종료됨

자주 사용하는 React Snippet

자주 사용하는 React Snippet을 모아놓은 페이지다.

Lifecycle

Mounting

Updating

Unmounting

Redux, Router를 사용하는 뷰

컴포넌트 뷰

자주 사용하는 패턴

조건에 맞게 컴포넌트 노출

ref 참조

PropTypes

PHP-FPM, Nginx 연동하는 방법

PHP-FPM(FastCGI Process Manager)는 FastCGI 프로세스를 관리한다. 최초 실행했을 때의 프로세스를 재사용해서 FastCGI 포다 더 빠른 처리를 할 수 있다. 이 페이지에서는 PHP-FPM을 설치하고, nginx와 연동하는 과정에 대해 작성했다.

Centos 6.7에서 php-fpm 설치:

nginx 설정:

nginx도 시작하고, php 파일 작성을 하고 테스트한다.

Centos 6.7에 MySQL 5.5.27 버전 소스 설치 방법

Centos 6.7에서 MySQL 5.5.27 버전을 소스 설치하는 과정이다.

우선 MySQL Community Server (Archived Versions) 페이지에서 5.5.27 파일을 다운로드 받아서 설치하려는 서버에 업로드한다.

필요한 패키지 설치하기:

사전 작업:

MySQL 빌드, 설치하기:

이미 다른 버전의 mysql이 있는 상태라서 경로를 따로 지정해서 설치했다.

설치 후 작업:

설정파일 수정:

my.cnf:

이미 mysql이 설치되어 있어서 포트를 33067로 지정했다.

mysql 데몬 실행:

이렇게 시작할 수도 있고, 뒤에서 다루는 서비스 스크립트로 만들 수도 있다.

루트 비밀번호 지정:

서비스 스크립트 수정:

기본 서비스 스크립트 파일은 디렉토리 설정이 약간 달라서 수정이 필요하다. 다음 네 부분을 찾아서 수정한다. (앞 단어로 검색, basedir, datadir, lock_file_path, mysqld_safe)

데몬을 시작한다.

이제 33067 포트를 사용해서 mysql을 사용할 수 있다.