9써클 프로그래머가 되자!

블로그 이미지
Since 2005.12
광조

Article Category

분류 전체보기 (101)
프로그래밍 (15)
요즘하는것들 (9)
잡담 (42)
사진 (22)
서버랑놀아보자! (2)
Ray Tracing (0)
NS2 VS KJ (4)

Recent Trackback

Calendar

«   2012/05   »
    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 31    

Archive

  • Total40,613
  • Today2
  • Yesterday21
VMWARE도 좋아져서 기가빗 연결이 되는 세상이다.

연구실 네트워크를 기가비트으로 구성하면서 맥 과 리눅스, 리눅스 대 리눅스, 맥 대 맥 연결은 모두 기가빗 속도 300메가 이상이 나와주는데 윈도우 XP, 윈도우 7녀석들은 100메가 속도 밖에 안나온다. 왜이럴까?

다음 사항을 모두 체크했다
1. 네트워크 연결 상태가 기가빗인가?
2. CPU점유율이 혹시 100프로인가?
3. 하드 속도문제? -> iperf로 테스트하면 이문제는 피할수 있다
4. 네트워크 드라이버 문제?
5. MTU 등 tcp/ip설정 문제?
6. 윈도우의 QOS기본 설정문제?(윈도우는 20% 대역폭을 기본으로 확보해놓는다)
7. 점보 프레임 설정여부?

전부,, 전부 아니였다. 원인은 Netcare라는 보안프로그램때문. 요즘 패킷을 감시하거나 이상동작하는 컴퓨터를 걸러내기위해서 네트워크 드라이버위에 감시툴을 설치하는데 이게 문제였다. 

 
iperf 로 상대방에 연결을 한결과 100메가  처럼 동작한다. 원인은 아래 넷케어 커널 드라이버 같은 녀석 때문.(기본으로 설치되는것 이외에 네트워크에 영향을 주는 드라이버가 있을경우 이녀석이 원일일수 있다.)

 
제거후에 테스트 한 화면


VMWARE에서 테스트한것이라 124메가 밖에 안나왔지만 후배 XP에서는 700메가를 넘겨주시고 WIN7에서는 300메가를 넘겨주었다. 두녀석의 차이가 2배나 나는것은 아마 XP에서 위의 6가지에 해당하는 사항을 전부 옵티마이즈한 결과가 아닐까 싶다.
 
기가빗 네트워크 환경을 설정을 했는데 100메가 이상의 속도가 안나온다면 기가빗 네트워크 최적화를 찾아보지말고 100메가가 안나오게하는 방화벽, 네트워크 드라이버, PCI Express슬롯 사용여부를 체크하는게 좋을듯 하다. (PCI슬록의 기가빗은 대역폭 제한이 생겨서 느리다고한다.)

 
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
1. 맥용 Tex 설치

2. 콘솔에서 sudo tlmgr --location=http://ftp.ktug.or.kr/KTUG/texlive/2011 install collection-kotex 실행, 2011은 Ktug에서 현재 배포중인 년도 버전으로

3.  각자 맞는 툴사용 (Latexian추천) 

 

세상이 참 살기 좋아진다. 명령어 각각 넣어서 기존 텍스라이브러리랑 병합했어야하는데

명령어 한줄로 끝나는 아름다운세상.

글도 뚝딱 만들어주는 툴은 없을까?...
 
영문 맞춤법 기능이 필요한분은 Latexian쓰시는게 좋을듯 합니다. TexLive에 있는 기본 편집기는 문법검사를 안해주고 표시고 안해줘서 좀 난감해요. 
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
맥북을 쓰는데 온도와 관련된 문제가 생겨서 글을 올리게 됩니다.

이 글은 다음과 같은 문제점을 다루고 있습니다.
1. CPU의 온도가 70-80도를 넘나들면서 컴이 느려진다.
2. 웹서핑시 CPU점유율이 비정상적으로 늘어난다.

