Xcode Tip #1 – 풀스크린에서 디버그시 탭을 활용하기
ubuntu 에서 키보드 remapping
1. xev 명령을 통해서, 키보드 keycode 값을 알아 낸다.
2. ~/.Xmodmap 파일에 아래와 같은 형식으로 재정의 해 준다.
keycode 00 = BackSpace
3. 아래 명령을 통해서, 위 설정이 적용 되도록 한다.
xmodmap ~/.Xmodmap
ubuntu + fuse + sshfs 사용하기
FUSE 는 참 재미난 놈이다. 기본적으로는 kernel level 의 file system 관련 부분을 user space 에서 접근 가능하도록 하는 것인데, 쉽게 말하면, 새로운 파일 시스템을 만들려면, 커널 차원에서 만들어야 하지만, 이게 쉽지가 않다. 그래서, 새로운 파일 시스템을 만드는 작업은 만만치 않은 일이다. 하지만, fuse 는 이러한 커널차원의 일을 일반 응용프로그램을 만드는 user level 에서 접근 가능하도록 하여서, 손쉽게 새로운 파일 시스템을 쉽게 만들게 해 준다. 스크립트언어로 바인딩도 많이 되어 있어서, python, ruby, perl 등으로 쉽게 새로운 파일 시스템을 만들 수 있다.
예를들여, youtube 를 파일 시스템 처럼 접근 가능하고, flickr 도 파일 시스템으로 접근 가능하다. 가장 많이 사용되는 것은 ssh 를 파일시스템으로 접근하는 것인데, 이것이 sshfs 이다. fuse 를 이용해서, 마치 sftp 로 마운트 된 것 처럼 만들어 준다.
이게 참 좋다고 생각만 하고 있었는데, 사실 잘 쓰지는 않았다. 이번에 ubuntu 에서 쓸려고 하니 문제가 생겼다.
sudo sshfs username@hostname.com:/path/to/mount /local/mount/path
위와 같이 하면, mount 가 된다. 하지만, ls를 해 보면
d????????? ? ? ? ? ? /local/mount/path
위와 같이 이상하게만 나온다. 문제는 sudo 를 통해서 root 권한으로 mount 하면, root 사용자만 접근 가능하다는 것. 그래서 해결 방법을 검색을 통해서 찾았다.
sudo sshfs -o allow_other username@hostname.com:/path/to/mount /local/mount/path
이제, 문제 없이 마운트 되고, nautilus 에서도 잘 보인다.
아직 한가지 남은 문제는, 시간이 지나면, 접속이 끊어지고, 다시 자동으로 붙지 않는 다는 것이다. 그럼 프로세스를 죽이고 하는 더러운 짓을 해야 한다.
update>
이런 바보같은 포스트가 다 있나! 오늘 sshfs README 를 읽는데, 한문장이 나왔다.
Note, that it’s recommended to run it as user, not as root. For this to work the mountpoint must be owned by the user.
대체 처음에 왜 sshfs 를 할 때, sudo 를 했었는지 기억이 안난다. 그래서, 문득 그냥 해 보니깐, 잘된다!
sshfs username@hostname.com:/path/to/mount /local/mount/path
lftp
항상 command line 으로 ftp client 를 쓸때는, 그냥 기본 ftp 를 쓰거나, ncftp 정도를 써왔는데, 이번에 우연한 기회로 lftp 를 발견했는데, 매우 유용하다.
접속한 서버쪽의 charset 을 지정해 주고 싶을 때에는,
set ftp:charset cp949
그리고, 폴더채로 다운받고 싶을 때에는
mirror remote-folername
반대로 폴더채로 올리고 싶을 때에는,
mirror -R local-folder
ubuntu 11.10
맥에서 우분투로 옮긴 한글 파일명 문제
맥에서 SFTP 나 다른 방법을 통해서, 파일을 옮기다 보면, 한글이 같은 유니코드 이지만, 풀어져 보이는 문제가 있다. 이거 상당히 골치 아픈 문제인데, 여기에 대한 해답을 나름 찾아봤다.
방법은 convmv 를 설치하는 것. apt-get 을 통해서 convmv 를 설치해 주고, 아래와 같은 명령을 통해서 변경 가능.
convmv --notest -nfc -f utf8 -t utf8 파일명
여기서 notest 옵션을 주지 않으면, mv 명령어만 보여주고, notest 옵션을 주면, 실제로 mv 명령이 실행된다.
NFC 의 경우, Normalization Form C 라고, 한글의 경우 자소를 모두 모아서 코드를 만들고, 유럽어의 경우 액센트 기호가 붙은 알파벳을 하나로 취급하며 주로 유닉스(리눅스)쪽에서 많이 쓰이고, 반면 NFD는 Normalization Form D로 한글 자로를 풀어서 각각 코드를 부여하며, Mac OS X 에서 사용한다. 위에서 –nfc 옵션을 주면, NFC 로 변환해 준다.
잠깐 문제가, 변환을 시도하면, 파일길이가 255자 넘는다면서 실행을 포기하는 현상이 발생하여, Perl 로 되어 있는 코드에서 해당 부분을 제거하니, 문제가 발생하지 않았다. (실제 mv 명령 실행에도 별 문제가 없었던 것으로 보아, 아마도 파일길이를 계산하는 부분에 문제가 있는 것으로 보인다.)
if (! $filenamelength) {
print STDERR "$opt_t doesn't cover all needed characters for: \"". &$from_print($dir.$oldfile) ."\"\n";
return undef;
# } elsif ($filenamelength < $maxfilenamelength) {
# print STDERR &$from_print($dir.$oldfile).": resulting filename is $filenamelength bytes long (max: $maxfilenamelength)\n";
# return undef;
}
&posix_check($new);
return 1;
변경전
변경후 (mp3는 bugs에서 구매한 정품)
대단한 발견: HandBrake CLI
사실 여전부터 이름은 익히 들었지만, 한번도 써 볼 생각을 안했는데, 요즘 쌓여가는 작은 크기의 동영상들을 폴더를 유지한채 인코딩을 스크립트로 자동화 할 수 없을까 계속 고민하며 ffmpeg 으로 삽질을 계속하던 중 (다른건 다 잘되는데, mov 파일이 안됨), 구글 검색으로 HandBrake 이름을 발견, 테스트를 했는데, 내가 원하는게 바로 있었다.
사실 HandBrake 도 결국 ffmpeg 의 껍데기인데, 내가 원하는 방식으로 껍데기를 만들어 놓았다.
내가 원하는 방식이란? 모든 동영상을 iPad 에 플레이 가능하도록 변환하기.
우분투에서 설치하는 건 매우 간단. http://handbrake.fr/downloads.php 페이지에서 다운로드 가능
변환도 매우 간다. https://trac.handbrake.fr/wiki/CLIGuide 페이지의 설명에 따라, 다음 한 줄 이면, iPad 용으로 뚝딱 변환.
HandBrakeCLI -i movie.mkv -o movie.mp4 --preset="iPad"
우분투에서 PhotoSync 사용하기
PhotoSync 앱은 아이폰에서 사진을 옮기기 위해서 자주 사용하는 앱이다. 아이튠즈를 통해서 싱크할 필요 없고, 아이포토나 애퍼쳐를 거치지 않고, 간단하게 찍은 사진 몇장을 옮길때 더 없이 편하다. (iCloud 이후 어떻게 바뀔지 모르겠지만)
다만, 요즘 우분투를 주로 사용하다 보니, 아이폰으로 사진을 찍고, 우분투에서 보고 편집하고 업로드하고 하는 일을 자주하게 되는데(아이폰에서 바로 Flickr 업로드도 가능하지만, 이게 생각보다 잘 안된다), 아이폰에서 사진을 가져올 방법이 없다. 더구나 PhotoSync 는 맥용 윈도우용 전용 어플리케이션이 있지만, 우분투용은 없다. 하지만, PhotoSync 앱을 유심히 들여다 보니, 하단에 접속 URL이 버젓이 있었다. 오히려 웹으로 접속하는게 훨씬 편하다고 느낄 정도.
첫 화면은 카메라롤, 포토라이브러리, 그리고 앨범 목록이 쭉 뜬다.
그리고, 카메라롤에 들어가면, 최근 사진 목록이 뜨는데, 여기서 선택하고 다운로드 하면, zip 파일로 묶어서 받을 수 있다.