Thursday, May 03, 2012

Mac OSX + git : file name upper/lower case bug

요새 python으로 밤에 한 30분씩 쪼물딱 거리면서 놀고 있는데, github에 올려놓고 관리를 하고 있음.

주로 애를 재우고 그 옆에 엎드려서 맥북으로 코딩을 하는데, 간만에 python을 짰더니, 영 모양이 이상한거라. 그래서 간만에 PEP-8을 정독하고 코딩 컨벤션에 맞춰서 클래스명, 변수명, 메소드 명 등등을 다 고쳤는데, 문제는 모듈명이었다. 즉, 디렉토리명, 파일명을 소두낙타표법으로 (wordAnotherWord) 했는데, 이걸 다 소문자로 바꿔야겠더라구.

그래서 git mv memoHerd memoherd 라고 했는데, 이미 있는 이름이라 안된다는 거임.

음. 잠시 고민하다가... git 은 요상하네;;; 하고 그냥 mv로 파일, 디렉토리 이름들을 다 바꾸고 git commit했는데, 그 결과가 다른 작업들(파일 내의 대소문자 수정)만 반영되는 것 같았음. 그래도 설마 진짜 그랬겠어? 하고 git push한 다음 github가서 봤더니, 디렉토리/파일명 대소문자는 그대로인 거임.

그래서 구글느님께 문의한 결과, git config 중에 core.ignorecase란 놈이 있는데, 일단 맥버전은 이게 true로 되어있다는 거야. 헐... HFS+ 가 원래 좀 그런 놈이라 그렇다는 데 자세한 건 잘 모르겠지만, 이 그지같은 Mac 파일 시스템은 디렉토리마다 숨은 똥을 싸 놓는 것으로도 부족해서 그런 그지같은 속성이 있을 줄이야....

그래서 git config --global core.ignorecase false라고 하고 잘 되었겟지..
하고 다시 git status를 했는데 바뀐게 없뜸....

대 좌절.

결론은
파일/디렉토리 이름들을 다른 걸로 바꾸고 git commit
다시 원복하고 git commit

그리고 git push 했음.

빌어먹을.



*********************************************************
Problem:
On Mac OSX, file name cases are ignored by git.
Changing "fileName" to "filename" was ignored by git status, git commit, git push.

Cause:
They say, on OSX and HFS+, git is set to ignore cases by default.

Solution:
git config --global core.ignorecase false

Another problem:
If you have changed the file/directory name already, (same name in different cases) setting the core.ignorecase value to false does not make git to notice the change.

solution:
Change the file/directory name to another and git add/commit.
and then, change it back and git commit again.


I don't know what to blame, but I would rather blame OSX and the HFS+ than git.


Thursday, August 25, 2011

working with jsctags

I've been a C programmer for sometime, I still miss those good days.
Working fine on a Linux machine, using (g)Vim and plugins as an IDE.


Because I use gentoo, not Ubuntu, I had to install those tools without support of apt-get thing.

Here's how I did it.

  1. Install node.js
    Download the source code from here.
    Extract the tar ball, sudo ./configure, make, make install.
    Or you can emerge the masked nodejs package.

  2. Install jsctags
    Do not download source file from github.com!!!
    You should
    git clone --recursive git://github.com/mozilla/doctorjs.git .
    Clone it with "--recursive" or you will fail to build because of the narcissus sub package.
    Then, you can make and make install.


  3. Setup for jsctags
    You should add
    export NODE_PATH="/usr/local/lib/jsctags/:$NODE_PATH"
    in your .bashrc or .profile.

I hope this post helps.

Thursday, August 18, 2011

Xinerama + Compiz Fusion (Gentoo, NVidia)

Even after turning on window decorations on ccsm, you can't see the window decorations, your terminal turns blank, if you are using xinerama.

I figured that your /etc/X11/xorg.conf or /etc/X11/xorg.conf.d/20-nvidia.conf thing should look like this.



Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection

Section "InputDevice"
# generated from data in "/etc/conf.d/gpm"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Samsung SyncMaster"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection

