프로그래머 십계명

1. 정보모음에 소홀히 하지 말고 설명서를 읽음에 게을리 하지 말지어다. 오늘 필요 없는 정보는 내일 필요하리라. 가장 가치 있고도 저렴한 지식은 책 속에 있느니라. 서점과 동료의 책꽂이에 무엇이 꽂혀 있는지 때때로 살피어라. 무심코 흘렸던 종이 한 장이 너의 근심을 풀어 주었으리라. 설명서는 충분히, 꼼꼼히 읽을지어다. 모든 의문은 설명서를 안 보는데서 생기니라. 그렇더라도 모두 다 읽을 필요는 없느니라. 많은 정보가 능사는 아니니라. 정보의 가치를 찾는 법부터 배우라. 세상엔 너무나 많은 자료와 정보가 넘쳐난다.

알알이 모두 끌어 모을 생각을 하기 보단 정보를 하나로 꿰는 법부터 먼저 배우는것이 너의 근심에서 쉽게 벋어나게 하는 방법이 되리라. 일을 시작하기전에 필요한 정보를 꼼꼼히 먼저 챙기는 법부터 배워라. 너희는 먼저 개발 의뢰서를 꼼꼼히 읽을지어다. 만약 개발 의뢰서가 없다면 발주자에게 요구할 지어다. 개발 의뢰서 없는 프로그램은 존재하지 않으니라.


2. 너의 PC가 안전하다고 믿지 말지어다. 5분 후에 정전이 되고 내일 너의 하드가 맛이 가리라. 그러니 너의 소중한 소스코드는 정기적으로 여러 군데에 단계별로 백업해 두어라. PC는 평상시엔 안전하다. 그런 실수를 저지르는것은 네자신이거나 아니면 외부적인 요인에 기인한다. 항상 백업을 철저히 해두며 백업에 백업까지도 챙겨두라.그리고 백업을 했다면 리스트를 작성하라. 쓸데없는 백업은 백해 무익하나니 리스트를 항상 유지할 지어다. 너희는 노트를 옆에 끼고 살 지어다. 노트는 너의 생명이며, 너희가 기억하지 못하는 모든것을 상기시켜 줄지어다.

3. 변하는 수를 다룰 때에는 늘 조심할지어다. 정수가 절대로 그 한계를 넘지 않으리라 가정하는 것은 어리석음이라. 127 ,-128 ,255 ,32767 ,-32768 ,65535, 이 숫자들을 너의 골수에 새기어라. 0.0은 0이 아니니 실수는 원래부터 결코 정밀하지 않느니라. 부호 없는 것과 있는 것을 어울리거나 정수끼리 나눌 때에는 늘 조심하여라. 변수는 프로그램의 근원, 프로그램을 작성할때 가장 유의 할것이 바로 변수의 이름 짓기니라. 이름보고도 성격을 알 수 있게 해두라. 그러나 변수는 성질이 드러우니 변수에 성격을 부여할때는 조심스럽게 할지어다. 너희는 코딩하기 이전에 계획을 할 지어다. 이는 프로그래머가 코더가 아닌 것이니라.

4. 무슨 일을 반복시킬 때에는 처음과 끝에 유의할지어다. 너의 컴퓨터는 1보다는 0을 좋아 하니라. 배열의 첨자가 그 범위를 넘지 않을지 손 댈 때마다 따져 보아라. 수식에 1을 더하거나 뺄 때에는 늘 긴장하라. 너의 프로그램은 단지 한 번 덜해서 틀리고 한 번 더해서 다운되느니라. 프로그램을 작성할땐 계산, 판단, 비교를 그 모든걸 컴에게 되도록 맡기지말라. 네손으로 미리 계산하고 그 결과를 사용하는 방법이 최선이니라. 컴퓨터는 의지가 없나니 네가 잘못하든 잘하든 아무런 상관이 없느라. 너희는 머리가 악세사리가 아님을 기억하고 항상 생각하고 항상 노트에 적을 지어다.

5. 항상 모든 경우의 수를 고려하고 섣불리 생략하지 말지어다. 절대로 없어 나지 않을 일은 반드시 일어나고, 가장 드물게 일어날 일이 가장 너를 괴롭히리라. 그러하니 언제나 논리에 구멍이 없는지 꼼꼼히 따져 보고, if를 쓸때에는 else 부터 생각하라. 논리적인 오류는 성급함에서 생기나니 처음엔 항상 원리와 원칙을 지키라. 생각은 네가 하라 그리고 그 결과를 컴에게 시켜라. IF를 쓰기전에 규칙을 세우라. 먼저 IF의 결과에대한 규칙부터 세우고 따져라. 그리고 논리적인 계산을 IF문장안에서 하지 말라. 하나의 IF문장속에 수많은 논리연산은 버그의 원인이니라. 어느 정도의 프로그램에 대한 윤곽이 잡히면 프로토 타입을 만들지어다. 프로토타입은 프로그램에 대한 시뮬레이션이며 발주자의 요구를 빨리 수용 하는 방법이니라.

6. 함수 안에서 매개 변수값은 결코 믿지 말지어다. 지금 그 매개 변수가 결코 가질 수 없다는 값을 내일부터는 가지리라. 그러하니 매개 변수 값이 올바름을 항상 검사할지어다. 그렇더라도 처리 속도가 문제가 되는 경우는 예외이니라. 함수도 하나의 독립적인 프로그램이란것을 잊지말며, 네가 프로그램을 작성할땐 모든 함수가 돼도록이면 독립적으로 돌아가도록 할지어다. 함수의 매계변수는 항상 그옆에 작은 컴맨트와 초기화를 잊지말라. 처음부터 속도문제를 생각하지 말라. 모든 루틴을 최적화 할순 없다. 전체 프로그램중에 단 20%가 전체 실행시간에 80%를 점유한다. 프로토 타입에대한 발주자의 의견을 꼼꼼히 들을 지어다. 이는 발주자에 대한 신뢰도의 척도니라.

7. 오류를 알려 주는 기능은 있는 대로 모두 활용할지어다. 컴파일러의 경고는 모두 켜두어라. 경고는 곧 오류이니라. 오류를 알리는 함수의 결과를 확인하지 않는 우를 범하지 말지어다. 모든 파일 입출력과 모든 메모리 할당은 조만간 실패할 것이라. 컴파일러가 모든 경고기능을 동원해도 알려주지 않는 것은 많다. 중요한 건 오류가 생기기전에 규칙을 지켰는지 생각하라. 파일의 입출력과 메모리의 항당은 항상 쌍으로 생각해서 열었다면 닫아주고 활당받았다면 돌 려주라. 프로그램의 매인턴앤스를 게을리하지 말지어다. 이는 프로그램 만드는 일 보다 중요한 일이니라.

8. 한 번의 수정과 재컴파일만으로 연관된 모든 것이 저절로, 강제로 바뀌도록 할지어다. 어떠한 것을 수정했을 때에 연관된 것이 따라서 변하지 않는다면 그것이 곧 벌레이니라. 컴파일러로 하여금 매개 변수 리스트를 완전하게 검사하도록 하고 언젠가 손대야 하거나 따라서 변해야 하는 수치는 전부 매크로로 치환하며, 형 정의를 적극 활용하여라. 이미 완벽한 루틴을 손대지 말라. 프로그램이 무너지는 가장 첫번째이유는 도미노 현상 때문이나니 한번의 수정과 재컴파일로 쓸데없는것을 손대게 하지 말라. 컴파일러가 매개변수 리스트를 챙기지 말게 하라. 프로그램에 들어가기 전엔 미리 함수명과 매개변수 리스트를 만들어라. 너희는 프로그램의 도큐멘트를 만드는일에 게으르지말지어다. 이는 사용자가 너의 프로그램에 대해서는 바보이기 때문이니라.

