분류 전체보기
-
int type을 bool type으로 활용하는 방안IT/Linux C 2013. 1. 18.
C언에서 !을 사용하게 되면, 0이 아닌 숫자의 경우에 대해서 0으로 변경하고 0인 경우에는 1로 값을 변화시켜준다. !을 한번만 사용하게 되면 자연스럽게 0 or 1의 값을 갖게 되고 !!을 하게 되면 최초 0일 경우에는 0으로 그리고 0이 아닌 값인 경우에는 1로 값이 변환되게 된다. 즉, bool type처럼 0 or 1의 값으로 활용 가능하다. int i = 12345; printf("%d\n", !i); printf("%d\n", !!i); 출력01 위의 내용들이 사실 필요할까 싶지만 다음의 linux kernel에서의 일부 코드를 살펴보면, static int ethtool_get_one_feature(struct net_device *dev, char __user *useraddr, u32 ..
-
플랫폼의 종속성을 떠나서Think 2013. 1. 17.
이식성이 가장 높다고하는 C언어는 생산성의 문제로 사용이 많지 않을 것이라 생각된다. 안드로이드 모바일 환경에서도 인터프리터 언어인 자바를 채택하면서 C언어와 같이 오래된 언어는 점점 멀어져만 가고 있다. 가상 머신위에서 중간언어로 만들어진 빌드 결과물을 실행시키면서 플랫폼의 벽이 허물어지기 시작했다고 생각한다. 물론 그전에 웹이 있었지만 지금처럼 웹을 통해 많은 일을 할 수 없었다. 하지만 기계어 코드를 다시 생성하고 실행하는데 있어서 지연이 되기 떄문에 속도가 충분하지 않은 단점으로 계속해서 1위의 자리를 유지할 수 없었다. 무엇보다도 다양한 운영체제와 환경(PC, 타블렛,모바일)이 생겨나고 거기에 맞는 소프트웨어를 지원함에 따라 생산성이 문제가 되었다. 여러 빌드 환경에 맞게 소스 코드를 관리해야 ..
-
Ubuntu에서도 Evernote를 실행해보자IT/Tools 2013. 1. 14.
윈도우 배포판 프로그램들은 윈도우에서만 실행되고, 맥에서 빌드된 프로그램들은 맥에서만 실행된다. 빌드된 환경에 따라서 binary format(Native)이 다르기 때문에 다른 운영체제에서는 실행을 할 수 없다. 리눅스에서는 오픈소스들로 만들어진 프로그램들은 쉽게 설치해서 사용할 수 있지만, 회사에서 만든 프로그램들은 소스코드를 오픈하지 않기 때문에 만든 곳에서 다른 운영체제에 대한 지원을 해주지 않으면 사용할 수가 없다. 보통은 Virtualbox와 같은 Virtual Machine으로 윈도우를 설치해서 사용해야 한다. Wine 윈도우용 프로그램을 리눅스에 직접 동작시켜주는 Wine이란 프로그램을 찾았다. http://www.winehq.org/ 엄밀히 말해 Wine은 POSIX 호환되는 운영체제에 ..
-
vim plugin manager, vundleIT/Tools 2013. 1. 12.
얼마전에 vim plugin 들에 대해 포스팅을 했었다. 2013/01/09 - [리눅스(Linux)/개발(Developemnt)] - 개발 생산성을 위한 필수 vim plugin plugin들은 설치하기 위해서는 vim-scripts 사이트에서 다운을 직접 받아서 설치해야 하며, 특별한 케이스는 설치 후 사용까지 몇가지 절차가 필요하다. 게다가 업그레이드 정보도 직접 웹사이트에서 확인해야 하는 불편함이 있다. vundlevundle이란 vim plugin을 관리하는 plugin이다. git에 등록된 plugin들을 가져와서 자동 설치와 자동 업그레이드, 삭제까지 편의성을 제공해준다. vundle은 설치할 plugin인들을 vimrc에 적어놓고 설치 또는 업그레이드 명령을 내리기만 하면 알아서 설치가 된..
-
kernel macro, container_ofIT/Linux Kernel 2013. 1. 11.
container_of 란?#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) container_of는 커널 매크로로써, 구조체의 멤버변수의 주소값만 알고 있다면 그 구조체 주소를 얻어 올 수 있는 방법입니다. 세가지 인자를 갖습니다.1. 멤버변수의 주소값(ptr)2. 구조체 type(struct)3. 멤버변수 이름(member) 이 세가지 정보를 가지고 구조체에 해당하는 주소를 가져오는데요. 원리는 간단합니다.일단, 해당 멤버변수가 구조체 시작 위치에서 어디에 위치하는지 offset..
-
개발 생산성을 위한 필수 vim pluginIT/Tools 2013. 1. 9.
vim plugin들을 설치함으로써, 개발 편의성과 생산성을 높힐 수 있다. 아래 소개할 plugin들은 Visual Studio 또는 XCode에서 제공해주는 편의 기능들을 대체할만한 기능들이다. 각 plugin들은 http://www.vim.org/scripts/index.php 사이트에서 다운로드 하고, 설치를 해야 한다. 설치방법은 일반적으로 다운받은 파일을 ~/.vim 디렉토리에 옮긴 후 압축을 풀면 된다. 특이한 케이스는 다운받을 때 해당 웹페이지에 가이드가 있으니 잘 읽어보면 된다. NERDTreevim에서는 해당 디렉토리안의 파일들만 볼 수 있고 계층별로 디렉토리 또는 파일을 볼수가 없다. NERDTree는 계층별로 파일을 보고 접근할 수 있다. 설치 후 :NERDTree 라고 입력하면 실..
-
ubuntu 데스크탑과 서버 커널의 차이점은?IT/Linux Kernel 2013. 1. 8.
서버와 데스크탑의 차이점이란?일반적으로 서버와 데스크탑은 사용 용도가 다르다. 데스탑은 문서작성, 게임, 웹, 그래픽등 다양한 환경과 같이 범용적인 PC 환경을 사용할 수 있음을 의미하지만 서버용은 서비스에 최적화됨을 의미합니다. 백그라운드 프로세스들을 주로 사용하여 서비스와 데이터처리, 네트워크 처리에 최적화되어야 한다. 하드웨어 자원이 일을 많이 하도록 GUI를 사용하지 않는 것도 그 이유이다. Ubuntu에서의 커널 차이점데스크탑에서는 genric이란 키워드를 사용하는 커널을 사용한다. 서버용을 확인하기 위해서 12.10 버전 Ubuntu 서버를 설치해보았다. morenice@ubuntu-morenice:~/linux-3.5.0$ uname -aLinux ubuntu-morenice 3.5.0-17..
-
chm to pdfIT/Tools 2013. 1. 6.
http://code.google.com/p/chm2pdf/ chm2pdf는 윈도우 chm 포맷 파일을 pdf로 변환해주는 유틸리티이다. 최근에는 구글 드라이브에 문서를 넣어두고 모바일환경이나 윈도우환경이 아닌 곳에서 문서를 종종보는데, 몇몇 문서가 chm 포맷으로 되어 있어 열수가 없기 때문에 변환툴을 찾아보았다. 오픈소스이고 몇개 파일을 변화해보니 안정적으로 동작했다. 설치sudo apt-get install chm2pdf 사용법/usr/bin/chm2pdf (--book / --webpage) [options] input_filename [output_filename] Either '--book' or '--webpage' MUST be given! Only one of the two options..