반응형

프로그래밍 언어 63

__builtin_expect 키워드

최근 이상한 매크로를 발견하고 추적하던 중 멋진 gcc의 키워드를 발견했다. __builtin_expect라는 키워드이다. 아래 URL에 좀 더 자세히 적혀있다. http://galaxyra.linuxstudy.pe.kr/galaxyra/tag/__builtin_expect 한마디로 말하면 실행할 가능성이 높은 애를 위해서 컴파일하도록 하는 매크로이다. 방어적 코딩을 하다보면 무수히 많은 if 문을 넣어야 하는데 아키텍처를 조금이라도 공부한 사람들은 Pipeline Hazard때문에 if문을 꺼리게 된다. if문의 해악을 없앨순 없지만 되도록 실행가능성이 높은 코드를 밑에 배치해 파이프라인 해저드를 최소화 시킬수 있도록 해주는 키워드가 바로 이 키워드이다. #define unlikely(x) __buil..

[파이썬] CSV2SQL ver 0.1

완전하진 않지만 csv 포맷을 sql 포맷으로 활용하기 위해 변환하는 데 유용한 스크립트입니다. SQL 형태로 만들어주지는 않습니다. 어떤 컬럼이 들어가는지 알 수 없기 때문입니다. 허접하지만 불펌은 정중히 사양하겠습니다. csv가 만약 단순히 , 로 이루어져 있다면 이렇게 복잡하게 할 필요가 없으나 컬럼에 ,가 내용으로 들어가 있는 경우 "" 로 문자열들이 묶여 있게 됩니다. 따라서 단순히 ,로 split 할 수 없어서 이런 스크립트를 만들었습니다. 허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

[python] Windows에서 커맨드창 하나 더 띄우기

os.system("cmd.exe")를 하면 될 것 같았는데 되지 않았다. 이는 커맨드창에서 cmd.exe를 실행했을 때도 새 커맨드 창이 뜨지 않는 것과 같은 이유이다. 무척 쉬운 방법이 있음을 발견했다. os.system("start") 당연히 커맨드창에서 start를 입력해도 동일하게 동작한다. 리눅스에서 터미널을 하나 더 띄울때는 그냥 gnome-terminal (gnome을 쓴다면) konsole (KDE를 쓴다면) xterm (간단한 터미널) 중 하나를 입맛따라 골라 쓰면 된다. 허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

[wxPython 예제] 2. layout

TkInter와 비교하면서 하려니 노력이 두배나 드는 것 같네요. 어쨌거나 TkInter보다 wxPython은 layout 이 훨씬 더 훌륭하다는 생각이 듭니다. 당장 layout을 위해 absolute positioning과 다양한 sizer를 제공하고 있습니다. http://www.zetcode.com/wxpython/layout/ 비슷하게 만들려다가 졸려서 그냥 사이트 코드를 거의 가져오다시피 했습니다. absolute layout의 예로 pos와 size를 줘서 원하는 위치 원하는 크기에 배치하는 것이 가능합니다. TkInter와 유사한 코드는 내일 올려야겠네요. 허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

[TkInter 예제]2. Frame과 Layout

Tk는 레이아웃이 좀 귀찮은 것 같다. 그나마 grid라도 있어 얼마나 다행인지... Frame은 여러 widget을 packing하는데 사용할 수 있는데 packing하는 방법이 너무 단조롭다는 단점을 갖고 있다. 이러한 문제는 grid를 이용해 다소 보완할 수 있다. grid는 가상의 테이블이 있다고 생각하고 row, column 값을 넣어주면 된다. 가장 큰 row숫자와 column이 이 가상의 테이블의 열과 행의 크기를 지정하는 것 같다. 조심해야 할 점은 0,0부터 시작한다는 점 쓰는 법은 아무 위젯이나 .grid(row=?, column=?)이다. 단점은 너무 많은 위젯을 다 이런식으로 레이아웃을 잡으려면 테이블이 엄청 복잡해질 거라는 점인데. Frame을 적절히 섞어서 레이아웃을 잡아주면 될..

