블로그

나빌레라의 이미지

나빌레라의 프로그래밍하기 #7

7. 동사 명사의 정리
지난 글에서는 사용자 시나리오에서 동사와 명사를 아무 생각없이 기계적으로 분리하는 작업만 수행했다. 이번 글에서는 그렇게 분리한 동사와 명사를 무언가 프로그래밍의 재료로 사용가능한 정도의 의미를 가질 수 있는 존재로 만들기 위한 작업을 수행하는 과정에 대해서 이야기를 해 보겠다.

계속 강조하고 언급하는 내용이지만 이 글에서 수행하는 절차는 전혀 학문적으로 검증되지 않았고 완전하지 않다. 실제 프로젝트 작업을 진행할 때는 학문으로 정리된 정식 SE적 절차를 거쳐서 작업하는 것이 더 효율적이고 효과적이다. 다만 나는 그런 SE적 절차에 대해서 제대로 지원을 받을 수 없거나 혼자하는 프로젝트에까지 그렇게 팍팍한 기준을 적용하고 싶어하지 않는 사람들을 위해서 내가 일반적으로 혼자 프로그래밍하고 놀때에 작업하는 과정에 대해서 글로 가볍게 써 나가고 있는 것임을 확실히 인지하고 이 글을 읽어주기 바란다.

먼저, 지난 글에서 분석했던 명사와 동사를 모두 모아본다.

김정균의 이미지

정말이이 이 나라의 개인정보관리는

치가 떨리는 군요. 아들놈이 학교 숙제라고 국립방재교육연구원의 어린이 재난 관리 사이트 가입해서 오라고 하더군요. 대충 사이트를 보니 국가 기관이기에 대충 사용하던 ID/PW (애들이라서 여러개의 IP/PW를 관리하기 힘이 듭니다.)를 등록했는데.. 좀 찜찜해서 비밀번호 찾기를 하니 등록한 암호가 평문으로 뜨더군요.

뜨악.. 하고선 이게 뭐야 하면서 암호를 변경 하려고 정보 변경에 갔더니 더 뜨악한 것은 암호 변경할 수 있는 방법이 제공되고 있지 않다는 것입니다.

그렇다면 대충 시나리오를 만들어 보자면.. 개인 암호가 평문으로 저장이 되어 있거나 복호화가 가능한 암호로 저장이 되어 있다는 것인데, 이정도의 보안 사고를 가지고 제작된 사이트라면 웹의 보안홀도 많이 있지 않을까 추측이 되고, 유출이 되면 주민번호부터 ID/PW까지 싸그리 유출이 되는 것이 뻔해 보이네요. (야밤에 다른 사이트들의 암호를 바꾸느라 힘이 들었습니다. 하다보니..
윤선생 영어교실도 password가 암호화가 되어 있지 않더군요. 혹시 자식분들이 하고 있다면 압력행사를 해 주시기를.. 저도 했습니다.)

jachin의 이미지

각자의 인생의 공간...

나의 삶 중에 내가 차지했던 공간이 얼마나 있던가.

과거를 돌이켜 각 시간마다 있던 공간을 전부 셈해보자.
사람들로 미어터진 서울과 주변 도시, 지방에 놀러가고 출장가며
잠시나마 본 도시들의 일부. 좋은 기회에 떠나게 된 이국의 도시들.

과거에 비하면 지금은 우유곽같은 좁은 공간을 차지하고 있는 나.

그러나 내 인생의 공간은...

2^32개 색상값을 갖을 수 있는 1280 * 1024 개의 0.24인치 점들,
128 * 2^20 개의 메모리 공간, 그곳에 펼쳐지는 수많은 이미지들,
그것들을 담을 수 있는 1 * 2^40 개의 공간.
세계를 담은 지도 한 장에 내가 발 붙일 수 있는 공간은 점 하나도 안되지만,
나의 생산물과 사고로 이루어진 발현물을 쌓아둘 수 있는 무한의 공간.
나는 오늘도 만든다. 내 인생의 공간을...

OpenGL 시작...

gurugio의 이미지

CPK 2.2 configure.in, config.mk.in, platform.h.in 작성

