태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'프로그래밍'에 해당되는 글 3건

  1. 2010.04.27 프로그래머가 되는 길
  2. 2010.04.27 Top 25 프로그래밍 에러
  3. 2010.04.27 Top 25 프로그래밍 에러

아주 오래된 글을 우연찮게 찾았다.  읽다보니 그 당시의 심정을 알 것 같은 느낌이 새록새록

2000년이 되기전에 쓴 것 같은 기억이 ~~ 지금도 해당될까? 하는 궁금증은 들기는 하지만 그냥 무시하고 올려본다. 아마 해커의 길을 처음 쓰면서 같이 썼던것 같은데 아무튼 오래된 글이다. 아직까지 남아 있다는게 신기한 정도

 

지금의 프로그래머란 정의는 딱 한줄로 될 수 있을 것 같다.

" 스스로가 생각하는 것을 그대로 구현 할 수 있는자 "

그리고 내용중 귀를 엷게 만들지 말라는 지금도 당연한 사실. 시류에 흔들리다보면 언어의 유행에 흔들리다 보면 외딴섬에 난파된듯한 자신을 발견 할 수 있을 것이다. ^^

 

------------------------------------------

..
솔직히 말해서.되는 방법이란 것은 없다.

다만 자신이 진실로 원하느냐 원하지 않느냐가 문제일 것이다.

프로그래머라고 불리어 지기를 원하느냐 아니면.. 스스로 자칭을 하느냐...

어느쪽이든 간에 나쁘다 좋다를 떠나서...

밥벌이의 수단이나.. 혹은 그냥 보기 좋아서 선택한다 하면...

일단은 내 기준에서 보기엔..제외하겠다..( 주관적인 의견..)


자신의 의지와 열정을 굽히지 아니하고 어려운 생활을 스스로 감내하면서도

스스로의 창의성을 살리고 창조의 욕구를 해소 시키는 자.


우선..쓸데없는 서론은 관두고..정신적인 자세와..공부매체에 대한 것으로 나누어서 보도록 하겠다. 우선은 정신적인 자세부터...지극히 주관적인 것이니. 객관적이지 못하다라는 필요없는 반론은 그만 두기 바란다. 그럼 시작한다.

 


==============================================================================


@@@@  프로그래머가 되기위한 정신적인 방법

==============================================================================


1. 하나를 잡고 끝까지 고민하고 그 모르는 하나의 근본이 무엇일지 생각해 보라.


대개 보면..C 언어에서는 포인터 부분을 잘 몰라서.. 포기 하는 부류가 가장 많은 것 같다. 그러나 근본원리라는 것은 변하지 않고 모양만 변하는 것일뿐인데..
이용하는 자원은 정해져 있다는걸 명심하고.. 가장 근본이 되는 모습을 보고 어느정도 이해 하려고 하면 처음은 어려워도 시간이 지날 수록 쉽게 다가옴을 명심하시길..

 


2. 하나의 언어에 대해서 자신이 있다고 말할 정도

또..스스로 생각하는 걸..그것이 작던지 크던지 간에 창의적으로 구현을 할 수 있다면 어느정도 자신이 있는것 아닐까?.. 언어의 유행과 주기를 떠나서.. 스스로가 공부를 하기 위해서 선택한 것이라면 스스로가 생각하는 창의성을 제약하지 말고..마음껏..노력하고 마음껏 다듬어.. 스스로 애지중지 할 수 있는 하찮은(?) 프로그램이라도 개발해 보는 것이 순서이리..

 

3. 귀를 엷게 만들지 말라.

이것이 유행한다..저것이 유행한다 하여..이리로 타고 저리로 옮겨타구..하는 것은 시류에 가장 잘 적응 하는 것일수도 있지만.. 좀 길게 생각해 보면.. 시간들여서.헛짓 하는 것일 수 있다. 또. 깊이가 없는 앎은 언제나 결정적인 때에 시들어 버리고 마는법이다.

 

4. 사회의 어느부분에 도움이 되고 싶다는 열망을 가져라.