9. 사용자가 알아서 잘 써 주리라고 희망하지 말지어다. 너의 프로그램은 항상 바보만이 쓰느니라. 사용 설명서를 쓸 때에는 결코 빠뜨리지 말아라. 빠뜨린 만큼 사용자는 너를 괴롭힐 것이니라. 사용자는 나쁜놈이다. 쓸데없는짓을 잘한다. 무식하다. 인간성도 더럽다. 대부분이 바보며 가끔 똑똑한 사람도 있는데 그 놈은 더 하다.모든것을 설명하지 말며 온갇기능을 가진 하나의 프로그램을 작성하려 들지 말라. 많은 기능이 필요한 프로그램은 나누어서 작게 따로 만들어주라. 너희는 공부하는데 게으르지 말지어다. 자고나면 새로운 하드웨어와 새로운 소프트 웨어가 나오기 때문이니라.

10. 매사에 겸손하고 항상 남을 생각할지어다. 가장 완벽한 프로그램일수록 가장 완벽하게 숨은 벌레가 있느니라. 네가 이 세상 최고의 프로그래머라고 떠들며 자만할 때, 옆집 곳간에서는 훨씬 더 뛰어난 것을 묵묵히 만들고 있느니라. 아무렴 프로그래밍은 혼자 잘나서 할 게 아니니, 너로 인해 다른 사람들도 더불어 잘 되면 그 얼마나 좋은 것이냐. 프로그래머는 논리적으로 생각하여야 하지만 프로그램은 비논리적으로 작성하라. 프로그래머가 경지에 들면 누가 누가 잘하는지 알수가 없는 법, 또한 프로그래머로서의 '무지'에 대해서 잊지마라. 프로그래머의 '무지'는 생략하고, 선택하고, 단순화시키고, 명백하게하는 것이니라. 항상 새로운 아이디어와 새로운 생각으로 무장하라. 그리고 나누라 나누는곳에 기쁨있나니 너희는 모든 프로그램에 대해서 위의 프로시줘를 따를 지니라.

//-------------------
대학 졸업이후 오랜만에 보는구나.
살아가면서 자꾸 기본을 잊어바리며 산다.
기초가 중요한 것이거늘.
밥먹을때 젓가락질이 가장 중요하듯이.
초심과 기본을 잃어버리지 말고 항상 되뇌이자~!
어제의 내가 오늘의 나이고 오늘의 내가 내일의 나일때,
근본은 같은 사람이길 바라듯이~!
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/11/07 18:51 2006/11/07 18:51
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2075

프로그래밍은 영원한 취미?

프로그래밍은 영원한 취미?
김광섭

언젠가 신문기사 중에서 10대들이 가장 선호하는 직업 중에 프로그래머도 끼어 있었던 기억이 난다. 그리고 국내에서도 프로그래밍에 관련된 잡지가 적지 않은 것을 보면 이제 프로그래밍이라는 것은 결코 낯선 말이 아니다. 이제 프로그래밍을 시작하는 사람이나 이미 직업으로써 일을 하고 있는 사람들과 이 프로그래밍이라는 것에 대해 생각해 보면 좋을 것 같다. 일단은 현재의 PC가 탄생하기까지의 과정을 잠시 살펴 보자.

사실 필자가 처음 컴퓨터라는 것을 접했을 80년도 중반 당시에는 프로그래밍이라는 것은 이상한 사람들이나 하는 것으로 여겨지던 시절이었다. 물론 당시에는 지금은 너무나도 친숙한 컴퓨터인 IBM PC라는 것이 컴퓨터 선진국이라는 미국에서조차 대중화 되지 않았던 시절이니 당연하다. 물론 이미 1981년에 IBM-PC는 세상에 첫 선을 보였고 그전에 나온 Apple II가 상업적으로 성공을 거두고 있던 시절이지만 대부분 상업적인 목적으로 사용되고 있었고 그때까지 일반인들에게는 컴퓨터에 관한 얘기는 먼 나라 얘기 였다.

일반인들이 알 수 있는 수준으로 보자면 만화뿐만 아니라 백과사전 같은데도 컴퓨터는 커다란 눈(사실은 자기테이프지만 모르는 사람에게는 눈처럼 보였고 필자도 그런 느낌을 받았었다.)이 달린 집채만한 아주 고가의 장비라서 그것을 만지는 사람은 대단한 사람으로 그려지던 당시에는 프로그래밍을 한다는 것은 생각하지도 못할 뿐만 아니라 프로그래머는 전세계를 통틀어도 많지 않았으므로 프로그래밍을 한다는 것은 특정 연구소의 연구원이나 대학의 교수진 등 극 소수의 사람만이 생각해 볼 수 있었다. 그때 쯤 국내에서는 겨우 대형 시스템에 터미널을 통해서 접속할 수 있는 기회를 학생들에게 제공하기 시작 했다. 비로소 국내에서 일반인들도 컴퓨터를 접해 볼 기회를 갖게 된 것이다. 물론 이전에도 천공카드를 통하여 작업은 이루어 지고 있었으나 터미널을 통하여 다수의 사람이 동시에 사용하게 된 것은 나름대로 중요한 의미를 갖는다. 하지만 이러한 대형 시스템은 프로그래밍이 대중화된 개념으로 다가오는데 큰 도움을 주지는 못했다.

반면에 지금도 많은 사람들이 기억하고 있을 Apple II는 전세계적으로 성공을 거둔 제품일 뿐만 아니라 컴퓨터의 대중화에 기여한 바가 크다. 스티브 워즈니악과 스티브 잡스가 창고 구석에서 만들어낸 애플이 태어나기 전에 이미 만들어진 알테어(Altair)라고 불리는 최초의 상업적인 컴퓨터는 의미가 크다. 그때가 1975년이었다. 폴 앨런과 빌 게이츠가 이 시절에 알테어를 위한 BASIC을 만들었다는 것은 우연일까? 그리고 그때 마이크로소프트를 설립했다. 그리고 워즈니악과 잡스도 그때쯤 Apple의 초기 모델을 만들고 그것을 1977년에 Apple II로 시장에 내 놓은 것이다. 그리고 그 이후 비지칼크(VisiCalc)라는 최초의 스프레드쉬트 (Spreadsheet)가 발표되면서 PC의 업무를 위한 제품으로서의 상업적 가치에 대하여 인정받기 시작하였으며 이런 가능성에 힘입어 1981년에는 IBM-PC가 첫 선을 보이고 마이크로소프트의 MS-DOS, 로터스의 Lotus 1-2-3 등이 시장에 나왔으며 그 이후로는 비약적인 발전을 거듭하여 지금의 PC까지 오게 된 것이다. 물론 다른 컴퓨터들도 있었으나 대중적인 인기를 얻은 Apple II와 IBM-PC는 그에 상응하는 많은 프로그래머들을 탄생하게 하는 기회를 제공해 주었으므로 그 가치가 더 높다고 보는 것이다. 많은 프로그래머가 없었다면 애플의 그 많은 게임과 IBM-PC의 그 많은 사무용및 개인용 어플리케이션과 게임들이 세상에 나올 수 없었을 것이다.