점점 쓸데없이 길어집니다.. 문맥도 혼란스럽고 뒤죽박죽이 되갑니다..
관심좀 주세요 :-(

CPK 2.2 configure.in, config.mk.in, platform.h.in 작성
configure의 가장 큰 목적은 플랫폼 환경을 분석해서 프로그램이 플랫폼 환경에 상관없이 일정하게 동작하도록 해주는 것입니다. 사용자가 프로그램을 빌드하고자하는 환경은 아주 다양합니다. 운영체제가 32비트이거나 64비트일 수 있고, 헤더 파일의 위치가 다르거나, 운영체제 자체가 다를 수 있습니다. 또 프로그램을 빌드하기 위해서는 libabc.so 라는 라이브러리가 있어야하고, abc.h라는 헤더가 있어야 하는데 이런 다양한 환경을 찾아내서 지금 빌드할 플랫폼이 어떤 환경인지를 찾아내는 것이 configure의 임무입니다.

gurugio의 이미지

CPK 2.1 디렉토리 구조

제품을 개발하는 단계를 아주 단순화해보면 요구사항분석, 설계, 개발, 테스트(, 수금??)으로 분류할 수 있습니다. 개발 단계만 생각해보면 개발 단계에서 가장 첫번째 단계가 빌드 환경을 작성하는 것입니다. 빌드라는 것은 간단하게 말하자면 여러 디렉토리에 여러개로 흩어져있는 소스들을 컴파일하고, 외부 라이브러리를 링크해서 최종 제품을 생산하는 일이라고 생각할 수 있습니다. 빌드 환경이 꾸며진 다음부터는 차례대로 소스를 작성해나가면서 수시로 빌드와 테스트를 진행하게 됩니다.

나빌레라의 이미지

나빌레라의 프로그래밍하기 #6

6. 시나리오 분석
컨셉은 잡았지만 이제 프로그램을 어떻게 만들고 어떤식으로 설계해야 할지 모르겠는 사람들에게 내가 추천하는 방식이 시나리오 방식이다. 내가 만들고자 하는 프로그램이 어떤식으로 돌아가는 지를 그냥 머릿속에서 떠오르는 대로 아무런 부담도 제약도 없이 적어 놓고서 그것을 분석하면 된다. 내가 머릿속에 떠오르는대로 마구잡이로 적어놓은 시나리오는 저번에 쓴 글에 있다.

이제 그 시나리오를 하나하나 분석해 보겠다. 분석의 방법은 간단하다. 시나리오를 하나씩 읽으면서 정적객체와 동적객체를 분리해 낸다. 정적객체와 동적객체는 우리가 쓰는 언어의 명사와 동사를 생각하면 된다. 생각보다 아주 쉬운 작업이다.

1. 사용자는 서비스에 접속한다.
명사: 사용자, 서비스
동사: 접속하다.

2. 그냥 접속하면 게시판의 글을 읽을 수 있지만, 글을 쓸 수 없다.
명사: 게시판, 글
동사: 접속하다, 읽다, 쓰다, 쓸 수 없다.

권순선의 이미지

레드햇, 커널 패키지를 고의로 어렵게 만들었다?

레드햇이 커널 패키지를 고의로 어렵게 만들었다는 이야기가 나왔습니다. http://lwn.net/Articles/430098/ 에서 인용된 데비안 커널 개발자의 인터뷰에 다음과 같은 내용이 나옵니다.

gurugio의 이미지

CPK 1.4 emacs 활용 연습

1.4 emacs 활용 연습
소스 등록, 소스 작성, 빌드, 빌드에러확인, gdb실행, 프로그램실행,소스 커밋

emacs를 가지고 간단한 소스를 작성해서 subversion에 등록하고, 소스 작성, 컴파일, 컴파일 에러 수정, gdb 디버깅, 프로그램 실행, 소스 커밋을 하는 연습을 해보겠습니다.

먼저 subversion 계정을 만드시기 바랍니다. 개인 머신에 서버를 만드시거나, 구글 코드 등의 서비스 사이트에 가입하시는 것도 좋습니다. 구글 코드가 초기에는 매우 느리고 불편했는데 최근에는 속도도 빠르고 안정적이어서 즐겨 사용하고 있습니다.

일단 subversion 계정이 있다는 가정에서 시작하겠습니다. 미리 subversion에 커밋된 study라는 디렉토리를 가지고 있다고 가정하겠습니다. 최초로 디렉토리를 등록하는 방법은 사용하시는 subversion 서비스에 따라 다르므로 해당 사이트에 문의를 하시기 바랍니다.

gurugio의 이미지

CPK 1.3 emacs라이브러리

CPK 1.3 emacs 활용
svn-status(update, diff, revert 등등), gtags, gdb, tramp, 컴파일 및 에러 이동, eshell,

C프로그래밍에 필요한 emacs 기능들을 몇가지 소개하겠습니다. emacs는 사실 편집기라고 생각하기 어색할 정도로 기능이 많습니다. 하드웨어 부팅만 안할뿐이지 운영체제가 하는 일을 거의 다 할 수 있습니다. 웹 브라우징도 되고 스케줄 관리, 통합 개발 툴, 터미널, e-메일, ftp, telnet, ssh 등등 뭐가 지원 안되는지를 알기 힘듭니다. GUI기반 통합개발툴처럼 개발 환경을 꾸밀수도 있습니다. 제가 익숙하지 않아서 못쓸 뿐이지 개발에 필요한 기능은 모두 있다고 생각하면 됩니다. GUI 개발툴처럼 버전이 달라질때마다 동작이 달라지거나, 추가 비용이 들어가는 일도 없습니다. 한번 익숙해지면 운영체제에 상관없이 어디에서나 똑같은 개발 환경을 무료로 꾸밀 수 있습니다.

페이지

RSS - 블로그 구독하기