1.  CPU의 온도가 70-80도를 넘나든다.
 보통 인텔  CPU의 한계 온도는 90도로 잡습니다. 그런데 이게 한계온도까지 올라가다보면 보통의 경우 CPU보호기능이 작동되면서 스로틀링이 걸리게되어 속도가 다운클럭됩니다. 맥북도 아마 마찮가지로 동작한다고 생각합니다. 
  아이들시의 온도가 40-50인것은 정상입니다만 CPU이용율이 올라갈때는 팬이 같이 빨리 돌면서 온도를 적어도 70도로는 유지를 해주어야하는데 맥북은 80-90도까지 올라가더군요. 
  이를 해결하기위한 방법은 몇가지가 있습니다.
  가. 센터에가서 히트싱크부분을 재조립해달라고한다. Idle상태시의 온도가 너무 높다면 히트싱크의 서멀그리스가 제대로 안발라져있거나 먼지가 문제일 수 있습니다.
  나. http://www.eidac.de/ 이곳에 가시면 smcfancontroler라는 프로그램이 있습니다. 팬속도를 고정시켜주는 어플로 3000~ 4500rpm 정도로 고정해주시면 됩니다.
  다. 다운클럭, 다운클럭을 시키는 어플이 있다고 들었습니다. 실제로 시도는 안해보았는데요 시피유 전압을 덜줘서 다운클럭을 통해 발열을 막는다는것인데, 속도도 떨어지고 전압을 조정할경우 시스템이 불안정하게 되는 단점이 있습니다.

 2. 웹 서핑시 CPU점유율 이상문제 
  iStat라는 어플을 받아서 설치를 하면 히트싱크 사우스브릿지등의 온도와 시피유 점유율을 실시간으로 보는 그래프를 추가해줍니다. 어느날 웹서핑을 하는데 이상하게 점유율이 올라가서 작업관리자를 띄워보니 다음과 같은 이상한일이 일어나고 있더군요

사파리 점유율과 플래쉬 점유율이 비정상적이였습니다. 찾아본 결과 버그라더군요.  플래쉬가 문제인데 플래쉬를 꺼버리는 어플이 있습니다 Clicktoflash라는 어플로서 클릭해서 플래쉬를 활성화하는 어플입니다. 

여름이 다가 오는데요 맥은 온도가 높은 편이므로 관리를 잘하셔야 할것 같습니다. 성능도 온도를 70도 이내로 유지시켜주면 버벅거림 없이 쾌적하게 컴퓨터 쓰실수 있을것 같아요. 그리고 계속 발견되는 맥 버그들(바탕화면, F8인식문제(dock버그), 플래쉬버그)이 빨리 고쳐졌으면 하네요.

 다들 즐거운 맥생활하세요.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
tell application "iTunes"         set songs_ to selection         repeat with song_ in songs_                 set n_ to name of song_                 set name of song_ to do shell script "/bin/echo -n " & quoted form of n_ & " |iconv -f utf8 -t latin1 -c |iconv -f euckr -t utf8 -c"                 set a_ to artist of song_                 set artist of song_ to do shell script "/bin/echo -n " & quoted form of a_ & " |iconv -f utf8 -t latin1 -c |iconv -f euckr -t utf8 -c"                 set c_ to album of song_                 set album of song_ to do shell script "/bin/echo -n " & quoted form of c_ & " |iconv -f utf8 -t latin1 -c |iconv -f euckr -t utf8 -c"                 set d_ to genre of song_                 set genre of song_ to do shell script "/bin/echo -n " & quoted form of c_ & " |iconv -f utf8 -t latin1 -c |iconv -f euckr -t utf8 -c"         end repeat end tell 설명을 하자면 영어권 기반으로되어있으면 euckr인코딩으로 읽지를 않고 latin1으로 테그를 읽어와서 utf8로 변환하여 글자가 깨지게 됩니다. 이렇게 깨진 글자를 가져다가 test란 파일을 만들어서 저장하고 커맨트 창에서 iconv로 테스트를 해보면 iconv -f utf8 -t latin1 -c test|iconv -f euckr -t utf8 -c 이와같은 명령으로 한글코드로 변경이 되는것을 알 수 있습니다. 위의 스크립트는 각 테그별로 읽어와서 UTF8로 변경해주는 것입니다. 주의사항
  1. 반듯이 콘솔에서 test파일을 만들어서 latin1으로 변경되어 깨진거을 확인해야합니다.
  2. 만약에 latin1변환으로 깨진것이아니라면 직접 찾아내서 스크립트를 변경해 주면 됩니다.
  3. 만약에 일부 테그만 깨진것이라면 name, artist album 같은 부분을 일부분만 적용해주어야합니다.