자 이제 다시 프로그래밍이라는 원래의 이야기로 돌아가 보자. 필자는 프로그래밍을 하는 사람을 크게 두 가지로 본다. 하나는 본인의 취미로 즉, 프로그래밍이라는 것 자체가 재미가 있어서 그렇고 다른 하나는 생계의 수단으로 자신의 프로그래밍 능력을 보수를 받고 제공하는 직업의 경우다. 물론 직업이자 취미일 수도 있다. 그리고 프로그래밍을 통하여 자신의 메시지를 전달하고자 하는 더 큰 목적이 있을 수도 있다. 하지만 취미와 직업으로 분류한 것은 책임을 지느냐 마느냐라는 것을 기준으로 하는 분류이므로 이런 기준을 가진다고 생각하며 얘기를 해 보겠다.

일단 취미로 프로그래밍을 하는 경우 대부분의 사람들은 재미있다고 한다. 그 이유는 단순하다. 어떤 취미든지 본인이 선택한 경우 재미 없을 리가 있겠는가. 프로그래밍이라도 예외는 아니다. 본인이 취미로 선택한 것이라면 아무리 어려운 일이라도 재미 있을 것은 당연하다. 등산을 취미로 하는 사람이 높은 산에 오르는 것이 힘들어서 그만두는 경우가 얼마나 있을까? 취미 생활에 심취한 사람일 수록 오히려 더 높은 산 힘든 코스를 고르는 경우가 많다. 따라서 프로그램이 취미인 사람도 신기술, 새로운 테크닉이 알려지면 하나라도 더 알려고 노력하는 경우가 많은 것이다. 하지만 취미로 프로그래밍을 하는 경우에 한계가 있을 수 있다. 모두 그런 것은 아니지만 너무 어려운 것은 피하려는 성향과 누구에게나 편하게 만들기 위한 노력을 덜 한다. 전문 산악인이 되기 위해서는 단지 취미로 등산을 좋아 하는 것으로는 부족한 것과 같은 경우라고 볼 수 있다. 본인이 취미로 만든 프로그램의 경우 대다수가 일반인이 사용하기에는 불편한 부분이 존재한다. 흔히 이야기 하는 UI부분에 신경을 많이 못쓰는 것도 그렇고, 예상하지 않는 동작에 대한 예외 처리가 미흡하며 특정한 환경에서만 동작하는 등 일반적이지 못하다는 평가를 많이 받게 된다. 하지만 이렇게 취미로 프로그래밍을 하는 경험 많은 아마추어 프로그래머들이 직업적인 프로그래머보다 기술적으로 뒤 떨어 진 것이라고 보기는 힘들다. 정확하게 표현하자면 직업 프로그래머로서의 훈련이 부족하다 라고 하는 것이 옳다.

그렇다면 직업 프로그래머는 취미로 프로그래밍을 하는 아마추어 프로그래머와 어떤 점이 다를까? 이외로 단순하다. 프로그래밍을 한다는 것은 같지만 그 프로그램이 상품적 가치가 있어야 하므로 기본 기능 이외에 훨씬 많은 곳에 신경을 쓴다는 것이다. 그리고 본인이 생각보다 타인의 생각이 제품에 많이 반영된다는 것도 다른 점일 것이다. 특히 최근의 제품들을 보면 편리한 UI라는 것을 강점으로 내세우는 것들이 많다. 하지만 이러한 UI에 관련된 코딩은 보기보다 시간이 많이 걸린다는 것을 안다면 직업적인 프로그래머의 고충을 짐작 할 수 있을 것이다. 프로그래밍을 조금 배우고 나서 누구나 한번쯤은 만들어 보게 되는 전화번호부 같은 프로그램을 예로 보자. 취미로 만든 경우에는 기본 기능과 본인이 특별히 원하는 기능에 치중하게 된다. 즉, 원하는 사람을 쉽게 찾을 수 있는 것이 가장 기본적인 기능이므로 이 기능을 구현하고 나면 이제 다 되었군 하는 생각을 하기가 쉽다. 하지만 그게 상업적 가치를 가지는 제품을 만드는 경우라면 얘기는 다르다. 나는 일년에 한번쯤 쓸까 말까 한 기능이지만 어딘가에 있을지 모르는 사용자의 요구를 위하여 여러 기능이 추가된다. 편지 봉투 찍기 같은 기능은 개인이 친구 몇 명의 전화번호를 관리하는데는 크게 필요하지 않은 기능이겠지만 전문적으로 광고문을 발송하는 업체 들에게는 꼭 필요한 기능이므로 추가 해야 할 것이며 전화번호로 찾기 등은 호출기를 많이 사용하는 사람에게는 필요할 것이며, 전자 우편 주소를 입력하는 난은 전자우편을 사용하지 않는 사람에게는 전혀 필요하지 않지만 그렇지 않은 사람에게는 꼭 필요한 데이타 일 것이다. 또한 마우스보다 키보드를 사용하는 게 더 편한 사람들을 위하여 단축키를 적절히 배치하고 보다 편리하게 사용하기 위하여 단축키 설정을 바꿀 수 있게 하기 위하여서는 그 만큼 더 시간과 노력이 필요하다.

이처럼 두 가지의 경우를 구분해서 얘기 해 놓았지만 실제는 조금 다르다. 많은 소프트웨어 회사는 뜻이 맞는 몇 사람이 모여 시작하게 된다. 그리고 그 뜻 이라는 것은 이미 서로 공감하는 어떤 제품이나 기술인 경우가 많다. 따라서 이런 경우 취미와 직업이 같은 경우가 되며 국내의 여러 소프트웨어 회사는 이러한 프로그래머가 많다고 보인다. 위의 구분을 가지고 보면 프로그래밍 그 자체에 대한 재미는 가지고 있지만 생존하기 위한 직업이 된 경우다. 사실 필자가 얘기 하고 싶은 것은 이러한 사람들에 대한 얘기다. 어차피 취미이거나 직업인 경우가 분리된다면 특별히 할 얘기도 없기 때문이다. 취미인데 뭐라고 한다는 것은 웃기는 얘기고 직업인데 좋다 나쁘다를 얘기한다는 것도 말이 안되기 때문이다.

컴퓨터를 좋아하고 프로그래밍이 취미인 많은 전문 프로그래머들은 가끔 혼자만의 고민에 빠지는 경우가 많다. "나는 취미와 직업이 같은 항상 재미 있는 일을 하고 있어", "훌륭한 프로그램을 만들어 성공해야지". 등 긍정적이고 미래지향적인 생각은 현실에 부딪혀 깨지기가 쉽기 때문이다. 대부분의 회사는 회사 나름대로의 독특한 색깔을 가지고 있다. 따라서 대부분이 그러한 색깔을 파악하고 취업하지만 실제 맡게 되는 일은 그러한 일과는 거리가 먼 작업이 되는 경우가 많다. 그래서 분명히 컴퓨터를 좋아하고 취미가 프로그래밍인 것도 맞지만 분야가 다른 일, 자신의 취향과 맞지 않는 일을 맡게 되는 경우 스스로의 벽에 부딪히게 된다.