이 부분은 나 같은 성격에는 잘 맞지는 않는다고 생각하지만. 개인적으로 생각하기에.. 스스로가 바꾸고 이런쪽으로 이끌었으면 좋겠다고 생각하는 부분을 두고 구체적으로 생각하고 고민한 후에 직접 실천해보라.. B2B 솔루션에서 획기적인 생각을 하였고..또 그걸 구체화 하기 위해서는 어떤것들이 필요한지.주위에서 습득을 하고..노력을 기울여라

 

5. 이제 그대가 할 수 있는것은 창조 뿐이다.

마지막..단계이다.. 창조성을 살려야 한다. 십수년의 갇힌 교육으로..강요 되어져온 창의적인 야수성을 살려라.. 그리고 나아가라. 그대의 길로.. 그것이 guru 의 길.


===============================================================================

@@@ 프로그래머가 되기 위해  학습을 하는 방법 @@@@@

===============================================================================


1. 우선 초보책을 산다. 프로그래밍 초급.. ( 아무래도 근간은 C 일듯..)
 
 언제나 말하지만..책 사고.배우려고 하는데 돈을 절대 아끼지 마라.. 지금 당장이든 언제는 돌아오지 않을 듯 보여다..깊어지고 깊어지면 반드시 돌아오는 법.
초급에 관련된 책들을 여러권 사서 보면서 그 책들에 기술되어 있는 부분에 있어서..
분명히 같은 개념을 말하지만..말이 어렵거나 다르게 쓰여져 있는 부분이 반드시 존재한다. 이런 부분에 대한 궁금증과 호기심을 가지고 골똘히 생각해보라.

 

2. 분야별로 전문적이거나 중급수준의 교재를 나름대로 선정한다.

누구나..초급을 벗어났을때..교재의 선정에 애로점을 지닌다. 그러나 발로 돌아다녀보구..여러군데 쇼핑몰을 돌아다니면서..찾아보라..이때에 선정해야할 책의 내용으로는 개인적으로 생각하기에는 초급에서 알았던 내용과 모르는 내용이  50:50으로 섞인것 을 보는 것이 적절히 흥미를 유지하면서 하기에 좋았던것 같다.

전문적인 부분에 있어서는 1번 단계에서 말한 내용중에 같은 것을 설명하면서도 다르게 풀이가 된 부분을..집중적으로 생각하고.. 스스로가 정의를 한번내려 보라..

ex) 포인터의 사용법과 쓰임에는 선언과 정의가 있다. 이 선언과 정의에 대하여 스스로가 정의를 내려보라.
간단히..선언은  이런것이 있다고 알리는 것..
정의는 이런것을 이렇게 쓰는것..뭐 이런 식의 스스로의 해석이 있어야 될 것이다.

 


3. 다독을 하라.

프로그래밍의 근간은 모방과 많은 소스 코드를 보고 이해하려는 노력들이 모여야만 한다.
노력이 없이는 되는 것이 없는 법이다.
많은 책을 읽고 그 차이점과.. 책의 오류에 대해서 나름대로의 판단기준으로..의견을 낼 정도로  많은 책을 보라.. 굳이 돈 없다는 이야기 하지 마라..
학교 도서관이나. 공공 도서관 가도 요즘 프로그래밍 책들 예사롭지 않게 만날 수 있다. 예전과는 다르게....
또..웹사이트는 폼인가?.. 돌아다니면서..잘 찾아보라..

 

4. 다독을 하면 반드시 한계를 지니게 된다. 그걸 넘어서라.

외국어를 알아야 한다. 최소한..우물안 개구리가 안 될려면..회화를 알아야 한다는 것이 아니다. 읽을 줄 알아라.. 정확한 문법이고 이런거 필요없다. 그대가 만약 토익이나 토플등에 관심이 있다면.. 문법을 따지겠지만. 그대가 지식을 익히려는 목적은 프로그래밍이 아니던가??.. 차이를 가져보라.. 우리나라의 책들이 말하는 지식과.. 다른 나라에서 만든 책들중에서..차이를 느껴보고.. 전문성을 보려고 하라.

 

