외규장각 도서 환수 모금 캠페인
BLOG main image
분류 전체보기 (48)
컴퓨팅환경 (19)
프로그래밍 (18)
놀이 (2)
잡담 (7)
«   2013/06   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
39,861 Visitors up to today!
Today 26 hit, Yesterday 57 hit
daisy rss
meet me at me2DAY
나눔글꼴 내려받기
tistory
2012/04/10 17:25

SourceTree: http://www.sourcetreeapp.com
Kaleidoscope: http://www.kaleidoscopeapp.com


먼저 Kaleidoscope를 설치하고 아래와 같이 git 연동 설정을 한다.


그 다음, 아래 스크립트를 /usr/local/bin에 설치하고, 실행권한을 부여한다.

ksdiff-gitcommits


마지막으로, SourceTree에서 스크립트를 수행하는 Action을 추가한다.


이제, SourceTree에서 커밋들을 다중선택한다음 Custom Action > Diff Commits 를 수행한다.
끝.

2년만에 블로깅한다는게 이런 거라니... ㅠㅠ

2010/07/02 14:07

실제로 쓰일 일은 극히 드물겠지만, Objective-C Runtime API를 이용하여 클래스를 생성할 수 있다.

다음의 코드는 어떤 클래스를 Runtime에서 복사하는 코드의 예제이다.

#include <objc/runtime.h>

+ (Class)copyClassWithName:(const char *)aClassName
{
    Class         sClass;
    Ivar         *sIvars;
    Method       *sMethods;
    unsigned int  sCount;
    unsigned int  i;

    sClass = objc_allocateClassPair([self superclass], aClassName, 0);

    sIvars = class_copyIvarList(self, &sCount);

    for (i = 0; i < sCount; i++)
    {
        NSUInteger sSize;
        NSUInteger sAlign;

        NSGetSizeAndAlignment(ivar_getTypeEncoding(sIvars[i]), &sSize, &sAlign);

        class_addIvar(sClass, ivar_getName(sIvars[i]), sSize, sAlign, ivar_getTypeEncoding(sIvars[i]));
    }

    free(sIvars);

    sMethods = class_copyMethodList(self, &sCount);

    for (i = 0; i < sCount; i++)
    {
        class_addMethod(sClass, method_getName(sMethods[i]), method_getImplementation(sMethods[i]), method_getTypeEncoding(sMethods[i]));
    }

    free(sMethods);

    objc_registerClassPair(sClass);

    return sClass;
}

이 예제 코드는 instance variable과 instance method만 복사하고 있다. 만약, 완벽한 복사를 원한다면, class method, property, protocol에 대해서도 비슷한 작업을 해줘야 한다.

 

2010/04/22 14:56

지금까지 아무 불편함없이 잘 쓰고 있던 subversion대신에 새로운 마음으로 git을 한번 써보기로 했다.
Mac OS X에서 git소스를 받아 설치하는 것은 전혀 어려운 일이 아니었다. 하지만, 사용 중 manpage가 하나도 설치되어 있지 않은 것을 보고 확인해 보니 git소스를 빌드할 때 manpage는 기본적으로 설치하지 않는단다. 허허... 이런 일이...
고작, manpage하나 설치하는데, 이런 삽질을 하게될 줄은 전혀 몰랐다. 아래는 삽질의 정리된 결과물...

asciidoc-8.5.2 설치

다운로드: asciidoc-8.5.3.tar.gz

./configure
make
sudo make install

gettext-0.17 설치

아래의 getopt를 빌드할 때 libintl가 필요한데, libintl은 여기에 포함되어 있다.

다운로드: gettext-0.17.tar.gz

./configure
make
sudo make install

getopt-1.1.4 설치

아래의 xmlto를 빌드할 때 getopt가 필요하다.

다운로드: getopt-1.1.4.tar.gz

make LDFLAGS=-lintl
sudo make install

docbook xml/xsl 설치

xmlto를 빌드할 때와 git manpage를 빌드할 때 필요하다. 에휴...

sudo mkdir -p /usr/local/share/docbook
sudo mkdir -p /usr/local/etc/xml
cd /usr/local/share/docbook
sudo wget http://surfnet.dl.sourceforge.net/sourceforge/docbook/docbook-xsl-1.75.2.tar.bz2
sudo wget http://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip
sudo wget http://www.oasis-open.org/docbook/xml/4.5/docbook-xml-4.5.zip
sudo tar xjf docbook-xsl-1.75.2.tar.bz2
sudo unzip docbook-xml-4.2.zip -d docbook-xml-4.2
sudo unzip docbook-xml-4.5.zip -d docbook-xml-4.5
sudo rm docbook-xsl-1.75.2.tar.bz2
sudo rm docbook-xml-4.2.zip
sudo rm docbook-xml-4.5.zip
sudo xmlcatalog --noout --add nextCatalog '' file:///usr/local/share/docbook/docbook-xsl-1.75.2/catalog.xml --create /usr/local/etc/xml/catalog
sudo xmlcatalog --noout --add nextCatalog '' file:///usr/local/share/docbook/docbook-xml-4.2/catalog.xml --create /usr/local/etc/xml/catalog
sudo xmlcatalog --noout --add nextCatalog '' file:///usr/local/share/docbook/docbook-xml-4.5/catalog.xml --create /usr/local/etc/xml/catalog
sudo ln -s /usr/local/etc/xml /etc/xml

xmlto-0.0.23 설치

이제 마지막으로 xmlto를 빌드한다.

./configure GETOPT=/usr/local/bin/getopt
make
sudo make install

git-1.7.0.5 설치

드디어 원하는 것이다.

./configure
make
sudo make install
make man
sudo make install-man


정말 오랜만의 블로그 포스팅이 이런 삽질의 결과물일 줄이야...

 

prev"" #1 #2 #3 #4 #5 ... #16 next