그렇다면 이런 경우를 근본적으로 해결하는 방법은 없을까? 서로 다른 생각을 가진 사람이 워낙 많기 때문에 딱 부러지게 결론을 내릴 수는 없지만 필자의 생각으로는 가능하다고 생각한다. 흔히들 취미와 직업이 같은 경우 당연히 직업이 취미를 따라와 주길 바라게 된다. 하지만 이런 생각은 세상은 나를 중심으로 서 있다는 신세대의 생각으로는 당연한 것 일지 모르나 무엇인가는 만들어 내고 그 제품이 회사를 운영하는 밑거름이 된다는 일반적인 직업 논리와는 어울리지 않는 생각이다. 물론 방법론 중의 하나로서 회사가 그러한 개인의 취향을 십분 이해하여 그러한 방향으로 제품을 만들어 낸다면 문제는 없을 것이다. 하지만 더 중요한 것 중의 하나가 성공할 만한 제품을 기획해 내고 그 프로젝트를 추진하기 위해서 시행착오를 많이 겪어 왔던 선배들의 생각을 존중해 주고 선배는 후배들의 새로운 아이디어를 새로운 프로젝트에 접목하는 포용력을 발휘해 주는 서로간의 이해해 주는 마음가짐이다.

즉, 서로의 입장을 이해하고 조금씩 양보를 할 필요가 있다. 지금 당장 원하는 것을 해 줄 수 없다면 언제는 가능한지를 미리 이해 시켜주는 회사는 무조건 주어진 일을 정해진 시간 내로 해 놓기 만을 바라는 회사보다는 더 좋은 회사일 것이다. 물론 원하는 것을 들어줄 여력이 안되는 경우라면 그럴 수 없다고 미리 말 해 주는 것도 좋을 것이다. 프로그래머들이 재산인 소프트웨어 회사가 능력 있고 미래에 대한 생각이 뚜렷한 프로그래머들에게 비전도 심어주지 않고 적절한 보상도 해 주지 않고서 그 회사의 밝은 미래를 그릴 수는 없을 것이다. 물론 반대의 입장으로 프로그래머는 여러 가지 능력을 배양해야 한다. 그렇지 않고서는 쏟아지는 프로그래머들 중 더 나은 프로그래머를 선택할 수 있는 것이 회사의 고유 권한이기 때문이다.

자 다시 취미 얘기로 돌아와 보자. 사실 이 책을 읽고 있는 독자라면 이미 취미건 직업이건 프로그래밍에 대하여 관심이 있는 사람들일 것이다. 하지만 어떤 일을 하든지 그 일을 재미 있게 처리하기 위해서는 관심과 노력이 필요하다. 다른 말로 그 일에 취미를 가져야 한다. 어차피 관심은 가지고 있다면 강제로 취미를 갖기는 힘들기 때문에 노력이 필요한 것이다. 또 예전에는 취미가 있다고 생각했는데 지금은 직업이 되어서 재미가 없다는 사람도 있을 것이다. 역시 노력이 부족하다고 볼 수 있다. 취미라면 잘하든지 못하든지 재미가 있어야 한다. 다시 말해 재미를 찾는 것이 취미를 갖는데 혹은 다시 취미가 되기 위해 필요하다. 그럼 어떻게 재미를 가질까? 혹은 어떻게 재미를 되찾을 수 있을까?

프로그래밍이 재미가 없다고 하는 독자들은 한번쯤 같이 생각해 보자. 원래 처음부터 재미가 없다면 다른 프로그래머들이 재미 있다고 하는 일을 한번쯤은 해 보는 것이 좋다. 이미 다른 사람에 의해서 만들어진 프로그램을 아무것도 없는 상태에서 똑같이 만들어 보는 것, 아니면 조금 바꾸어서 만들어 보는 것, 혹은 세상에서 하나뿐인 새로운 프로그램을 만들어 보는 것 그 어떤 것이라도 좋다. 중요한 것은 직접 내 시간을 투자하여 만들어 본다는 것이다. 그리고 직업 프로그래머들인 경우에는 업무 시간이 아닌 혼자만의 시간에 해야 한다. 영화나 등산, 독서 등은 왜 내 시간을 투자하면서 취미를 갖고 싶은 프로그래밍에는 시간 투자를 하지 않는가? 그저 시간이 지나면 훌륭한 프로그래머가 될 수 있는 것은 아니다. 그것이 취미거나 아니거나 투자한 시간 만큼 더 숙련된 프로그래머가 되는 것이다. 그리고 예전에는 취미를 가졌었지만 지금은 아니라고 하는 사람들에게 물어 보고 싶은 것이 있다. 최근에 스스로 생각하고 혼자만의 시간을 투자해서 혼자만의 프로그래밍을 해 본 경험이 있는가? 그렇다면 다른 취미 생활 역시 하지 않았는가? 아니라면 스스로 프로그래밍이라는 취미를 놓아 버린 것은 아닐까?

많은 사람들이 취미를 직업으로 삼으면 취미를 잃는다고 한다. 하지만 좀 더 생각해 보면 그 만큼 행복한 경우가 또 없을 것이다. 그것은 사랑하는 연인과 결혼한다고 그 연인이 미워지는 것은 아닌 것과 같은 이유다. 단지 살아가는데 부딪히는 여러 가지 어려움들을 슬기롭게 극복하지 못하는 이유라면 그것을 당연하게 받아 들이지 말고 이겨나가야 되는 것이다. 필자는 특히 프로그래밍은 영원한 취미로 삼을 만 한 것이라고 생각한다. 어렸을 적에는 내가 즐기기 위한 게임을 만들 수 있고, 커서는 업무나 일상생활에 필요한 나만의 도구를 만들고, 나이가 들어서는 가물가물 해가는 기억을 도와주는 도구를 스스로 만들어 사용할 수 있다고 생각하기만 해도 얼마나 뿌듯한가. 물론 사서 쓰면 된다. 하지만 직접 해 먹는 요리가 나름대로 맛이 있듯이 프로그래밍이 취미라면 틈틈이 만들어 쓰는 것이 재미 있을 것이다.

세상에는 많은 취미 생활이 있다. 그리고 프로그래밍도 그 중의 하나다. 프로그래밍을 취미로 갖고 싶어하는 사람들, 취미를 잠시 잃어 버린 사람들 그리고 취미인 사람들 이제부터 자기 소개서에 당당하게 쓰자 내 취미는 프로그래밍이라고...


이 글의 저작권은 원작자에게 있습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/10/31 17:06 2006/10/31 17:06
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2059

프로와 아마추어

인터넷 개발 사이트의 게시판에 있던 글입니다.

1.프로는 불을 피우고, 아마추어는 불을 쬔다.

2.프로는 자신이 한 일에 대해 책임을 지지만, 아마추어는 책임을 회피하려고 급급 한다.

3.프로는 기회가 오면 우선 잡고 보지만, 아마추어는 생각만 하다 기회를 놓친다.

4.프로는 돌다리도 두드리고 건너지만, 아마추어는 두드리고도 안 건넌다.

5.프로는 자신의 일에 목숨을 걸지만 아마추어는 자신 일에 변명을 건다

6.프로는 여행가이고, 아마추어는 관광객이다.