Section "Monitor"
Identifier "Monitor1"
VendorName "Unknown"
ModelName "Samsung SyncMaster"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
EndSection


Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8600 GT"
EndSection

Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8600 GT"
BusID "PCI:1:0:0"
Screen 1
EndSection

Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "1"
Option "TwinViewXineramaInfoOrder" "CRT-1"
Option "metamodes" "CRT: nvidia-auto-select +0+0, DFP: nvidia-auto-select +1280+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
Option "AddARGBGLXVisuals" "True"
Option "metamodes" "DFP: nvidia-auto-select +0+0"
SubSection "Display"
Depth 24
EndSubSection
EndSection




I hope this could help someone. :-)

Sunday, February 01, 2009

ultimate-guitar : guitar tab search engine plugin for FF

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Ultimate-Guitar</ShortName>
<Description>guitar tab 검색</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">
data:image/x-icon,%01%01%10%10%10%01%10(%01%16(%10%20%01%04%C0%80%80%80%80%80%80%80%80%80%80%80%80%C0%C0%C0%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%80%07%FF%FF%FF%FF%FF%F1%09%99%7F%FF%FF%FF%FF%09%99%09%07%FF%FF%FF%F0%99%90%99%F0%8F%FF%FF%09%99%99%9F%F9%0F%FF%FF%09%99%97%8F%F9%08%FF%FF%09%99%F8x%FF%0F%FF%09%99%FF%87%FF%FF%0F%FF%F0%99%99%FFp%0F%0F%FF%FF%09%9F%07%1F%FF%FF%FF%FF%80%99%07p%FF%FF%FF%FF%FF%09%0F%07o%FF%FF%FF%FF%F7%0F%F0%FF%FF%FF%FF%FF%FF%FF%03%FF%FF%FF%FF%FF%FF%FB0%FF%FF%FF%FF%FF%FF%F7%0B
</Image>
<Url type="text/html" method="GET" template="http://www.ultimate-guitar.com/search.php">
<Param name="s" value="{searchTerms}"/>
<Param name="w" value="songs"/>
</Url>
<SearchForm>http://www.ultimate-guitar.com</SearchForm>
</SearchPlugin>

Tuesday, December 09, 2008

vimrc

완전 간단한 개인용 세팅
예전엔 뭔가 많았는데 점점 심플해 지는 듯... 애정이 식는 건지

set nu
set si
syntax on
set tabstop=4
set sw=4
set expandtab
set ruler
set fenc=utf-8
set fencs=utf-8,cp949

Wednesday, November 12, 2008

파이어폭스 검색엔진에 네이버 사전 추가하기

파이어폭스를 사용하면서 alt+k 단축키를 사랑하는 편이다. 그리고 검색은 주로 네이버와 구글을 번갈아 가면서.. 이때도 알트키와 방향키를 사용하므로 마우스를 쓸 필요가 크게 없어서 편리하다.

다만, 모르는 영단어를 찾을 때는 좀 alt+l로 dic.naver.com을 가서 찾는 등 좀 번거로운 것이 문제라면 문제.

검색 창에 네이버 사전을 집어 넣기로 했다. 유튜브라던지 하는 곳에 가면 검색창에 추가하는 메뉴가 생겨서 편리하지만, 네이버 사전에서는 이것이 지원안되므로 패스. 파이어폭스 검색엔진 추가 메뉴에도 "사전"은 없으므로(영/영사전 제외) 패스. 결국 손으로 만들어 넣어야 할 것 같아 보였다.

searchplugins 라는 디렉토리가 파폭 디렉토리 밑에 존재한다는 첩보를 입수...( 즉, C:\Program Files\Mozilla Firefox\searchplugins )

xml 파일들이 보였다. 빙고!

이중 naver-kr.xml을 카피해서 naver-dict-kr.xml을 만들고 내용을 수정하기로 했다.
naver-kr.xml의 내용은 다음과 같았다.

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>네이버</ShortName>
<Description>네이버 검색</Description>
<Image width="16" height="16">data:image/gif;base64,R0l(생략)...</Image>

<Url type="application/x-suggestions+json" method="GET" template="http://ac.search.naver.com/autocompl">
<Param name="m" value="s" />
<Param name="ie" value="utf-8" />
<Param name="q" value="{searchTerms}" />
</Url>

<Url type="text/html" method="GET" template="http://search.naver.com/search.naver">
<Param name="where" value="nexearch"/>
<Param name="frm" value="ff"/>
<Param name="sm" value="oss"/>
<Param name="ie" value="utf8"/>
<Param name="query" value="{searchTerms}"/>
</Url>
<SearchForm>http://search.naver.com</SearchForm>
</SearchPlugin>


ShortName은 이름일 거고, Description은 설명일거고, Image는 아이콘인지 파비콘인지 할거고...
첫번째 Url 태그는 자동완성을 위한 주소겠네... 아.. 자동완성이 이렇게 되는 구나...
두번째 Url 태그가 실제 검색 주소라고 생각하고 나니 내용은 다 파악되었다.

그래서 이름과 설명을 "네이버 사전"이라고 바꾸고, 이미지는 냅두고, 자동완성도 네이버에서 자동완성하도록 냅두었다.

결국 두번째 Url만 중요한 셈인데, 한 단어를 실제 네이버 사전(http://dic.naver.com)에서 찾아보고 주소를 (http://dic.naver.com/search.nhn) 알아내었다.

그래서 두번째 Url의 template를 http://dic.naver.com/search.nhn로 바꾸고, SearchForm을 http://dic.naver.com/로 변경. 그리고 파폭 재시작 후 확인하였더니 매우 잘 작동했다.

잠시동안 사용하다보니, 네이버랑 네이버 사전이랑 걍 아이콘이 똑같아서 헷갈리더라. 그래서 네이버 사전 안에 있는 아무 아이콘이나 가져다가 쓸려고 이걸 골랐다.



그런데 Image tag를 직접 보면 알겠지만, 이미지 주소가 있어서 그걸 파폭이 매번 다운해 오는 게 아니라, 이미지를 걍 데이터 스트링으로 바꾼 것 같다.

한참 인터넷을 뒤지다 보니, 이런 페이지이런 링크를 구할 수 있었다.
두번째 링크에서 이미지를 변환시켜서 얻은 스트링을 본문에 대입하고 파폭 재시작.

대만족 ^^

HOWTO add search engine to firefox

Problem : I just wanted to add a search engine to FF 3 which is not supported by FF search engine add-ons.

Sol: Because the search engine itself did not support FF search engine add-on either, I had to add it by hand.

Someone suggested editing the about:config page, but it will change the default search engine, it didn't help.

After googling, I found that searchplugins directory exists under your directory( e.g. Mozilla FirefoxC:\Program Files\Mozilla Firefox\searchplugins ). There were several xml files. So I opened some of them with text editor. Not knowing what to do exactly, I copied one of them and renamed as I wished. For example "yahoo-kr.xml" It looked like ....

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Yahoo</ShortName>
<Description>Yahoo Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,R0l...</Image>
<Url type="application/x-suggestions+json" method="GET"
template="http://kr.ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}" />
<Url type="text/html" method="GET" template="http://kr.search.yahoo.com/search">
<Param name="p" value="{searchTerms}"/>
<Param name="ei" value="UTF-8"/>
<MozParam name="fr" condition="pref" pref="yahoo-fr-cjkt" />
</Url>
<SearchForm>http://kr.search.yahoo.com/</SearchForm>
</SearchPlugin>



So, I guessed that ShortName would be its name, description the description. Image will be the icon or favicon, and the first Url tag will be the url for autocompletion. The last url tag will be the search engine url.

Rename the ShortName and description as I wished, I could have give up the auto completion, but I just used the old one.

The second URL tag and SearchForm tag are changed as I wanted. then, it just worked.

I was satisfied for a few seconds, then I found that two different search engine had the same favicon and that was so confusing.

So I googled again, and found this page and that page had this link. So I could obtain the character string from an image. By putting this string in the Image Tag. I finally could pleased.