블로그 이미지
연락처 : mail @ rainlethe.com 나는 날카로움을 잃어버린걸까? 아니면 따뜻함을 얻은걸까? 레인레테


 
 

검색엔진에서 내 블로그 검색에 걸리지 않게 하기.

RL.C omputer | 2010/03/07 20:00 | Posted by 레인레테
상당히 개인적인 내용을 블로그에다가 쓸 경우

검색엔진에서 안찾았으면 하는 내용이 있죠.

그럴때는

스킨편집에 들어가셔서

<head></head> 사이에

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW, NOARCHIVE">

라고 적어주시면 됩니다.

뜻은,

봇. 그러니까 검색엔진에서 내 블로그의 컨텐츠를 검색하는 봇에게

'인덱스(검색 정렬) 하지말기, 링크를 확인해서 긁어가는 것 하지말기, 저장하지 말기'

라는 의미입니다. :)

티스토리나 텍스트큐브의 경우

스킨 편집을 하실 수 있는데요.

티스토리 같은 경우에는

스킨설정 -> HTML/CSS 편집 에서 하시면 되고

텍큐닷컴같은 경우

꾸미기 -> 스킨편집 에서 하시면 됩니다.


그냥 갑자기 생각나서 적어둬요 :)

2010.03.07. By RL.C
저작자 표시 비영리 동일 조건 변경 허락

무료로 쓸 수 있는 데스크탑 프로그램들 정리.

RL.C omputer | 2009/08/03 07:05 | Posted by 레인레테
0. 들어가면서.
다써본것은 아님. 그냥 정보 긁어모으는 중.
써본 분들은 댓글이나 트랙백 남겨주시면 감사하겠습니다.

1. OS
1.1 Ubuntu Linux
전세계에서 가장 잘나가는 무료 리눅스 배포판.
개인적인 설치나 사용 경험은 RL.Linux에 있으니 참고. 계속 업데이트 예정.

1.2. Open Solaris
Safety하기로 유명한 Solaris의 오픈소스 버전.
썬에서 만들었는데 오라클로 넘어갔음. 오라클이 유지보수중.

1.3. 다이나리눅스
한국 배포판. Wine을 비롯, 한국의 실정에 맞게 최적화시킨 배포판.

2. 자기 컴퓨터에 불법 프로그램 깔려있나 체크해보기.
한국 소프트웨어 저작권 협회 에서 SW자가진단 기능 체크.
단 라이센스 유무는 확인 안해줌.


3. 오피스.
오픈오피스.
MicroSoft의 오피스 세트 - 워드, 엑셀, 파워포인트, 액세스를 대체하는 무료 프로그램.
사용법도 거의 동일하고, MS오피스 2003과 호환되므로 사용에 이상 없을 것으로 판단됨.
각각의 이름은 Writer(워드), calc(엑셀),  Impress(파워포인트) , Base(액세스)
이 외에 Draw(그림,순서도 편집), Math(공학수식계산기) 도 포함.

4. 그림뷰어
알씨가 가장 유명하고 개인 사용자에게는 무료이지만, 기업사용자에게는 라이센스 필요.
기업에도 무료인 프로그램은 다씨, ZViewer, ShockView(이지미 편집가능) 등이 있음.
ShockView는 공식 홈페이지를 못찾아서 검색 링크만 걸어둠.


5. 캡쳐.
Snag-It같은 경우 동영상캡쳐까지 가능하나, 쉐어웨어임.
무료 프로그램으로는 오픈캡쳐, 칼무리패스트스톤(외산) 등이 있음

6. 그래픽.
6.1. 비트맵.
Photoshop을 대체할 프로그램으로 가장 유명한 것은 GIMP.
의외로 가벼우며 기능이 플러그인으로 붙는 형태라서 확장성도 높은 편.
꽤나 오래된 오픈소스 프로젝트라서 안정적임.
포토샵에서 할 수 있는 거 다 할 수 있음.
이 외에도
이미지 타입변환, 크롭, 만들기, 수정 모두 가능한 ImageMagicK 도 있음.


6.2. 벡터
워낙 유명한 일러스트레이터 만큼은 아니더라도 꽤나 유용한 프로그램들.
sodipodi , skencil 등이 있음. 간단한 작업에는 충분히 쓸만함.


