2012년 7월 29일 일요일

6/3


이어서...

포팅 시스템을 구축하는 순서는...

개발 서버 구축(HOST) - redhat/fedora/etc.
툴체인 구축 - ppc_82..../arm-linux-.../etc.
부트로더 포팅 u-boot/etc..
커널포팅 - 커널 패치 및 코드수정.
루트파일 시스템 구축 및 customizing
디바이스 드라이버 작성
양산용 부트로더 제작 - POST(Power On Self Test)기능.

참.. PC에는 바이오스가 있지만 임베디드에서는 부트로더가 그것을 담당한다고 한다. 그러니까 디바이스 인식시키는 작업을(Flash memory, I/O 유틸지원...) tftp, bootp등.

부트로더 중에서는 u-boot가 좋다고 한다. 메모리 덤프 기능이 있어서 디버깅에 강력하다고... u는 universial이란 뜻이라고... sourceforge.net에서 구할 수 있다.









HOST-nfs-TARGET으로 연결할수도 있단다. 그리고 하드웨어 설계할 때는 해당 cpu 회사의 레퍼런스 보드를 꼭 살펴 보야하 한다고 한다. 이것이 제일 중요하다고....

 레퍼런스 보드가 있고 거기서 부품들을 빼오고 조합해서 설계한 보드가 나올 때 스키마틱(회도로)를 레퍼런스 보드에서 최대한 바꾸면 안된다고 한다. 특히 memory map이라 IRQ는 일치시키라고...
왜냐면... 강사분이 직접 보드를 하나 만들었는데 커널이 작동을 안해서 보니 IRQ가 바뀌어 있어서 시스템이 제대로 동작하지 않는다고 한다. 만약 IRQ 5번이 터치 스크린이고 7번이 마우스 시리얼 포트라고 하자. 소프트웨어 엔지니어가 바뀐것을 모르면 마우스가 움직이나는 터치 스크린이 움직일 것이다. 그리고 바뀌면 시스템 프로그래머들에게도 일일이 알려줘야 하고... 여러가지 번거러움이 많다고 한다. 메모리 맵 같은 것은 바뀌면 부팅도 안된다고 한다.

Xscale이란 칩은 arm칩에 intel사의 아키텍쳐를 결합해서 만들었다고 한다. 커널 포팅시 패치만 잘시켜주면 다 되고...

아.. 설계시 이더넷 컨트롤은 설치를 하라고 한다. 속도가 빠른 것이 장점.하지만 시리얼로 전송하는 것이 너무나도 느리기에 필수가 된다고 한다.

임베디드 시장에 요즈음 뜨는 이슈로는 PNP. 동영상 플레이어 기술이라고 한다. OS를 뭘로 쓸까 고민하고 있는데 윈도우즈 쪽으로 가고 있다고 한다. 리눅스는 네트워크에 강하지만 멀티미디어에 약하다고...