7.프로는 남의 말을 잘 들어주고, 아마추어는 자기 이야기만 한다.

8.프로의 하루는 25시간이지만, 아마추어의 하루는 24시간뿐이다

10.프로는 뚜렷한 목표가 있지만, 아마추어는 목표가 없다.

11.프로는 행동을 보여 주고, 아마추어는 말로 보여준다

12.프로는 너도 살고 나도 살자고 하지만, 아마추어는 너 죽고 나 죽자고 한다.

13.프로는 자신에게는 엄하고 남에게는 후하지만, 아마추어는 자신에게 후하고 남에게 엄하다.

14.프로는 놀 때 최고로 놀지만, 아마추어는 놀 줄 모른다.

15.프로는 리더(Leader)고, 아마추어는 관리자(Manager)다

16.프로는 평생 공부를 하지만, 아마추어는 한 때 공부를 한다.

17.프로는 결과보다 과정을 중시하지만, 아마추어는 결과에 집착한다.

18.프로는 독서량을 자랑하지만, 아마추어는 주량을 자랑한다,

19.프로는 강자에게 강하고, 아마추어는 약자에게 강하다.

20.프로는 사람을 소중히 하고, 아마추어는 돈을 소중히 한다.

21.프로는 사람이 우선이고, 아마추어는 일이 우선이다.

22.프로는 길게 내다보고, 아마추어는 눈앞의 것만 본다.

23.프로는 해보겠다고 하지만, 아마추어는 안 된다고 한다.

24.프로는 시간을 관리하고, 아마추어는 시간에 끌려 다닌다.

25.프로는 구름 위에 뜬 태양을 보고, 아마추어는 구름 위의 비를 본다

26.프로는 지는 것을 두려워하지 않고, 아마추어는 이기는 것도 걱정한다.

27.프로는 번영 의식이 있지만, 아마추어는 편한 의식이 있다.

28.프로는 "난 꼭 할 꺼야" 라고 말하지만, 아마추어는 "난 하고 싶었어" 라고 말한다

29.프로는 메모를 하고, 아마추어는 듣기만 한다.

30.프로는 "지금 당장"을 좋아하지만, 아마추어는 "나중에"를 좋아한다.

31.프로는 꿈을 먹고 살지만, 아마추어는 꿈을 잃고 산다.

32.프로는 "요령껏, 재주껏" 하지만 아마추어는 "무조건 열심히" 만 한다.

33.프로는 "Me"를 생각하지만, 아마추어는 "Me Too"를 생각한다.

34.프로는 Only One를 추구하지만, 아마추어는 Number One을 추구한다.

35.프로는 다면 사고를 하지만, 아마추어는 단면 사고를 한다

36.프로는 Know-Where를 생각하고, 아마추어는 Know-How를 생각한다.

37.프로는 밸류을 추구하지만 아마추어는 볼륨을 생각한다.

38.프로는 질을 생각하고, 아마추어는 양을 생각한다.

39.프로는 디지털형이고, 아마추어는 아나로그형이다.

40.프로는 플로우를 좋아하고, 아마추어는 스톡을 좋아한다.

41.프로는 뛰면서 생각하지만 아마추어는 생각한 뒤 뛴다.

42.프로의 무대는 그라운드지만, 아마추어의 무대는 관중석이다.

43.프로는 창조적 괴짜형이고, 아마추어는 노예형이다.

44.프로는 미래 중심적이고, 아마추어는 과거 중심적이다.

45.프로는 창조를 하고, 아마추어는 모방을 한다.

46.프로는 발전시키지만, 아마추어는 현상을 유지한다.

47.프로는 사람에 초점을 두지만, 아마추어는 시스템과 구조에 둔다.

48.프로는 신뢰를 쌓지만, 아마추어는 통제에 의존한다.

49.프로는 장기적 관점을 갖지만, 아마추어는 단기적인 전망을 갖는다.

50.프로는 "왜, 무엇"을 묻지만, 아마추어는 "어떻게, 언제"를 묻는다.

51.프로는 먼 수평선에 두지만, 아마추어는 시야를 말끝에 둔다.

52.프로는 자기의 의지에 따라 움직이지만, 아마추어는 현상을 그대로 받아들인다.

56.프로는 "올바른 일"만 하지만, 아마추어는 "일을 올바르게" 한다.

57.프로는 위험을 감수하지만, 아마추어는 위험을 회피한다.

58.프로는 이끌기 위해 솔선 수범하지만, 아마추어는 주어진 직책에 안주한다.

60.프로는 삶으로서 영향력을 발휘하지만, 아마추어는 직책으로 영향력을 행사한다.

61.프로는 사람을 고무시키지만, 아마추어는 기준을 따르라고 한다.

62. 프로는 변화를 추구하지만, 아마추어는 예측과 질서를 추구한다.

63.프로는 현상에 도전하지만, 아마추어는 현상을 유지한다.

64.프로는 비전과 전략에 관심을 두지만, 아마추어는 세부적인 계획, 시간표에 관심을 둔다.

65.프로는 혁신가지만, 아마추어는 행정가이다.

66.프로는 실질적인 성과에 관심이 있다. 아마추어는 능률에 관심을 둔다.

67.프로는 철학, 핵심 가치, 공동 목표를 강조하지만, 아마추어는 전술,시스템, 구조를 강조한다.

68. 프로는 책임부터 생각하고, 아마추어는 권한만을 생각한다.

69. 프로는 공유하려 하고, 아마추어는 독점하려 한다.

70. 프로는 실수를 하고, 아마추어는 실패를 한다.

71. 프로는 놀지만, 아마추어는 까분다.

72. 프로는 웃지만, 아마추어는 비웃는다.

73. 프로는 알면서도 모르는 척 해주지만, 아마추어는 모르면서도 아는 척 한다.

74. 프로는 힘들어하지만, 아마추어는 힘들다고 소리친다.

75. 프로는 함께 일하고.아마추어는 혼자 일한다.

76. 프로는 비판하지만, 아마추어는 비난한다.

77. 프로는 얘기하지만, 아마추어는 떠든다.

78. 프로는 묵묵히 걸어다니지만, 아마추어는 싸돌아다닌다.

79. 프로는 남에게 감사하지만, 아마추어는 남을 감시한다.

80. 그리고, Pro는 (영락없이) Amateur처럼 생겼지만, Amateur는 (마치) Pro처럼 행세한다
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/10/31 13:26 2006/10/31 13:26
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2057

http://www.joomlakorea.org/ - 줌라

줌라!란? http://www.joomla.org/

줌라!는 여러가지 상을 휩쓴 컨텐츠 관리 시스템(CMS)로서 웹싸이트 및 그 밖의 강력한 온라인 애플리케이션을 구축하는데 쓰는 도구입니다. 무엇보다도 좋은 점은 줌라!는 오픈소스 솔루션으로 누구나 자유롭게 사용하실 수 있습니다.

실전에서의 줌라!

줌라!는 전세계적으로, 간단한 개인 웹싸이트부터 복잡한 기업의 웹 애플리케이션까지 널리 사용되고 있습니다. 아래 열거된 것들은 줌라!를 사용되는 몇 가지 경우를 예로 든 것입니다.

기업의 웹싸이트 또는 포털

온라인 상거래