6.3. Flash
Flash 자체를 개발하는 툴로는 가장 유명한 것이 Flex SDK를 이용한 FlashDevelop.
간단한 설명은 이곳에 써놓았으니 참고.
이 외에 태그를 이용해서 SWF를 만드는 DrawSWF 등이 있음.
DrawSWF에 대해서는 옷장수 님이 정리해 둔 것이 있으니 참고하면 될듯.

6.4. 3D
3D MaxMaya 를 대체할 만한 3d 렌더링 프로그램. Blender


7. 웹브라우져.
윈도우즈를 쓴다면 기본으로 깔려있는 IE를 쓰는 경우가 많겠지만
나처럼 리눅스 사용자는 IE를 못쓴다.
그 외에도 탭브라우징이 편하다거나, 빠르다거나, 검색이 쉽다거나 하는 장점으로
다른 웹브라우져를 쓰는 경우가 많은데,
기능은 대충 비슷하니까 아래에서 골라서 맘에드는거 쓰자.
IE다음으로 점유율이 높은 Mozilla FireFox,
엄청나게 빠른 Opera,
맥의 기본 브라우져 Safari,
구글 야심작 Crhome .. 등 여러가지 있으니 입맛대로 골라쓰면 된다.
참고로 이 글은 FireFox에서 작성중.

8. 압축 프로그램.
가장 많이 쓰이는 알집도 이스트소프트의 다른 제품과 마찬가지로
기업 사용자에게는 유료기 때문에 압박이 있는 기업을 위한 다른 제품들.
빵집 : 양병규씨를 스타로 만든 제품. 알집과 90% 이상 호환됨.
다집 : 일단 홈페이지엔 무료라고 되어있는데 '개인사용자'운운하는것이 불안하기는 함.
7-zip : 리눅스의 tar.gz 형식 말고 zip형식을 쓸때 기본 프로그램. 굉장한 성능과 알고리즘을 자랑함.

여담으로 우리회사에서는 빵집 쓰고 있는데 무척 좋음. ALZ도 풀어냄.

9. 동영상.
뭐 윈도우즈 플래폼이라면 당연히 곰플레이어일테고,
이 외에 이스트소프트의 알쇼등이 있다.
개인적으로 윈도우 머신을 피씨방 같은데서 사용해야 할때는 스타크래프트 중계가 나오는 곰플레이어 선호.
집에서 사용할때는 곰플레이어가 아얘 깔리지도 않으므로
리눅스용 플레이어를 쓴다.
totem, MPlayer , VLC, Xine 등이 있는데,
사람들이 이에 대해서 이야기해 둔 것은 KLDP의 쓰레드에 달려있으므로 참고하면 될듯.
난 그냥 귀찮아서 MPlayer 사용중.
아 물론 위의 Totem, MPlayer, VLC, Xine 등은 리눅스 뿐만 아니라 어디서도 사용 가능하므로
리눅스 전용이라는 생각은 버리자.

10. 음악편집.
믹싱등에서 강세를 보이는 GoldWave를 대체할 프로그램으로
가장 유력한 것은 audacity가 있음. 생긴것도 비슷하고, 쓰는법도 비슷함.
또 다른 것으로는 Sweep이 있음.
이 두개에 대한 참고 문서는 Suse Linux User Group의 한 타래에 있음.

11. 동영상편집
Sony Vegas 를 대체한 만한 프로그램. Virtual Dup이 있다.
이게 이상한게 위키피디아에는 윈도우즈에서만 돌아간다고 되어 있는데,
찾아본 결과 리눅스에서 돌아간다고 한다. 안써봐서 잘은 모르겠음.


12. CD굽기
네로버닝롬 유료 프로그램임.(근데 cd롬 기계사면 보통 다 네로 cd가 딸려나오지 아마..)
여하튼 이것도 불법 사용중이라면 cdburnerXP 를 사용하면 될듯.
기능 좋고, 생긴거 비슷하고, 못하는거 없음.


13. 안티바이러스.
Avast :  3개월동안 체험 사용인데, 3개월 끝나고 나면 지우고 재인스톨 신공 사용 가능. 리눅스용 따로 있음.
Spybot-S&D : 이게 바이러스랑 비슷한 이름이라 헷깔리는데, 이건 스파이웨어 지워주는 프로그램.
v3Lite : 전통의 강자 안철수 연구소의 무료 백신.
알약 : 이스트소프트의 백신 프로그램. 의외로 잘 못잡는다는 소문이 있기는 한데 사용은 가장 편리.

