아이디어!2008. 12. 12. 16:51
별건 아닌거 같지만. 문득 내 블로그를 돌아보니.. 제목이 영어로 된게 많다.(젠장!)
영어를 자랑하는건 아니지만, IT분야에서 일하다 보면 말은 못해도 단어는 영어가 익숙하다는게 문제인데..

이런것도 있고, 간간히 google.fr 이라던가 이런식으로 오는것을 봐서는

1. 실시간 번역을 지원한다거나
2. 아니면 블로거가 직접 같은 페이지를 locale 별로 쓸 수 있는 기능이 있으면 좋겠다는 생각이 든다.
Posted by 구차니
2008년 12월 12일 기준 최신 버전은 1.10.9 stable 이다.
간만에 집에 설치하고 사용을 해봤더니 Checkout에서 상당히 다른 부분이 보인다.

1. 버전 정보.


2. Checkout 화면이 바뀌었다!!


3. Fetch List를 하면 예전에는 최상위 폴더만 보이던 것이 이제 하위 폴더도 보이게 변경 되었다.


4. 환경설정에서 속썩이던 WebLog 추적 기능이 사라졌다.


이번 버전에서 아쉬운 점은 아직 한글이 지원되지 않는 다는 점
(인스톨러는 한글이 지원되지만 문맥메뉴(Context-menu : 우클릭 메뉴)에서는 한글이 없다)이다.
Posted by 구차니
WinMerge의 기본 폰트는 한글 Windows 기준 굴림 12pt 이다.
말이 좋아 12pt이지 상당히 어색하게 보이고, 우리가 편하게 보는 폰트는 10pt이다.


WinMerge의 폰트는 폴더 비교/파일 비교 별도로 설정이 된다.

1. 폴더 비교 설정
 폴더 비교에서 보기 - 글꼴 선택에서 원하는 폰트/크기로 설정하면 된다.

2. 파일 비교 설정
 파일 비교에서 보기 - 글꼴 선택에서 원하는 폰트/크기로 설정하면 된다.


Posted by 구차니
개소리 왈왈2008. 12. 11. 22:15
회사에서 요즘에는 분노 게이지가 항상 만땅이다
이 사람 저 사람 불러 대는 바람에 내 일은 못하고,
그러면서 내 일이 없는 것도 아니고.

적당하게 거절하는 법을 알아야 하지만,
업무상 윗사람이라서 못한다고 할 수도 없고 이거 참...


그리고 다른 회사에서 결혼도 한 사람인데 12시 이전에 지금까지 퇴근한적이 3번도 안된다고
대단하다고 우리도 그렇게 해야 한다는 사장의 이야기를 들으면서 씁쓸함만 느껴진다.

머 짬밥도 안되고 신입이나 경력이 안될때는 열심히 밤샘도 해가면서
하라고는 하지만, 그래도 집중도 안되는데 회사에서 남아서 하고 싶지도 않고
이래저래 딜레마가 쌓여 가면서 머리만 지끈거려 온다.
Posted by 구차니
프로그램 사용/GIMP2008. 12. 10. 15:32

GIMP를 쓰다보니 불편한 점이 포토샾에서는 현재 찍은 위치의 RGB 값과 현재 pixel의 위치가 나왔는데
GIMP에는 나오지가 않는다는 점이었는데, 생각을 해보니 어딘가에 숨어 있을 것 같더군요!

docking 가능한 윈도우 형태로 포토샾에서도 있었으니 GIMP 에서도 한번 찾아 봅시다!

Step.1 창 - 도킹가능한 대화상자에 각종 창들이 있습니다.
                우리가 원하는 녀석은 포인터 라는 녀석 입니다.


Step.2 포인터를 누른후 이미지를 띄운 화면입니다.
          하단의 포인터 도킹 윈도우에 현재 좌표와 RGB 값이 출력되고 있습니다.

Posted by 구차니
프로그램 사용/GIMP2008. 12. 9. 13:01
공짜를 사랑하는 나로서는 Adobe PhotoShop은 너무나 먼 당신이고
그렇다고 Paint.net은 닷넷 알레르기로 인해서 너무나 먼 당신이다.

아무튼 공짜 만세를 외치면서 GIMP의 간단한 사용법을 알아 보자.


원하는 색상으로 변경하기
UI 작업을 하다 보니 받아온 시안의 색상이 마음에 안들때가 있다. 다시 디자이너에게 요청하기는 뭣하고
그래서 GIMP로 간단하게 변경을 하고 싶다. 이 경우에는 아래와 같이 따라 하면된다.

step 1. 색상 메뉴의 색상-채도를 선택한다.