5. 많은 자료를 웹사이트에서 찾아보고..반드시 생각해보거나..써보아라.

공부하라.. 인터넷의 세계는 양면의 칼날이다. 잘 쓰면 쓸수록 깊이를 지니는 도구일뿐.
그리고..스스로의 아는 지식의 빈약함에 대해.. 반성하라.
이제 상업적으로도 성공하거나 완전한 제품..혹은 그럴리 없겠지만. 사회에 기여하고 싶다면 제대로된 프로그램을 짜야한다..이러기 위해서 그대는 많은 소스와 공개된 오픈 소스들을 분석하고 필요한 것이 무엇인지 잘 생각해 보라..

 

6. 아마도.. 데이터 베이스나 넷트웍에 대해서 알아야 된다고 생각 할꺼다.. 아닌가?

그래..데이터베이스는 알게 모르게 우리

우리 주위에 깊숙히 존재한다. 그러나 잘 아는 사람은 그리 많지 않다.. 이게 없으면 많은 것들이 힘들어 지고 할 수 없게 된다.
DB 에 보면 Schema 라고 하는게 있다. 이 모든 근간에 프로그램 코딩은 맞추어 지고..
데이터의 흐름을 가지고 프로그램은 살아있게된다.
이런 데이터의 흐름을 스스로 디자인 해보라.이를 DFD 라고 한다. (Data Flow Diagram)
DFD 를 만들면 작성해야 하는 프로그램의 전체 구조를 일목요연하게 볼 수 있다.
이걸 할줄 알고 볼 수 있어야 만이 진짜 프로그램의 세계를 만날 수 있다.
솔직히 그대들은 아직 간단한 코딩 테크닉의 활용들을 보고 아직 프로그램이라 하는가?
테크닉은 테크닉 나름대로 존재의 이유가 있지만. 프로그램은 인간을 이롭게 만들고 생활을 유리하게 만들기 위함이 목적이 아닌가?.. 목적에 충실하려면.. 그대가 알아야 할 것은 아직도 많다.


7. 개인용을 만들어 봤다면 이젠 상업용을 개발해 보라.


네트웍은 기본적인 것이겠지?.. 잘 생각해보고. 깊이있는 공부 혹은 스스로가 아는 방법으로 해볼려고 시도해 보라.. 깨놓구 말하지만. 머리를 벽에다 많이 박아야 홀로 알 수 있을 것이다... 그런 후.. 상업용제품을 만든다는 생각으로. 일반 쉐어웨어나 상용제품을 꼼꼼히 생각해 보면서 실행 시켜보라..무엇을 느끼는가?..

 

8.아마도.. UI (User Interface ) 를 느낄 것이다.

그대가 불편하면 사용자도 불편한것.. 이..User Interface 를 위해 더욱 더 많은 테크닉과 기술을 우린 집결해야만 한다.

 

9. 이제 그대가 생각하는것을 창조할 만큼 노력하고 창의성을 지니는 것만 남았다.


winsnort@hotmail.com

Posted by 바다란

http://cwe.mitre.org/top25/index.html

 

여기를 참고 하시기 바랍니다.

2009년 한해에 발견된 프로그래밍 실수와 문제점들에 대해서 정리된 내용입니다.

 


