프로그래머로서 황당했던 기억은?

winchild의 이미지

아래의 "시스템 관리자로서 황당했던..." 을 정말 재미있게 읽었습니다. 저도 경험했던 것들이니까요. 그와 더불어 프로그래머로서 황당했던 기억들을 모아보면 그것도 재미있지 않을까 생각을 했습니다.

프로그래밍이라는 것에 발을 디딘지 그럭저럭... 내후년이 되면 20년이 되는 것 같습니다. 울나라에서 프로그래밍만 해 가지고 밥먹고 살기 정말 힘들더군요. 지난 일을 돌아보면 재미있었던 일도 많았고, 고생한 일도 많았습니다. 프로그래머로서 황당했던 기억들을 써보면 몇가지 있는 것 같습니다.

머릿글로 하나만 소개하면.... (다른것은 나중에 답글로 올리죠.) 첫 직장생활을 하면서 한 2년 하니깐 그럭저럭 프로그래밍에 관한 한 내맘대로 할 수 있는 수준이 되었을 때입니다.

상용프로그램을 운용중일 때에는 완결된 프로그램은 손을 대지 않는 것이 상책이죠? 그런데 이럭저럭 하다 심심해서 그냥 프로그램을 들여다보고 있었습니다. 그 프로그램은 Z-80 어셈블러 프로그램이었습니다.

그런데 프로그램을 훑어보던 나는 어떤 부분에 시선이 고정되었습니다.

"오잉? 이거는 틀림없이 버그인데..."

큰일이다 라는 생각에 (은행용 단말프로그램이라서 만일 버그이면 200개의 프로그램을 디스켓으로 새로 배포...) 실행프로그램의 기능을 확인해 보았습니다.

"어!!! 잘 돌아가는데..."

아무리 확인을 해봐도 잘 수행되었습니다. 이거 어쩌지... 2년차밖에 안된 나는 상관에게 보고하였지요. 그랬더니 그 과장은 하나도 안놀라면서 왈...

"가끔 버그가 있더도 잘 돌아가는 경우가 있다."

그리고 그냥 놔두라는 것입니다. 물론 그 프로그램은 고쳤지만 다음 프로그램 배포시까지 숨죽이며 기다릴 수밖에 없었지요. 어쩌다 실행프로그램은 고친 소오스를 사용한것은 아니냐구요? 글쎄요.... 그당시 실행프로그램 만들려면 컴파일과 링킹에 30분정도 걸렸습니다. 그러니 귀신이 곡할 노릇이죠. 근데 상관들은 당연한 듯이 아무런 태도변화도 보이지 않는데 더 충격을 받았습니다.

근데 요즘에 이런일을 발견하면 저도 마찬가지 반응을 보일것 같네요. 여러분들이 프로그래머로서 겪었던 황당한 기억은 무엇인지요?

댓글

익명 사용자의 이미지

흠.. 모두들 누가 옳으냐 그르냐만 생각하시는거 같군요.
위에 일반사원 위로 들어가신분,
일반사원보다 위이고, 경력도 더 많으신데 왜 초짜의 자존심을 건드리셨는지.
경력은 단순히 코딩능력이나 개발능력보다 밑에 사람 다루는 것부터 다른거 아닐까요?

익명 사용자의 이미지

평소에 잘 돌아가는 프로그램이 어느날 갑자기 오류가 생겨..
여기 저기 찾아다니며 물어보았지요.
그러다가 차장한테 물어보니.
차장 왈..
"내가 디비 바꿨어" -_-;..

익명 사용자의 이미지

말없이 슬쩍 바꾸는 사람들 정말 밉습니다..

익명 사용자의 이미지

쿨럭..

전 모바일 프로그래밍하는데..
한 2틀 밤새서 다짜놓으니까..

여기바꾸지.. 한마디..

아직 밥이 안되서..네ㅡㅡa..

하고 열씨미 고치니까..

여기도 바꾸지~

또 네ㅡ_ㅡ^

이짓을 한달넘게 하고있슴당..ㅡㅡ;;

dawnsea의 이미지

음.. 정말 하드웨어쪽은 밥이 중요한 거 같아요 ㅡ.ㅡ;

며칠 꼬박 새서 알아낸 것들은 평생가니까 보람된 면도 있지만..

밥되는 사람이 "야. 여기." 라는 한마디로 한 큐에 쭉 뽑아보리는 일들이..

ㅠ.ㅠ

익명 사용자의 이미지

dos 2.0 시절 정도 였던가?...
한 업체사장님이 급하게 10000건 정도의 5개 항목데이터를 입력해 달라는 부탁을
받고,1일 아르바이트 10명을 불렀죠.dbaseII 를 열고 edit XXX 하여 입력을
시켰죠.오후 5시 무렵 나눠준 데이터가 마무리 되어서 종료를 해죠(quit).
열명의 pc에서 데이터를 모아서 내 컴에 실은 순간,학실하게 디비구조만 남아있는
빈 데이터베이스!!! (아쉬톤테이트 사 를 저주하며... quit 이전에 close 해야 한다는 사실을 몰랐죠)

익명 사용자의 이미지

모두 다 맞는 말이다...

다만 확실한건

남의 프로그램을 분석해서 고치는게

다시 만드는것 보다 더 힘들다는 것...ㅡㅡ;

익명 사용자의 이미지

어떤 프로그램인지는 모르겠으나-_-

전 새로 만드는게 가장 힘들던거 같은데;;

익명 사용자의 이미지

O 와 0 ..... 같은가?? 다르다..
자판의 키위치가 비슷하기 때문에..
눈이 멀면 절대 안보인다..
(구별되는 폰트를 쓰자)

n 과 m 도 잘 안보인다...........

: 과 ;

' 와 `

ㅎㅎ....
더구나 남이 만든 것이면 더더욱 못찾는다.

익명 사용자의 이미지

제 예기가 너무 우울했나여?

그렇다면

자바로 코딩하다가 중간에 비베코딩을
해야했었는데

dim i as interger;
;
;
;
;

모든줄에 ; 이걸 붙여버렸습니다.

익명 사용자의 이미지

같이 일하던 여직원이 자기 소스좀 봐달라기에
둘이 초롱초롱 모니터를 보고 있는데
서브팀장이 울트라로 코딩 않한다고
키보드를 집어 던저 버렸습니다.

그 서브팀장은 다른직원 소스는 나보고 수정시키고
내 소스는 다른사람에게 맡겼는데
도저히 이해할 수 없게 바껴버린 내 소스를 보면서
한숨만 나왔습니다.

야근할일도 없는데 야근하라기에 2시까지
일하는 척하다가 여자탈의실가서 몰래 잤습니다.
그 다음날은 너무 피곤해 업무량을 채우지 못해서
그주 일요일날 아무두 없는 회사에 나와 마저
일해야 했습니다.

두번째 직장
웃는얼굴 하나로 면접통과시켜주더니
평생 같이 일하자고 해놓고선
경리업무만 몇개월 시키다가 낼부터 나오지 말라던
밴처 사장
굴지의 개발회사에서 si차장을 수년간 지냈으면서
사람을 그렇게 황당하게 내쫓다니

세상은 사람을 순진하게 살지 못하게 하는
교육장인거 같습니다.

익명 사용자의 이미지

전 지금... 납땜중임다...

왜냐면, 지금 소프트웨어 검열중이라서..

막막함다.

여긴 전자회사인데여, 전 프로그래머 일을 하고 있슴다.
하는건 여러가지인데, 진도는 죽어도 안나갑니다.

얼마전 비씨로 activeX 짜서 웹에다 낑가넣고.. 걍 놀고 있슴다.

막막함다. 쩝... 플머라고는 나 뿐임다.

컨텐츠작업에 웹사이트 등등. 다 함다.

요즘은 델파이도 공부중인데 책만 사놓고 안합니다.

AVR 다루기 위해서 플밍 겅부도 해여하지만... 왠지.. 안하고 싶은 생각만 듭니다.

여하튼 검열이다 머다 해서 컴 한대도 없음다. 아 이거요? 이건.. 리눅스인디....