그렇지 않으면 정상적으로 변경된것이 깨지게 됩니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
이 글은 저처럼 아이폰 개발책을 하나샀는데 책내용은 눈에 안들어오고 튜토리얼 따라하자니 한시간씩 걸리는 괴로움에 시달리는 분들을 위한것입니다. 다음 과정은 책을보거나 블로그를 보거나 해서 진행해주세요
  1. XCode를 깐다.
  2. 아이폰과 개발툴을 연동시켜놓는다.
  3. Hello World 라는 버튼눌러서 label 변화시키는것 정도는 해본다.
전 Object-C 에 익숙한 사용자가 아닙니다 C/C++로의 개발을 주로 하였고 C#으로 최근에는 모바일 개발을 많이 하였습니다. 더욱 최근에는 리눅스에서 C/C++ 로 개발을 하였구요. 개발 장비들이 초기버전인 경우에는 C/C++로 올리는 경우가 많기 때문에 모바일을 다루시는 분들은 대부분 C/C++에 익숙하십니다. 그래서 전 C/C++로 개발을 시작하는 방법을 소개합니다.
  1. Object-C 란?
        자세히 살펴보진 않았습니다. C++정도로 생각하시면 됩니다. 예를 들어봅시다.          object *a = new object[10]; 위와 같이 객체를 할당합니다. new라는 키워드는 우리에게 메모리 공간을 잡는다라는 생각으로 되어있습니다. 이렇게 할당하면 delete a; 해줘야 합니다. 당연하지요 .. 오브젝트 C를 보겠습니다.         object *a = [[object alloc] initWithSize:10];         alloc이라는게 new 라고 생각하시면 되고 [] 단위는 명령어 단위라고 생각하시면됩니다. [객체 명령어] 이런식으로요 삭제하실때는 delloc를 쓰면 됩니다. [a delloc]; C++처럼 클레스를 제공하고 할당, 해제 명령이 있으며 상속도 할수있고 객체 접근을 제어할수도 있습니다. 객체지향언어지요 여기 까진 일반 책을 구입하시면 있는내용입니다. 제가 생각나느대로 적은거라 틀릴수도 있습니다. 개발을 하시다보면 delloc가 안먹는 이상한 객체들이 있게됩니다. 대표적으로        