참고문서  : 여기 정리 안된 내용도 많으니 꼭! 참고할 것.
피씨라인 7월호, 피씨사랑 7월호.[ 오프라인 월간잡지.]
공짜 소프트웨어로 사무환경 구축하기. [단행본]
한국 수세 사용자 모임 : 윈도우에 상응하는 리눅스 프로그램. [1][2][3][4]
Draco : 우분투에서 유용한 프로그램들.


덧.
a.> 실은 이것보다 훨씬 데이터는 많은데 정리하기 귀찮음.



2009.08.03. By RL.C



저작자 표시 비영리 동일 조건 변경 허락

Flash Develop 기본적인 설치 사용법.

RL.C omputer | 2009/08/03 05:10 | Posted by 레인레테
개인적으로 나중에 까먹을까봐, 그리고 혹시나 만약에라도 참고 블로그가 없어질까봐 정리해 둠.

EXAM에 무척 잘 나와 있다.

그리고 컴파일 하는 방법이나 SDK 연결 방법에 대해서는

세계의끝과 플래시 원더랜드!

에 무척 잘 나와있으므로 참고해도 됨.

간단하게 요약 정리해 보자면.

1. FlashDevelop을 이용한 무료 개발 환경 구축.
2. FLEX Builder 3 /  Eclipse plugin 를 이용한 유료 개발 환경 구축($699)

개인적으로는 돈이 없었기 때문에(...)1번 선택.

그냥 이클립스에 붙는 무료 플러그인이 있나 찾아봤으나

영어가 짧기도 하고 찾기 귀찮아서 내버려둠.

Flash Develop같은 경우에는 Flex의 Syntax 체크같은것도 다 해주고

컴파일러 연결도 되기 때문에 내가 쓰는데는 불편 없다고 여겨짐.

그리고 난 IDE가 무거운거 별로 안좋아하는 편이라서 더더욱.


순서는 아래와 같다.

I. 설치법.

1. JRE(Java Run Time) 설치.

http://www.java.com/ko/download/

알아서 설치해줌.

2. Flex SDK 설치.
 http://www.adobe.com/products/flex/flexdownloads/

Flex 3.3 SDK -> Adobe Flex 3.3 SDK 항목에서 All Platforms, English | 118MB 아래의

Download Now 클릭하면 자동 다운로드.

그냥 압축파일이니까 적당한 곳에 압축 풀 것.


3. ANT(자동빌드 프레임워크) 세팅.

[내 컴퓨터] -> 오른쪽 마우스 -> [속성] -> [시스템 등록정보]-> [고급] -> [환경변수]

-> [시스템변수] -> 새로만들기

변수이름 : ANT_HOME
변수값 : 압축 푼 폴더\flex_sdk_3\ant

-> 시스템변수 : Path 선택 -> 편집 -> 변수 값(V)에 %ANT_HOME%\bin  추가. 구분자는 ;


4. Flash Player 설치.

http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&Lang=Korean/

동의 및 지금 설치하기 누르면 그냥 최신버전 다운로드 가능.

한국의 사용자들은 대부분 깔려있을 것으로 예상.


5. Flash Player Debugger Version 설치.

http://www.adobe.com/support/flashplayer/downloads.html

각 브라우져에 맞게 설치. 나는 파이어폭스 사용중이라서 for Nescape-compatible browsers 설치했음.

6. FlashDevelop 설치.

http://www.flashdevelop.org/community/viewforum.php?f=11

목록중에 가장 위에 있는 거 다운받아서 설치하면 됨.

II. 간략사용법.

1. 컴파일러 연결.

FlashDevelop은 말그대로 편집기라서 컴파일러가 없다.

따라서 아까 다운로드한 Flex SDK를 연결해 주는 작업이 필요함.

FlashDevelop에서 Tools -> Program Settings(F10) 누르면  세팅화면이 나온다.

좌측에서 AS3Context를 선택 후,

Flex SDK Location 선택. 아까 Flex SDK를 세팅한 폴더를 지정해준다.


2. Output 세팅.
Project- > Properties -> Flash Player 세팅 가능.




덧.
밤에 잠도 안오고 해서 멀티파일 업로드나 만들어볼까 하고 설치중.