Failure to Preserve Web Page Structure ('Cross-site
Scripting')

Improper Sanitization of Special Elements used in an SQL
Command ('SQL Injection')

Buffer Copy without Checking Size of Input ('Classic Buffer
Overflow')

Cross-Site Request Forgery (CSRF)

Improper Access Control (Authorization)

Reliance on Untrusted Inputs in a Security Decision

Improper Limitation of a Pathname to a Restricted
Directory ('Path Traversal')

Unrestricted Upload of File with Dangerous Type

Improper Sanitization of Special Elements used in an OS
Command ('OS Command Injection')

Missing Encryption of Sensitive Data

Use of Hard-coded Credentials

Buffer Access with Incorrect Length Value

Improper Control of Filename for Include/Require
Statement in PHP Program ('PHP File Inclusion')


Improper Validation of Array Index

Improper Check for Unusual or Exceptional Conditions

Information Exposure Through an Error Message

Integer Overflow or Wraparound

Incorrect Calculation of Buffer Size

Missing Authentication for Critical Function

Download of Code Without Integrity Check

Incorrect Permission Assignment for Critical Resource

Allocation of Resources Without Limits or Throttling
URL Redirection to Untrusted Site ('Open Redirect')

Use of a Broken or Risky Cryptographic Algorithm

Race Condition

 

위와 같이 25가지 정도의 분류를 뽑아 놨습니다. 중요도, 파급도, 빈도에 따른 나열입니다.

대부분의 중요한 문제들이 Web application이라는 특징을 볼 수 있습니다.

예전 같으면 BOF가 최상위에 몇 개나 링크 되었겠지만 절대로 그렇지 않다는 현상을 볼 수가 있죠.

 

인터넷의 위기라는 말은 여전히 유효하고 앞으로 더 리얼한 예들을 보게 될 것이고 피해를 입게 될 것입니다.

어떤 도구를 사용하고 어떤 방식을 이용하던 근본은 변함이 없다는 점을 유념하세요.

 

각 부분별 상세한 설명과 영향도는 초기 링크의 PDF 문서를 참고 하시기 바랍니다. 페이지에도 잘 나와 있습니다.

 

그럼.

Posted by 바다란

http://cwe.mitre.org/top25/index.html

 

여기를 참고 하시기 바랍니다.

2009년 한해에 발견된 프로그래밍 실수와 문제점들에 대해서 정리된 내용입니다.

 


Failure to Preserve Web Page Structure ('Cross-site
Scripting')

Improper Sanitization of Special Elements used in an SQL
Command ('SQL Injection')

Buffer Copy without Checking Size of Input ('Classic Buffer
Overflow')

Cross-Site Request Forgery (CSRF)

Improper Access Control (Authorization)

Reliance on Untrusted Inputs in a Security Decision

Improper Limitation of a Pathname to a Restricted
Directory ('Path Traversal')

Unrestricted Upload of File with Dangerous Type

Improper Sanitization of Special Elements used in an OS
Command ('OS Command Injection')

Missing Encryption of Sensitive Data

Use of Hard-coded Credentials

Buffer Access with Incorrect Length Value

Improper Control of Filename for Include/Require
Statement in PHP Program ('PHP File Inclusion')


Improper Validation of Array Index

Improper Check for Unusual or Exceptional Conditions

Information Exposure Through an Error Message

Integer Overflow or Wraparound

Incorrect Calculation of Buffer Size

Missing Authentication for Critical Function

Download of Code Without Integrity Check

Incorrect Permission Assignment for Critical Resource

Allocation of Resources Without Limits or Throttling
URL Redirection to Untrusted Site ('Open Redirect')

Use of a Broken or Risky Cryptographic Algorithm

Race Condition

 

위와 같이 25가지 정도의 분류를 뽑아 놨습니다. 중요도, 파급도, 빈도에 따른 나열입니다.

대부분의 중요한 문제들이 Web application이라는 특징을 볼 수 있습니다.

예전 같으면 BOF가 최상위에 몇 개나 링크 되었겠지만 절대로 그렇지 않다는 현상을 볼 수가 있죠.

 

인터넷의 위기라는 말은 여전히 유효하고 앞으로 더 리얼한 예들을 보게 될 것이고 피해를 입게 될 것입니다.

어떤 도구를 사용하고 어떤 방식을 이용하던 근본은 변함이 없다는 점을 유념하세요.

 

각 부분별 상세한 설명과 영향도는 초기 링크의 PDF 문서를 참고 하시기 바랍니다. 페이지에도 잘 나와 있습니다.

 

그럼.

Posted by 바다란