const
size_t bytesPerRow = (bitPerPixel * width)/8;
CGBitmapInfo bi = kCGImageAlphaPremultipliedLast;
CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(scrbuff, width, height, bitsPerComponent, bytesPerRow, cs, bi);   
     CGImageRef imageRef = CGBitmapContextCreateImage(context);
         이런 녀석들인데요. CGContextRef에 Ctrl + 마우스 오른쪽 버튼을 눌러서 Jump To Definition을 눌러봅니다. 정의를 보면 typedef struct CGContext *CGContextRef; 이렇게 되어있습니다. 포인터랍니다. 트레이스 툴로 쫓아가보시면 메모리 릭이 무한이 발생합니다. 한 2분 켜놔봤는데 메모리릭이 가비지 컬렉션에 의해서 사라지는것 같지는 않습니다. 개발자여러본 모르는 객체들은 delloc를 하시고 자신이 포인터 변수로 선언을 안했더라도 원형을 보시고 포인터면 제거해 주셔야합니다. 제거 함수가 따로 제공되는듯 하지만 모르신사면 free[context]; 로도 충분한것 같습니다. 저함수의 제거함수는 CGContextRelease() 입니다. 1장에서 말하고싶은것은 이겁니다. 모바일은 항상 메모리 릭이 큰 문제였고 어느 오브젝트 씨책이나 가비지컬렉션이 우수하다, 오브젝트씨는 매우 좋은언어다라고 찬사를 하지만 이전에 개발하신것과 다르지 않습니다. 개발자가 일일히 객체를 파악하고 있어야하고 포인터 변수면 항상 릴리즈 해야합니다. 또한 alloc 하면 해제 해야합니다. 대부분 opengl es를 사용하지 않는 개발자분들께서 화면 갱신속도에 문제가 생기십니다. 메모리 릭이 있는 코드 입니다. -
-(void)initImage
{

    const size_t width = scr_width;
    const size_t height = scr_height;
    const size_t bitsPerComponent = 8;
    const size_t bitPerPixel = 32;
    const size_t bytesPerRow = (bitPerPixel * width)/8;
    CGBitmapInfo bi = kCGImageAlphaPremultipliedLast;
    CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(scrbuff, width, height, bitsPerComponent, bytesPerRow, cs, bi);
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
   
    image2 = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CGContextRelease(context);
    CGColorSpaceRelease(cs);
   

   
}
static int a=0;

-(void)drawRect:(CGRect)rect
{
     [self initImage];   
     imageView2 = [[UIImageView alloc]initWithImage:image2];
     [imageView2 setFrame:CGRectMake(64, 0, scr_width, scr_height)];
     [self addSubview:imageView2];

}


    메모리 릭이 없는 코드 입니다.
-(void)initImage
{

    const size_t width = scr_width;
    const size_t height = scr_height;
    const size_t bitsPerComponent = 8;
    const size_t bitPerPixel = 32;
    const size_t bytesPerRow = (bitPerPixel * width)/8;
    CGBitmapInfo bi = kCGImageAlphaPremultipliedLast;
    CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(scrbuff, width, height, bitsPerComponent, bytesPerRow, cs, bi);
    CGImageRef imageRef = CGBitmapContextCreateImage(context);
   
    image2 = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    CGContextRelease(context);
    CGColorSpaceRelease(cs);
   

   
}
static int a=0;

-(void)drawRect:(CGRect)rect
{
   
   
   
    if(a==0){
     [self initImage];   
     imageView2 = [[UIImageView alloc]initWithImage:image2];
     [imageView2 setFrame:CGRectMake(64, 0, scr_width, scr_height)];
        [self addSubview:imageView2];
        a=1;
    }
    else {
        [self initImage];   
        imageView2.image=    image2;
        [imageView2 setFrame:CGRectMake(64, 0, scr_width, scr_height)];
    }

   
   
}
 메모리 릭은 어디서 발생할까요 ?
imageView2 = [[UIImageViewalloc]initWithImage:image2];
이부분이 문제입니다
. imageView를 계속 할당하기때문에 계속 메모리에 쌓이게 됩니다. 그러자고 dealloc를 하면 속도에 손해를 보게 됩니다. 이렇게 할당을 한번해야하는 코드는 임의로 한번하게 정해주세요 코드가 지져분 해지더라도. 그리고 ImageView 지역으로 선언되어있더라도 메모리 해제가 안되므로 꼭 해제를 해주셔야합니다. 자, 여기서 우리는 Object-C를 너무 심도있게 나갈필요가 없다는것을 알게됩니다. 걍 쓸모있는 객체는 가져다 쓰면되고 나머지는 C/C++모듈로 외부에서 호출하면됩니다. 속도는 C/C++이 더 빠릅니다. 왜냐면 OBject-C 는 객체가 객체를 물고가기때문에 느려집니다. C/C++에서 C 로 함수하나짠거랑 C++ 클레스 화해서 짠거랑 어느것이 빠를까요? 를 생각해보시면 됩니다.
  1. C/C++ 개발
