초보가 볼만한 오픈소스는?

bellus의 이미지

개인적으로 유닉스 또는 리눅스 기반의 프로그래밍을 공부하고 있는데요,
C문법이나 기본 함수들은 어느 정도 파악했고, 이제 막 포인터를 이해하기
시작했는데, 더이상 무엇을 해야 할지 막막하네요.
앞으로 시스템 프로그래밍이나 네트워크 프로그래밍을 공부하려고 합니다만
그전에 머리도 식히고, 시스템에 대한 기본적인 지식을 넓힐 겸 오픈소스 몇가지를 붙잡고 분석을 해보려고 합니다.
근데 무턱대고 오픈 소스 몇 개 까봤는데,, 정말 어렵더군요. 이해하기도
쉽지 않고, 스케일도 넘 커서리,,

저같은 초보가 분석해 볼 만한 규모작은 오픈 소스 몇가지만 가르쳐 주세요~

읽어주셔서 감사합니당~

ljksky의 이미지

쉽지는 않지만..

tcpdump 소스 분석 해보시면..

네트워크 프로그래밍이에 많은 도움이

될거 같네요..

..

logout의 이미지

저도 비슷한 고민을 하고 있습니다. 내 프로그램은 심심풀이 땅콩으로 어느 정도 흉내는 내겠는데... 다른 사람 소스 보기는 아직까지도 고충이 심합니다. 세상에는 모두 천재 프로그래머들만 있나... 그런 느낌입니다. --;

그나마 제 눈에 들어오는 소스 코드는 GTK/Python 코드이더군요. Python이라는 언어가 워낙 명료하기도 하지만 자바 Awt를 수업 들으면서 연습을 하다 보니 어느정도 GUI쪽 프로그래밍 개념이 잡혔고, GTK쪽 도큐멘테이션을 보면서 자바 Awt와의 관련성, 차이점을 머릿속에 넣다보니까 좀 이해가 쉬워졌습니다. 이런 다음에 Gtk/python 모듈 소스를 읽어보니까... 감이 좀 오더군요. 게다가 거의 wrapper 수준의 코드라 더욱 이해가 쉬웠습니다.

일단은 소스 코드를 바로 읽는 것 보다 API와 같은 도큐멘테이션을 많이 읽는 것을 추천하고 싶습니다. 바로 맨땅에 헤딩하는 것과 그래도 지도보는 습관을 들이고 헤딩해도 괜찮을 곳을 찾아 헤딩하는 것과는 차이가 큽니다. --; 그리고 지도를 보는 습관을 들이다 보면 대강 전체적인 지리를 파악할 수 있죠. 수학으로 비유를 하자면 f = f(a, b, c) 라는 표현을 보고 중학생은 "f 는 f와 같다"라는 생각을 하지만 대학생은 "f는 a, b, c 라는 독립변수의 행동에 따라 변화하는구나"라는 생각을 하는 것과 비슷합니다. 소스코드에도 이런 정형화된 시그널들이 많이 나와 있는 것은 알겠는데... 저도 아직 트레이닝이 많이 모자란지라.

그리고 유닉스 시스템 프로그래밍은 좋은 고전들이 많습니다. Dennis Ritchie나 Richard Stevens의 책들만 봐도 짧은 좋은 소스들이 많을 겁니다. 그리고 O'Reilly 시리즈에도 Cookbook과 같은 소스코드 모음도 많고... 시간을 가지고 천천히 하세요.

"I conduct to live,
I live to compose."
--- Gustav Mahler

anfl의 이미지

portsentry소스가 좋을것 같습니다.
c소스는 작성자의 취향에 따라 쉬울수도 있고 암화같이 어렵게 될수도 있습니다.
효율적인 코드일수록 또는 코더가 미숙할수록 이해하기가 어렵습니다.
portsentry코드는 효율적이면서도 이해하기 쉽게 잘짜여져 있습니다. ^^a
네트워크 프로그램에 관심을 가지신다면 한번쯤 보시는것도 괜찮을거 같아요. :-)


래리버드의 이미지

BusyBox를 추천합니다.
임베디드용으로 사용하기위해 만들어져서 ,
왠만한 명령어(ping, ifconfig, ls..등등)들이 아주 작은크기의
소스로 되어 있습니다.
보통 리눅스 소스보다 훨씬 작지만 모든 기능이 구현되어 있습니다.
그것을 보심이 좋으실꺼 같은데요..
sourceforge나 freshmeat등 오픈소스 사이트 가셔서
busybox라고 치시면 나올것입니다.
그럼, 열심히 하세요

비 온 뒤에 땅이 굳어진다는 말은 다 거짓말이다.

송지석의 이미지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.