담에 기회가 되면 vmware라도 깔아볼 생각임다. 원.. 불편해서 흑흑..

다들 즐밍하셈~

winchild의 이미지

해가 넘겨서도 꾸준한 사랑을 받고 있는것 같습니다. ^^
그럼... 생각나는대로 6탄인가? 이거는 황당하기 보다는 재밌던 일이고... 약간의 사기도...

학교에서 시스템프로그래밍이라는 과목을 수강할때 경험입니다. 재미있는 과목이기는 했는데 지독한 노교수가 강의를 했습니다. 얼마나 재미가 없는지... 필수였으므로 빠질수도 없고... 강의에 학생들이 참석을 해서는 학생은 학생대로 교수는 교수대로 따로노는 형편이었습니다.

얼마나 따로 놀았나 하면 기말고사를 치를려고 시험지를 받아 보았더니 전혀 생소한 문제들... 난리법썩을 떨었더니만 우리들은 진도가 절반밖에 안나갔다고 생각을 했는데 교수님은 이미 모두 진도를 나간것으로 윽... -_-;;;

재시험을 칠수도 없고, 그럼 남은것은? 프로젝트 과제물 뿐이 었습니다. 5-6명이 팀이되어서 같이 하는 프로젝트로 크로스 어셈블러를 만드는 것이 었습니다. 만만치 않지요? 그런데 이것도 이견이 있었습니다. 언어는 파스칼인데 출력결과를 놓고 2진수냐, 16진수냐로 왈가왈부 하고 있었습니다. 아마 조교가 과제물을 전달해 주는 과정에서 실수가 있었던 것으로 기억합니다.

교수님에게 확인하면 간단할걸... 웬지 그생각은 못하구 그럭저럭... 진도를 나간다고 나갔지만... 지금도 마찬가지가 아닌가 싶지만 팀원들간에 도통 협조가 이루어지지를 않았습니다. 결국은 잘한다고 하는 넘들이 한두명이서 하지 않나 싶지요? 그땐 저두 팀장이 었는데... 내일모레면 제출해야 하는데 도저히 안되겠다 싶어서 하룻밤을 새서 일단 소오스를 만들었습니다. 아마 손으로 밤새 썻던것으로 기억합니다. (그땐 PC 가 없던시절이라...)

다음날 아침에 팀원을 소집, 한명에게는 소오스보구 플로우차트 그려라, 두넘은 터미널에 앉아서 컴터에 입력해라. 그도 저도 못하는 넘은 이따가 점심사라... 해놓구서는 저는 출력물을 조작(^_-) 했습니다.

편집기로 결과물 화면을 만든거지요. 근데 숙제대로 2진수로 결과물을 만들어 놓구 보니 도저히 말이 안되는거 같았습니다. 뭔가 오해가 있을거 같더군요. 2진수로 결과물을 내놓게 할리가 없다는 생각이 들어서 다시 16진수로 결과물을 다시 만들었습니다.

제가 기억하기에도 멋있게 만들었다구 생각합니다. 상단과 하단에 계산소에서 출력하면 나오는 리스팅리포트까지 위조를 했으니깐... 크크크...

그래서 플로우차트 그린거랑, 입력한 소오스는 컴파일 에러만 잡은것을 뽑아내고는, 결과물 붙여서 제출... 저녁에는 암것도 안한넘들에게서 저녁과 술얻어 먹구....

결과는 ... 흐흐... 우리팀이 A- 였습니다. 고생고생해서 2진수로 리포트 낸넘들은 모두다 B, C 였던것으로 기억합니다. 아직도 그때 생각을 하면 겸연쩍지요...

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

김경환의 이미지

보통 밤 11시부터 오전 11시까지 컴 앞에서 씨름 합니다.

저녁 7시에 일어나서 밥 먹고 TV 보다가 드라마 타임 끝나면

책 한권 꿰고 책상에 앉아서 작업 준비 하고...

그렇게 밤새 작업 하고... 오전 10시부터가 위기입니다.

10시부터 11시까지 그 시간에 짜놓은 코드. 그 시간에 꼭 정신이 몽롱해져서...

좀 큰 프로젝트이다 보면 1달정도 잡아서 작업하는데 하루하루 해놓은 것들이 다음 곧 바로 이어져야 하는데,

몽롱한 정신으로 짜놓은 코드 보면 다시 작업 할때 이리저리 해매고... 디버깅 작업으로 시간 다가고... 간혹 소스 전체에 영향을 주는 실수도 해서 머리털 박박 뜯어내며 작업하게 되더군요. ㅜ.ㅜ

매번 버릇이 되니까 그 시간에 자려고 해도 잠도 않오고...

몸 망가지고 마음 망가지고.. 흑...

이제 헬스도 끊었으니 좀 일찍자고 일찍 일어나야겠네요.

기냥 푸념이었습니다.

프로그래밍도 컨디션 좋을때 해야 고속도로 뚤리듯이 잘 되는듯 싶습니다.

컨디션 최고!

winchild의 이미지

저런... 그렇게 사시는 거야 말로 폐인이 되는 지름길인데...
남들 일할때 일하고 남들 놀때 놉시다. 그래야 연애도 좀 하구 그러지 않겠어요?

운동두 열심히 하구요. 제 경우를 보면 가장 컨디션이 좋았던 때는 매주 등산을 다닐때가 아니었나 싶습니다. 벌써 폐인클럽에 이미 가입하신거 같긴한데...

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

익명 사용자의 이미지

가장 황당했던 기억......
전화가 왔다..

"이 프로그램 설치하고 실행하니까 마우스가 안움직이는데요.."
"......커서가 정지되어 있습니까?"
"네, 무슨 프로그램이 이래요. 마우스가 왜 스냐구요... 지금 바빠죽겠는데, 아침부터 정말 짜증나네..."
"죄송합니다. 저희가 테스트해보고 알려드리도록 하겠습니다. 성함하고 연락처 하나 말씀해 주시면 알려드릴께요.."

"앗, 죄송합니다. 마우스인줄 알고 핸드폰 잡고 있었어요.."

"(이런 개XX.....)아네...다행입니다.^^"

익명 사용자의 이미지

정말 재밌는 일이 많네요...
어제 있었던 일화....
사용자로부터온 전화.(1)
"거기가 XX죠?"
"예... 맞는데요.."
"이거 프로그램이 잘못된것 아니예요?" -> 마구 화를 낸다....
"..... ?" -> 무지 황당해 한다.
"화면이 흐려요..."
"모니터를 잘 닦아보세요"....
내가 그만 두던지해야지...!

