발생일: 2016.06.21 키워드: bash, shell, new line, 새 줄, 뉴 라인, unix, \n 문제: 쉘 스크립트에서 변수에 new line 캐릭터를 넣으려고 한다. 해결책: $'\n' 을 사용해서 뉴 라인 캐릭터를 넣을 수 있다. str="foo"$'\n'"bar"$'\n\n'"baz" echo $str > foo bar baz 논의: 아래처럼 변수에 할당해두고 사용하는 것도 좋겠다. nl=$'\n' echo "foo${nl}bar${nl}${nl}baz" 참고: http://stackoverflow.com/questions/9402961/adding-newline-characters-to-unix-shell-variables
iOS: 유니버셜 링크 적용하기 에서 계속... 발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association 문제: 웹페이지에서 '앱에서 보기' 버튼을 클릭했을 때, 유니버셜 링크로 앱을 띄우려고 한다. 해결책: 웹페이지에서 '앱에서 보기'를 구현하려고 한다면, 가장 명확한 방법은 iOS에서 제공하는 스마트 앱 배너를 제공하는 것이다. 하지만, 스마트 앱 배너는 디자인 변경이 어려워서, 우리 팀에서는 별도의 버튼을 만들어 구현했다. 참고로, 동일 도메인에서는 유니버셜 링크가 동작하지 않는다. 예를 들어, 유니버셜 링크로 등록되어 있는 경로가 https://example.com/app 라고 가정하면..
iOS: 유니버셜 링크 적용하기 에서 계속... 발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association, applinks 문제: 유니버셜 링크에 대한 처리를 앱에 추가하려고 한다. 해결책: 유니버셜 링크를 지원하려면, 먼저 앱에서 유니버셜 링크를 허용할 도메인을 추가해줘야 한다. Xcode 프로젝트 > Target 메뉴의 대상 프로젝트 > Associated Domains 메뉴에서, applinks: 스킴으로 대상 도메인을 추가하면 된다. 예) applinks:example.com applinks:*.example.com (사용자가 앱 설치 시, 여기에 등록된 도메인으로 apple-app-s..
iOS: 유니버셜 링크 적용하기 에서 계속... 발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association, nginx 문제: 유니버셜 링크에 대한 처리를 위해 apple-app-site-association 파일을 웹서버에 추가하려고 한다. 해결책: 유니버셜 링크를 허용할 웹사이트에서, 유니버셜 링크로 처리할 정보가 담긴 association file에 대한 요청을 응답할 수 있게 처리해주면 된다. 먼저 아래 형식으로, apple-app-site-association 를 이름으로 하는 파일을 작성한다. { "applinks": { "apps": [], (A) "details": [ { "app..
발생일: 2016.06.15 키워드: 유니버셜 링크, universal link, smart banner, 스마트 배너, apple-app-site-association 문제: 앱에 유니버셜 링크를 적용하려고 한다. 해결책: 유니버셜 링크는 일반 웹사이트 URL을 클릭했을 때, 웹사이트로 이동하는 대신 연결된 앱을 열어주는 기능이다. 애플의 API 페이지에 정리된 유니버셜 링크의 특징은 아래와 같다. - Unique: 커스텀 URL 스킴과 다르게 다른 앱에서 처리할 수 없다. 유니버셜 링크는 웹사이트로의 링크이기 때문이다. - Secure: 앱을 설치할 때, iOS는 웹사이트에 업로드된 파일을 확인해서 해당 앱의 유니버셜 링크를 허용한다. 웹사이트에는 개발자만 파일을 업로드할 수 있기 때문에 안전하다고 ..
발생일: 2016.07.14 키워드: nginx, ssi, 중첩 if 문, multiple condition, server side include 문제: nginx 의 SSI에서 중첩으로 if 구문을 넣으려고 한다. 아래처럼 넣어봤는데 잘 되지 않는다. ... 이상하다. 아래처럼 && 연산자로 추가해봤는데도 잘 되지 않는다. ... 여러 방법으로 테스트해봤는데, 어떤 경우엔 [an error occurred while processing the directive] 와 같이 구문 오류라고 나오고, 어떤 경우엔 바깐 if 문을 타는 등 의도치 않게 동작한다. 왜 그럴까? 해결책: nginx SSI 모듈 API에 따르면 if 구문은 1뎁스만 가능하다고 한다. > Only one level of nesting ..
발생일: 2016.06.12 키워드: 서브라임 텍스트, Sublime Text, 서브라임 에디터, 멀티라인 편집, 멀티플 셀렉션, 열 편집, 다중 선택, 다중 편집, Sublime editor, 빈티지 모드, Vintage mode, Vi, Vim 문제: CSV 형식의 여러 라인의 텍스트를 한 번에 JSON 포맷으로 변경하려고 한다. 해결책: 난 일반 텍스트 편집에는 서브라임 에디터를 사용하고 있다. Vim을 좋아해서, 서브라임에서도 Vim 기능을 제공하는 Vintage 모드를 사용한다. 서브라임의 가장 큰 장점 중 하나는 손쉽게 멀티셀렉션과 멀티라인 에디팅을 할 수 있다는 것이다. 여기에 Vim의 기능을 조합해 사용하면 더 확장성있게 편집할 수 있다. 예를 들어, 다음과 같은 CSV 형식의 텍스트가 있..
발생일: 2015.12.28 키워드: 413, flask 문제: 파일 업로드할 때 특정 개수 이상의 파일을 업로드하려고 했더니, 서버에서 413을 응답한다. 파일 용량이 너무 커서(too many bites) 발생하는 오류다. http://www.checkupdown.com/status/E413.html 해결책: 이 프로젝트에서는 웹서버로 flask를 쓰고 있는데, 아래처럼 업로드 허용 용량을 정의할 수 있다. from flask import Flask, Request app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 논의: 413 응답을 nginx 에서 내려줬다면, 아래 포스트를 참고하면 된다. http://ohgyun...
발생일: 2015.12.27 키워드: python, module, import 문제: 파이썬에서 아래와 같이 커스텀 에러 파일을 정의하고, [MyError.py] class MyError(Exception): ... 아래와 같이 다른 파일에서 모듈을 임포트했다. [example.py] import MyError MyError # 여기서 오류 발생 헌데 아래와 같은 오류가 발생한다. Python: 'module' object is not callable 왜일까? 해결책: 내가 임포트해온 것은 모듈이었고, 모듈 내의 클래스를 가져와야 했었다. 파일명과 클래스명이 동일해 더욱 헷갈렸던 거다. my_error.py 와 같이 파일명을 변경하고, 아래처럼 가져오는 방법으로 해결했다. import my_error m..
발생일: 2015.12.26 키워드: python, 파이썬, virtualenv, 가상 환경 문제: 프로젝트에서 파이썬의 특정 버전을 갖는 가상 환경을 구성하려고 한다. 해결책: 파이썬 버전 매니저인 pyenv 와, 버전 별 환경을 구성할 수 있는 pyenv-virtualenv 플러그인으로 특정 파이썬 버전을 갖는 환경을 구성할 수 있다. 먼저 brew 로 설치하고, $ brew install pyenv $ brew install pyenv-virtualenv 프로젝트 디렉토리에서 아래 명령을 실행하면, .python-version 파일이 생성되면서 프로젝트의 파이썬 버전을 정의할 수 있다. $ pyenv local 2.7.10 $ pyenv virtualenv 2.7.10 venv 기타 명령 # 가상환..