2009.08.02. By RL.C





저작자 표시 비영리 동일 조건 변경 허락

프로그래머가 아니어도 프로그래밍 언어를 알아야 할까?

RL.C omputer | 2009/06/02 12:01 | Posted by 레인레테

발아점 : 게임 기획자가 왜 C 언어를?


IT 종사자라면 한번 생각해보세요.

특히 당신이 '기획자' 라면.

제 생각은 다음과 같습니다.

(어디까지나 프로그래머의 입장임)


1. 문법적인 부분.

대답 : '아니오'

이유 :  문법은 결과물을 내기 위한 '형식'일 뿐임. 게다가 이건 언어에 따라 천차만별임.


2. 알고리즘. 혹은 자료구조.

대답 : 알고 있는게 좋다' 

이유 :  얼마나 쉽게 구현이 가능한가 파악이 가능하다. 

특히 프로그래머들이 기초적으로 익히고 있는 알고리즘 몇개.

뭐. 정렬이라던가 하는 것부터 시작해서.. 

리스트나 이진트리같은 기본적인 자료구조같은것들..

은 알고있는게 정신건강에 이로움.

가장 큰 장점으로는

그리고 프로그래머들의 거짓말을 꿰뚫을 수 있음 (웃음) 

은 농담이고

문제푸는 능력이 생김.



3. 컴퓨터의 기본 논리

대답 : '필수' 

이유 : 최소 근간인 부울 대수는 무슨일이 있어도 알고 있는게 좋음.

안그러면 실현 불가능한걸 하게 해달라고 떼를 써서 욕먹는 경우 생김.

부울 논리는 .. 쉽다면 쉽고 어렵다면 끝도 없어서.. 뭐라 말하긴 어렵지만

쉽게 말하면 '문제를 참거짓으로 쪼개나가는 방식' 이므로

이 논리를 따라서 결론을 낼 수 있으면

컴퓨터로 구현 가능하다는 뜻이기 때문에.

여기서 말하는 기본 논리는 '컴퓨터가 판단할 수 있느냐 없느냐'의 문제이지

메모리 할당...등의 컴퓨터 구조를 이야기하는 것이 아님.

즉 '논리'는 필수지만, '구조'가 필수적인 것은 아님.

'구조'를 알면 '효율적'이 될 수는 있지만,

아무리 잘해도 프로그래머들보다 익숙하진 않을테니 이런건 전문가들에게 맞겨두고.


덤으로 이거 잘하면 말싸움에서 이길 확률 높아짐 (-,.-v)


쓴날 2시 26분 덧붙임.
기획자가 프로그래밍을 안다고 해서 상상력이 떨어지게 된다면
그사람은 이미 자질 없다고 판단됨.
프로그래밍이라는 게 , 결국 논리를 세워나가는 작업이기 때문에
논리가 서지 않는 상상력은 실현 불가능한 공상에 불과하다고 생각함.


 



2009.02.06. By RL.C

저작자 표시 비영리 동일 조건 변경 허락

정의와 선언의 차이.

RL.C omputer | 2009/05/08 10:45 | Posted by 레인레테
발아점 : 써니의 生牛步行  : 정의와 선언의 차이

declare. and Define 뭐가 다를까.

내가 덧글

int a; // 선언
a = 3 // 정의
-------------------
interface b { void Action(); } // 선언

class C extend b { pulic void Action(){print "하하" };} // 정의
---------------

뭐 대충 이런건가요? (아닌가;;;)


라고 남겨두자 써니님께서

약간 혼동 하시는 듯 합니다.
위에 geektoo님의 설명을 잘 읽어 보시는 것을 권장합니다.
틈나면 제가 보충 설명을 올려두어야 겠군요.

라고 적어주셨다.

참고삼아 geektoo님의 설명을 적어두면
텍사스 전기톱 살인마 라는 녀석이 있습니다
=======================================
텍사스 전기톱 살인마

선언 :
1.가면쓰고.
2.덩치크고.
3.손에는 전기톱을 들고 있기


정의:
1.큰덩치에, 몸을 왔다갔다하며
2.외부충격에 의해 가면이 벗겨질수있으며
3.손에 든 전기톱에 시동을 걸어 마구잡이로 자르고, 썰고. 찍는다

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

이것이. 선언과 정의의 차이입니다
라고 되어 있다.
 