소규모 비즈니스 웹싸이트
비영리 또는 기관의 웹싸이트
정부, 관공서 애플리케이션
기업의 인트라넷과 익스트라넷
학교와 교회의 웹싸이트
개인 또는 가족 홈 페이지
커뮤니티 기반 포털
매거진 또는 신문
그 이외에도 무한한 가능성을 지니고 있습니다…
컨텐츠와 이미지를 추가하는 것부터 제품 카탈로그를 업데이트하고 온라인 예약을 받는 등, 줌라!를 이용하면 웹싸이트의 모든 것들을 쉽게 관리할 수 있습니다.

사용자 입장에서 본 줌라!

기본 줌라 패키지는 프로그래머가 아니라도 누구나 문제없이 설치하고 운영할 수 있도록 디자인 되어 있습니다. 또한 새로운 사용자들을 위한 사용자 지원도 풍부합니다. 줌라! 커뮤니티에는 이미 6만이 넘는 사용자와 개발자들이 참여하고 있으며 모두들 친절하기 때문에 게시판을 통해서 필요한 도움을 언제든지 얻으실 수 있습니다.

일단 줌라!를 설치하고 실행하면, 기술자가 아니라도 누구나 컨텐츠를 추가/편집하거나 이미지를 업데이트하고 회사나 기관에서 필요한 중요한 데이터를 관리하는 것까지도 쉽게 처리할수 있습니다. 기본적인 워드프로세서를 사용할수 있는 정도의 지식만 있어도 줌라! 싸이트의 운영 방법을 쉽게 배우실수 있습니다.

브라우저 기반의 간단한 인터페이스를 통해서 프레스 릴리스나 뉴스 아이템을 추가하고, 직원 전용 페이지, 작업 목록, 제품 사진 등을 관리하고 무제한의 섹션과 컨텐츠 페이지를 싸이트에 만들어 넣을 수 있습니다. 필요하시다면 저희 맛보기 를 보시고 줌라!가 어떤 것인지 감을 잡으세요.

줌라! 한단계 올라가기
기본 줌라를 있는 그대로 설치하기만 해도 멋진 웹싸이트를 만드는데 필요한 컨텐츠를 훌륭하게 관리할 수 있습니다. 하지만 줌라!의 진짜 강력함은 전세계에서 수천명의 개발자들이 함께 만들어 공유하는 막강 애드온과 익스텐션들에 있다는 것을 많은 사람들이 이미 알고 있습니다. 아래 목록은 현재 사용 가능한 수백의 익스텐션 중 몇개를 예로 든 것입니다.

동적 폼 제작기

비즈니스 또는 기관의 디렉터리
문서 관리
이미지 또는 멀티미디어 갤러리
전자 상거래와 쇼핑 카트 엔진
게시판 및 채팅 소프트웨어
캘린더
블로그 소프트웨어
디렉터리 서비스
이메일 뉴스 레터
데이터 수집 및 보고 도구
배너 광고 시스템
구독 서비스
그 이외에도 아주 많이 있습니다.…
줌라! 익스텐션 디렉터리를 보시면 계속 추가되고 있는 수 많은 익스텐션들을 보실 수 있습니다. 활발한 줌라! 개발자 커뮤니티에 의해서 만들어진 신나는 결과물에 깜짝 놀라실 겁니다!

개발자를 위한 줌라!
회사나 기관들은 기본 줌라! 패키지나 자유롭게 배포되는 익스텐션 이상의 것을 필요로 할 수도 있습니다.

너무나 고맙게도, 줌라!는 강력한 애플리케이션 프레임웍을 제공하기 때문에 어떤 방향과 용도라도 줌라의 기능을 확장시키기 위한 복잡한 애플리케이션을 개발자들이 쉽게 개발할 수 있습니다.

코어 프레임웍을 사용하여 개발자들은 다음과 같은 것들을 쉽게 개발할 수 있습니다:

통합 전자 상거래 시스템
인벤토리 제어 시스템
데이터 보고 도구
커스텀 제품 카탈로그
복잡한 비즈니스 디렉터리
예약 시스템
커뮤니케이션 도구
애플리케이션 브리지
그 밖에도 어떤 것이든 만들 수가 있습니다…
당신의 회사나 기관이 제 3자 줌라! 개발업체를 고용하거나 내부에서 직접 줌라! 프레임웍을 사용하여 소프트웨어를 개발한다면, 오픈 플랫폼을 구축하는 것이기 때문에 한 개발업체 또는 독점/폐쇄적인 애플리케이션에 발목을 잡힐 필요가 없는 것입니다.

줌라 개발자 네트웍에서 줌라! 프레임웍을 기초로 개발하는 방법에 대해서 더 알아보실 수 있습니다. 줌라!의 매력은 줌라!의 프레임웍을 활용하면 사용자들에게 쉽고 익숙하면서도 강력한 환경을 제공할 수 있다는 것입니다.

자 그럼 뭐가 쥐약일까요?
쥐약은 없습니다. 줌라!는 GPL 라이센스를 따르기 때문에 자유롭고 오픈되어있습니다. 우리는 완벽하다고 주장하거나 세상의 모든 요구를 다 충족시킬 수 있다고 약속드리지는 못합니다. 하지만 줌라!는 많은 웹 애플리케이션에 있어서 훌륭하게 그 요구를 충족시키고 있습니다. 새로운 버전을 출시할 때마다 새로운 기능이 추가되고 있으며, 놀랄만한 사용자 커뮤니티로부터 얻는 도움과 조언을 통해서 앞으로도 오랫동안 멋진 소프트웨어를 제공해드릴 계획에 있습니다.


//********


1. 설치
mkdir joomla
cp Joomla_1.0.10-Stable-Full_Package.tar.gz joomla
tar xvfz Joomla_1.0.10-Stable-Full_Package.tar.gz
cd joomla
chmod -R 707 *
http://서버주소/joomla 접속
mysql DB설정 및 joomla 기본 설정
설정후 자동 완성된 내용으로 configuration.php 작성 및 admin 계정의 패스워드 변경
chmod 707 configuration.php
Install 페이지 삭제
rm -rf installtion
예제 Config 파일 삭제
rm -rf configuration.php-dist

2. 접속
http://서버주소/joomla 접속

3. joomlakorea.org의 한글 번역 적용하기
한글 번역이 euc-kr 인코딩으로 되어 있으므로 utf-8로 변환하여 저장한뒤
$HOME/joomla/language 에 korea.php 와 korea.xml 을 업로드
$HOME/joomla/media 에 korea.php 업로드