step 2.  원하는 색상으로 변경하기 위해서 색상 슬라이드 바를 움직여 준다.
            그리고 원하는 밝기/채도로 선택한다. 원본 이미지는 파란색이었는데, 색상을 변경하여 붉은색으로 바꾸어 주었다.

step 3. 색상 메뉴의 무채화를 선택하면 흑백으로 변경된다.

step 4. 흑백 이미지에 색상을 주고 싶다면, 색상 메뉴의 컬러화를 선택하여 원하는 색상으로 준다.

위의 예는 단색에 아까운 이미지라서 차이가 안나지만,
여러가지 색이 들어간 이미지에 적용해보면 상당한 차이가 있다.

Posted by 구차니
Microsoft/Windows2008. 12. 8. 21:24
USB를 통해서 전파되는 악질적인 녀석으로...
인터넷이 느려진거 같길래 백신돌려도 잘 안나오고.. 아무튼 간만에 전체 파일 검사를 했더니 겨우겨우 잡는다.

c:\windows\boot.ini <- visual basic script 임
c:\windows\.MS32DLL.DLL.VBS
c:\autorun.inf

총 3개가 생성이 된다. USB의 경우에는
f:\windows\.MS32DLL.DLL.VBS
f:\autorun.inf
가 생성이 된다.

아무튼 지워고 나서 발생하는 에러로는
먼가 정상적인 에러 같은데 boot.ini 라고 하길래 c:\boot.ini를 복사 하면되는 줄 알았더니

라는 에러를 밷어 낸다. 이거 뭥미? 그 boot.ini가 그 boot.ini가 아닌건가?!

그래서 인터넷 검색을 해보니 msconfig를 사용하라고 해서 봤더니
이름 없는 녀석 .MS32DLL.dll.vbs 라는 녀석과 wscript.exe 라는 녀석이 생겼다.
이런 이유로 boot.ini를 요구 하는데, 상당히 교묘한 녀석으로 boot.ini 라는 파일이 존재는 하지만 c:\windows에
원래 존재 하지 않는 파일이며, 이름이 그럴싸 한 이유로 어느정도 컴퓨터를 아는 사람이라고 해도
확실하게 윈도우에 어떤 파일이 어디에 존재 하는지 모르면 속을 만한 고단수 바이러스다.

결론 : USB는 반드시 왼쪽 shift를 누르고 꼽아서 자동실행을 방지하자!
Posted by 구차니
Linux2008. 12. 8. 16:20

#include <unistd.h>

int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg,  ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);


The  functions  execlp()  and execvp() will duplicate the actions of the shell in searching for an executable file if
the specified filename does not contain a slash (/) character.  The search path is the path specified in the environ-
ment  by the PATH variable.  If this variable isn’t specified, the default path ‘‘:/bin:/usr/bin’’ is used.  In addi-
tion, certain errors are treated specially.

[출처 : man page]

execl의 경우에는 path가 들어 가는데 arg에서 문제가 생긴다.




execl은 잠시 잊고 잠시 C언어로 돌아가서 main()의 프로토 타입을 생각해보자
 int void(int argc, char **argv)
그리고 argv[0] argv[1]의 내용을 떠올려 보자
argv[0]은 실행한 파일의 이름이 argv[1] 부터 인자가 넘어 오지 않았던가!




다시 execl로 돌아와서
int execl(const char *path, const char *arg, ...);
path에서는 파일 이름이 포함 된 경로를 적어주고, arg[0]에는 파일 이름 arg[1] 부터는 인자를 넘겨 주면 된다.


간단한 예를 들자면
 execl("/bin/ls","ls","-al",0);
로 실행을 하면된다.

마지막의 0은 '\0' == NULL 이다.