써니님 글 본문에 '검색'을 추천하시기에 구글에 물어봤다.

그래서 찾은 본문이

① 정의와 선언의 대상은 변수와 함수, 두 가지이다.

② 정의는 '만든다'의 의미를, 선언은 '알린다'의 의미를 지닌다.

③ 정의는 변수나 함수의 특징을 완전하게 지정해 주어야 하지만, 선언은 특성중 필요한 것만 골라서 지정하면 된다.

④ 정의는 저장장소를 메모리에 할당하지만, 선언은 변수나 함수의 특성을 컴파일러에게 알려주기만 한다. 그러므로 정의는 메모리 사용량을 증가시키지만 선언은 메모리 사용량과 전혀 관계없다.

⑤ 정의는 만드는 것이므로 프로그램 전체에 걸쳐 단 한번만 이루어지지만, 선언은 단지 알리는 것이므로 여러번 중복되어도 된다.

⑥ 정의는 선언을 겸할 수 있지만, 그 반대로 선언은 정의를 겸할 수 없다.

또, 자동변수의 경우 정의와 선언은 구별되지 않지만 외부변수나 함수의 경우에는 정의와 선언은 명확히 구별된다.

⑦ 6장에서의 '함수의 원형'은 컴파일러에게 알려주는 것이므로 선언이다.

출처 : C가 있는 홈페이지. 7. 기억부류

혹은
선언은.. 컴파일러에게 어떤 대상의 이름을 알려주는 행위입니다. 영어로는 declaration 입니다.
정의는.. 컴파일러에게 어떤 대상의 실제 내용을 알려주는 행위입니다. 영어로는 definition입니다.

선언과 정의를 구분하는 한가지 기준은 memory address binding의 유무를 기준으로 구분합니다.
즉, 어떤 대상의 이름에 대해 그에 대응하는 메모리 상의 주소가 정해진다면 그것은 정의이며, 그렇지 않고 이름만 알려준다면 그것은 선언입니다.

출처 : 행복한 내일을 위해.


다른 내용으로는
 C++에서의 객체는 정의(존재)에 대한 선언(소유)이다.

출처 : 용자C와 함께

뭐 여전히 모르겠다.

SQL에서는 보통 변수를 선언할 때

declare @counter int; -- 선언
set @counter = 1; -- 세팅. 즉 정의.
select @counter  -- 사용.


이런식으로 선언하고 정의한 후
사용한다.

즉 내가 이해하고 있는 선언과 정의와 사용의 차이는.

선언 :  @counter라는 '변수'의 타입. 즉 무언가를 담기 위한 공간의 '형식'을 '알려준다'.
정의 :  @counter라는 공간에 실제로 값을 주입한다.
사용 :  @counter라는 공간이 실제로 무엇을 가리키고 있는가에 대해서 값을 가져온다.


일단 위에 기술한 써니님께 달아둔 덧글에는 이와 같은 의도로 쓴 것인데

실제로 의도가 전달이 잘 안된 것인지. 아니면 내가 뭔가 잘못 알고 있는 것인지

누군가가 정확하게 알려줄 수 있으면 좋겠다.


써니님께서는 geektoo님의 의견에 동의하시는 걸로 봐서는

두분의 '정의와 선언에 대한 차이에 대한 견해'가 일치하는 것인데

내가 이해한 geektoo님의 댓글은

내공이 부족해서인지는 모르겠지만

정확히 뭔가 와닿지가 않는다.


어떻게 보면 선언은 Property. 즉 특성을 기술하고,
 
정의는 Method. 즉 행동을 기술하는 것 같기도 하고.

다른 측으로 보면 선언은 class. 형식을 기술하고,

정의는 Instance. 즉 실체를 기술하는 것 같기도 하고.

다른 시점으로 보면 선언은 interface, 즉 형식을 기술하고,

정의는 구체화 클래스를 기술하는 것 같기도 하고..
(내가 덧글에 써 둔 짧은 소스는 이 의미로 써둔 것이다.)



위에서 인용한 C가 있는 홈페이지 부분,

혹은 행복한 내일을 위해  부분을 봐도 헷깔리기는 마찬가지인 것이

내가 알기로는 STATIC 타입을 취하는 언어들

Dynamic  타입을 취하는 언어들은 그 바인딩 시점이 전혀 다르고,