관리페이지에 접속하여
Language Manager 에서 Korean 을 선택하고 Published 체크
Global Configure 에서 Locail 을 선택하고
Language 를 korean 으로 설정
Time Offset 을 (UTC +09:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk 로 설정
Contry Local 을 ko_KR.UTF-8 로 설정
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/10/26 14:49 2006/10/26 14:49
Response
No Trackback , a comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2052

AWStats 웹상태 분석기

http://awstats.sourceforge.net




웹로그분석기 설치기 - Awstats


글쓴이 : 문용우 (2004년 03월 03일 오전 10:56)

수정이 : 김정언(2005년 8월 18일 오후 2:23)


####################################
# HowTo - Awstats 웹로그 분석 설치 #
# #
# 2004.03.03 linuxxer #
# 2005.08.21 jkim #

####################################

* Webalizer 를 많이 사용하시지만 awstats는 좀더 화려한(?) 인터페이스와다양한 정보를 제공해줍니다.


[목차]

1. 준비사항
2. Setup / Configure
3. Complete

4. 기타

5. 질의응답



1. 준비사항

프로젝트 싸이트 : http://awstats.sourceforge.net
다운로드 : awstats-6.4.tgz (2005년 8월 현재 stable한 버전)

웹로그분석이기 때문에 Web Server는 이미 설치가 되어 있어야 합니다.
( Apache 설치문서는 많이 있기 때문에 별도 설명을 하지 않음을 양해해 주시기 바랍니다. )

2. Setup / Configure

다운로드 받은 압축파일을 푸시면 docs 디렉토리안에 *.html 파일들이
Install 방법과 Plug-in사용법등 다양하게 정보를 같이 제공하고 있읍니다.
(프로젝트 홈페이지에 Install 방법 없읍니다.

꼭 *.html 을 보세요.

FAQ도 꼭 보기를 권합니다. 전부를 읽을 필요는 없지만 궁금해 하는 것에 대한 대다수의 해답을 찾을 수 있을 겁니다.

)



tar xvfz awstats-6.4.tgz
mv -rf awstats-6.4 /usr/local/awstats
chmod -R 755 /usr/local/awstats
mkdir /etc/awstats <- configuration 파일 저장위치
mkdir /var/lib/awstats <- 분석한 데이타 저장 위치

cd /usr/local/awstats/tools


./configure.pl <- awstats를 실행하는데 필요한 환경을 자동으로 만들어주기 위한 스크립트쯤으로 생각하면 됩니다.



(예)

[root@www tools]# ./awstats_configure.pl

----- AWStats awstats_configure 1.0 (build 1.4) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).

-----> Running OS detected: Linux, BSD or Unix

-----> Check for web server install
Found Web server Apache config file '/usr/local/apache/conf/httpd.conf'

-----> Check and complete web server config file '/usr/local/apache/conf/httpd.conf'
Warning: You Apache config file contains directives to write 'common' log files
This means that some features can't work (os, browsers and keywords detection).
Do you want me to setup Apache to write 'combined' log files [y/N] ? y
Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
Add '' directive
AWStats directives added to Apache config file.

-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
File awstats.model.conf updated.

-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y

-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.sample.com

-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
>

-----> Create config file '/etc/awstats/awstats.www.sample.com.conf'
Config file /etc/awstats/awstats.www.sample.com.conf created.

-----> Restart Web server with '/sbin/service httpd restart'
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.gamebonus.com
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...


A SIMPLE config file has been created: /etc/awstats/awstats.www.gamebonus.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.gamebonus.com' with command:
> perl awstats.pl -update -config=www.gamebonus.com
You can also read your statistics for 'www.gamebonus.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.gamebonus.com

Press ENTER to finish...

[root@www tools]#



여기까지 잘 따라 하셨다면 에러가 없을겁니다.

configure.pl 을 잘 실행 시키셨다면 자신이 정한 name으로 awstats.[정한 name].conf 파일이 생성되어 있을겁니다.


이 파일을 열어 LogFile= 항목을 자신의 웹로그가 위치한 절대경로를 입력합니다.

(예)

LogFile="/var/log/httpd/mylog.log"

이것을

LogFile="[자신이 사용하는 웹서버의 access 로그]"


제가 사용하는 예를 보여드리면
LogFile="/usr/local/apache/logs/access_log"



/usr/local/awstats/tools/ 아래보시면 httpd_conf 파일이 있읍니다.
이 파일을 vi로 여셔서 내용전체를 웹서버가 설치된 conf/httpd.conf 파일의 맨 하단에
붙여넣으시면 됩니다.

:wq



awstats-6.4 설치시에는 httpd.conf 내에 자동으로 아래부분이 추가 되었습니다.

혹시 추가 되지 않았다면 시스템설정에 맞게 추가해주셔야합니다.

...
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#

Options None
AllowOverride None
Order allow,deny
Allow from all





3. Complete

간단하게 다 되었습니다 이제 웹브라우져로 확인을 해보겠습니다.

http://[웹서버]/awstats/awstats.pl?config=[자신이 정한 name]

한글화도 아주 잘 되어 있읍니다.

(설정파일에 language가auto로 되어 있어 사용자의 PC환경에 맞게 출력됩니다.)


자... 웹로그분석이니 Cron 작업도 빼 먹으면 안되겠죠?

vi /etc/crontab 하셔서
0-59/6 * * * * root /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=[자신이 정한 name]

:wq

로그분석 시간간격은 조정하시면 됩니다.



4. 기타

4.1. config파일에 설정된 기본 로그파일이 아닌 백업받아놓은 임의의 파일을 분석하고자 할 때는 다음과 같이 -LogFile 옵션으로 해결할 수 있다.

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sample.com -LogFile=/usr/local/apache/logs/www.sample.com-access_log.1



4.1. DNS REVERSE LOOKUP

awstats 배포할 때 같이 배포되는 logresolvemerge.pl 로 접속하는 ip를 hostname으로 reverse lookup 할 수있다.

/usr/local/awstats/tools/logresolvemerge.pl -dnslookup

하면 간단한 설명을 볼 수 있다.



(예1) 백업되어 있는 로그파일을 pipe를 통해 분석한다.

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sample.com -LogFile="/usr/local/awstats/tools/logresolvemerge.pl -dnslookup ./www.sample.com-access_log |"



(예2)백업되어 있는 로그파일을 pipe를 통해 분석한다.
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.sample.com -LogFile="/usr/local/awstats/tools/logresolvemerge.pl -dnslookup ./www.sample.com-access_log.1 |"
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/10/20 18:48 2006/10/20 18:48
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2041

우편번호 디비

http://kssoft.wowdns.com:8090/postnum/index.html
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/10/18 13:56 2006/10/18 13:56
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2036

php로 워터마크 구현하기

php로 워터마크 구현하기


function fileUp($file, $fileTo)
{
global $HTTP_POST_FILES;
echo $HTTP_POST_FILES[$file]['name'];

if($HTTP_POST_FILES[$file]['name'])
{
if (is_uploaded_file($tmp = $HTTP_POST_FILES[$file]['tmp_name']))
{
unlink($fileTo);
return move_uploaded_file($tmp, $fileTo);
unlink($tmp);
}
}
}

function LoadImage($fName, $string) {
$file_ext = strtolower(substr(strrchr($fName,"."), 1)); //확장자
switch ($file_ext) {
case "jpg": case "jpeg":
$im = ImageCreateFromJPEG($fName);
break;
case "gif":
$im = ImageCreateFromGIF($fName);
break;
case "png":
$im = ImageCreateFromPNG($fName);
break;
}

if (!$im) {
$px = 7.5 * strlen($string);
$im = ImageCreatetruecolor($px, 12);
$bgc = ImageColorAllocate($im, 255, 255, 255);
$tc = ImageColorAllocate($im, 0, 0, 0);

ImageColorTransparent($im, $bgc);
ImageString($im,3,0,0,$string,$tc);
}
return $im;
}


