응용프로그램2016. 7. 8. 11:14

옛날 글에 썼듯 크롬은 컨트롤+탭으로 최근 탭 간 이동을 할 수 없다. 크롬이 처음 나왔을 때부터 지금까지 단 한 번도 지원된 적이 없다. 이슈 리포트는 이런 문서 등을 참고. 이에 여러 확장기능이 나왔으나 Ctrl+Tab이 아니라 다른 단축키를 사용하는 꼼수밖에 없었다. 혹은 오토핫키를 쓰거나. 어쨌든 구글은 이걸 지원할 생각이 없다.


이에 최근 나온 방법이 있다. Ctrl+Tab MRU라는 확장기능을 깐다. 일단 현재는 이걸 깔면 Ctrl+Y로 최근 탭으로 이동할 수 있다(물론 구글이 언젠가 이것도 막을지 모른다). 이제 이 확장기능의 단축키를 Ctrl+Tab으로 바꾸면 된다.


물론 구글 설정에서는 단축키로 탭을 지정할 수 없다. 이에 해당 확장기능 설명 페이지에 적힌 방법은 이렇다. 윈도우 기준.

  1. 크롬을 끈다.
  2. %LOCALAPPDATA%\Google\Chrome\User Data\Default로 이동
  3. Preferences 파일을 열고 Ctrl+YCtrl+Tab으로 바꾼다(Ctrl+Shift+YCtrl+Shift+Tab으로).
  4. 파일을 저장하고 크롬을 켠다. Preferences 파일은 UTF8로 된 JSON 파일이다. 인코딩이 잘못되면 설정이 날아가버리니(경험담) 잘 모르겠으면 백업해두는 게 좋다.
  5. 크롬을 켠다.
  6. 구글 확장기능 단축키 설정에 가서 'Ctrl+탭'으로 표시되는 걸 확인한고 [확인]을 누른다.

정확하지는 않지만, 1~5번까지만 거치고 6번 과정을 생략하면 크롬 종료 시 해당 단축키가 리셋되는 듯하다. 나는 그냥 부팅할 때마다 실행되는 배치 파일에서 Preferences 파일을 수정하게 해놨다. 먼저 아무 곳에나 파워셸 파일을 하나 만든다.

(Get-Content $args[0] -Encoding UTF8) -replace "Ctrl\+Y", "Ctrl+Tab" -replace "Ctrl\+Shift\+Y", "Ctrl+Shift+Tab" | Set-Content $args[0] -Encoding UTF8


그다음 부팅할 때마다 실행되는 배치 파일에 다음과 같이 추가.

Powershell -noprofile -executionpolicy bypass -file 앞에서_만든_파워셸_파일.ps1 "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Preferences"


파워셸 말고 그냥 배치 파일로도 가능할 것 같은데 뭔가 생각보다 복잡해서 그냥 포기했다.


Posted by 필유
프로그래밍2016. 7. 6. 14:04

1. 여러 블로그에 있듯, 먼저 Docker toolbox for Windows를 설치한다. 이런 문서 등을 참고.


2. 그다음 %DOCKER_TOOLBOX_INSTALL_PATH%에 가서 다음과 같이 start.sh를 실행하고

"%ProgramFiles%\Git\bin\bash.exe" --login -i start.sh

3. 한참 기다리고(첫 실행 시) 고래 그림이 뜨면 끝. cmd를 열고 도커용 환경변수를 설정한다. 물론 배치 파일 내에서 실행할 경우 %i는 %%i로 바꿔야 한다.

FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd default') DO %i


4. 이제 도커로 다음과 같이 텐서플로 이미지를 실행하고, 브라우저에서 주피터로 실습을 하면 된다.

docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:latest-devel



단, 구글이 제공하는 도커 이미지는 텐서플로 0.8과 파이썬 2.7용만 있는 듯하다. 이건 그렇다 쳐도 pandas나 seaborn 같은 파이썬 라이브러리가 들어 있지 않아 매번 새로 설치하기가 번거로웠다. 따라서 도커로 새로 자신만의 이미지를 만들고 쓰는 게 나을 듯. 예를 들어 Dockerfile.을 다음과 같은 식으로 작성한다.

FROM gcr.io/tensorflow/tensorflow:latest-devel
RUN pip install seaborn
RUN pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl
RUN git clone https://github.com/rickiepark/tfk-notebooks.git
CMD jupyter notebook

pandas는 seaborn의 디펜던시이므로 seaborn 설치 시 같이 설치된다. 위에 예로 쓴 깃허브 노트북은 텐서플로 코리아 블로그 운영자의 저장소이다. 위에서는 텐서플로 0.9+파이썬 2.7 바이너리 패키지를 골랐다. 다른 패키지는 텐서플로 설치 문서를 참고.


이제 이 Dockerfile.을 어디 빈 폴더에 넣고 새로운 이미지로 빌드한다.

docker build -t merong .

merong은 새 이미지의 이름(태그)이다. 빌드 후에는 위의 4단계에서 실행할 이미지를 새 이미지 이름으로 바꾼다.

docker run -it -p 8888:8888 merong



추가: 물론 변경한 파일 내용을 계속 기록하고 싶다면 도커 컨테이너를 계속해서 갱신해야 한다. 가령 컨테이너 이름을 dev로 정해서 쓴다고 하면 다음과 같은 식으로. 사실 도커를 처음 쓰다 보니 다른 사람들은 어떻게 쓰는지 모르겠다(...).

docker run -it -p 8888:8888 --name=dev merong:dev
docker commit dev merong:dev
docker rm dev


사족으로, 이 환경에서 virtualenv를 설치하고 파이썬 3 환경으로 바꾸는 시도를 했으나, matplotlib였던가 pandas였던가가 설치되지 않았다. 포기하고 2.7 기준으로 쓰기로 함.



Posted by 필유