C/C++개발을 위해선 코드를 추가하실떄 C/C++코드를 추가하시면 되고, Object-C 와 연동을 위해서는 obejct-c타입으로 파일을 변경해주시면 됩니다. 즉, 새로운 파일추가에서 파일을 추가하시고 해당 파일을 Groups&Files에서 선택후 CTRL+마우스 오른쪽 버튼을 누르고 Get Info 합니다. 그리고 다음 창에서 File Type를 변경해주시면 됩니다. 해당코드에 C/C++스타일로 함수 작업을 하시구요, Object-C코드(.m) 에서 헤더를 추가하시고 해당 함수를 호출 하시면 됩니다.
  1. 정리
.m 파일에서는 C표준 함수를 모두 쓸수 있습니다. 메모리 관리에 계속 신경을 쓰셔야합니다. C/C++ 재사용엔 문제가 없으니 걱정 안하셔도됩니다. 그밖에 UI와 이벤트에 관련된것은 책을 참고하시면 됩니다. Hello World 하나만 짜보시고 UIView에 대해서만 감을 잡으신뒤에 테스트리스 정도하나 짜보시면 금방 익숙해질것 같습니다. 3일간 공부하고 짠 테트리스입니다. 모두 성공하시길.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
타이머신이 원래는 네트워크 드라이브로 안된다고 하네요 리눅스에서 제공하는 AFP프로토콜을 이용하시면 안정적으로 이용할수 있다고 합니다. SMB프로토콜은 윈도우 공유폴더에 이용되는데 이것이 좀 불안정해서 비추천한다고 합니다. 설정 방법은 다음과 같습니다.
  1. FREENAS 홈페이지에서 설치 파일을 다운받습니다.
  2. VMWARE를 열어서 디스크를 리눅스용으로 1기가 만드십니다.
  3. FREENAS 이미지로 부팅을 수행한뒤 디스크로 FREENAS를 설치합니다.(기타 FREENAS설정 문서참고하세요)
  4. VMWARE를 종료하고 물리적디스크(실제 백업용으로 쓸 디스크) 또는 백업용 가상 디스크를 생성합니다.
  5. FREENAS에서 새로 추가한 디스크를 마운트하고 AFP공유옵션을 켜주고 공유디스크를 설정합니다.
  6. 맥으로 와서 다음과같이 명령을 처줍니다.
    • defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
  7. 공유란에 freenas공유 폴더가 있는것을 확인합니다. 또는 커맨드 + K 를 눌러서 afp://서버주소 를 쳐서 공유가 제대로 이루어졌는지 확인합니다.
  8. 타이머신을 켜서 디스크를 공유된 폴더를 선택하고 백업을 수행합니다.
한번시도해고 되버려서 큰 문제는 없을듯. 참고한 사이트 http://www.appleforum.com/gadget/55651-freenas%EB%A1%9C-%ED%83%80%EC%9E%84%EB%A8%B8%EC%8B%A0%28time-machine%29%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B4%85%EC%8B%9C%EB%8B%A4.html?highlight=na
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
요즘 너무 실용적인것을 안한거 같다. 아이폰 구입하고 나서 게임을 한번도 안만들어보다니!!! 간단한 테트리스 부터 시작해볼까하네! 졸리다 ㅠㅜ
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0
블로깅 생활의 새시작! .. 귀찮은 로그인은 끝났다.. MACJournal! cfile6.uf@167B51124B456BAA68B7A4.jpg
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 0


qmail 설정편들을 살펴보면 qmail + mysql + courier + qmailadmin + vpopmail 까지 설치를 하는데(qmail.kldp.org나 googling하면 많이 나옴, 자세한 내용 생략).