(Dynamic 언어들은 거의 대부분 선언과 동시에 정의가 된다.)

Static 타입 언어들이라고 해도 절차형 언어함수형 언어

바인딩 시점이 전혀 다르다.

그러니까 정확히 말하면 '컴파일러가 작동하는 방식'이 전혀 다르다.

바인딩 시점이라는 것이

'언제 값이 메모리에 Allocation. 즉 적제되는가'에 대한 내용이라면

이것의 내가 생각하는 답은 '컴파일러에 따라 다르다'는 것이다.

극단적으로 말하자면,
 
RubyPython에서는 '선언'시에 데이터가 바인딩되지만,

Haskell에서는 Lazy Binding 때문에 '사용'시에 데이터가 바인딩된다.

가장 많이 사용되는 C언어 계열에서는 '정의'시에 데이터가 바인딩된다.

그러니까. 저 '메모리 적재 여부'로 정의와 선언을 구분하는 것은

말이 안된다고 생각한다.


써니님이 항상 강조하시듯이, '좀 더 기본'으로 돌아갈 필요가 있다고 생각하는데,

프로그래머들이 항상 생각하는 방식으로.

이견이 없는 '공리'를 먼저 정의해 두고 시작하고 싶은데

내가 못찾아서이겠지만

'특정 언어나 패러다임에 종속되지 않은 선언, 정의, 사용'에 대한 공리'

를 도저히 못찾겠다.


누구 좀 댓글이나 트랙백으로 도와주실 분 계신가요?

2009.05.08 By RL.C

저작자 표시 비영리 동일 조건 변경 허락

mssql 2005 2008 호환

RL.C omputer | 2009/04/29 22:27 | Posted by 레인레테
뭐 별것은 아니지만

방문자 기록을 살펴보다 보면

의외로 mssql 2008 설치방법이나 호환성 문제로

고생하시는 분들이 많은듯 해서

아주 간략히 포스팅.


하위호환성은 100% 보장됩니다.

즉 2008에서 2005로 만들어진 데이터베이스는 100% 읽힙니다.

당연히 2005에서 2008 DataBase는 못읽습니다.



끝.

2009.05.08 By RL.C
저작자 표시 비영리 동일 조건 변경 허락

c# Stream. CSV파일을 읽어들일 때 한글 깨지는 현상...

RL.C omputer | 2009/04/24 11:34 | Posted by 레인레테

어쩔 수 없습니다;

CSV 파일은 EUC-KR로 파일을 저장하는 반면에

c#에서 스트림을 읽어들이는 방식은 default로 UTF-8을 사용하기 때문에

두 문자의 읽는 형식이 달라져서 생기는 문제라서요.

그냥 인코딩을 맞춰주시는 수밖에;;


뭐 저는 CSV파일을 유니코드 텍스트로 변환한 다음 ,
 
구분자가 아니라 \t 구분자로 읽어들이는 방법 선택했지만

이건 뭐 상황에 따라 다를테니까요.

원본 파일을 변경할 수 없는 상황이라면 프로그램 코드를 고쳐야 할테니.

이럴때는 시간을 기록하다 요기를 참고하셔가지고

텍스트 파일 스트림의 인코딩 방식을 설정해 주심 됩니다. ^^

끝.

2009.04.24 By RL.C

저작자 표시 비영리 동일 조건 변경 허락

프로그래머를 설득하는 방법.

RL.C omputer | 2009/04/23 17:36 | Posted by 레인레테
Bool 논리로 말한다.

이게 뭐냐고?

참 혹은 거짓.

이 둘 중 하나로 말하면 된다.

프로그래머가 하는 일이라는게 뭐라고 생각하는가?

예술? 아름다운 지적활동? 창조행위?

후후훗.

실은 프로그래머는 그냥 '인간 번역기' 다..

사람이 알아들을 수 있는 말을 컴퓨터가 알아들을 수 있는 말로 바꾸는 것.

이게 프로그래머가 하는 일이다.

근데 뭐 다들 알고 있겠지만

컴퓨터가 알아들을 수 있는건 딱 두개밖에 없다.

0, 아니면 1.

이걸 부울 논리로 치환하면 참. 혹은 거짓.

아주 정확하고 반론의 여지가 없는 단 두개의 공리.

프로그래머는 일을 할 때 항상 무의식중에 저 두개의 공리로 생각한다.