이어서...

 리눅스 커널을 포팅하려면 HOST와  TARGET이 있어야 한다. 호스트는 자기 컴퓨터로 타겟은 시중에 있는 타켓보드 쯤으로 생각하면 되겠다. 타겟에서 arch라 하면 cpu하나를 말하고 machine은 cpu제조사의 레퍼런스 보드(`=.타켓보드)를 말한다.

 툴체인은 그 칩에 맞는 기계어로 번역시켜주는 컴파일러들이고 tftp로 커널 다운로드 기능이 부트로더에 있어야 하겠다. 같은 C언어 소스라도 기계어는 칩마다 틀리니 툴체인이 필요한 것이다. tftp는 간단한 프로토콜이라 많이 이용한다고 한다.
 어셈블리어도 틀리다고 한다(기계어가 틀리니 당연할 수도 있지만 난 몰랐따) 이런게 머쉰 코드가 틀리기 때문에 Cross-compile이 나왔다고 한다.

 gcc 컴파일 법. 걍 gcc [소스] 하면 a.out 이 되고... gcc -o [outfile] [inputfile] 쓰면 이름이 지정된다. cc는 c++을 만한다.








계속 이어서...

 임베디드는 표준이 없기 때문에(하드웨어가 다 달라서...(자기가 만드는 것이니...)) 포팅이 필요 합니다.
 Real-Time Linux는 실시간 리눅스가 아니라 제시간 리눅스라고 해야 된답니다. 이벤트 발생시 주어진 시간안에 처리가 되어야 한다는 개념인데 맞는 것 같아요. 시간을 충분히 보장이 되어야 한다는 것인데 PC를 켜고 무거운 프로세스를 돌리면 마우스가 버벅 되잖아요. RTOS(Real Time Operating System)에서는 이런 현상이 일어나면 안되죠. 마우스가 아니라 비행기 제어나 용광로 제어 프로그램에서 비상사태가 발생했는데 비행기는 피하지 않고 용광로는 계속 쇳물을 붙는다면... 커걱.

 Single Linux Kernel은 RTOS 지원이 안된다고 한다. 싱글이 뭔지는 잘모르지만... 여하튼 리눅스 커널이 비 선점형이라는 것은 알고 있다. 2.6때부터 RTL(Real Time LInux)가 강화되었고 x86계열만 지원한다고 하는데잘 모르고. MicroC/OS2커널은 요즈음 볼려고 깔짝깔짝대고 있음.











 엠큐브로직스(mcubelogics)의 이준석 사장님께 커널 포팅을 어떻게 공부할 것인가에 대해서 강연을 들었다. 정말 좋은 강연이었으며, 아시는 것도 많지만 전달하는 능력은 더 뛰어나신 것 같았다. 현장 엔지니어라 강연 경험이 없다고 하셨는데 프로 강연자보다(내가 볼 때 책도 내신 허XX씨) 훨 나으셨다.
 애구... 너무 좋아서 강사샘 자랑만 했구만.. 여하튼 내가 흔들림없이 이 길을 가게 되면 꼭 다시 만나고 싶다. 좀 정리를 할건데 틀린 내용은 내가 제대로 적지 않아서다.

 강연은 임베디드리눅스 소개, 부트로더 세팅, 커널 포팅 순서였다.

Embeded란... 내장된....이란 뜻 <-> PC
8086/8088, 80186, 80286, 80386은  x86 계열이다.
8bit, 16bit, 32bit는 acumulator(누산기)폭을 뜻한다.  
linux포팅의 최소조건... mmu가 있어야 하고, minimum32bit라고 하던데(제대로 들었는지 확실치 않음)
mmu가 없어도 되는 리눅스는 Uclinux인데 문제가 좀 있긴 하답니당.
커널 버젼은 2.6.10 이면.. 안전버젼... 6이 짝수니까요 (걍 적어봅니다)
www.kernel.org에서 커널받고 ARM포팅할 때는 ARM 사이트에 가면 패치가 있답니다. 그걸로 패치해 주면 ARM용 커널이 됨.
그래서 2.4.18-rmk-hh24 이런식으로 커널 이름이 매겨지는데 rmk는 arm linux kelnel 관리자 이니셜이랍니다. 이니셜이 붙더군용. hh24는 워낙 많아서 붙인다는데... 브랜드 비슷한 식별자 인지... 버젼으로 해석해야 되는지 불분명함.
PDA는 www.handhells.org에서 패치는 한답니다. 그런데 접속이 안되는데 PDA을 다루는 전문그룹이라고 하니 찾아봄직함...(잘못 적지는 않았는데...)

아래는 네이버 사전 캡춰
원래 누산기는 가산회로()를 가진 레지스터[register:저수장치()]에 대해 주어진 명칭이다. 일반적으로는 여러 가지 기능을 가진 레지스터와 가산기나 배수회로()가 접속되어 최종결과를 기억하는 레지스터를 누산기라고 한다. 컴퓨터의 명령도 ‘누산기의 내용에 기억장치몇 번지의 내용을 더하라’라든가, ‘곱셈 레지스터의 내용과 기억장치의 몇 번지 내용을 곱하고, 결과를 누산기에 기억하라’ 등의 형식을 취하는 경우가 많다.
레지스터의 회로는 주로 플립플롭을 많이 연결한 형태를 하고 있고, 가산기나 배수회로 등의 연산장치 논리곱(AND) ·논리합(OR) ·논리부정(NOT), 지연회로() 등의 소자를 많이 사용한다.








동아리 부서가  OS라서 여러가지 잡다한 것을 배우고 있었는데 이제는 그 폭을 조금이라도 줄여야 겠다는 생각이 들었다. 그래서 시스템 관리자 보다는 시스템 프로그래머 쪽에 더더욱 치우치는 것이 좋을 듯 하고 생각이 들었다. 그러면 좋아하는 것을 직업으로 하면서 하려면 어떻게 해야 할까... 임베디드 분야만 하더라도 하드웨어 설계쪽이 있을 것이고 소프트웨어에 가까운 쪽이 있을 것이다. 소프트웨어라도 커널쪽이 더 가깝겠지. 그런데 커널은 하드웨어 쪽에도 반정도는 담겨 있다.
 그래서 정한것이 시스템 프로그래머. 커널은 커널자체에 대한 알고리즘 분석과 포팅. 하드웨어 설계는 못해도 어떻게 돌아가는지는 알아야 하겠지. 물론, 과가  IT 와는 다른 시스템 경영이라 최선을 다한다고 해도 시간할애 때문에 다른 사람에게 많이 밀리겠지만... 임베디드라도 소프트웨어에 가까운 쪽이라면 앞으로 내가 배울 시스템 경영 지식도 접목 시킬 수 있을 것 같다.
 앞으로 길을 나아감에 무엇보다도 중요한 것은 두루두루 알고 하나를 정확히 아는 것(요건 커널). 같은 분야의 많은 사람을 아는 것이다(이게 제일 중요할 듯). 내 생각 끝.

  GNU 가 GNU is not UNIX인데... 신기하지 않은가? G의 뜻은 없다.








 크랙 크랙~

 좋은 Reverse 사이트를 소개할까 한다. www.learn2crack.com 이란 곳이다. 이 곳에서 연결되는 링크들은 또 다른 링크들을 가지고 있는데 정말 대단한 리버스 사이트의 집합체 이다. 시간 있으면 웹집으로 다 긁어서 보관하길 바란다. 책에도 이렇게 편집이 잘 되어있고(읽어도 지루하지 않다) 친절하고 알찬 내용의 자료는 없을 것이라 생각한다. 크랙이란 것이 워낙 음지이고... 양지로 나와서 책 쓰는 사람들의 책 보면 내용이 다 거기서 거기다.
 참 내가 소개한 사이트와 그 링커들은 프로그램 코드 분석을 통해서 해킹하는 내용이 참 많다. 우리가 프루나나 파일구리같은(지금은 다 까딱하면 막히지만...) 곳에서 받는 프로그램들은 국내/국외 리버서들이 다 크랙한 것들이다. 그래서 우리의 컴퓨터에는 몇천만원치의 소프트 웨어가 깔려있다.
 역 어셈블을 통해 디버깅 할 수 있을 정도의 실력만 되면 어떤 크랙 분야에서도 응용이 가능 할 듯하다. 어차피 하드웨어 구조나 코드 구조는 한우나 미국소고기냐 하는 정도의 차이에 불과하다고 생각된다(소고기란 자체보다 이게 더 중요할 때도 있긴하다). 여하튼 접근법만 알아도 어디서 자료를 찾고 구할지 알기 때문에 궂이 처음부터 공부할 것 없이 바로 소프트웨어 해킹 공부를 해도 될 듯 하다.

 이런 믿음으로 나도 조금씩은 보고 있다 ^^

내가 본 책들이나 만났던 크랙 잘하는 사람들은 다 똑같았다. 특정 툴이나 소프트웨어나 사이트의 특정 버그나 하다가 보니 우연히 알게 된 것을 포장을 참 잘하는 사람. 혹은, 실전 해킹 책에서도 장황하게 기초적인 내용만 끄적거리다가 실제 해킹 방법에서는 고작 툴을 사용하는 정도. 이미 다 패치 되어버린(그냥 봐도 그걸 패치 사이트에서 대충 긁어와서 살을 붙인듯한) 내용을 써서 꼭 자기가 한 것처럼 써 놓는다. 그리고 자기는 너무 바쁘고 실력이 뛰어나서 질문을 받기가 힘들다는 식의 말투로 이메일을 써 놓거나... 책을 쓰면서 이름도 밝히지 않는다. 해커스랩의 운영진들도 사진 올라와 있는데.

 1200bps 모뎀은 못 써보고 2400bps 모뎀과 소니 2배속 CD-rom... 더 거슬러 올라가서 팩 꽂는 컴퓨터를 쓰면서 이것저것 줏어 들은 것은 많은데...

해킹 이란 것은 사실 어려운 것이다. 한번 해킹했다고 해서 그 해커가 똑같은 시스템을 해킹하기란 쉬운일도 아닐 것이다. 운영체제 취약점 해킹은 항상 그것이 패치되고 있고 네트워크 해킹은 너무도 어렵다(그래서 해커가 천재와 일맥상통하는 것이겠지). 여기저기 둘러보면 아무래도 소프트웨어를 해킹하는 것이(인증키 푸는 것들...) 제일 좋을 듯하다.

 하지만... 원본 CD 자체에 락을 거는 방법을 내가 고등학교 때 본 것 같다. 그리고 실제 그런 CD도 접해봤었다. 네트워크 연결 안되면 안깔리는 프로그램도 봤다(그것도 매우 허덥한 프로그램).
 여기서 신기한 것은 윈도우를 만드는 마소는 굴지의 기업인데 불법복제 심하게 규제하려면 언제든지 할 수 있을 것 같은데... 왜 안할까?
 답은 간단. 많은 사람들이 쓸 수록 이익이기 때문이다. 많이 쓰기에 윈도우 관련 프로그램이 나오고(운영체제(플랫폼) 특성상) 사는 사람도 더 많아 지기 때문(이것도 일정 수준 팔린 상태(윈도우는 과도했지만))에서 적용되는 이야기이다.

 정리하면... 진정한 해킹이란... 전 세계적으로 사용하는 마이크로 소프트 회사 사장이 윈도우즈란 소프트 웨어에 원격 컨트롤 프로그램을 심어서 전 세계 사용자의 정보를 캐고 윈도우즈가 깔린 플랫폼이라면 www로 접속해서 익스플로러 창에 특정 코드를 집어 넣으면 컴퓨터를 제어 할 수 있게 하는 것이다. 사실상 만드는 쪽에서 이렇게 만들어 버리면 가능...

 어려운 것은... 한명이 만드는 것이 아닌데 모두의 양심을 어떻게 일치시키느냐... 정보를 안 캐내고 부정하게 돈을 안 벌고... 이런데서 재미를 안 느껴도... 알아야할 지식이 더 많고 돈도 부족함이 없고... 개발하는데 더 재미를 느낀다면...

애고... 헛소리 그만.








페도라3 사용기...

파이어 폭스 상에서 PPT 파일은 익스플로어 처럼 자동으로 불러와진다. PageUP, PageDOWN으로 넘기면서 보면 된다. Alt+F1 - 인터넷 - IM 이란 것이 있따. GAIM(번역에 게임이라고 되어 있다)은 메신져 있다. 세계에 널리 퍼져있는 메신져가 지원되는데 MSN이 된다. 윈도우에 많이 쓰는 타키, 터치, 네이트온, 버디버디 같은 것은 지원되지 않지만 MSN이 되는게 어디인가? 마소에서 MSN 못쓰게 했다는 소리를 들었는데 ... 끊는다는 것은 (MSN에만 서버 접속 암호를 넣는다는 뜻인가...(?)) 아무튼 잘되더라. 물론 기능은 MSN에 택도 없다. 접속 안한 친구들은 보이지도 않는다. 하지만 접속한 친구가 나오고 같이 대화하거나 쪽지를 보낼 수 있다는 것으로 메신져 핵심 기능의 열할은 있다고 봐야 겠다. ㅋㅋㅋㅋ 편하다. 오늘의 게임은 ataxxx 이다. 옛날에 세균맨을 생각하면 되겠다. 컴퓨터 제법 잘한다. 많이... Ctrl+Z기능 안쓰고는 못 이겼다. 그것도 엄청.








 RTOS...

커널이란 무엇일까... 네이버 오픈 사전의 말을 빌면...
......
 일반적으로, 커널에는 종료된 입출력 연산 등, 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기와, 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케줄러, 그리고 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 수퍼바이저 등이 포함되어 있다.....

 컴퓨터가 첨에 켜지면 바이오스가 실행되는 것으로 알고 있다. 고놈은 부트스트랩 로더를 부르고 커널을 선택하고 깔린 커널 위에 운영체제가 적재되는 것으로 알고 있다.

오픈 사전의 말에서는 `경쟁적으로 요구한다...`나 `어떤 순서... 처리시간... 사용권 부여...`등등의 말이 나와있는 것으로 봐서는 각 프로세서들의 스케쥴을 짜주는 것 정도가 이해가 된다.

알토스란... Real Time Operating System... 의 약자인데, 슬슬 책을 읽기 시작했다.

진정 관심있는 쪽은 임베디드쪽 이기에...

                                                      -12.31.04 일기는 쓰는 도중... 나쁜 기억만 있어서
                                                                                                   넋두리     로 대신하다







자바...

자바 1.5(정확히 말하면 5겠지)에서 Jtable에 대한 인쇄기능이 추가 되었다. 테이블을 인쇄하기 위해서 1.4대 API열라 뒤지고 튜토리얼 뒤지고 Q/A 게시판을 전전해 가면 알아 보았으나 만족할 만큼 출력이 되지 않았다... 해법은 간단했다.

JTable jtable = new Jtable();
어쩌구 저쩌구 이쩌구....
.
 .
jtable.print(); 이게 땡~ 참 try catch로 둘러싸야 한다. 이클립스에서 자동으로 둘러싸 준다.

그리고 제목과 페이지 번호를 넣고 싶으면...

try {
      table.print(JTable.PrintMode.FIT_WIDTH, new MessageFormat("여기다제목"),
                 new MessageFormat("Page - {0}"));
      } catch (PrinterException e) {
                     e.printStackTrace();
      }

요렇게 하면 된다. 자바 5 API에서 긁어 온건데 더 간단히 변형시키면 이게 다다. 요걸 실행 시키면 프린트 설정창이 뜬다. 거기서 인쇄 누르면 간단히 인쇄~ 땡~








페도라 3 사용기...

오늘 하루종일 업데이트 경고창이 안뜬다. 신기신기... 이틀내내 업데이트 올라와서 업데이트 하니라고 바빴다. 업데이트 방법은 윗 패널에 빤딱거리는 느낌표 클릭해서 시키는데로 하면 된다.
Alt+F1 키를 눌러서 프로그램 가면 여러 메뉴가 있는데 엄청 유용한 것이 시스템 설정과 시스템 도구이다. 요것들을 잘 이용하면 수많은 리눅스 명령어를 외우지 않아도 된다(사실 외워야 하지만). 시스템 설정에서 루트 암호는 루트 암호를 변경하는 것이고 보안 수준은 방화벽을 설정하는 것이다. 여기서 방화벽을 사용하지 않음으로 선택하고 콘솔창에서 iptables -L 을 치면 바로 반영이 되었음을 알 수 있다. 편하다. 보안 수준에서 SeLinux란 탭이 있는데 처음 깔 때 보안 수준이 향상된 SElinux을 까시겠냐고 물어보던데 그거 깔았더니 생겼다. 뭐하는 것이고 콘솔 명령어도 모르지만 여하튼 켜놔도 일반 방화벽에서 뚫어놓은 포트 접속은 잘 되더라(http, ftp, ssh)









페도라 3 사용기...
전체 설치를 해서 그런지 CVS 도 깔려 있었다. useradd cvs passwd cvs groupadd cvs는 하려니 벌써 그룹이 있다고 한다. cvs -d /home/cvs init 하니 CVS사용이 되었다. 그런데 이클립스에서 접속이 안되는 것이었다. 문제는 pserver로 접속해서 그렇다. 뭔 옵셥인지는 모르지만 여하튼 extssh로 하니 접속이 잘 되었다. l 게임 중에 지뢰찾기 게임은 윈도우랑 완전히 똑같다. 마우스 2개 버튼 누르는 기능도 같고... 게임 크기 설정도 다 같다. 다만 화면 크기를 줄이는 기능이 있어서 줄일경우 칸이 너무 작아진다. 여하튼 간단히 말하면 똑같다. 감자돌이란 게임은 걍 얼굴 그려주는 거다. 나름대로 중독성 게임.








이어서... 페도라 3 사용기.

2에서 욕먹던 X윈도우 서버 셋팅이 강화되었다. 난 정통적인 리눅스 유저가 아니라서 잘은 모르지만... 서비스 띄우고 서비스 셋팅 해주는 부분이 X윈도우에 다 있어서 참 편했다. 방화벽 설정도 손쉬워서 조금만 해주면 바로 데몬 띄워서 FTP, HTTP 서비스는 금방 제공할 수 있었다.(전체 설치여서...)

Mysql 버젼이 하위 버젼인 것 같다. 3.x 대 인 것 같은데 이건 왜 업데이트가 안되는지 모르겠다. 제로보드 깔다가 하도 에러가 나서 보니... 3.x대다. 다시 깔려서 귀찮다 --; RPM이 있긴 하지만 언제나 그랬든지 의존성 체크는 짜증이 난다.

여기 깔여있는 게임들은 중독성 플레쉬 게임과 유사하다. 단순하면서 중독성이 강하다. 혼자놀기의 진수일까... 여하튼 스타크레프트만 돌아가도 윈도우 생각은 안 날텐데......

참... 전체 설치를 하고 처음 시작하면 불필요한 데몬이나 보안에 관계되는 데몬들도 자동으로 안 떠있다. 옛날에 쓰던 리눅스들은 인스톨하고 부팅하면 데몬들이 다 떠있어서 화장실간 사이에도 해킹 당했다던데... --


당분간 X 윈도우만 쓸 것 같다. 메뉴들을 세세히 분석해 봐야지. 윈도우엔 메뉴얼이 필요없으니 열심히 해 봐야지.





























아직 윈도우를 안깔고 페도라3를 쓰고 있다.

한글도 안되고, 프리미어도 안되고, 플레쉬, 메신져, 블로그에 직접 글도 안 써져서 다른 데 썼다가 딴 컴퓨터로 올린다.

지금 내가 쓰는 컴퓨터 사양이 워낙 고사양(듀얼제온3.0C)이라 윈도우를 안 깔아 본 상태에서는 모르나. X 윈도우도 참 빠른 것 같다.

자바나 이클립스는 리눅스용이 있기에 깔았다. 이번 프로젝트를 하면서 스윙으로 프로그램 만들었는데... 확실히 리눅스에서 봐도 똑같았다. 이클립스는 GTK를 쓰는 버젼을 받았는데 확실히 윈도우용 보다는 그래픽 면에서 부족한 느낌이 들었다. 단축키랑 사용법은 다 똑같아서 뭐... 상관은 없었다만. 며칠 사용해 보니 지금은 이 그래픽이 더 좋은 것 같다는 생각도 든다. 뭐든지 익숙해지는게 좋은 것이니.
레드햇9 에서는 어떤 소스를 들고 오던지 한글 깨짐이 없었는데 페도라3에서는 한글이 무쟈게 깨진다. 여기서 작성한 파일을 다른 윈도우 플랫폼 컴퓨터에서 불러도 깨진다. 거기 있는 것을 가져와도 깨진다.
웹에서는 전혀 문제가 없다만... 이전 버젼의 리눅스에서 작성한 한글도 깨지니... 뭔 문제인지는 모르겠지만 아미는 아닌가 보다.





















애자일 방법론...

애자일(Agile)은 기민, 민첩이란 사전적인 의미가 있었다. 애자일 애자일... 고객의 요구에 신속하게 대응하는 것인지... 아니면 빨리 프로그램을 만든다는 것인지 아직은 잘 모르겠다.

야스미디어의 소프트웨어 개발의 지혜라는 책을 보면 애자일 개발 방법에 12가지 원칙이 씌워있다.

1. 우리의 최고 가치는 유용한 소프트웨어의 빠르고 지속적인 공개를 통해 고객을 만족시키는 것이다.

2. 개발 후반부에 접어들었다 할지라도, 요구 사항 변경을 환영한다. 애자일 프로세서는 고객의 경쟁 우위를 위해 변화를 이용한다.

3. 개발 중인 소프트웨어를 2주에서 2개월 사이, 혹은 더 짧은 시간 간격으로 자주 인도한다.

4. 프로젝트 전체 과정 동안 비즈니스를 하는 사람과 개발자는 계속 함께 일해야 한다.

5. 의욕적인 개인을 중심으로 프로젝트를 구성한다. 환경과 필요한 것을 지원하고 그들이 그 일을 해 낼 것이라는 믿음을 갖고 일을 맡긴다.

6. 개발 팀 내부에서 정보를 전달 및 공유하는 가장 효율적이고 효과적인 방법은 직접 일대일로 대화하는 것이다.

7. 개발 중인 소프트웨어가 진척 상황의 일차적 척도이다.

8. 애자일 프로세서는 지속 가능한 개발을 촉진한다. 스폰서, 개발자, 사용자는 꾸준히 지속적인 속도(pace)를 유지할 수 있어야 한다.

9. 우수한 기술과 좋은 설계에 대한 지속적인 관심은 진행 속도를 향상시킨다.

10. 단순성(아직 끝내지 않은 일의 양을 최대화하는 기술)은 필수적이다.

11. 최고의 아키텍처, 요구 사항, 그리고 설계는 자기 조직적인 팀에서 나온다.

12. 규칙적으로, 팀은 좀 더 효과적인 방법을 반영해야 하고, 적절히 그 동작을 조율하고 조정해야 한다.




























WPE를 이용한 패킷 에디팅.

우선 게임을 예로 들어서 예를 간략하게 소개해 드리겠습니다.

 온라인 게임인 경우에는 서버와 클라이언트(자기 컴퓨터)가 서로 패킷을 주고 받으면서

게임을 진행시키게 됩니다. 하지만 보통 암호화가 되는데(큰 게임의 경우) 암호화 안되는

게임들도 있습니다. 기껏해야 플레쉬 게임 정도 겠지만요.

-- 아래 내용은 출처를 알 수 없는 갈무리 내용 입니다 --

 내 케릭터의 게임상 좌표 100,200이라는 곳으로 이동한다고 하면...

이동 12 01 코드, 좌표 100=>64, 200=>C8

S 0000 12 01 00 00 64 00 C8

wpe상 패킷을 이렇게 전송시킵니다.

이동 코드가 있듯이 다른 여러 행동 코드가 다 설정 되어 있습니다..

유저들이 하는 모든 행동 ^^

S 0000 12 08 00 00 A2 00 00 B1 00

뭐 대충 이렇습니다.

그럼, S의 자료를 서버 DB에서 받습니다. 받아서 오류가 있는지 검사하고, 받은 자료와 DB서버에

 저장된 자료들이 계산에 들어갑니다. 계산한 자료를 다시 Rev합니다. 그럼 클라이언트에서 자료를

서버로부터 받아서 화면상에 표현합니다. 여기선 때때로 랙을 줄어보겠 다고 클라이언트에서

데미지 계산까지 해서 send에 보내는 게임을 볼 수 있습니다. 종종...

 대표적인 뮤 같은 경우 공격 속도가 서버에서 관리 하는게 아니라서 공격속도가 클라이언트에서

이루어져서 공속핵이라는게 존재합니다. send에 공격 속도는 안 보냅니다. 단지 내가 어떤 몹을 쳤

다 안 쳤다고만 보내질 뿐 공격속도에 관한 것은 클라이언트 파일에 존재합니다.













디지털멀티미터 : 전압 저항 전류 를 측정하는 기계

ALU (arithmetic-logic unit) ; 산술논리 연산장치.

 연산장치는 논리연산을 수행하는 논리 연산부와 사칙 연산을 대수 법칙에 따라 연산하는 산술 연산부로 구성되고, 이들을 보조하는 시프터가 있따. 시프터는 데이터 비트들을 왼쪽 또는 오른쪽으로 밀어 내어 곱셈과 나눗셈 또는 편집 등의 역할을 수행한다.

고정 소수점, 부동 소수점, 가변 워드 길이 등의 산술 연산과 논리 연산을 주로 실행.









Boole의 대수 ( Boolean Algebra)

 이것은 George Boole이라는 수학자가 개발한 대수로 논리 연산을 다루는데 필요한 규칙을 제공해 준다. Boole의 대수를 사용하면 복자밯ㄴ 논리 표현식을 단순하게 표현할 수 있고 따라서 보다 적은 수의 논리 게이트를 사용하여 여러 가지 함수들을 구현할 수 있다. 때로는 회로 제작이 용이하도록 한 종류의 게이트만으로 이들 함수를 표현할 수 있게 해 준다.

Boole 대수의 여러가지 성질과 몇몇 정리들은 뭐 볼필요가 있을 까....

A + 0 = A
A + 1 = 1
A + A = A
A + ~A(A위에 바) = 1

보듯이...+는 OR 이라고 생각하면 된다. 하나라도 맞으면 참. *는(중간에 점) AND라고 보면 된다.
+와 *는 수학에 있는 교환 결합 분배 흡수 드모르간 법칙이 모두 적용된다.












CVSNT - Setup.exe

제어판, 물고기 -> Repositories -> Comm뭐하고 그 밑에밑에 2개 체크 -> ADD
-> tem.share project.

CVS

checkout - 로컬로 가져옴.
add - command 추가.
commit - 확약 (에러없는 소스만 보내야 함) 자꾸자꾸~ 빠른 리뉴얼~
update - 로컬껀 그대로 남겨져 있음.(CVS Repository에서 받아옴)

약점!!! 이름 변경시에는 comment로 보고 해 줘야함.

기타 db기반의 버젼관리 툴 - subversion, tigris.org

좋은 습관 : update와 commit를 자주 해라~









J2SDK 원조는 smalltalk.
가트너 그룹(?) - 도구를 이용하면 기술자들의 Gap을 줄여준다(기술자들의 실력차이를 줄인다)

Eclipse - 사용시 메모리 200M - 미사용시 5M(다른 창을 선택하여 실행중일 때)
-------

Workspace에 따라 설정이 틀림.

Perspective, workbench 알아두고..

package는 디렉토리로 존재.
package net.han => src/net/han








팀 개발 좋은 습관.

Convention  규칙 관례 (Brace, ...코딩 스타일)
Communication 의사소통 (내가 이런 매소드를 만들었소~~~)
Collaboration 협조 ( 인간성이 좋아야... 고립은 No! )

JDK, Tomcat, MySQL, Eclipse, Lomboz, CVSNT, ANT, JUnit....







Project 개발도구

Build Tool - ANT
Test tool - JUnit
Version control - CVS
Documentation - 마르미, RUP(?)확실치 않음.
Bug / Issue Control - 버그질라? 얼핏 들은 거라....

Creeping request - 슬금슬금 요구사항 -> 요구사항의 변화.








 JUnit을 사용해 보니 정말 불편했다. 사실 System.out.println이 더 편했는데.
하지만 자꾸만 쓰다보니 편리해졌다. System.out.println은 쓰고 지우고를 계속 해야 했는데
JUnit의 testCase는 한번 만들어 놓으면 자꾸자꾸 쓸 수가 있었다. 더욱이 테스트 로직도
자꾸자꾸 이용할 수가 있으니...

 뭐, 사실 아직 많이 사용해 본 것은 아니지만 자꾸 쓰게 될 것 같다.
sysout 보다는 뽀다구가 나니까. 단지 그 이유.







쉘 프로그래밍 시험을 쳤다. 요새 슬럼프에다가 사람에 대한 회의가 부풀어서 인생에 대한 회의에 미칠 정도라... 결론부터 말하면 공부 제대로 안하고 쳤다. 물론, 그래서 후회가 남는다. bash쉘 공부 했는데 C쉘 문제가 나왔다.

 뭐, 아는 사람이야 별반 다를 것이 없다고 하지만 난 꺽쇠와 괄호 하나하나에도 짜증이 났다. 결국 2문제는 못 풀고(그래봐야 6문제지만) 나왔는데. 후회가 되었다. UNIX 프로그래밍 수업은 개강 전에 열심히 공부해 놓고 수업시간에는 오락만 했다. 결국 지난 여름 방학 때 공부한 것으로 우려먹었다는 것이다. 수업들은 의미가 없다고 해야 하나...

 공부 한 것도 없고, 한탄만 늘어놓네... Just do it이 답이군 그려...

아무 가치 없는 키보드 두드림 이었다. 참... 선배들이 기계식 키보드를 주문했는데 4만원 짜리. 키보드 감이 궁금하다. 어릴적 치던 기계식 키보드~ 다다다다락

















댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...