==================================>
사용자로부터온 전화.(2)
"이 메뉴에서 이걸 이렇게 클릭하면 어쩌구 저쩌구 해야되지 않아요? 어거 프로그램이 잘못된거죠??"
이런 전화 받으면 무쟈게 열받는다.. 프로그래머로서의 자존심이 있지...
"되쟎아요.. 잘해보세요.. 메뉴얼좀 읽이보시고요... 다시 부팅해서 해보고 않되면 전화하세요..." --> 나도 무쟈게 화를 낸다...
전화를 끊자마자 열나게 소스를 꼬나본다... 테스트도 다시해본다.. 역시 않된다... 헐..
바로 전화기 내려놓고 옆자리 동료에게 전화오면 거짓말 시키고... 벌레잡이에 나선다.... 젭싸게 온라인에 적용해놓고... 내가 직접 전화한다... 당당하게...
"해 봤어요? "
"엉!!! 방금까지 않됐는데... 헐 ... 지금은 잘 돼네.." -> 무지 미안해 한다..
"메뉴얼좀 잘 보시고 하세요..." -> 의기 양양....
==================================>
풀 초보시절....
딴엔 개발자로서의 자존심은 있어서... 내 소스는 내목숨만큼 아끼던 시절...
날밤까서 작성해 놓은 소스... 고참이 보더니...
"야! 이거는 이렇게 해야되지 않냐?" 하면서 내소스에 수술용 메스를 들이덴다... 할말이 없다.. 맞는 말이다.. 근데.. 정말 열받는다. 감히 내 소스에 손을 대다니... 고참이 가고나서 다시 고친다... 헐...
'기분 나쁘게... 나도 이정도는 한다..'
테스트 끝내고... 그 고참 모르게 온라인 적용하고 나서 몇분후.... '으악'''''
시스템 모니터에 ... 온통 빨간불 투성이고.. 수없이 울리는 알람소리...
1시간후 난 시스템관리팀에 끌려갔다... 내가 고친 프로그램이 모든 DB에 LOCK를 걸어버린 것이다... 헐...
그날 난 퇴직금도 없이 옷벗을뻔 했다.
=============================>
시스템 다운 시키기...
새벽 3시...
센터 BATCH작업이 있는 관계로 온라인시스템이 접속하여 열심히 작업을 실행시키고 있었다...
그러던중 무슨 귀신이 씌었는지...
'CS A'를 입력후 ENTER..
(참고로 작업실행명령이 'CS A 실행파일'인데...
'CS A'라고만 입력하면 대기중인 모든작업이 한꺼번에 실행되는 기기묘묘한 시스템)
수백개의 작업이 동시에 START..
시스템 콘솔을 도저히 볼수도 없이 풀려나가는 작업들... 온통 빨간글씨(에러종료를 알리는 메세지)..
잠시후... 수십명의 사람이 시스템룸을 가득메우고...
온통 전화기 붙들고 난리 부루스...
(저희회사는 상당히 큰 사이트의 대형은행 입니다. 그래서 돈문제와 직결되기 때문에 항상 직원들이 비상연락망을 구축하고 즉시 출동태세를 갖추고 있죠)
그 시간에 난... 화장실 변기위에 짱박혀 내일을 두려워하며 담배만 2갑을 피웠다...
그 뒤로는 개발자는 절대 콘솔을 만질수 없다는 내부 방침이 생겼고... 얼마후엔 시스템룸 출입금지로 강화됐다.

winchild의 이미지

정말 큰일을 치르셨군요.

지금은 누구에 못지 않은 훌륭한 프로그래머가 되셨겠지요? 이렇게 쉽게 이야기를 하실 정도가 되신것을 보니... 크크크...

저두 그런 저두 은행관련 에피소드...

1. 은행용의 뱅킹 온라인 단말기 프로그래밍을 하고 있을때 출근하면서 은행의 담당자를 얼핏 봤는데 뭔가 고개를 갸우뚱... 어깨넘어 화면을 보니... 헉... 뻑이다. 잽싸게 제 자리로 와서 프로그램을 고쳐 놓습니다. 잠시후 그 담당자가 와서 "이거 이래저래 이상한데 좀 봐주시죠... 어 되네? 틀림없이 안되었는데..." 저는 시침 뚝 떼고... "그럴수도 있죠뭐..." 가슴을 쓸어내린적이 몇번 있습니다.

2. 같은 시기에 호스터 컴터에 어떤 작업을 요청하면 호스트가 다운되는 문제가 발견된적이 있습니다. 그 작업이 시행될 확율은 0.1% 도 안되지만... 물론 IXX 컴터의 버그 였던것을 추정되는데 그래서 긴급하게 전 지점의 프로그램을 회수 하도록 한적이 있었습니다. 직접 지점에 나가서 회수를 해와야 했었는데 아뿔사 가지고 나간 디스켓이 읽히지를 않더군요. 할수 없이 일단 업무는 하게 해주어야 하므로 문제가 있는 디스켓으로 작업을 하라고 하고는 돌아 왔습니다. 0.1% 의 확율인데 설마... 근데 그작업이 실행되었고 은행 호스트가 다운되었습니다. 윽!!!!

3. 역시 같은 시기에 지점이 새로 개설하여 프로그램 디스켓을 설치 부서인 기술부를 통하여 보내주었습니다. 근데 설치가 되었는데 부팅이 안된다구 연락이 왔더군요. 전화로 아무리 이야기를 들어도 원인을 알수가 없어서 직접 나갔습니다. 기술부는 4시간째 부품을 바꾸어 가면서 씨름중이 었구요. 제가 가서 보니 "아뿔사!" 제 동료직원이 디스크를 보내주면서 시스켓의 쓰기방지 라벨을 붙여서 보낸것이 었습니다. 최초 부팅시에는 인덱싱을 만들기위하여 쓰기 가능해야 하는데... 기술부는 디스크가 쓰기를 못하는 줄 알고 애꿎은 하드웨어만 바꾸어 보고 있었지요. 살짝 라벨을 떼어내고 부팅... 성공... 기술부 직원이 씩씩대면서 문제가 있었던것이 아니냐? 하고 따지고 들었지만 웬지 그때는 젊은 시절의 자존심인지 시침 뚝떼었지요. 지금 생각해도 미안하네요.

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

익명 사용자의 이미지

[나름대로 정리했습니다.]

1. 저... 이거 좀 봐 주세요... 여기서... 이렇게... 저렇게... 어~ 되네?... 죄송합니다... (환장하겄네)
2. 어처구니 없는 실수로 짜 놓은 소스 날리기. -> 담배 -> 다시 코딩
3. 같은 이유로 디비 날릴때... ex) where 없는 delete 등등 (늘 사표쓰는 남자)
4. 어처구니 없는 코딩 실수 ex) if(a =! b), ... 등등...
5. (중략) 이렇게 해놓고 에러가 없는 걸 확인하고 역쉬 난 고급 프로그래머야 하며 자화자찬하다
나중에 혼자서 소스 검토하다 오류 발견하고 아무도 몰래 수정할때.....
6. 본이 아니게 이 언어 저 언어 왔다 갔다 하면서 코딩하다 보면 생기는 오류들
-> 주로 연산자, else if, 변수, ... 등등
(저두 이것땜에 미치겠습니다. 특히 VB 갔다가 자바나 PHP로 오거나 그 반대면 더 미치죠)
7. 알고리즘 다 생각해 놓고 산수가 안되서 한참 동안 전전긍긍할때...
8. 머리엔 ABCD의 용량인가보다... E가 들어오면 A가 빠져 나간다. 흔적도 없이. 전혀 기억이 안나는 경우...
내가 했다는 데 전혀 기억 안남.
vb 하다가 php 하다가 java 하면 vb 는 이미 머리에 없다. (환장하겄네)
9. 저번에 한 소스를 다시 열었을때...
어~ 내가 왜 이렇게 했지? 에이~ 하구 한참 수정하다가...
아~ 그래서... 이렇게 했구나... 하구 다시 고칠때...
10. 다른 얘기지만... 모니터에 모가 묻었는데... 마우스로 지우고 있을때...

익명 사용자의 이미지

저는 VC로 개발을 많이 하는 편입니다.
얼마전에 SKT에서 작업할때의 일입니다.
그날 할일이 많아서 밤을 세워서 작업했습니다.
거의 마무리가 다 되었고 기능확인작업도 끝났습니다.
저는 소스의 많은 부분을 수정하거나 개량하는 경우에
VC를 두개 이상 띄우고 작업하는 경우가 많습니다.
그런데 드래그앤드롭 기능으로 에디터에 파일을 던져 넣어서
여는 습관이 있습니다.
창밖이 거의 훤하게 밝아 오고 있었습니다.

참조용으로 열었던 VC를 닫고 최종 컴파일을 위해
다른 VC로 포커스를 이동했습니다.
그때 낯익은 다이얼로그 박스가 떠더군요.
아무생각없이 예를 클릭했습니다.
o.o --> O.O --> @.@ --> ㅜ.ㅜ

그순간 소스는 다날아 갔습니다.
그 박스는 소스가 외부에서 변경되었는데,
리로드하겠냐는 다이얼로그 박스 였습니다.
초저녁에 있던 소스의 모습으로 바뀌어져 있더군요.
Ctrl-Z를 다급하게 눌렀지만 응답이 없었습니다.
다른 VC는 이미 닫아버린 후 였습니다.
전 마우스를 집어 던졌습니다. 책상에 머리를 박으며 쥐어뜯었습니다.
그리고, 커피 한잔을 마시고.....
다시 코딩했습니다.

익명 사용자의 이미지

수년 전에 Visual C++ 4.0 이 첨 나왔을 때였습니다. win32 API에다가(그땐 MFC몰랐음다) thread를 쓰고는
한 thread에서는 변수 하나를 polling해서 check하고,
다른 thread에서는 그 변수를 TRUE/FALSE로 toggle하는 프로그램을 짰었습니다.

첨에 컴파일 해서는 "제대로 도는 군" 확인하고는,
본작업에 들어가서 "Release mode" 로 컴파일 후, 실행시켜보니, polling 하는 thread에서 무한루프를 도는 것이었습니다.

황당..

다시 debug 모드로 하나 하나 확인...
정상적으로 돌아감..

다시 Release모드로 rebuild all..
다시 무한루프..

코드 각각을 검사해가면서 2~3일 정도 반복..
(정말 무식했죠.. 쩝.. 컴파일 옵션을 하나 하나 지워가면서.. 확인하기..)

결국에는 문제가 생겼던 것이 "-O2"라는 것을 알아 내고는 disassemble해보니..

extern Boolean flag;
while ( flag !=FALSE ) {
if ( flag == TRUE ) break;
.....
}

이러한 문장에서 "-O2"로 컴파일 할 경우, 실제 flag를 읽어오는 부분이
while 문 바깥쪽에만 생성되고, while문 안쪽에서는 아예 읽어오지 않는 것이었습니다.

그때는, 이런 xx 같은 VC.. 라구 마구 마구 욕했었지요.

결국... 해결 방법은...
extern volatile Boolean flag;
~~~~~~~~
이 "volatile"하나만 넣었더니 "-O2"에서도 잘 되더랍니다.

익명 사용자의 이미지

다시 안 읽어오라고 시키셔 놓곤... (-O2 주셨잖아요.)
옛날 글 슥 읽던 지나가던이가..

bookworm_의 이미지

원래 그게 정상 아닌가요? VC 잘못이 아닌 같은데요.

Bookworm

익명 사용자의 이미지

메일 관련 프로그램을 짜고 있었습니다.

POP 서버였죠.

메일이 DB에 존재했기에, 가져와서 다시 메일을 만들어 보내주는데...

모조리 본문도 첨부파일로 가버리더라구요.

밤을 새도 이유를 알지 못했는데.

옆사람이 단 1분만에...

/*
else
sprintf( ac_type, "Content-Type: text/plane" );
*/

===================================>

/*
else
sprintf( ac_type, "Content-Type: text/plain" );
*/

정영훈의 이미지

아까 리플을 수업 20분 남기구 프로그램짜보고 글쓰고

하느라 너무 서둘른 나머지.. 너무 건방지게 멋대로

글을 써버린게 된건 아닌지 걱정이 되어서 다시 들어와봤습다.

세심한 배려에 감사드립니다.

무단 결근에.. 쩝.. 그런 사람이 있다니..

ㅡ.ㅡ

어딜가도 먹고 살기 힘들겠습니다 ^_^;;

ps.. 근데 kldp오늘 엄청 느리네요..
이글 올라갈런지..

white23의 이미지

분명 내컴과 주변 컴에서 배포전에 여러번 테스트 했는데...
딴데 가면 꼭 에러날 때... 특히 시연할 때...
순간 설명이 끊히고 자신만만하던 제 얼굴은 굳어지고 머리속 아주 복잡하게 굴러가죠...
그리고 나오는 한마디, "이거 다음에 꼭 되게 해드리겠습니다."...-_-a

그리고 밑에 ftoa() 하하핫...
저도 한 때 고민 한적이 있었죠.
분명이 책에서 본적이 있고...
전에 이걸로 프로그램을 한 적이 있었는데...
이게 왜 없지?

결론은 그때도 이거 고민하다 sprintf()사용했던 기억이...d-_-b
아주 황당한...^^

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

어떠한 역경에도 굴하지 않는 '하양 지훈' - It's Now or Never!!!

winchild의 이미지

이거 한번도 안 격어본 프로그래머는 없을겁니다. 그래서 제 후배직원이

"도저히 안되는데요. 함 봐주세요"

하고 불러서 가서 보고 있는데...

"이게요. 이렇게 저렇게 하였는데..... 어?! 되네...."

쿠쿠....

"그냥 잘해봐..."

하고 옵니다.
그래도 고개를 갸우뚱 갸우뚱 하면....

"원래 고참이 째려보고 있으면 컴터가 바짝 얼어서 잘하는 법이여..."

라구 해주지요.

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

winchild의 이미지

흠... 제5탄...

여러분 이거 생각해 보셨어요? C 함수중에서

atoi(), atof() 등은 있는거 아시죠?
모르는 분을 위해서 설명을 한다면 ascii to integer 및 ascii to float 입니다.

근데 반대가 있나요? 즉 itoa() 나 ftoa() 가 있느냐 이거죠?

결론은 ..
.
.
.
.
.
.
.
.
.
없습니다. 그러면 어떤 함수가 그것을 대신하고 있죠?
..
예전에 첫 회사에서 3년을 있었습니다. 두번째 회사는 순전히 UNIX 와 C 를 하고 싶어서 옮겼습니다. 쪼매 경력이 붙었다고 "대리" 라는 직함을 받아서 갔습니다.

UNIX 고 C 고 전혀 모르는 상태에서 한 2개월 하니 그럭저럭 감이 오고 할만 하더군요. 재미도 있고...

그런데 제가 입사할때에 그 회사의 창업때부터 (입사할때 창업한지 6개월정도 되었나?) 있던 직원이 두명 있었습니다. 당연히 일반사원.... 그런데 그 직원이 저희 상급자로 들어오니 눈꼴이 사나웠나 봅니다.

그중의 한명은 더구나 ROTC 출신이었는데 자존심이 보통이 아니더군요. 그러다 정말로 ftoa() 가 필요한때가 있었습니다.

저는 그런 기능이 필요한지도 몰랐는데 그 ROTC 출신의 직원이 며칠을 고심하더군요. 일의 진도가 나가지를 않으니까? 뭐가 문제냐? 라고 물었더니 ftoa() 함수를 만들고 있었습니다.

어째 그것을 만드느냐? C 시스템콜을 이용하면 되지? 그 친구 답변은 atof() 는 있는데 ftoa() 는 없다. 였습니다. 기가 찬 저는 sprintf() 는 뭐하는 함수냐? 그것이면 충분한 결과가나오지 않느냐? (참고로 sprintf(buff,"%f",f) 하면 당연히 buff 에 결과 값이 들어가지요.) 고 했더니 이 친구... 좀 황당한 표정을 짓더니 자존심이 심하게 상했는지 그 함수 믿을수가 없다. 직접 만들겠다고 고집을 부리더군요.

그래서 어떻게 되었느냐구요? 그거 만들기 어디 쉽습니까? 일주일 고생하다 슬그머니 손을 놓더군요.

여러분 이런 자존심은 정말 쓸데 없지요?

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

익명 사용자의 이미지

/*******************************************************
* ftoa와 그 테스트코드
* by anonymous.
* 코딩+디버그 소요시간 40분.
* 라이센스 전혀 없음.
*******************************************************/

static int
int_log10 (float val)
{
int retval = -1;
do
{
retval++;
val /= 10.0;
}
while (val >= 1.0);
return retval;
}

static float
pow10 (int val)
{
if (val <= 0)
return 1.0;
else if (val == 1)
return 10.0;
else
return pow10 (val / 2) * pow10 (val / 2) * (val % 2 == 0 ? 1 : 10.0);
}

void *
ftoa (char *origBuf, int maxSize, float num)
{
char *buf = origBuf;
int writeCount = 0;
int digits = int_log10 (num);
do
{
float base = pow10 (digits--);
int di = num / base;
*buf++ = 0x30 | (char) (di);
num -= di * base;
writeCount++;
}
while (digits >= 0 && writeCount < maxSize);

if (writeCount >= maxSize)
return origBuf;
*buf++ = '.';
writeCount++;

do
{
num *= 10.0;
*buf++ = 0x30 | (char) num;
num = num - (int) num;
writeCount++;
}
while (num != 0.0 && writeCount < maxSize);

if (writeCount >= maxSize)
return buf;
*buf++ = 0;
return origBuf;
}

int
main ()
{
char buf[100];
ftoa (buf, 100, 0.1020);
printf ("%s\n", buf);
ftoa (buf, 100, 0.0);
printf ("%s\n", buf);
ftoa (buf, 100, 1020000.0);
printf ("%s\n", buf);
ftoa (buf, 100, 1048576.0);
printf ("%s\n", buf);
return 0;
}

// 굳이 1주일동안이나 삽질할 필요가 있었나요..??

정영훈의 이미지

// 코딩+디버깅 15분

#include

int itoa(char* buf, int num)
{
int pow, i;
int temp=num;

for(pow=0;temp>0;temp/=10,pow++);

*(buf+pow)='\0';

for(i=pow-1;i>=0;i--)
{
*(buf+i)=num%10+'0';
num/=10;
}

return pow;
}

int ftoa(char* buf, float num)
{
int i;
int val, rem;

val=(int)num;
rem=(num-val)*1000000;

i=itoa(buf, val);
*(buf+i)='.';
i++;
i+=itoa(buf+i, (int)rem);

return i;
}

main()
{
char buf[255];

ftoa(buf, 23.44);
printf("%s\n", buf);
printf("%f\n", 23.44);

}

// 제 쏘스가 낫다는 것이 아니고..
// ROTC 후보생으로서 그냥 지나가기 그래서 한번 짜봅니다.
// 자존심 센건 뭐.. 전혀 할말 없지만..
// ROTC도 전공에 실력자 많습니다.
// 혹시 편견 갖는 분 있으실까봐 써봤습니다.
// 그치만 물론 가장 좋은 방법은 sprintf를 쓰는 것이었겠죠^_^;;
// 이것두 라이센스없습니다.~

익명 사용자의 이미지

그냥 읽기만 했는데, itoa()는 음수의 경우에는 처리가 이상할 듯 싶고
(양수의 경우에는 되는지는 코드 읽을 여유가 없었고요)
ftoa()의 경우에는 float의 표현범위가 integer의 표현범위보다
넓을 듯 한데 (둘다 4byte, 또는 같은 바이트를 쓴다고 하더라도..)
val 에다가 int 로 캐스팅하면 int의 범위를 벗어나는 수에서는
문제가 있을 듯 하고, itoa()를 쓰기 때문에 itoa()의 문제를 또한 가지고
있지 않을까 하네요.

역시, 저는 ftoa()는 15분만에 못 만들꺼 같네요.. ^^

익명 사용자의 이미지

흠...
약간 시간을 투자하면 만들수 있는거지만...
그런 함수가 없다고 하시니.. 제가 함수 하나 알켜주께요.. ^^
근데 참 이런걸로 고민을.. ^^

_gcvt
Converts a floating-point value to a string, which it stores in a buffer.

char *_gcvt( double value, int digits, char *buffer );

/* _GCVT.C: This program converts -3.1415e5
* to its string representation.
*/

#include
#include

void main( void )
{
char buffer[50];
double source = -3.1415e5;
_gcvt( source, 7, buffer );
printf( "source: %f buffer: '%s'\n", source, buffer );
_gcvt( source, 7, buffer );
printf( "source: %e buffer: '%s'\n", source, buffer );
}

Output

source: -314150.000000 buffer: '-314150.'
source: -3.141500e+005 buffer: '-314150.'

정영훈의 이미지

geekforum에 글 처음 쓰면서 알게 된점..

1. 마지막 답장 보다가 답장쓰면 맨 위에 붙는다.

2. tab키 넣은건 다 날라간다 ㅠ.ㅠ~

winchild의 이미지

허걱! 그럴수도 있군요. ROTC 출신을 모독하려는 뜻은 아니였구요. 마음 상하셨다면 사과를 드립니다.

그 사람의 개인적인 문제겠지요. 얼마나 자존심이 상했는지 어느날은 아얘 회사를 아무 이유도 없이 무단 결근.... 연락도 안되고...

결국은 사표쓰고 나갔습니다.

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

winchild의 이미지

이렇게 쉽게 짤넘 같았으면 printf() 를 이용하지 않고ftoa() 를 만들겠다구 덤비겠습니까? 그거 아세여? 남의 프로그램 잘갖다 쓰는넘이 자기 프로그램도 잘짠다구요. 왜냐구요? 남의 프로그램 가져다가도 잘 이해 해서 쓴다는거 아닙니까? 이런 사람은 정말로 짜야할 필요한 프로그램이 생겼을때는 그동안의 남의 프로그램 컨닝한 실력으로 더 잘 짜겠지요?

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

익명 사용자의 이미지

국내 모 기업의 지점관리 프로그램을 짤땝니다.
정말 그런 사람 다시 만나기 쉽지 않겠지만,
사장이라는 사람이 예전에 어떤 건설회사 전산실장을 했답니다.
또 그 전에는 외국계 편의점 전산실장을 했다고 하더군요.
저더러 그 프로젝트 진행하라고 하면서 담당자는 자기가 다 만났고 업무분석도 끝났고, DB Structure까지 나왔다면서 갈 필요도 없고 바로 프로그램 짜라고 하더군요.
(지금 생각 해 보면 이런 황당한 프로젝트를 제가 왜 했는지...)
그래서 두어시간 사장이 준 서류를 보고 DB Structure를 보니까 조금 불안 해 졌습니다.
그래서 다시 물었습니다.
"이게 제가 다시 만들어도 되겠습니까?"
그러자 사장 왈...
"왜그래? 그냥 그걸로 해."
어쩔수 없이 열심히 짰죠...
그래서 90%정도 됐다고 생각하고 나머지 기간은 업체에 들어가서 마무리 하기로 했습니다.
그래서 Computer랑 바리바리 싸가지고 들어갔죠.
그리곤 그쪽에서 찍어달라는 report form들을 받았는데...
"악~"소리 밖에는 나오지 않더군요.
찍어주려고 해도 찍어줄 필드가 대부분 없더군요.(^^;;)
며칠을 머릴 싸매고 끙끙대면서 같이 들어간 직원이랑 작업하다가 결국은
'미래가 보이지 않는다...' 라는 생각에 둘 다 사직서를 냈습니다.
사직서를 낼 당시에도 그 회사에 너무 미안한 마음이 들더군요.
지금까지도 그 미안한 마음은 계속이랍니다.

익명 사용자의 이미지

몇일 지난뒤.. 코드를 보고 있는데

분명 주석에는 내 이름이 있는데. (팀작업시)

이걸 내가 만들었었나 ?

전혀 기억이 나지 않을때..

이게 무슨 코드지 ?

황당....... ㅋㅋㅋ

익명 사용자의 이미지

전 이런 경우 많았어요..

어떤 로직을 만들기 위해 몇시간을 투자하며 테스트 하다가.. 중간에 삽입된 함수 하나를 보고.. 이게 뭐지? 라며 다시 그 함수를 분석하다보니.. 처음에 만들려고 했던 그 로직.. 이미 만들어놓고서도 다시 만들려고 헤매고 있는 ㅜ.ㅡ 아마도 제가 초보라서 그렇겠죠? - -;;;

익명 사용자의 이미지

전 전문 프로그래머는 아니지만

시뮬레이션 관련하여 많이 짜는 편입니다.

윈도우즈에서만 프로그램 하다
처음 유닉스와 리눅스 환경을
이용할때가 생각나는 군요.

윈도우즈용 c에서 짠 프로그램을
유닉스에서 이맥스로 여니
매줄마다 ^M이 다 붙어있는
겁니다.

그때는 이맥스도 커서키 밖에는
몰랐으니....
한줄씩 올라가며 ^D키로 지웠습니다.

ㅠ.ㅠ

익명 사용자의 이미지

저도 좀전에 그렇게 지웠는데....

그거 어떻게 지워요???

초보라서리....

감사합니다...

익명 사용자의 이미지

이거 보실지 모르겠지만... ^^;

# cp /dev/null newfile
# cat org_file >> newfile

또는

# cat > newfile

# ^D
# cat org_file >> newfile

걍... 꽁수로... ^^;

- Ymir -

SHeeP_의 이미지

dos2unix

익명 사용자의 이미지

vi에서
:set ff=dos
:w

익명 사용자의 이미지

vi에서
:1,$s/^M//
단 ^M을 쓰는 방법은 ctrl+v M
이거 tips.kldp.org(?)에 있을 듯 한데요...

익명 사용자의 이미지

:%s/^M//
위에 것이 두글자를 줄여주지요.

익명 사용자의 이미지

심한 경우는 전체 내용일 한 줄로 될 수도 있죠...
그때는 뒤에다 g 옵션을 하나 더 붙이면 되죠..

익명 사용자의 이미지

kltp.kldp.org

익명 사용자의 이미지

이런 황당한... T.T

이 게시판에 글 올릴려고

금방 한 100 라인의 장문을 썼습니다.

쓰다 보니깐 윗줄에 오타가 있더군요..

vi 쓰던 버릇에 ESC 키 누르고 방향키를 위로 올리는 순간

게시판 글쓰기란에 한창 쓰고 있던 글이 다 사라 지는군요.

아음... 그냥 하던 짓 하라는 신이 뜻인듯..

익명 사용자의 이미지

Ctrl+Z 누르면 다시 살아나요..

익명 사용자의 이미지

리눅스에서 메신져 서버 소스를 짜던때의 일이죠..

당시 서버는 다중스래드로 로긴하고 이런저런 짓거리를 하고있었습니다..

근데..이게...틈만 나면 죽어요..

디버그할라고
printf를 해놔도

INThread....하더니..꿈적도 안하고

클라이언트 프로그램에서는 소켓연결 거부 뜨고..-_-;

해서..같이 작업하던분들..

(제가 스레드 담당이였습니다...-_-a)

절라게 욕먹고 매일밤 계속되는 삽질코드...

이리도 해보고 저리도 해보고...결국은 포기하고 안한다고

메신져 때려쳤을때...데이터 스트럭쳐 쪽 구현하시던 분 왈..

미안하다....*p = malloc(+1) 일케 되있더라...-_-;

결국 거기서 메모리 누수가 일어나서....캬아..

그뒤로 서버 잘돌아갑니다..

winchild의 이미지

쓰레드에서 버그생기면 증말 어렵지요.
쓰레드 프로그램이 아마 프로그램중에거 가장 예술적으로 되어야 할 프로그램이 아닌가 싶습니다.

하지만 정말 재미있습니다. 각 프로그램이 충돌하지 않고 흘러가게 하려면 참 별것아니지만 세심한데까지 신경써주어야 하니...

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

winchild의 이미지

몇탄이지? 좀 뒤져보고.... 음...4탄...

처음에 직장생활을 할때 Z-80 어셈블러로 된 패키지를 이용하여 프로그램 개발을 했습니다. 미국에서 개발되어 들어왔던 프로그램이었는데 그중에 입력 form 에디팅 프로그램이 있었습니다.

즉 숫자를 1234567 입력하면 1,234,567 로 만들어 주는 프로그램.
그런데 그 프로그램은 놀랍게도 Z-80 어셈블러 코드로 단 19줄 이었습니다.

그런데 프로젝트를 진행하다 보면 위의 포매팅 방법외에 유저의 요구에 의해서 약간의 변형을 가해야 할 필요가 있었습니다. 그런데 선배들이 만든 프로그램은 예외없이 그런 경우는 우회하여 별도로 작성된 프로그램을 이용하고 있더군요.

선배들에게 물어보았더니 그 19줄의 프로그램을 직접 고쳐서 못하겠다는 것이 었습니다. 근데 그때는 전산인력이 많지 않은때라 회사 선배들이나 상급자들은 전산전공자가 없었습니다.

그래서 자신만만하게 속으로 "무슨~~~ 그런 망발을 ~~~~ 속으로 니들이 비 전공자니깐 그렇지!" 하고는 도전의식을 불태우며 19줄의 어셈블러 프로그램을 분석 했습니다.

근데... 근데....

도저히 분석이 안되더군요. 이해할수 있으신가요? 19줄짜리 어셈블러의 동작방법을 이해하지 못하다니.... 나중에는 도저히 안되서 디버거로 각 레지스터의 값을 확인해 보면서 동작 구조를 이해하고자 했습니다.

결론은 참패.... 도저히 모르겠더군요. 저두 결국은 우회경로를 밟을수 밖에....

나중에 .... 아주 나중에 그이후로 2-3회사를 전전한 다음인 한 10년 후에 알았습니다.... 어떤 프로그램들은 수학적인 공식에 근거하여 작성된 프로그램이 있다는 것을... 그것은 수학공식을 알지 못하면 도저히 파악이 불가능 한거였지요.

그런것을 만들어낸 사람들을 천재라고 인정하지 않을 수 없더군요. 우리가 넘지 못하는 벽이 아닐까 하는 생각도 듭니다.

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

jee1의 이미지

그런... 소스가 있다는 말은 들었지만...
실제론... 아직 본적이 없어여... --;
워낙 실력이 딸려서 못알아 보는 것일수도 있겠지만...
함... 보고싶네요~~ ^^

iron의 이미지

암호학쪽 소스들을 보세요 -.-;;;

익명 사용자의 이미지

그거 말씀하시니깐 생각나는게 있네요.. 아직도 phpschool.com에 tiptech에 있는 글인데

제가 숫자나누기 3451451 -> 3,451,451 을 힘들여서 짠적이 있었어요(PHP로) 애써서

짜서 자신감에 불타서 tiptech에 올려놓았지요.. 그런데 답변이 2개정도 올라오더라구요.

그거 함수 있는 거라고, 어떤분은 메뉴얼까지 첨부하셨더라구요.. 이론 황당한 경우가.

모르면 이렇게 되요.

익명 사용자의 이미지

어젯밤 후배가 프로그램 짜다가 저를 부르며 도와달라더군요.

윈도용인데 프로그램을 종료할때마다 Runtime error가 뜨는것입니다.

sscanf 함수로 문자열로부터 int형 변수에 숫자를 읽어오라면서 그냥 변수를 적었더군요.

& 한글자 쳐주고 돌아왔습니다.

c++,c 문법, 관용적인 루틴들 그런거 하나도 안배우고 그냥 마구잡이로 하는데 미치겠습니다. 정말 똥배짱입니다.

익명 사용자의 이미지

상황1===================================

가끔 vi를 사용하는데.

리눅스에서 명령어 치고 wq; 를 누릅니다..

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

상황2=================================

소스를 telnet으로 copy 할때 ctrl+c 를 누릅니다.

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

상황3=================================

vi 로 편집한후에 ctrl + c 를 누릅니다.

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

익명 사용자의 이미지

윈도 쓰면서 명령 프롬프트 열고 먼저 ls 치는 거나,
리눅스 터미널에서 dir 친다거나..
그런 일은 누구라도 한 번쯤 경험이 있는 거 같더군요.

수우_의 이미지

자바 프로그래밍 때문에..
(리눅스에서 하면 될것을 가끔 하는 게임 때문에 -.-;;..)
도스창을 가끔 띄워서 테스트 하곤 하는데..

그놈의 ls가 몬지.. ls.bat 를 만들어 버렸습니다.
그리고 저 아래 보면 에 의한 자동완성 기능.
넣어버렸구요.

훨씬 편하네요 :)

knight2000_의 이미지

cygwin의 ls.exe 있는 디렉터리를 path 지정했습니다.
ㅡ.ㅡ;
한글이 와장창 깨지기는 하지만... 그런대로 쓸만 하더군요.

익명 사용자의 이미지

핫 오래된 글에 대한 답변이 ^^
cygwin 좋더군요 :)
한글 깨지는 문제라. 그만큼 광범위하게 사용해보지는 못했구요;;
win32 api 프로그래밍 하면서 깔아서 잠깐 썼었는데..;

ncftp 도 있고 도스 프롬프트 띄우는거보다
cygwin shell을 띄우는걸 더 선호하게 되더군요 :)

어쩌다 보니 path 가 꼬여서 지금은 잘 안쓰지만요 :)

익명 사용자의 이미지

모 항공 운임 관리 프로그램을 하고 있는데...

누가 설계해 놓은 DB 설계대로 작업을 하고 있는데...

요구사항이 하나씩 늘어갈 때마다 조인해야 될 테이블이 늘어나고...

거기다가 각 테이블에 primary key도 계속 늘어났는데...

sequence number같은 걸 안 쓰고 계속 primary키로 조인을 하다 보니...

결국은 select를 한번 할려면 이렇게 되더라구요...

select ...........
from a, b, c, d, e, f
where a.a=b.a
and a.b=b.b
and a.c=b.c
and a.d=b.d
and a.e=b.e
and a.f=b.f
and a.g=b.g
and a.h=b.h
and a.i=b.i
and a.j=b.j
and a.k=b.k
and a.a=c.a
and a.b=c.b
and a.c=c.c
and a.d=c.d
and a.e=c.e
and a.f=c.f
and a.g=c.g
and a.h=c.h
and a.i=c.i
and a.j=c.j
and a.k=c.k
and a.a=d.a
and a.b=d.b
and a.c=d.c
and a.d=c.d
and a.e=c.e
and a.f=c.f
and a.g=c.g
and a.h=c.h
and a.i=c.i
and a.j=c.j
and a.k=c.k
and a.a=d.a
and a.b=d.b
and a.c=d.c
and a.d=d.d
and a.e=d.e
and a.f=d.f
and a.g=d.g
and a.h=d.h
and a.i=d.i
and a.j=d.j
and a.k=d.k
and a.a=e.a
and a.b=e.b
and a.c=e.c
and a.d=e.d
and a.e=e.e
and a.f=e.f
and a.g=e.g
and a.h=e.h
and a.i=e.i
and a.j=e.j
and a.k=e.k
and a.a=f.a
and a.b=f.b
and a.c=f.c
and a.d=f.d
and a.e=f.e
and a.f=f.f
and a.g=f.g
and a.h=f.h
and a.i=f.i
and a.j=f.j
and a.k=f.k

........

이거 뭐 하나 select할려면 sql문마다 이 모양이니...

DB설계는 이렇게 하지 맙시다...

오늘은 또 무슨 요구사항이 더 늘어날려나...

익명 사용자의 이미지

DB 뿐만이 아니죵..-_-; 쫌 멋들어지게 고치면 성능이던 코드모양이던 괜찮아 지게 할 수 있는게... 그게 귀찮아서~~~ 또는, 어차피 또 바뀔꺼니까~~~~ 하여..

걍 카피 앤 패이스트로 만들어진 어이엄는 코드를 내비두는게 참 많져..-_-;

익명 사용자의 이미지

오호호호~~

winchild의 이미지

으윽! 이해가 갑니다.
저두 비슷한 상황이라.... 맘같아서는 며칠 밤새서 확 뒤집어 버리고 싶은데
정말 참는다 참아....

우리나라의 소트트웨어 산업이 발전하지 못하는 아마도 가장큰 이유가 아닌가 싶습니다. "갑"맘대로 프로그램 마구 바꾸기... 추가비용 주는것도 아니구...

- 겨울아찌 -

- 겨울아찌 -
winchild@kldp.org

익명 사용자의 이미지

오랜만에 php 코딩을 하면서 변수명 앞에 $ 를 안붙이고 그냥 다 적고 난 다음 parse error 났을 때.. (<- 한참 이유를 못찾아서 몇십분 헤매다가 다른 php 소스보고 깨달음)

이전에는 자바 스크립트 코딩 하다가 변수명에 모조리 $ 를 붙이고선 에러가 나서 어디가 문제인지 못 찾았을 때.. (자바 스크립트는 디버거가 좀 영리하지 못하죠)

역시 웹프로그래밍 버릇 때문에 생긴 $ 붙이기가 가장 헷갈립니다. 파이썬은 또 안붙이니..

익명 사용자의 이미지

숙제로 나온 C 프로그램을 짜서 컴파일할때...

gcc -o work.c work

라고 입력하는 것....
(work.c 컴파일하려할 때...)

이렇게 해서 컴파일 에러(소스파일 못찾는다)나고 work.c도 없어져 버렸습니다.
(그작업 솔라리스에서 했었는데.... 리눅스도 예외아님)

참고로 위와같은 짓은 DJGPP같은 도스용에서는 별 문제가 안되더군여.

익명 사용자의 이미지

mysql_query("select form member where ~~",$database);

익명 사용자의 이미지

delete에서 where절을 빼먹어서
데이타 몽땅 날린기억이........백업도 안해놓고

익명 사용자의 이미지

그날 난 손가락을 짤라버리고 싶었다.

익명 사용자의 이미지

컴파일러의 버그를 발견했을때..

saxboy_의 이미지

다 짜놓고, rm -rf *.c

음... makefile을 애용합시다.

익명 사용자의 이미지

임베디드 시스템 프로그래밍 하던 도중에 정말 황당한 에러를 봤었지요.
프로그램이 어떤 함수를 call하기만 하면
전혀 관련없는 어떤 전역변수 값이 확 변하는 겁니다 -_-;;;;;
혹시 다른 스레드들이 그 값을 바꾸나 싶어서 모든 인터럽트 끄고 수행시켜 봤는데도
마찬가지였죠.
ICE로 어셈블리 명령 하나 하나 단위로 실행시켜 가면서 봐도.. 그렇더군요..-.-;

어떻게 해결했냐구요??
결국 해결 못하고 덮어두고 있습니다 -_-+
저주에 걸린 기분이었습니다..

white23의 이미지

저도 임베디드 프로그램은 아니었지만...
이런 경우가 있었지요.
분명 멀티-프로세스 프로그램이었지만...
서로 관여할 구멍이 없는데...

그래서...
이전 코드는 가슴에 묻고 다시 짰던 기억이...-_-a

어떠한 역경에도 굴하지 않는 '하양 지훈' - It's Now or Never!!!

익명 사용자의 이미지

저는 임베디드 시스템에 대해서는 아무것도 모르지만...

한가지 생각이 나서..^^

call을 하면 함수인자라든지 return addr이라든지 그런것들이

스택에 push될텐데...혹시 스택이 그 전역변수부분까지 내려와서..

그걸 덮어써버린게 아닐까요...?

허접의 생각이었슴당..ㅡㅡ;

익명 사용자의 이미지

그것도 생각해 봤는데..
확인해 보니 아니더군요..
스택은 아직 저 메모리 끝자락에서 놀구 있더라구요..^^;;

익명 사용자의 이미지

if ( a =! as )
...
else
,,,

이 버그를 며칠을 못찾았는데..

옆에 지나가는 친구가 여기가 틀렸네..

우씨~~~

익명 사용자의 이미지

Hello World!
음~!
정말 그것만 짯나봐여? --;;
아님 괴물?

익명 사용자의 이미지

Borland꺼 쓰다가..
마소 비졀 C++로 코딩할때였습니다..

randomize(); 써놓고....
한참.. 생각했습니다.
어째서 에러가 나는건지.

익명 사용자의 이미지

전 도스터보C에서 randomize(); 썼을때 에러가..ㅡ_ㅡ;;
아,글구 윈용씨에서 그래픽헤더 참조했을때도 에러가..ㅡ_ㅡ;;
(바보)

익명 사용자의 이미지

제가 고1시절에 짠 소스..
지금보면 차암....인간이 할짓이 아니구나..싶은..
(여러분은 이러지 마세요)

#include
#include
main()
{
srand(time(NULL));
static int won,wont,gab[6],gabs[6],hab=0,tot,i,j,temp,c;
scanf("%d",&won);
wont=won;
for(i=0;i<6;i++)
{
gab[i]=random(10)+1;
gabs[i]=0;
}
for(i=5;i>=0;i--)
{
if(i==0)
for(j=1;j<=gab[i];j++)
{
hab+=500;
gabs[i]+=1;
if(hab>won)
{
hab-=500,gabs[i]-=1;
break;
}
}
if(i==1)
for(j=1;j<=gab[i];j++)
{
hab+=100;
gabs[i]+=1;
if(hab>won)
{
hab-=100,gabs[i]-=1;
break;
}
}

if(i==2)
for(j=1;j<=gab[i];j++)
{
hab+=50;
gabs[i]+=1;
if(hab>won)
{
hab-=50,gabs[i]-=1;
break;
}
}

if(i==3)
for(j=1;j<=gab[i];j++)
{
hab+=10;
gabs[i]+=1;
if(hab>won)
{
hab-=10,gabs[i]-=1;
break;
}
}
if(i==4)
for(j=1;j<=gab[i];j++)
{
hab+=5;
gabs[i]+=1;
if(hab>won)
{
hab-=5,gabs[i]-=1;
break;
}
}
if(i==5)
for(j=1;j<=gab[i];j++)
{
hab+=1;
gabs[i]+=1;
if((wont%10)<=j)
break;
if(hab>won)
{
hab-=1,gabs[i]-=1;
break;
}
}

if(i==5)
{
if(won%(1*gab[i])==0)
{
gabs[i]=gab[i];
hab=gabs[i]*1;
}
}
if(i==4)
{
if(won%(5*gab[i])==0)
{
gabs[i]=gab[i];
hab=gabs[i]*5;
}
}
if(i==3)
{
if(won%(10*gab[i])==0)
{
gabs[i]=gab[i];
hab=gabs[i]*10;
}
}
if(i==2)
{
if(won%(50*gab[i])==0)
{
gabs[i]=gab[i];
hab=gabs[i]*50;
}
}
if(i==1)
{
if(won%(100*gab[i])==0)
{
gabs[i]=gab[i];
hab=gabs[i]*100;
}
}
if(i==0)
{
if(won%(500*gab[i])==0)
{
gabs[i]=gab[i];
hab=gabs[i]*500;
}
}
}
for(i=5;i>=0;i--)
{
if(hab {
if(i==5)
{
for(j=gabs[i];j {
hab+=1;
gabs[i]+=1;
if(hab>won)
{
hab-=1,gabs[i]-=1;
c=1;
break;
}
if(c==1)
{
c=0;
break;
}
}
}
if(i==4)
{
for(j=gabs[i];j {
hab+=5;
gabs[i]+=1;
if(hab>won)
{
hab-=5,gabs[i]-=1;
c=1;
break;
}
if(c==1)
{
c=0;
break;
}
}
}
if(i==3)
{
for(j=gabs[i];j {
hab+=10;
gabs[i]+=1;
if(hab>won)
{
hab-=10,gabs[i]-=1;
c=1;
break;
}
if(c==1)
{
c=0;
break;
}
}
}
if(i==2)
{
for(j=gabs[i];j {
hab+=50;
gabs[i]+=1;
if(hab>won)
{
hab-=50,gabs[i]-=1;
c=1;
break;
}
if(c==1)
{
c=0;
break;
}
}
}
if(i==1)
{
for(j=gabs[i];j {
hab+=100;
gabs[i]+=1;
if(hab>won)
{
hab-=100,gabs[i]-=1;
c=1;
break;
}
if(c==1)
{
c=0;
break;
}
}
}
if(i==0)
{
for(j=gabs[i];j {
hab+=500;
gabs[i]+=1;
if(hab>won)
{
hab-=500,gabs[i]-=1;
c=1;
break;
}
if(c==1)
{
c=0;
break;
}
}
}
}
}
for(i=0;i<6;i++)
{
printf("%2d ",gab[i]);
tot+=gabs[i];
}
printf("\n%d\n",tot,hab);
for(i=0;i<6;i++)
printf("%2d ",gabs[i]);
}

white23의 이미지

제 후배중에 한 놈은...
loop문 없이 꿋꿋하게 If-Else문 만으로 프로그램을 잤던 놈(女)가 이었습니다.
정말 대단한 놈...

난 함수 절데 사용안하고 몇 백라인을 짰던 기억이 새록새록...^^
이렇게 하니깐 참말로 보기 힘들디다...^^

어떠한 역경에도 굴하지 않는 '하양 지훈' - It's Now or Never!!!

익명 사용자의 이미지

아,참고루 저 위에소스 탭들은..걍 복사하니까 사라지더군요..
저때도 소스이쁘라구 칸수는 열심히 맞췄던기억이..--a;

익명 사용자의 이미지

ㅡ_ㅡ;;
뭐하는소스지? 돌려보니까 에러는 안나는군.................

익명 사용자의 이미지

제 후배 중에 한명이 좀 봐 달라고 준 프로그램에서도 이런 식으로 된 것을 본 적이 있습니다.

그 프로그램은 Win32용이었죠. -_-

(아무리 과를 바꿨다고는 해도. =_=)

익명 사용자의 이미지

Delphi로 작업할때 얘깁니다.
연일 계속되는 야근으로 엄청나게 피곤했었죠.
그래서 졸면서 프로그램을 짜고 있는데,
아마도 전체선택(Ctrl+A)를 하고 졸았나 봅니다.
그리곤 잠시후에 깨서 습관적으로 Ctrl+S를 눌렀습니다.
그리곤 하면을 보니... 온통 8 로 차 있더군요...
즉 '8' 자 위에다 손가락을 올려놓고 졸았다는...
거기다 잠깨서 습관적으로 Ctrl+S를...
물론 source는 온데간데 없어졌다는...

이번에도 역시 졸음과 관련된 얘깁니다.
난 그런지 몰랐었는데, 회식자리에서 과장님이 얘기하시더군요...
"ooo씨 졸려면 손좀 제대로 해 놓고 졸아..."라고...
아시죠?
keyboard buffer가 차면 나는 소리... "뚜뚜뚜..."
^^;;

마지막으로...
회사 Homepage 만들때의 얘깁니다.
새벽 5 시까지 작업을 하고 모두 끝났는데,
개인적으로 htm 확장자를 좋아하지 않아서 html 로 쓰는데
중간에 작업하면서 designer가 만들어 놓은 htm 화일을 지우려고
(또 DOS적 버릇을 못버리고 dos창에서...)
del *.htm [enter] 했습니다.
^^;; 결과는 이 바보같은 윈도가 htm과 html을 같이 취급하더군요.
몽땅 날렸죠...
'이제 자야지...' 했던 저로서는
머리가 쭈뼛서면서 잠은 100리 밖으로 달아나더군요.
그리곤 초인적인 Coding이 이어졌죠...
2시간만에 다시 만들었습니다. ^^;;
저도 그런 능력이 있다는데 놀랐습니다.

익명 사용자의 이미지

Dos 명령어 중에
DEL 해서 날린것 살리는
기능이 있지 않았나요 ??
.....^^

익명 사용자의 이미지

undelete라고 있었는데 윈도로 넘어오면서 없어졌습니다. -_-

익명 사용자의 이미지

또 생각나네요. 음주코딩.

스케쥴에 쫓겼습니다.

그러나 술도 마셔줘야 합니다. 그것도 스케쥴이니까. ㅋㅋ

술 먹고 짜놓고 다음 날 소리치죠.

'야! 여기 누가 짜써~~'

---> 니가 짜써.

음주 코딩은 죄악임다.

그 당시엔 진도 잘 뽑히죠.. ㅋㅋㅋ

익명 사용자의 이미지

보통 많이 하는 삽질..

소스 정리 겸 최적화 겸 소스 다시 뜯어보다가

닭질 코드를 발견합니다.

'벼엉신~ 내가 그 때 술먹고 짰나? 왜 이리 해 놨지?' ..하고.

세련되게 코드를 바꿉니다. 물론 의기양양. 자신만땅. 가슴뿌듯.

물론 보통 대형삽질은 *.bak 도, cvs 도 안 쓸때 발생하죱.

주석처리도 안 하고 과감하게 확~ 들어냈다가는. 허걱.

당연히 실행이 안됩니다.

깨닫습니다.

"내가 그렇게 짠 이유가 있었구나~~ 엉엉"

페이지

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.