요사이 또 한 동안 포스팅을 하지 못했던 것이 있군요. 최근 삼성소프트웨어멤버십이라는 곳에 지원을 하게 되어 그 곳에서 열심히 살다보니 포스팅이 조금 늦었습니다. 사실 이전에 올리던 OS 쪽 부분에서는 조금 많은 변화가 있었습니다.
실제 Buddyblock 을 통한 메모리 할당 부분쪽이 수정되어 정상적인 동작을 하고 있고, 이로 인해 스케쥴러를 만들 기반은 된 상태구요. 시간이 나게 되면 틈틈이 작업을 할 생각입니다. 현재는 다른 작업 때문에 OS를 통 건드리지 못하고 있네요^^;
최근 하고 있는 일은 가상의 Http 서버를 만드는 일 입니다. 단순히 이 문장으로는 아마 파악하시기가 힘드실 것 같은데요. 공유기를 한 번 보시면 쉽게 판단이 되실듯 합니다. 공유기의 주소가 대충 몇 가지 있지만 제가 사용하는 공유기의 경우를 예를 들어서 http://192.168.0.1 로 접속을 하면 보통 인증창이 뜨게 되고 HTTP 파일로 공유기의 설정을 서로 바꿀 수 있습니다.
공유기 쪽에서 클라이언트로부터 전송받은 HTTP 페이지 데이터를 기반으로 공유기의 설정을 계속하여 바꾸게 되는 것인데요. 일반적인 IIS 같은 웹서버를 비롯하여 파일 전송을 주로 하는 역할과는 많이 다르다고 보시면 됩니다. 현재 많이 쓰이는 프로그램 들 중에서 하나를 비교하라고 한다면 BerrysWebShare 프로그램과 가장 비슷할 것 같군요.
원리는 대충 아래와 같습니다. 어차피 HTTP 프로토콜이라는 것이 TCP 위에서 아스키로 이루어지는 통신의 규약이다보니 HTTP 프로토콜을 서로 전송하고 처리할 수 만 있다면 훌륭한 통신매개체로 사용할 수 도 있습니다. 더욱이 HTTP 라는 것이 범용적으로 사용하는 프로토콜이다 보니 요새 열풍이 불고 있는 스마트폰이나 PSP, PMP등으로도 웹브라우져만 있다면 접근이 가능하게 되어 있는 점이 무척 좋습니다.
위 사각형 상자 안에 있는 내용이 어떠한 내용을 요청 받음과 동시에 데이터를 전송하는 형태의 한 부분 입니다. POST 형태로 데이터가 전송되는 부분이 맨 아래에 보입니다. 이러한 데이터를 가지고서 여러가지 가공을 한다면 HTTP 서버에서 즉각적인 처리가 가능하게 됩니다. 좀 재미있는 응용이라고 생각할 수도 있는 부분이라 사실 구현하면서도 정말 재미있었습니다.
하지만 만들어야 하는 기능이 이 것을 제외하고도 스크립트 언어 쪽 기능도 있다보니 이 부분 또한 처리를 해야 하여 더욱 바쁩니다^^. 그럼 이만 글을 줄이도록 하겠습니다.
요새 통 글을 쓰지 않아 여기저기 거미줄이 쳐져 있습니다. 한 몇 개월 동안 모종의 슬럼프에 빠져있었던 터라 글을 적는 게 쉽지는 않았네요. 그래도 코딩은 손에서 놓지 않고 차근차근 해나가고 있습니다. 뭐 개인적인 프로그램은 잘 작성을 하지는 않았지만 말이죠. 이러나 저러나 최긴 개인적인 프로그래밍을 할 일이 생겼었는데요. 그 것은 바로 "동방환상마작" 입니다.
현재 애니메이션으로 방송중인 "사키"라는 애니메이션 덕분에 마작이라는 것에 어느 정도 관심을 가지게 되었기 때문인데요. 덕분에 마작 게임 하나를 반쯤 한글화 하게 되었습니다. 아실 분들은 아실 만한 동방프로젝트 2차 인 동방환상마작 입니다. 작업이 어느 정도 진행이 되었냐구요?? 그 것은 아래의 스크린샷들을 한 번 보시면 됩니다.
대충 위와 같은 화면까지 작업이 완료되었습니다. 몇몇 카페와 사이트에는 0.5 버전이라는 이상한(?) 제목하에 반쯤 테스트 배포(배포라고 하기엔 그냥 개인 선포 릴리즈)도 하긴 했었습니다. 모토가 어차피 아는 형과 같이 넷플로 마작을 하는 것이기 때문에 완벽한 한글화 까지는 안될 것 같긴 합니다만 조만간 설치파일이 하나 떡 하니 올라와 있을지도 모르는 일입니다(?) 그럼 다음 글을 기대해주시고 저는 오랜 맛의 글을 마치고 이만 물러갑니다.
이번 달은 왠지 저녁에도 시간이 나지 않아서 제대로 포스팅을 못하고 있군요. 사실 어떤 곳에서 한 가지 일을 받아 하고 있는 중이라 그렇습니다. 일의 내용은 바로 Gradient와 + @를 작성하는 것인데요. Gradient 가 실질적으로 주목표라고 할 수 있습니다.
자 Gradient란 무엇인가 하면.. 다들 써보셨으리라고 생각하는 포토샵, 그 포토샵에 보시면 색깔이 점점 변해가면서 색이 섞이는 기능을 써보셨을 것이라 생각합니다. 굳이 그 것이 아니더라도 미술시간에 배우는 구체의 광원 표현등을 컴퓨터에서 표현할 때 Gradient 효과라고 지칭하죠.
위 그림과 같은 그림입니다. 대충 감이 오시죠?? 사실 포토샵에서는 처리가 아주 간단하게 드래그 한 번으로 모든 것이 끝나지만 코드를 통한 프로그램으로는 간단하지가 않습니다. 물론 원리는 무척 쉽지만 속도가 제대로 나도록 하기 위해서 계산을 최적화 해야 되는것이죠^^.
간단한 1 To 1 Color Gradient 같은 경우도 있고, 1 To Many Color Gradient 같은 경우도 있을텐데, 후자 같은 경우는 색 추출에 계산시간을 더 허비해야 됩니다. 고로 속도의 문제점이 더 중요해 지겠죠. 제가 하고 있는 쪽은 후자 쪽을 진행하고 있고, 일반 진행, 반복진행, 타원(원)형의 Gradient를 제작하기 떄문에 제작이 끝나게 되면 코드 그 자체가 아닌 간략한 방법을 정리해서 포스팅 해보도록 하겠습니다.
최근 전 IA 문서에 대한 번역을 시작했습니다. 한 일주일간 제대로 진행은 제대로 하지 못했지만 이 번 만큼은 끝까지 해보려고 마음속에 생각을 계속 하고 있습니다. 사실 이러한 결정을 내리게 된 부분은 내실을 다지자라는 것이 많은 부분을 차지했기 때문이라고 말할 수 있습니다. 제가 5살~6살 때 쯤 COBOL 프로그래머를 하시는 아버지의 영향을 받아 컴퓨터를 접하게 된 후 부터 중학교때까지 관심은 있었으나 게임하느라 바뻤고, 중학교 때 C++ 이야기? 였던가 하는 책을 한 권 외삼촌께 선물을 받았으나 제대로 된 해석도 못하고 있었던 적이 있습니다. 그 때는 생각하면 참 그 땐 지금 하곤 비교할 수 없을 정도로 허접했었지 라는 생각이 저절로 들곤 합니다. 그 후 고등학교를 진학하면서 컴퓨터 써클을 들게 되고 그 안에서 Macromedia( 현 Adobe 인수 )사의 Flash 와 비슷한 Director 라는 프로그램으로 처음 프로그램 제작의 길에 빠져들게 되었지요. 그 때는 정말 신기했습니다. Flash와 마찬가지로 하나의 버튼, 이미지 개체가 Object 였기 때문에 프레임이 지날때 마다 이동하는 스크립트를 쓰거나 단순한 계산만으로 어느정도 원하는 결과가 나왔기 때문이죠. 그런데 그 후 대학에 와서 많은 부분이 바뀌었습니다. 컴파일러를 비롯해서 자료구조, 알고리즘 정말 지금 생각하면 유용하다고 밖에 말할 수 없는 그런 지식들을 배웠기 때문이죠. 현재 제 블로그에 올라가 있는 IPangYa( http://www.filewiki.net/tc/entry/IPangYa-팡야-계산기-라이브러리 )와 자동테트리스 같은 부분이 많은 영향을 받은 것입니다. 그리고 많은 시간이 지나면서 내가 정작 다루고 싶은 언어인 C++언어에 대해서 많은 공부를 하고 고찰을 하면서 언어쪽의 능력은 아직은 스캇 마이어스나 스트로스트럽 같은 흔히 말하는 본좌와는 비교할 수 조차 없지만 원하는 만큼의 코딩은 할 수 있다고 판단이 되었습니다. 그러고보니 내실이라는 것이 당연히 생각이 나더군요. 코딩이라는 것이 자기가 생각하고 있는 하나의 아이디어를 하나의 언어로 풀어나가는 과정을 어떠한 언어로 풀어나가는 과정이다 보니 언어쪽 능력 보다는 이론 같은 내실이 중요한 것 같았기 때문입니다. 물론 예전에도 계속 느끼고는 있었으나 스스로 천재라고 생각하진 않았기 때문에 두 마리 토끼를 쫓는 그런 행동은 취하지 않았죠. 다만 지향하고는 있었습니다.
그런데 몇일 전 우연히 강컴엘 들어갔는데 눈에 좀 띄는 책이 보이더군요. 이론적인 부분이라고 해야 되나요. 수학에 대해 다룬 책이 었습니다.
게임이라고 붙은 제목이 있어서 3D 쪽과 관련된 부분이 많을거 같긴 한데.. 전 아직 내용에 대해서는 잘 모르겠습니다. 그래도 하나하나 원리를 원하는 부분(?)이라고 해야 되나요 그런 부분이 꽤 많이 들어 있을거라고 생각하기 때문에 아마 곧 지르게 될 것 같군요. 사실 The Art Of Computer Programming 3권도 사고는 싶지만 너무나 어렵다는 말과 비싼 비용에 아직은 좀 망설여 집니다^^. 나중에 좋은 곳에 들어가게 되면 공짜로 볼 수 있다는 말도 들었던 것도 있구요. 그래서 기대가 되긴 합니다.
오랫만에 포스팅 치고는 왠지 책 광고같은 느낌이긴 하지만 계속하여 끊이지 않게 알찬 포스팅 해보도록 하겠습니다. 그럼 즐거운 하루 되세요~
최근이라고 적고 요새 일하는 것이 완전 한 가닥의 재미도 없다보니 집에와서는 계속 하여 조금씩 놀게 되는군요^^. 그래서 덕분인지 게을러진 것도 있고 블로그 포스팅도 제대로 하지 못했답니다.
그래도 생각은 계속하고 마음에도 남아있는 덕분인지 새벽녘까지 이상한 짓(?)을 하다가 포스팅을 해야 겠다는 생각이 문득 들어 흔적을 남기게 되는군요. 사실은 까마구 횽님의 블로그를 자주 들어가다보니 OS가 거의 형태를 완벽하게 갖추고 있는 것을 계속하여 보게됩니다. 어느새 완성형에 가깝게 제작이 되었더군요. 저도 OS를 만든다고 예전에 포스팅한 글이 있긴 합니다^^. 예전 중고등학생때부터의 목표였구요. 그런데 전 아직 정말로 제가 만들어 보고 싶은 OS라는 것이 무엇인지 결정이 되지 않는군요.
ReactOS 라고하여 Windows NT와 호환성을 지니게한 OS도 있고, 이름은 잘 기억나지 않으나 일반적인 컴퓨터가 전원이 내려가게 되면 휘발성인 램으로 인해 작업중인 데이터가 날아가는 것을 방지하고자 하드디스크가 램이자 저장공간이고 램이 캐시역할을 하게 되는 OS도 존재합니다. 그리고 혹시 보셨을지도 모르겠는데 예전 한 2년 전 쯤인지 어느 박사과정의 논문프로그램으로 책상 위의 환경을 그대로 옮겨와 3D로 파일 혹은 폴더를 디스크 같은 형태로 보여주는 GUI까지 있기도 하죠.
이런 것을 보아하면 정말 만들고 테스트해보고 싶은 목적이 있어서 만들었다는 것을 알 수 있습니다. 그런데 단순히 현재 존재하는 OS를 구현하려니 뭔가 바퀴의 재발명인 것 같은 느낌을 지울 수가 없더군요. 물론 하지 않는 것 보다야 제작의 의미가 없다는 것을 부정하지는 않습니다. 그래도 제가 좀 특이한(?) 인간이다보니 뭔가 남들과는 다른 그 무엇을 만들고 싶은 생각을 항상하는 중이라 이런 것 같군요. 만들고 싶은 목적에 해당하는 것이 존재하지 않느냐고 물어보신다면 그건 또 아니라고 적고 싶습니다. 예전에 C언어 로부터 시작하여 C++, C#을 이용한 OOP 프로그래밍을 하게 됨으로써 구조적 프로그래밍에 대한 불편함을 느꼈다고나 할 까요. 선뜻 손이 가지 않습니다. 그리하여 원하는 것은 C++로 커널을 제작해보는 것이고, 일반적인 Windows API처럼 단순 함수 호출로써 끝나는 것이 아닌 Class Object를 전달하여 주고받는 형식을 만들어 보는 것 또한 일부이긴 합니다. 그런데 이 것이 전부라고 생각하려니 너무 좀 아닌거 같은 느낌이 있더군요. 너무 Windows와 Linux 같은 일반적인 OS에 익숙해지다보니 그 것과는 다른 뭔가를 속에서 요구하는 듯한 느낌을 계속하여 받습니다. 과연 어떤 것이면 만족스러운 것을 생각할 수 있을지 참 막막하네요^^. 대충대충 만드는 것을 할 줄 알아야 하는데 제대로 된 것을 완벽히 설계하여 제대로 완성해보고 싶은 욕심이 마구마구 드니 이거야 원, 제대로 진행이 될지도 모르겠습니다. 그래도 사람은 꿈을 먹고 사는 존재이기 때문에 언젠간 원하는 것을 제대로 생각하여 제작할 수 있지 않을까 생각해봅니다^^.
어떻게 하다보니 전반적인 내용이 OS쪽으로 흘러가게 되었지만 그건 뭐 최근 생각하는 것들이 그런 고민이다 보니 그렇게 되었네요. 책 사놓은 것을 천천히 읽어가면서 한 번 더 생각을 해봐야 겠습니다^^. 이 땅에 사는 꿈을 먹고 사는 사람들에게 이렇게 말해주고 싶네요. "우리 모두 꿈을 향해 달려갑시다"
댓글을 달아 주세요
ㅎㅎ RSS로 첨 온 글이네.ㅋ
헠 ㅋ 다음에도 들러주세용 ㅋㅋ