[TkInter 예제]1. Hello World

TkInter와 관련된 글들은 대체로 아래 주소에서 참고하여 작성할 듯 합니다. http://infohost.nmt.edu/tcc/help/pubs/tkinter/index.html 먼저, python의 내장 GUI 라이브러리은 TkInter를 이용한 가장 간단한 예제 대충 인터넷 돌아봐도 TkInter로 HellowWorld 만드는 몇가지 방법이 있는 것 같지만, 이게 그나마 단순한 편에 속하는 것 같다. App이라고 하는 class를 하나 만들고 __init__을 해주는데 이 때 Tk() 객체를 넘겨받을 수 있게 만들었다. 이 객체로부터 frame을 만들고 frame을 먼저 pack을 통해 root에 밀어넣는다. Label은 frame의 자식으로 생성하는데 옵션으로 text만을 주었고 역시 pack을..

[wxPython]1. 첫번째 예제

참고: http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/wxpython_%C7%C1%B7%CE%B1%D7%B7%A1 %B9%D6 wxPython 예제 1 (리눅스) 조인C의 예제를 그대로 가져왔습니다. 아직 내용은 이해가 안가지만 하나씩 간단한 예제를 만들어보기에 앞서 구글링을 통해 얻은 예제입니다. wxWidget을 공부하려다 말았는데 Windows API가 많이 생각나는 군요 ;; 앞으로 wxPython과 관련된 내용들은 http://www.zetcode.com/wxpython/ 을 많이 참고할 것 같습니다. 허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

[wxPython] 0. 설치하기

wxPython은 python을 위한 GUI 라이브러리중 하나이다. 기본으로 tk를 지원하고 있지만 솔직히 성에 안차서 파이썬으로는 GUI 를 다루지 않으려고 하지만 어쩌다 보니 이번 기회에 조금 더 공부해보기로 했다. 먼저 wxPython을 쓰려면 python의 버전도 체크할 필요가 있다. 아직 3.2를 공식적으로 지원하지 않고 있는 듯 하다. python이 3.2라면 2.7로 변경할 것을 권한다. 이후, wxPython을 아래 URL에서 다운로드한다. http://www.wxpython.org/download.php#binaries 나는 Python 2.7을 위한 win32-unicode 버전을 다운로드 했다. 다운로드 : http://downloads.sourceforge.net/wxpython/w..

[자바]일련의 숫자 임의 정렬하기

임의 순서의 값이 필요해 아래와 같은 함수를 작성해보았습니다. 0 부터 19까지 숫자를 임의 순서로 배치하는 예제입니다. import java.util.Random; public class Shuffle { static final int MAX_IDX = 20; private static int [] mArrIdx; public static void main(String[] args) { mArrIdx = new int[MAX_IDX]; for (int i = 0;i < MAX_IDX;++i) { mArrIdx[i] = i; } Random oRandom = new Random(); //shuffle int t; for (int i = 0;i < MAX_IDX;++i) { int newidx = oRan..

gcc 업그레이드 (4.5.0)

WebKit 작업중에 오류가 발생해서 알아보니 gcc 4.4.1에 버그가 있는 것 같다. 현재까지 우분투 9.10 의 기본 gcc 버전은 4.4.1이다. 그래서 직접 gcc 4.5를 설치해보기로 했다. gcc 4.5 릴리즈 노트 : http://gcc.gnu.org/gcc-4.5/ gcc SVN 관련 문서 : http://gcc.gnu.org/svn.html 1. gcc 4.5 다운로드 먼저 gcc 4.5를 뜻하는 브랜치를 확인해야하겠기에 아래 명령을 수행한다. svn ls svn://gcc.gnu.org/svn/gcc/branches 명령의 결과로 무수히 많은 브랜치가 올라가는데 gcc 4.5 브랜치는 gcc-4_5-branch SVN으로 받았으나 configure에서 에러가 발생했는데 메시지 공부하고..

반응형