function thumbnail($file, $fileTo, $width, $height)
{
Global $thumbLogo;

$src_im = LoadImage($file, $string);

$size[0] = ImageSX($src_im);
$size[1] = ImageSY($src_im);

$offsetX = 0;
$offsetXa = 0;
$offsetY = 0;
$offsetYa = 0;

if($height*$size[0] < $width*$size[1]) {
$offsetY = round(($size[0] * $height) / $width);
$offsetY = $size[1] - $offsetY;
$offsetYa = round($offsetY / 2);
} else {
$offsetX = round(($size[1] * $width) / $height);
$offsetX = $size[0] - $offsetX;
$offsetXa = round($offsetX / 2);
}

$dst_im = ImageCreatetruecolor($width,$height); //결과물 이미지 생성
ImageCopyResampled($dst_im,$src_im,0,0,$offsetXa,$offsetYa,$width,$height,ImageSX($src_im)-$offsetX,ImageSY($src_im)-$offsetY);
//ImageCopyResampled($dst_im,$src_im,$offsetXa,$offsetYa,0,0,$width,$height,ImageSX($src_im),ImageSY($src_im));
//만들기
//ImageCopyResized
//gdImageCopyResampled

if ($thumbLogo["on"] == "yes")
{
$im = LoadImage($thumbLogo["img"], $thumbLogo["string"]);
if($im)
{
$offsetX = $width - ImageSX($im) - 3;
$offsetY = $height - ImageSY($im) - 3;
ImageCopyMerge($dst_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im), $thumbLogo["opacity"]);
// ImageCopyResized($dst_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im),ImageSX($im),ImageSY($im)); //만들기
}
}

$file_ext = strtolower(substr(strrchr($fileTo,"."), 1));
if($file_ext == "jpg") // 저장하기
return ImageJPEG($dst_im, $fileTo, $thumbLogo["quality"]);
else if($file_ext == "gif")
return ImageGIF($dst_im, $fileTo);
else if($file_ext == "png")
return ImagePNG($dst_im, $fileTo);

}

function addLogo($file, $fileTo)
{
Global $itemImgLogo;

$src_im = ImageCreateFromJPEG($file);
$im = LoadImage($itemImgLogo["img"], $itemImgLogo["string"]);

$offsetX = ImageSX($src_im) - ImageSX($im) - 3;
$offsetY = ImageSY($src_im) - ImageSY($im) - 3;

ImageCopyMerge($src_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im), $itemImgLogo["opacity"]);
// ImageCopyResized($dst_im,$im,$offsetX,$offsetY,0,0,ImageSX($im),ImageSY($im),ImageSX($im),ImageSY($im)); //만들기

return ImageJPEG($src_im, $fileTo, $itemImgLogo["quality"]);
}



// 손톱이미지 크기
$thumbWidth = "100";
$thumbHeight = "100";


// 손톱이미지에 로고 넣기
$thumbLogo["on"] = "yes";
$thumbLogo["img"] = "thumb_mark.png";
$thumbLogo["opacity"] = "100";
$thumbLogo["quality"] = "105";
//$thumbLogo["string"] = "Rpack";


// 아이템 이미지에 로고 넣기
$itemImgLogo["on"] = "yes";
$itemImgLogo["img"] = "waterMark.png";
$itemImgLogo["opacity"] = "100";
$itemImgLogo["quality"] = "100";
//$itemImgLogo["string"] = "Rpack.com";

// 이미지 저장
$dirImg = "img/";
$dirThumb = "thumb/";


// 이미지 파일 업로드
if(fileUp("img01", $dirImg.$LII.".jpg"))
{
$tmp1[1] = "1"; // 파일 업로드 확인
thumbnail($dirImg.$LII.".jpg", $dirThumb.$LII.".jpg", $thumbWidth, $thumbHeight); // 손톱이미지 생성
if($itemImgLogo["on"]){
addLogo($dirImg.$LII.".jpg", $dirImg.$LII.".jpg"); // 원본 이미지에 로고 삽입
}
}
?>


< form METHOD=POST ACTION="" enctype="multipart/form-data">
< INPUT TYPE="file" NAME="img01">
< INPUT TYPE="submit">
< /form>
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/09/12 17:50 2006/09/12 17:50
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/1990

select -> onchage -> window.open

< select name="menu1" class="input" onChange="if(this.value) window.open(this.value);" >


















< /select>
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/09/07 10:25 2006/09/07 10:25
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/1977

에스크로 제도

개정된 전자상거래 보호법에 의해 2006년 4월 1일부터 모든 전자상거래 쇼핑몰에는 에스크로 제도를 도입해야 합니다.

에스크로 제도란 제3자(은행, PG사, 보험 등 에스크로 사업자)가 소비자의 결재 대금을 예치하고 있다가 상품배송이 완료된 후 그 대금을 통신판매업자에게 지급하는 전자거래안전장치로 법률에서는 결재대금 예치제도라고 합니다.

이에 매매보호에 대해 법률에서 정하는 바를 이행하지 않을 시 최고 5000만원 이하의 과징금이 부과됩니다.

에스크로 제도의 대처방법

1. 현재 카드결재가 간으한 쇼핑몰을 운영중인 사업자분들은 특별히 어떤 수단을 안찾으셔도 됩니다. 문의 결과,, 카드결재시스템 연동을 위해 PG신청할때 서울보증보험에 드는 보증보험만 있으면 해당 PG사를 통해 손쉽게 에스크로제도를 시행할 수 있습니다.

2. 기타 전자결재를 사용하지 않고 무통장입금을 통한 결재만을 사용하고 계신 쇼핑몰 사용자 여러분들께서는 데이콤 또는 에스크로서비스를 제공하는 회사에 신청하시기 바랍니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/08/23 17:39 2006/08/23 17:39
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/1951

AJAX와 자바 관련 자료 및 FAQ, AJAX 프로그래밍 무료 온라인 강좌 안내 (8월 4일부터 10주간)

한국 썬 마이크로스템즈 개발자 네트워크 (SKDN: Sun Korea Developer Network) 에서는

최근 화두가 되고 있는 AJAX 애플리케이션 개발에 필요한

자바 툴과 관련 기술, 그리고 전문가의 조언 등 수많은 유익한 자료들을

한글로 제공합니다.

제세한 내용은 아래 한글사이트를 방문해 주시기 바랍니다.

-AJAX 개요

http://kr.sun.com/developers/ajax/

-AJAX FAQ

http://kr.sun.com/developers/ajax/faq.html

-AJAX 툴

http://kr.sun.com/developers/ajax/tools.html

-다운로드

http://kr.sun.com/developers/ajax/downloads.html

SKDN에서는 AJAX 관련 한글 자료와 함께 무료 AJAX프로그래밍 강좌도 제공합니다.

현재 썬 마이크로시스템즈 자바 에반젤리스트로 활동 중이시며,

한국에도 방한하여 JCO Conference 등에서

열정적인 강의를 선보이셨던 신상철씨가

오는 8월 4일부터 10주간 AJAX 무료 온라인 강좌를 진행합니다.

(본 강좌는 전세계 개발자 대상이므로 영어로 진행됩니다).

온라인 강좌 프로그램 소개 및 신청 : http://kr.sun.com/developers/ajax/onlinecourse.html
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2006/08/23 17:33 2006/08/23 17:33
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/1950

« Previous : 1 : ... 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : ... 101 : Next »

블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2024/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Statistics Graph

Site Stats

Total hits:
240851
Today:
647
Yesterday:
856