[참고 : http://kldp.org/node/1548]
Posted by 구차니
Linux2008. 12. 8. 15:56
리눅스에서 프로그램을 실행 시키는 방법은
fork() / exec() 로 하는 방법과 system() 으로 하는 방법이 있다고 한다.
(내가 직접해본게 아니니 발뺌하기 모드 -.-v)

아무튼 fork()의 경우 parent 의 메모리를 복사해서(COW - Copy On Write) 사용하므로 메모리의 낭비가 생기는데,
이런 이유로 메모리가 넉넉해 보임에도
"fork 시에 ENOMEM 을 뱉어 내고 실행을 못한다"면 fork 대신에 vfork를 사용하면 된다.


어플리케이션 서브프로세스를 생성할때 메모리 사용량 최대로 줄이기
Greg Nakhimovsky, 2006년 5월

Fork의 퍼포먼스
...
fork()exec() 에 뒤따라 바로 살행되는 fork/exec 모델의 단점을 다루기 위해 버클리 버젼의 유닉스(BDS)는 1980년대 초반에 vfork() 시스템 콜을 내놓았습니다. vfork(2)부모 프로세스를 자식 프로세스에 카피하지 않습니다. 두 프로세스가 모두 부모의 가상 주소 공간을 공유 합니다; 부모 프로세스는 자식 프로세스가 종료 되거나 exec() 를 호출할때 까지 정지 상태로 들어 갑니다.
...
오랜 시간이 지난후에 멀티쓰레딩(MT)이 가능해 지고 많이 사용되면서 vfork() 가 어플리케이션이 여러개의 쓰레드를 가지고 있을때 새로운 문제를 일으킬 수 있음이 밝혀 졌습니다: 데드락.

메모리 overcommit: 솔라리스 vs 다른 운영체제들

몇몇 운영체제 (리눅스, IBM AIX, HP-UX 같은) 들은 memory overcommit 이라는 기능을 가지고 있습니다.( lazy swap allocation 이라고도 불림) memory overcommit 모드에서 malloc()스왑스페이스를 예약하지 않고 시스템에 충분한 VM이 있든 없든 항상 NULL 이 아닌 포인터를 리턴 합니다.

...

리눅스 커널 버젼 2.6과 그후에 버젼에서는 이론적으로 커널의 동작을 수정할 수 있는 방법이 존재 합니다. 그러므로 overcommit memory 가 발생하지 않을 것입니다. 이것은 strict overcommit modesysctl을 통해 조정함으로써 가능합니다:

sysctl -w vm.overcommit_memory=2

혹은 동일한 의미를 가지고 있는 vm.overcommit_memory=2/etc/sysctl.conf 에 삽입합니다.



[출처 : http://kr.sun.com/developers/solaris/techdocs/subprocess.html]

 Memory overcommit is a Linux kernel feature that lets applications allocate more memory than is actually available. The idea behind this feature is that some applications allocate large amounts of memory "just in case", but never actually use it. Thus, memory overcommit allows you to run more applications than actually fit in your memory, provided the applications don't actually use the memory they've allocated. If they do, then the kernel terminates the application.

[출처 : http://www.gnu.org/software/gnusound/Documentation/ar01s05.html]



Posted by 구차니
embeded/80512008. 12. 7. 04:09
C51 Evaluation Tools
  • You may not use the Evaluation Version of the µVision IDE/Debugger to create commercial products.
  • The 8051 compiler, assembler, linker, and debugger are limited to 2 Kbytes of object code. Source code may be of any size.
  • Programs that generate more than 2 Kbytes of object code will not compile, assemble, or link.
  • The debugger supports programs that are 2 Kbytes or smaller.
  • The startup code generated includes LJMPs. Code generated cannot be used in single-chip devices that support 2 Kbytes or less of program space.
  • Programs start at offset 0x0800. Programs generated with the evaluation software may not be programmed into single-chip devices with less than 2 Kbytes of on-chip ROM.
  • No hardware support for multiple DPTR registers is provided.
  • No support for floating-point arithmetic and no support for user libraries is provided.
  • No support for in-line assembly using #pragma ASM.
  • The following components which are present in the PK51 Full Version are not included in the Evaluation Version: Linker for Code Banking, Library Manager, and RTX51 Tiny Real-time Operating System.

이름, 주소 , 전화 번호, 메일 정도의 개인 정보를 요구 하고 Evaluation 버전을 다운 받을 수 있다.
위에 적힌 대로 소스 사이즈는 상관없지만 object 파일은 2K까지만 제한이 되고, 부가적으로
2K 미만 메모리를 가진 칩용으로는 생성이 되지 않는다.(프로그램 시작 offset이 0x0800 으로 고정)
그리고 부동 소수점 / 사용자 라이브러리는 지원되지 않고 #pragma를 사용한 in-line 어셈블리가 지원되지 않는다.

일단 메모리가 4K 정도라면 2K 까지 프로그램까지 작성이 가능하다 라고 봐야 하나..
[링크 : http://www.keil.com/demo/limits.asp]

[다운링크 : http://www.keil.com/demo/]

'embeded > 8051' 카테고리의 다른 글

Keil compiler - Error : Segment too large  (0) 2009.04.13
8051 TIMER 에 대하여  (0) 2008.12.18
KEIL Cx51 - Warning L5: CODE SPACE MEMORY OVERLAP  (0) 2008.12.01
8051에 관하여  (0) 2008.11.28
KEIL Cx51 - 변수형  (0) 2008.11.25
Posted by 구차니