courier이 구버전이기 때문에 vpopmail의 계정확인 기능(vchkpw)을 사용할 수 없다. 그렇다고 SSL(암호화)기능을 포기하고 서버가 위험에 노출되는것을 감수하자니 마음에 들지 않는다.

삽질을 하던중 에러로그를 살피면서 다음과 같은 설정만 변경해주면 된다는것을 알았다.

1. /etc/courier/authlib/authdaemonrc의 내용중
 authmodulelist="authmysql authpam"로 설정

2. /etc/courier/authlib/authmysqlrc의 내용중

MYSQL_SERVER            localhost
MYSQL_USERNAME          vpopmail
MYSQL_PASSWORD          ######암호

MYSQL_SSL_KEY        /path/to/file
MYSQL_SSL_CERT       /path/to/file
MYSQL_SSL_CACERT     /path/to/file
MYSQL_SSL_CAPATH     /path/to/file
MYSQL_SSL_CIPHERS    ALL:!DES

MYSQL_SOCKET            /var/run/mysqld/mysqld.sock # 사용자마다 다름
MYSQL_PORT              3306 #사용자마다 다름
MYSQL_OPT               0 # 기능없음
MYSQL_DATABASE          vpopmail # vpopmail 데이터베이스 이름
MYSQL_USER_TABLE        vpopmail # vpopmail 데이터베이스 이름
MYSQL_CRYPT_PWFIELD     pw_passwd # 데이터베이르 레코드
MYSQL_UID_FIELD         pw_uid #데이터베이스 레코드
MYSQL_GID_FIELD         pw_gid #데이터베이스 레코드
MYSQL_LOGIN_FIELD       pw_name #데이터베이스 레코드
MYSQL_HOME_FIELD        pw_dir #데이터베이스 레코드

데이터 베이스 레코드의 원본은 다음과 같다
 pw_name    | pw_domain           | pw_passwd                          | pw_uid | pw_gid | pw_gecos     | pw_dir                                               | pw_shell  | pw_clear_passwd |

해당 데이터베이스는 qmailadmin에서 사용하고 vpopmail 에서 만들어주는것이다.

SSL포기하고 다른 imap이나 pop3알아 보시던 분들은 위의 내용만 패치하시고 쓰시면 될것 같습니다.

- 소스 출처는 밝혀주세요-.

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 and Comment 2
정액제를 사용하는경우 굳이 휴대폰의 인터넷 기능을 꺼놓을 필요는 없다.
정액제를 사용하지 않는경우 필히 3G네트워크 접근을 막아야하는데 설정방법은 다음과 같다.


시작 -> 설정 -> 연결 -> 연결 -> 고급 -> 네트워크 선택

인터넷에 자동으로 연결된는 프로그램은 다음과 같습니다 항목에
SKT 3G를 -> 회사 내부 네트워크로 변경

정액제를 사용하더라도 나와같이 사무실과 집에서 주로 있는 사람의 경우 불필요하게 3G네트워크를 사용하여 패킷을 낭비하는경우가 있는데 Activesync나 WiFi를 이용하면 이러한 불필요한 패킷을 절약할 수있다.
 1.Activesync
 파일 -> 연결설정 -> 연결대상
 을 인터넷 탭으로 변경

 2. WIFI의 경우도 WIFI검색 -> AP선택 -> 무선네트워크구성 -> 연결대상
을 기본 인터넷 설정

이와같이 설정을 하게되면 3G접속보다 우선시되어 연결이 된다.

요금의 과금 여부는 안테나 탭이 3G혹은 H로 접속이 되느냐 마냐 하는것이다.
나의 경우엔 RSS피드 2개와 이메일을 1시간 단위로 업데이트 하고 있는데 10000원 정액제로 쓸만한것 같다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 1 and Comment 0
prev Prev : [1] : [2] : [3] : [4] : [5] ... : [11] : Next next