그래서 프로그래머는 '명확한 기준' 이 잡혀 있지 않으면

곤란해 하는 거다.

자신이 기계가 알아들을 수 있는 말로  바꿀 수 있는 논리가 안서는 거니까.


프로그래밍의 버그라는게 대부분 어디서 튀어나오나면.

'프로그래머가 미처 논리적으로 생각하지 못해 빼먹어서

이성논리를 부울 논리로 바꾸지 못해서 생겨난 일' 이다.


뭐 쉽게 예를 들어보자면 이런거지.

string[] Foods = Restorant.GetAllFood();

string food = Foods[0];


이 경우에 Food가 반환하는 배열이 빈 배열이라면 food는 a[0]의 값을 참조하지 못해서

멋지게 런타임 에러다.

미처 Foods[0] 이 없을 경우 (false)를 생각하지 못했기 때문에 난 에러라는거다.



이런식으로 빈틈없이 준비를 하고 각종 닥칠만한 상황을 다 예견해서

프로그래머를 설득시키면 , 훗일은 간단하다.

프로그래머는 만족스러운 번역 작업에 들어가는거고.

일을 부탁한 당신은 행복해하고.~


이런일이 허구헌날 비일비재하다 보니, 별별 방법론이 다 나온다.

TDD  , DDD, Design by Contract  니 하는 것들.

그런데 별 게 다 나와도 저것들이 지향하는 바는 매한가지다.

프로그래머가 논리적인 생각을 빼먹거나 할 때 도와주는 것들.


뭐, 컴파일러 최적화니. 옵티마이징이니. 프로파일링이니 하는 건 그 후의 문제고.

결론.
프로그래머를 설득하는 방법은 의외로 간단하다.

반론의 여지 없이 앞뒤가 맞는 말을 준비해 가라. 그럼 끝.



2009.04.23 By RL.C
저작자 표시 비영리 동일 조건 변경 허락

Javascript. onblur와 onFocusOut의 차이.

RL.C omputer | 2009/04/22 11:35 | Posted by 레인레테
onBlur 이벤트는 포커스가 벗어나고 나서 바로 다음 이벤트로 이어질 수 있다.

onFocusOut은 포커스가 벗어나는 시점을 다른곳을 클릭했을 때라고 가정하고

어디를 클릭하든지간에 클릭한 곳의 이벤트는 타지 않는다.

예제를 보면


예제용 텍스트 박스에 onBlur 이벤트를 걸었을 경우에

저장 버튼을 누를 경우 저장 버튼의 이벤트를 타서

'예제용 텍스트 박스'라는 문자열이 저장이 된다.

반면 OnFocusOut 이벤트를 걸었을 경우에는

저장 버튼을 눌러도 버튼이 기능을 하지 않는다.


-- 결론.
위와같은 경우에는 저장 버튼이 작동을 해야 하니까

onBlur 이벤트를 사용하자.


덧붙임.
테스트 환경은 IE 6, IE 7 .


2009.04.29 덧붙임.

정확히 말하면 onBlur는 실행 후에 포커스가 클릭된 곳으로 옮겨진다.

onFocusOut은 원래 포커싱이 되어있던 곳으로 이벤트 포커스가 돌아간다.

onFocusOut은 다시 커서가 되돌아가는 것은 아니지만

이벤트의 진입점이 기존 개체로 돌아가기 때문에 연속 동작이 불가능하다.


2009.04.22 By RL.C
저작자 표시 비영리 동일 조건 변경 허락

라이브러리 - 프레임워크의 노예.

RL.C omputer | 2009/04/15 15:09 | Posted by 레인레테
프로그래밍을 하면 할 수록 느끼는건데

나는 뭔가를 만들어내고 있는 것인가?

아니면 남이 만들어놓은 것을 짜집기하고 있을 뿐인가?

라이브러리에서 제공 안하는 기능을 만들어 쓰는게 아니라

어떻게든 편법을 써서 되기만 하면 된다...라고 만들어낸다.

이래서야 '기본실력'은 별로 안늘고. 라이브러리를 쓰는 꼼수 스킬만 늘어나고 있으니 원...


-- 근데 이런것에 대한 근본적인 해결책 같은건 없나? ;;

2009.04.15 By RL.C
저작자 표시 비영리 동일 조건 변경 허락