[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 2월 16일 화요일

[Book] 미코노미..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

미코노미 - 6점
김태우 지음/한빛미디어



미코노미는 웹2.0으로 인하여 많은게 달라진 것을 미코노미라는 경제관점으로 해석한 책으로 태우's log의 운영자인신 김태우님이 지은 책이다.

태우님은 풀타임블로거이고 웹에 대해서 오랫동안 관심을 가지고 연구했기 때문에 이데 대한 지식도 상당하고 그런 부분이 책에 잘 나타나있다.

인터넷의 발달로 인하여 프로들보다 더 많은 지식을 가지는 아마추어들이(프로-엠) 나타나기 시작했고 오픈소스가 대기업이 만든 소프트웨어보다 강력한 힘을 발휘하고 타임즈지가 올해의 인물로 "You"를 선정할 정도로 많은 것이 달라졌다.

왜 이렇게 달라졌는지... 어떻게 사용자들이 웹의 주체로 나서게 되었는지 웹의 흐름이라든지 참여하는 사람들의 심리라던지 상당히 분석적으로 얘기하고 있다. 기업이 사용자들과 의사소통을 하려면 어떻게 다가가야 하는지 지금 상황에서 신뢰라는 것이 얼마나 중요한지 잘 설명하고 있다. 전반적으로 태우님이 웹에 대해서 상당히 연구하고 준비했다는 것을 느낄수 있었다.

하지만 내가 약간 거부감이 든것은 오히려 제목에 대한 부분이다. 전체적인 분석과 내용은 정확했지만 그런 것을 너무 미코노리라는 틀에 맞추려고 하니까 오히려 설득력이 떨어지는 느낌이다. 분명 평범한 사람에서 웹2.0의 스타로 거듭난 사람이 없는 것은 아니지만 그걸 미코노미라고 하기에는 아직은 좀 어렵지 않나 하는 생각이 든다. 나는 웹 2.0방식의 흐름을 지지하는 사람이지만 개인이 그 중심이라기 보다는 군중이 중심이라고 생각한다. 그렇기에 모든 개인이 경제의 중심의 역할로 나설 수 있다는 논리는 나에게는 크게 와닿지 않았다.

미코노미라는 제목말고 다른 이름으로 나왔으면 오히려 더 좋지 않았을까 하는 생각이 든다.

[DB]"ORA-01461:can bind a LONG value only for insert into a LONG column" 라는 오류메시지..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

Oracle 디비를 사용하면서 Java(JSP)쪽에서 Insert를 하는 상황에서 테이블에는 LONG타입이 전혀 없을 뿐더러 Varchar2를 사용하고 있는 컬럼에 영문만 넣으면 문제가 없는데 한글을 넣으려고 하면 저런 오류메시지가 나타난다.(바로바로 포스팅 해야되는데 좀 시간이 지나니까 정확한 오라클 버전이 기억안나네. ㅡ..ㅡ)

ORA-01461:can bind a LONG value only for insert into a LONG column

참으로 당황스럽던 오류메시지.... 의미만 보자면 Long타입 컬럼에는 Long값만 넣어라는 건데 LONG을 지정한 컬럼이 있어야 말이지...

이게 머야 하면서 한참 찾았는데 해결책은 의외로 간단했던....

JDBC의 버그문제이다.

Oracle Database 10g Release 2 (10.2.0.1.0) JDBC Drivers  에서 해결이 되었다. 링크는 이 곳!!

위 버전 JDBC의 Read Me파일을 보면 아래와 같은 내용이 나온다.


BUG-4426152
KPRB driver throws ORA-01461 for OraclePreparedStatement.setCharacterStream() of 1MB or more data into database LONG and 4k byte into Varchar2 columns in one statement.
JDBC은 Release 2로 이상으로 교체해 주면 간단히 해결...

[HTML]HTML 4.01 Transitional 문서 템플릿..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/


<!-- HTML 4.01 Transitional Template -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html lang="ko">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Untitled Document</title>

        <link rel="stylesheet" href="" type="text/css" />
        <style type="text/css">
        </style>

        <script type="text/javascript" src=""></script>
        <script type="text/javascript">
        //<![CDATA[
        //]]>
        </script>
    </head>

    <body>
    </body>
</html>

계속 XHTML만 쓰다보니까 HTML 4.01 갑자기 만나니까 영~ 헤매게 되어버려서.... 적어놔야지... ㅎ

[Talk]이건 진정한 여담인데 말이지..

흠.. 어느덧 점심시간..
잠시..

후훗.. 커피를 뽑아왔다.. Black..
요새는 밥을 안먹는 날이면[간헐적 단식.. IF 라고도 하지.. ㅋ] 점심에 커피를 마신다..
물론 밥을 먹고나서도 먹을 때가 있다는건.. 함정 ㅡ;;ㅡ..

무튼 요지는 그게 아니고 말이지..
요새 갑자기 FIFA 온라인 3 에 빠져 있다.. 정확히 말하면..
구정에 울산[처가]에 갔다가 동서와 처남과 게임을 한 후에..
재밌어서 집에서도 설치해서 하는데..

흠.. 상당히 재밌다는 말이지..
근데.. 문제는..ㅋㅋㅋ..
벌써 질려.. ㅡㅡ.. 얼마 안했지만..
아마추어1 Lv 리그와.. 컵우승을 하고 나서인지..
걍 그냥 저냥..

집에서 스트레스 풀기 위함이나.. 먼가를 하고 싶은데 마땅히 할것이 없을 때..
종종 이용해야것다..

하지만 확실한건 재미는 있으니..
다른 사람들도 기회가 된다면, 해보시길..
이 글을 볼 시점이 오면, FIFA 온라인 3가 아닌.. 4.. 5.. 가 나왔을지도..

[HTML]input type="file"에서 찾아보기 버튼 바꾸기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

웹에서 파일을 첨부하려면 <input type="file" />을 사용한다. 자동으로 찾아보기 버튼이 생기고 파일브라우징이 가능하다.

사용자 삽입 이미지


input type=file은 약간의 특징이 있다. 파일을 업로드하는 기능을 가진 특성때문에 다른 input타입과는 다르게 약간의 제약이 있다. 그건 스크립트를 이용해서 제어하는 것을 막고 있는 것인데 그것 때문에 다루기가 좀 쉽지 않다. 하지만 그것보다 문제되는게 저 "찾아보기..."버튼이다. 점점 디자인이 강조되고 있는 가운데 기본적으로 뜨는 찾아보기 버튼은 웹디자이너에게는 걸리적거리는 것 같다.

항상 디자인을 받을 때마다 찾아보기 버튼대신에 이미지버튼으로 된 디자인이 왔었는데 이번에 여러가지 테스트를 해보았다. 결론적으로 말하자면 찾아보기버튼은 바꿀수 없다.(적어도 내 지식 수준에서는...) 물론 이에대한 태클도 있을거라고 생각한다.



가장 쉽게 생각할 수 있는 것이 input type=file을 input type=text와 이미지버튼의 조합으로 대치하는 것이다.

Html

<input type="text" size="30" id="txt" />
<img src="" onclick="document.getElementById('file').click();" />
<input type="file" size="30" id="file" style="display:none;" onchange="document.getElementById('txt').value=this.value;" />

위와같은 모양이다. 인풋파일은 보기에는 인풋텍스트와 버튼의 조합형태이기 때문에 앞에 인풋텍스트를 넣어놓고 그옆에 디자인된 이미지 버튼을 넣은 뒤에 인풋파일은 스타일을 주어서 보이지 않게 하는 것이다. 이미지 버튼을 onclick했을 때 인풋타입의 객체에 click()이벤트를 주는 구조이다. 파일선택하는 창도 아주 잘 뜬다. 인풋파일에 onchange이벤트를 주어서 파일선택해서 값이 들어갈때 인풋텍스트로 값을 복사해서 넣어서 찾아보기버튼을 이미지로 교체한 듯한 효과를 주는 것이다.
실제적으로 인터넷을 찾아보면 찾아보기 버튼 교체에 대한 위의 소스가 엄청 많다. 잘못된 정보의 대표적인 예라고 할 수가 있다. 서버쪽은 제대로 돌려보지도 않고 클라이언트쪽만 테스트 해보고 잘된다고 올려진 소스를 서로 계속 퍼나르고 있는 상황이다. ㅡ..ㅡ
인풋파일은 보안문제상 Read Only이기 때문에 스트립트로 값을 입력하는 것을 허용하지 않는다. 소스상으로는 아주 잘 돌아가는 거서럼 보이지만 막상 submit버튼을 누르면 전송이 되는 것이 아니라 인풋파일의 값이 clear되어 버린다. 스크립트로 실행한 것은 초기화 시켜버리고 다시한번 submit버튼을 눌러야 POST전송이 일어난다.
쉽게 말하면 이구조로는 절대 파일 업로드를 받을 수가 없다.



그래서 다른 방법을 찾기 시작했다.

Html

<input type="text" size="30" id="txt" />
<span style="overflow:hidden; width:61; height:20; background-image:url(/images/button.gif);">
    <input  type='file' id="file" style="width:0; height:20; filter:alpha(opacity=0);" onchange='document.getElementById('txt').value=this.value;'>
</span> 

그래서 찾은 방법이 위의 방법이다. 방법은 앞에서 얘기했던것과 거의 비슷하다. 파일명을 보여줄 인풋텍스트를 하나 보여주고 그 뒤에 span을 둔다. span은 찾아보기 버튼을 대체해 주는 역할을 한다. 크기를 정해주고 배경색으로 버튼 이미지를 지정해 준다. 그리고 그 span안에 인풋파일을 넣어주는데 여기서 스타일로 width를 0px를 주고 alpha값으로 투명도를 0을 준 것이다.

이렇게 하면 인풋파일의 파일명이 나타나는 부분의 width가 0px가 되기 때문에 나타나지 않고 찾아보기 버튼의 크기는 조절할 수가 없기 때문에 앞에 넣은 인풋파일뒤에 바로 찾아보기 버튼이 위치한다. 하지만 투명도가 0이기 때문에 실제 위치하고 있기는 하지만 보이지가 않고 span의 배경인 버튼 이미지가 보이는 구조이다.

하지만 여기에 약간의 문제가 있다. 일단 여기서 중요한 역할인 투명도를 나타내는 alpha값은 IE에서만 유효한 스타일값이다. Firefox에서는 투명도를 -moz-opacity:0; 를 사용해야 하는데 이걸 사용해도 Firefox에서는 IE같은 효과가 나지 않는다. 배경으로 지정된 이미지버튼이 나오지 않는다. 머 이것만으로도 요즘같은 분위기에서는 의미가 없다고 본다. 그리고 눈에 보이는 버튼이 실제버튼이 아니고 실제버튼은 투명하게 있는 버튼이기 때문에 클릭을 하면 실제 버튼보다 작게 점선이 생겨서 보기에 별로이다. 또한 저 소스에서는 width가 61로 설정이 되어있는데 브라우저마다 다른지는 모르겠지만 IE7에서는 찾아보기 버튼이 103px이기 때문에 이미지버튼도 103에 맞추어 져야 크기에 맞출수 있을것 같다.

앞의 방법보다는 좀 낫긴 하지만 이 방법에도 확실히 문제가 있다.


하지만 이런 방식으로 실제 구현해서 사용하려고 하면 더 큰 문제에 부딪히게 된다. 인풋파일의 경우 파일을 선택했다가 올리기가 싫어지면 그냥 지워주면 되는데 여기서는 편법을 써서 인풋텍스트를 눈앞에 보여주었기 때문에 지워도 인풋텍스트만 지워질뿐 실제 인풋파일의 내용이 지워진것이 아니다. 결국은 아예 한번 선택하면 지우지 못하도록 막아주던가(이렇게 할수는 있지만 기존의 사용자경험을 깨버린다고 생각하기에 별로 하고싶지 않았다.) 인풋텍스트의 값을 지우면 인풋파일의 값도 지워줘야 한다. 

그럴려면 천상 스크립트로 값을 지워져야 하는데 보안문제 때문에 인풋파일은 스크립트가 값을 바꿔버리는 것을 허용하지 않는다. 다른거에 하던 식으로

document.getElementById("file").value = "";

는 아예 먹지도 않는다.  대신에...

Js

document.getElementById("file").select();
//document.execCommand('Delete');   
document.selection.clear();

위와 같은 자바스크립트 코드를 이용하면 해당 인풋파일의 값을 지워줄 수 있다. 2번줄에 주석처리한 부분은 3번줄 대신 2번줄을 사용해도 된다. 둘줄 하나로 하면 된다. 물론 이 소스

(어찌된 일인지 글을 여기까지만 작성된채 공개됐다. 그럴리가 없는데 약간의 문제가 있었던듯.. 기억을 더듬어 글을 마무리 한다. 2008.7.17)도 돌아가지 않는다. 위에 말한대로 보안문제 때문에 submit()할 때 문제가 생긴다.

인터넷을 찾아보다 보면 CSS를 이용해서 수십줄로 바꾸는 것도 있긴 한데 해보진 않았다. 버튼 하나 바꿀려고 여러문제는 가지게 되거나 아니면 수십줄의 코드를 넣는게 과연 의미가 있을까 하는 생각이 든다.

차라리 그 노력이면 요즘 게시판 등에서 많이 하는 추세대로 플래시 컴포넌트를 이용해서 바로바로 파일을 올릴수 있게 만드는 것이 훨씬 좋은 선택이라고 생각된다. 찾아보기 버튼은 왠만하면 그냥 쓰자.

[JAVA]숫자타입(Integer, Long 등)을 String으로 변환하기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

별것 아니라고 생각하고 있었는데 왠걸 갑자기 하려니 은근히 해매게 되더라는;;;;

숫자타입을 String으로 바꾸려는데 당연하다고 생각했던 toString()으로는 숫자타입을 스트링으로 바꾸어 줄 수가 없었다.

Java

int temp = 1;
String str = temp.toString();

이건 "Cannot invoke toString() on the primitive the type int"라는 에러가 난다. 당연하다고 생각한 게 안되니까 순간 당황....



머 쉽게 해결하려면

Java

int temp = 1;
String str = "" + temp;

간단히는 이렇게 해결하면 된다. 공백 스트링과 이어붙혀서 스트링으로 만들어주면 된다. 하지만 먼가 세련(?)되지 못한 느낌? 편법같은 느낌? 찾아보니 있었다.




Java

int temp = 1;
String str = String.valueOf(temp);


Java

int temp = 1;
String str = Integer.toString(temp);

위 2가지 방법이 모두 사용가능하다. 앞에 얘기한 ""과 이어붙히는 것과 퍼포먼스의 차이가 있는지는 모르겠지만 보기에는 좀더 명시적이라고 할까나... 내가 느끼기엔 더 세련된 방법이다. 2가지 방법 모두 사용가능하고 Logn타입도 동일하게 사용이 가능하다.

My Comment..
하아.. 이 글을 갖고 오다보니.. 옛날 생각이 나는구나..
옛날에.. 형변환을 못해서.. 죽을 똥 싸다가.. 지금이야 naver 누님에게..
물어보지만, 과거에는 무엇을 찾아야 될지.. 무엇이 문제인지 조차도 모를 시절..
그 때 당시.. 여성 차장님에게 개발을 배울[?] 시점이라고 해야되나..
무튼 많은 것을 여쭤보고.. 함께 하던 시간.. 이 많을 때인데..
여쭤보니 알려주셨당.. "이것은 형변환을 해야되.." 라면서 해결 했던 기억이..

지금 생각하면 참으로 우습지만.. 내가 봐도 웃기긴 하니까 말이쥐..
어찌보면.. 저런 소소한 것들이 쌓이고 쌓여서.. 개발자라는 이름에 가까워지는..
과정이것지.. 근데 형 블로그를 보면.. 난 멀고도 멀었다능.. ㅠㅜ..

우선 처음에 이 블로그를 개설 할 때 의도처럼..
엄청난 무엇인가를 하기에 앞서서.. 소소한것을 한 번 더 생각하고 정리하고..
나의 사고방식[?].. 마인드[?].. 를 천천히 개선해보자규..

[DB]MS-SQL Server 인스턴스(Instance) 사용시 원격 접속하기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

이거 해결하느라고 원래 할려고 했던 일도 거의 못하고 죽는 줄 알았다.

MS-SQL에서 인스턴스를 사용하면(셋팅되어 있는 MS-SQL 서버였기 때문에 인스턴스 사용에 대한 부분은 잘 모르겠다. 여기선 접속만...) MS-SQL서버의 주소에 인스턴스 명이 붙는다. 즉,

ServerDomain\InstanceName

같은 형식이 된다.  ServerDomain같은 경우 도메인이 될 수도 있고 아이피가 될수도 있다. 인스턴스 이름은 정해준 이름으로 나오고.... 완벽히 파악은 못했지만 같은 네트워크 안에서는 이 주소만으로도 EM(Enterprise Manager)나 프로그램상의 코드로 붙을 수 있는데 네트워크 밖으로 나가면 그렇게 되지 않는다. 아마 네트워크내에서는 바로 연결이 가능하지만 외부망에서는 TCP/IP 접속상에 약간 다른 부분이 있는 듯 하다. (2000에서도 그런지는 잘 모르겠지만 2005서버에서는 TCP/IP로 붙을 수 있게 열어도 주어야 하고 원격허용여부도 설정해 주어야 원격접속자체가 가능하다.)

내부에서 잘 사용하고 있던 것을 네트워크밖으로 나가니까 접속을 할 수가 없었다. 네트워크나 서버 이것저것 다 살표보았지만 전혀 되지 않았는데 원격데스크탑등은 접속이 가능했기 때문에 서버위치까지는 찾아가는데 SQL Server에 접속을 하지 못하는 것으로 보였다.

그러다가 이게 인스턴스를 사용해서 주소가 단순 도메인이 아니라 도메인\인스턴스 형식이 되어서 비롯된 문제라는 것을 알게 되었다. 내가 겪은 환경에서는 인스턴스가 한개뿐이지만 인스턴스는 여러개를 만든다는 것이 전제되기 때문에 인스턴스마다 다른 포트가 할당된다. 그래서 접속을 할때 명시적으로 해당 인스턴스의 포트를 지정해 주어야 접속이 가능한 것으로 보인다.(왜 이름으로는 못찾는거야.. ㅡ..ㅡ)

커넥션 스트링의 정확한 규칙은 아래와 같다.

<servername>[\<instancename>],<port>
<ipaddress>[\<instancename>],<port>

ex) 123.123.123.123\mydb,1036


위의 2가지 형태이다. 위에서 []안에 있는 인스턴스이름은 생략가능하다는 표시이다. 주소뒤에 포트번호를 콤마(,)로 이어붙혀준다. 내 경우에는 1036이었다. 항상 느끼는 거지만 역시 뭔거 어려운 문제다 싶으면 해외사이트들을 검색해야 한다. 내가 참고한 블로그

서버포트를 확인하려면...

사용자 삽입 이미지

[Microsoft SQL Server]안에 들어가면 "서버 네트워크 유틸리티"와 "클라이언트 네트워크 유틸리티"라는 것이 있다. 서버 네트워크 유틸리티는 PC에 대한 서버에 대한 설정이고 클라이언트 네트워크 유틸리티는 지금 PC에서 다른 서버로 접속을 시도할 때의 설정에 관한 부분이다.

서버 네트워크 유틸리티에 들어가 보자.

사용자 삽입 이미지

(여기서 원격접속 자체가 가능하려면 명명된 파이프와 TCP/IP가 사용할 수 있는 프로토콜 측에 있어야 한다.)
TCP/IP를 선택하고 속성을 보면

사용자 삽입 이미지

해당 인스턴스의 포트번호가 나온다.

1433은 MS-SQL의 기본포트이기 때문에 달리 설정을 해주지 않으면 1433으로 접속을 시도한다. 즉 커넥션스트링을 적어줄 때 포트번호를 명시적으로 적어주지 않으면 1433으로 접속을 시도한다는 얘기이다. 그래서 MS-SQL의 인스턴스의 포트가 1433이 아니라면 명시적으로 포트번호를 적어주어야 한다.

역시 셋팅은 너무 머리아퍼.. ㅡ..ㅡ

[EP]MS REMIX 08 참가 후기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

Microsoft에서 주최하는 REMIX 08 행사에 갔다가 왔다. REMIX라는 행사는 작년정도에 처음 내가 알게 되었는데 3월정도에 미국에서 MIX라는 이름으로 하는 행사를 다른 나라들에서는 REMIX라는 이름으로 각국에 맞게 다시 개최를 한다. 쉽게 말하면 MS의 신기술 발표회라고 해야할까나.... 어쨌든 이번 행사의 주된 관점은 UX, RIA의 신기술인 Silverlight와 WPF 였다.

좀 바쁜 시즌이라 눈치를 보고 있었는데 강력하게(?) 가고픈 마음을 표현하고 개발업무를 완젼히 중단(?)하고 보러 갔다가 왔다.



오전에는 키노트가 다양하게 진행되고 오후에는 실제 기술에 대한 논의가 진행되는 방식으로 진행이 되었다. 물론 오전에도 다양한 시연을 보였다. 느낌은 좀 해외에서 하는 컨퍼런스 같은 느낌이랄까... 동영상 다운까지 받아서 보는 유명한 키노트 같은 시간은 아니었지만 키노트도 괜찮았고 토크쇼형식으로 여러가지 주제에 대해서 다양한 실무기술자들과 함께 여러 얘기를 나누는 것은 인상적이었다. 재미도 있었고....

UX에 대한 PPT

두번째 키노트 시간에 MS의 Forest Key가 Software as UX라는 제목으로 진행하던 내용중의 PPT.... UX가 이젠 이런 기술 발표회의 모든 중심이 되어버렸다. 어떻게 하는 것이 진정한 UX인가 하는 것은 정말이지 어려운 일인것 같다.


이번 컨퍼런스에서 무척 인상적인 것중 하나가 Innotive의 CCTV 프로그램이다. 쉽게 말하면 관리센터에서 특정 건물의 CCTV를 감시하는 시스템을 UX를 적용해서 WPF로 새롭게 구현한 것이다. 첫번째 사진처럼 수많은 CCTV를 모자이크형식으로(약간 난잡해 보이기도 하지만) 보여주면서 딥줌같은 스타일로 자연스럽게 원하는 CCTV를 맘대로 확대/축소를 할 수 있어서 한꺼번에 많은 CCTV를 보는데도 특정 CCTV를 자세히 보는데도 상당한 편리함을 제공하고 있다.

이 외에도 두번째 사진처럼 각 CCTV를 3D형태로 실제 건물에 표시해서 어느 위치에 있는 CCTV인지를 쉽게 파악해서 관리할 수 있도록 했다. 사진은 못찍었지만 이것 외에도 평면도에 표시해서 CCTV를 직관적으로 표시할 수 도 있게 하였다.

이게 상당히 인상적이었던 이유는 RIA, UX하면 화려한 효과를 많이 줄 수 있기 때문에 대게 화려함때문에 중요한 것을 놓치는 경우를 많이 보았는데 이 CCTV 프로그램의 느낌은 RIA기술을 RIA답게 구현했다는 느낌이 들었다. RIA의 본질을 제대로 꿰뚫어서 정말 이전에는 할 수 없었던 Rich한 어플리케이션이라는 느낌이었다. 예전에 플래시등에서 무한확대같은 영상들이 많이 있었는데 평면도에 CCTV를 표시한 것을 무한 축소해서 REMIX약도와 버츄얼어스의 영상과도 연결하는 재치까지 보여준 것이 정말 인상적이었다.(나두 나중에 써먹어야지.. ㅋ)

사용자 삽입 이미지

키노트 후 토크쇼 시간에 나왔던 싸이월드 사진첩에 추가될 실버라이트로 구성된 테마기능. 사진첩에 있는 사진중 특정 주제별로 모아서 인터랙티브한 인터페이스로 제공하는 기능이었다.(정확히 언제 오픈인지는 잘...) 미니홈피에 저런 기능이 들어가 있으니까 약간은 어색하기도 하는데 홈투등 여러가지 시도가 실패한 상황에서(난 이쪽으로 흘러가길 바랬었지만....) 기존 미니홈피에 신 기술들을 넣으려는 방향으로 바뀐것 같은데 괜찮아 보였다.

사용자 삽입 이미지

사진이 잘 안나왔지만 실버라이트쪽에서는 내가 제일 호감을 가지고 있는 휴즈플로우의 Pigmap이라는 지도기반의 SNS이다. REMIX 행사 몇일전에 실버라이트2 베타2가 나왔기 때문에 지금 서비스에는 약간 문제가 있는 듯 하다. 버츄얼어스를 이용하고 Yahoo!에서 날씨를 가져오고 Flicker에서 사진을 가져와서 지도위에 표시해주고 지도상에 인터랙티브하게 이동경로등을 표시하는 등 아직 준비중인 서비스 이지만 상당히 인상적이었다.

블로그에 올라온 글도 연결 할 수 있고 글 연결을 쉽게 할 수 있도록 블로그에 달수 있는 플러그인(?)도 제공 하는 것을 보면 상당히 고심한 흔적이 느껴진다. 아~ 멋지다. (티셔츠 고마워요~ ㅠ..ㅠ)



많은 것들은 이미 본것들도 있어서 "오~~~"하면서 볼 수 있는 건 많지 않았지만 RIA에 대해서 좀 생각해 볼 수 있는 시간이었다. 과연 RIA란 무엇인가? 슝슝 돌면서 날라다니는 것 이상 뭔가 다른 부분에 이전에 못하던 것에 초점을 가져야 한다는 생각....


오후 세션들은 대부분 실제 기술에 대한 부분이었고 상당부분이 라이브코딩형태로 진행이 되었다. 어도비 쪽에서도 그렇듯이 RIA에서는 항상 얘기하는게 개발자와 디자이너의 협업인데 그럴게 강조하는 만큼 쉽지 않은 일이라고 생각한다. 개발자야 아무래도 관심분야니 좀 다가가기 쉽지만 디자이너 쪽에서 얼마나 다가오는지가 아무래도 큰 이슈라고 생각한다. 그리고 실버라이트쪽에서는 딱 중간에 있다고 할 수 있는 Expression Blend툴을 개발자와 디자이너중 누가 할 것이냐에 대한 고민은 계속 있는 것 같다.

훈스닷넷의 박경훈 님은 UCCLight라는 실버라이트 기반의 오픈소스 프로젝트(동영상 업로드, 인코딩, 화면캡쳐, 자막입력 등)를 들고 나오셔서 스트리밍 서비스에 대해서 다양한 경험을 토대로 한 많은 부분을 전달해 주었다. 지금 베타2로 포팅중이어서 그 후에 소스 오픈을 한다고 하셨는데 미디어에 대한 부분은 겪어 보기가 좀 쉽지 않아서 개인적으로 기대가 되고 설명만으로도 많은 걸 얻을 수 있었다.


기대와 좀 달랐던 부분도 있었지만 괜찮았던 컨퍼런스..(역시 무료행사가 훨 낫다니깐.. ㅋ) 보면서 계속 들던 생각.... 아~ 저런거 만들면 진짜 재밌겠다... 하는 생각들... 작년에는 세미나나 컨퍼런스에 가면 뭔가 배울라고 정보 습득하느라고 정신없었는데 요즘은 약간 지식수준이 늘어서 그런이 이런걸 가면 나올때쯤 자괴감이 부럽다.

물론 그런 부분에서 상당히 앞서 있는 업체들이기에 나오겠지만 우리회사의 현실과 그들이 얘기하는 상황이 오버랩 되면서 오는 부러움과 약간의 기운빠짐 같은 기분? 솔직히 하나부터 열까지 부럽다고 할까나? 저런걸 진행하게 해주는 회사나, 팀장이나, 할수 있는 추진력이나, 새 기술을 스터디 그룹으로 해서 실제 프로젝트까지 진행하는 능력이나 장기적으로 바라보고 준비하는 안목이나 모든 것이 다 부러웠다. 머 현실불평하고 앉아있는다고 머 되는건 아니지만... 내가 모르는 세계가 끝도 없구나..가 결론이나 마찬가지다. 쉴틈도 없네.. ㅋ


이젠 진짜 웹이 많이 재미있어 지겠어.. ㅎㅎㅎ

[Book] Beginning Java 2 SDK 1.4 Edition..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

Beginning Java 2 SDK 1.4 Edition - 8점
Ivor Horton 지음, 자바유저스넷 옮김/정보문화사


나는 기본럭으로 흔히 빨간책이라고 부르는 WROX의 책을 좋아하는 편이다. 이런 취향은 내가 무작정 따라하기 식의 책보다는 레퍼런스타입의 책을 더 좋아하기 때문인데 솔직히 WROX책중에 다 본 것은 이 책이 유일하다.(최근에는 그냥 실전위주의 책들이 더 나에게 맞지 않나 하는 생각도...)

난 책을 좀 빨리 보려고 하는 편이고 책을 읽으면서는 왠만해서는 코딩을 하지 않는다. 코딩하면서 보는게 제일 좋겠지만 그렇게 보기 시작하면 다 보기도 전에 지쳐서 책을 접어버리기 때문에 그렇기 보다는 내용을 대략적으로 파악하면서 나중에 다시 찾아볼 수 있는 토대를 만드는데 더 주력하고 있다.

꽤 열심히 읽으려고 했지만 일단 분량에서 질릴 뻔했다. 이런 점은 WROX책들은 다 동일할거다. 분량을 보고나면 이책을 다 이해하고도 제대로 못할 수가 있으려나 하는 생각이 드는게 WROX책 같은 레퍼런스 책들의 특징인것 같다. 그럼에도 책 한권으로 왠만한 걸 다 해결할 수 있다는 게 난 좋다.

일단 자바 1.4에 대한 모든 것을 다 다루고 있다고 할 수 있다. Beginning라는 이름 답게 설명도 매우 자세하게 나와 있다. 기본적인 문법부터 클래스에 예외처리, 파일처리까지 대부분의 것들을 예제와 함께 다뤄주고 있다. (그럼에도 난 이책의 대부분을 이해하지 못했다. 3번정도는 봐야 어느정도는 이해할 수 있게 되지 않을까 싶은 생각이다.)

설명 자체는 꽤 자세하게 나와있지만 JAVA라는 하나의 언어라는 것 자체가 분량이 엄청 나기 때문에 다 이해하기에는 무리가 있기는 하다고 본다. 하지만 설명이 자세하게 나와있고 예제가 상당히 충실하기 때문에 필요한 부분을 찾아서 활용해 보는데 큰 도움이 될 수 있다고 본다. 내용을 전체적으로 파악하기 어려운 상황에서 책을 평가한다는 것 자체가 약간은 무리가 있다.

하지만 읽는 내내 설명이나 번역이 나쁘다는 느낌은 한번도 들지 않았기에 책자체는 상당히 충실하다고 본다. 너무 충실해서 약간의 역효과가 난다고 할까? 하지만 레퍼런스 북은 다른 책들과는 약간의 목적성이 다르다. 레퍼런스란 말처럼 간단히 읽고 노력하기 보다는 방대한 분량을 담아서 계속 참고삼아 볼수 있게 하는데 그 목적이 있다고 할 수 있는데 이 책은 그런부분에서 충실하다고 생각된다.

위에 말한대로 예제와 설명이 충실하기 때문에 필요한 부분을 찾아보는데 크게 도움이 될수 있다고 본다. 그리고 각 부분별로 챕터가 잘 나누어져 있기 때문에 참고하는데 큰 도움이 될듯 하다.

다 보는데 좀 힘들긴 했지만 괜찮다고 생각되는 책...... ㅎㅎㅎ

[JS]Javascript 디버거 사용하기 (IE, Firefox)..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

난 자바스크립트를 상당히 좋아하는 편인데 웹개발자들을 만나다 보면 아직도 자바스크립트를 무시하는 경향을 많이 보게된다. 예전엔 확실히 그런 분위기였고 자바스크립트의 입지가 그랬지만 이젠 달라졌다. 이제 자바스크립트로 왠만한건 다 할 수 있다. 아직도 자바스크립트를 웹개발자면 아무나 할 수 있는 거라고 생각하면 생각을 좀 바꿨으면 좋겠다. 자바스크립트는 그렇게 만만치 않다.

다른 사람들 컴퓨터에서 작업하다가 보면 개발환경 셋팅이 안되어 있어서 아주 간단한 것도 해결하는데 쉽지 않을 때가 많다. 머 환경이야 자기 취향에 따라 선택할 수 있는 거지만 최소한 자바스크립트로 개발하려면 자바스크립트 디버거 정도는 깔려 있어야 하지 않겠나... 그래서 버그도 빨리 빨리 찾고 해결할 것 아닌가.. ㅋ 여기선 Firefox와 IE에서 자바스크립트 디버거를 사용하는 걸 보자.




Firefox



웹개발하면 Firefox를 메인 브라우저로 쓰라는 얘기를 많이 듣는다. 이건 IE보다는 Firefox가 더 웹표준을 잘 지키고 있기 때문이긴 한데 다른 환경들도 아무래도 더 잘 갖추어져 있다. Firefox에서는 Firebug가 제일 유명하다. 영문사이트를 김경민님이 한글로 번역해준 사이트도 있다.

파이어폭스 플러그인이기 때문에 설치는 아주 쉽다. 그냥 파이어폭스에서 인스톨버튼만 눌러주면 된다.

사용자 삽입 이미지

오른쪽 아래에 나온 아이콘을(빨간색으로 네모친) 클릭하면 파이어버그를 열 수 있다. 처음에는 disabled 상태로 되어 있다. 사용하려면 Enable상태로 해 놓아야 한다. 웹서핑하는데 방해되는 게 아니기 때문에 개발하는 PC라면 Enabled상태로 두는게 좋다고 생각한다.

사용자 삽입 이미지

웹페이지의 Javascript 에러가 발생하면 오른쪽 아래에 에러의 객수가 나타나고 이곳을 클릭하면 파이어버그가 열린다.

사용자 삽입 이미지

에러가 난 이유와 에어가 난 위치를 표시해 주어서 쉽게 찾아낼 수 있다. (stsr이 정의되지 않았다네... ㅋ) 위에 보이는 메뉴대로 파이어버그에는 수많은 기능이 있다. DOM트리 추적도 할 수 있고 인클루드 된 CSS나 JS파일의 내용도 볼 수 있고 기능이 엄청나게 많은데(나도 그냥 디버깅 기능 왜에는 거의 쓰지 못하고 있다. ㅡ..ㅡ) 여기선 기능설명이 목적이 아니었기에 그냥 이렇게 쓴다는 것 정도까지만... ㅋㅋㅋ





Internet Explorer



IE에서 자바스크립트를 디버깅 하는건 꽤나 불편한 일이다. 차라리 그냥 파폭띄어서 하는게 낫다는 생각이 들 정도였는데 이것저것 찾다보니 괜찮은게 있었다.

사용자 삽입 이미지
자바스크립트 디버깅을 하려면 먼저 IE의 설정을 해주어야 한다. [도구] - [인터넷 옵션]에 들어가서 고급탭에서 사진에서 표시한 부분을 수정해 주어야 한다.

"모든 스크립트 오류에 관련된 알림 표시"를 체크해준다. 웹브라우저라는게 개발 목적이 아니고 자바스크립트 오류하나로 웹서핑에 방해가 된다는 것은 그 목적하는 바가 아니기 때문에 IE는 기본적으로 스크립트 오류를 적극적으로 알려주지 않고 왼쪽 아래에 노란색으로만 표시해 준다. 하지만 이건 사용자의 입장이고 개발자로서는 당연히 스크립트 오류가 나면 즉시 알아채야 하기 때문에 이걸 체크해 준다. 체크하면 스크립트 오류가 발생하면 alert창이 나타난다.

그리고 "스크립트 디버깅 사용 안함"을 둘다 체크 해제해 준다. 당연히 우리는 스크립트 디버깅을 할 목적이기 때문에....


이런 설정 아래에서 만약 Visual Studio가 깔려있다면 VS의 스크립트 디버거로 연결이 된다. 스크립트 오류가 발생하면 VS를 이용해서 디버깅을 할 건지를 물어보고 디버깅을 하려고 하면 VS가 실행되면서 자바스크립트 디버깅을 할 수 있다.

근데 이게 무척이나 불편하다. 일단 무거운 편에 속하는 Visual Studio가 실행되어야 하고 VS의 디버거가 IE를 붙잡고 있기 때문에 다시 IE로 먼가를 보려면 VS의 디버거를 종료해 주어야 한다. 종료할때 저장할건지 또 물어보고 스크립트 수정하고 다시 이짓을 반복하려면 짜증나서 디버깅 못한다.




IE에서도 Firefox처럼 쉽게 디버깅을 할 수 있는 Companion.JS라는 툴이 있다. MS에서 제공하는 Windows Script Debugger라는 디버깅 환경을 이용해서 IE상에서 편리하게 디버깅할 수 있게 해주는 프로그램이다. MS의 다움로드 센터에서 Windows Script Debugger를 검색해도 되고(MS는 다움로드 링크를 자주 바꾸기 때문에) 그냥 아래 파일을 다운 받아도 된다.


Companion.JS를 사용하기 전에 이걸 무조건 깔아야 한다. 그리고 Companion.JS를 설치한다.

사용자 삽입 이미지

설치가 완료되면 웹페이지의 자바스크립트 오류가 생기면 왼쪽 상단에 오류표시가 나타난다. 이게 좋은 점은 개발도 하지만 웹서핑도 하는데 오류메시지가 얼럿으로 떠버리면 엄청 귀찮은데(생각보다 웹페이지에는 스크립트 오루가 많다.) 저렇게 뜨기 때문에 그냥 웹서핑할때는 무시하고 웹서핑을 계속하면 된다. 개발할때는 error표시를 클릭하면 아래쪽에 Companion.JS 가 뜬다.

사용자 삽입 이미지

오른쪽에 에러난 간 부분이 표시된다. 여기서는 2개의 error가 났기 때문에 2개가 나타난다. 에러가 난 파일과 라인번호가 나타나기 때문에 쉽게 에러가 난 곳을 찾을 수 있다.

사용자 삽입 이미지

에러를 클릭하면 왼쪽 창에 바로 에러가 난 코드를 보여주기 때문에 쉽게 디버깅을 할 수 있다. 솔직히 어디서 난건지만 찾는것 만으로도.. ㅎㅎㅎ 여기서는 안타났지만 호출부가 있는 부분에서는 어디서 호출되고 어디서 에러가 났는지까지 나타난다.



물론 스크립트 디버그라는게 항상 100%정확하지는 않다. 자바스크립트 자체가 좀 러프하기 때문인지도 모르겠다. 하지만 이렇게 도움을 주는 툴은 충분히 사용해 주는게 좋다고 생각하고 나로서는 실제로도 많은 도움이 된다. 일단 무료고.... ㅎㅎㅎㅎ

스크립트도 브라우저의 특성을 많이 타기 때문에 Firefox에서는 나지 않는 에러가 IE에서는 나는 경우도 많기 때문에 2개의 브라우저에 다 디버깅환경을 구축해 놓는 것이 좋다고 생각한다. 기본적인 로직의 부분은 한개만으로도 해결할 수 있지만 브라우저의 특성에 대한 부분은 각 브라우저에서 확인을 해보아야 하기 때문에....

My Comment..
형이 이 글을 작성한 시기를 보면 2008년 06월인데.. 저때부터 저러고 썼다니..
형의 글들을 보면 볼수록 신기하당.. 한편으로는 화도 나기도 한당..
물론 내 잘못이지만.. 그래도 허탈감이라고 해야되나.. 무튼 좀 그러하넹..
훗.. 우선 그런 감정은 좀 넣어두고..

난 주로 IE 를 쓰는데.. 요새 IE11이 나오면서.. 개발도구를 잘 사용하는 듯..
아무래도 편리하다 과거에는 좀 무식하게.. 오류가 의심 되는 부분 주변을..
막 통으로 잘라서 점점 좁혀가고 그랬는데.. [무식하게 배웠다능.. -_-;;]
이제는 그런 짓은 안하니.. 아무래도 삽질 자체는 좀 줄었다..

형 말대로 JS 자체가 러프해서 그런지.. 좀 어렵기도 하면서 어쩔 때는 쉽지만..
대체적으로는 신경쓸게 참 많아서 주의를 더 해야 되는 부분이 많기도 한 듯..

[Book] 실용주의 프로그래머..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

실용주의 프로그래머 - 10점
앤드류 헌트 외 지음, 김창준 외 옮김/인사이트


말로만 듣고 보지는 못했던 "실용주의 프로그래머" 좀 오래 읽기는 했지만 이제야 겨우 읽었다. 원래는 요즘 애자일 애자일 하는 분위기 때문에 인사이트의 애자일시리즈 책을 보려고 구입을 했었는데 실용주의 프로그래머라는 책이 그렇게 좋다고 해서 이책을 먼저 구입해서 보았다.

결론부터 얘기하자면 좋은 선택이었다. 읽고 난 후의 소감은 이책도 애자일적인 분위기에 어느정도 있기는 하다고 생각하지만 개발에 몸담고 있는 사람이라면 누구나 보아야 한다고 생각한다. 책 제목 그대로 내용 자체도 실용적이고 이렇게 명쾌할 수가 없다.

개발자가 반드시 체크하고 지켜야 할 팁을 70가지를 제공 하고 있기 때문에 한마디로 요약하기는 쉽지 않은데 각 챕터마다 그렇게 무겁지도 않고 길지도 않은 글로 핵심을 명쾌하게 찌르고 있다. 약간은 공감안되는 부분도 있었고 내가 지식의 부족으로 이해못하는 부분도 있었지만 전체적으로는 한마디 한마디가 공감이 가는 말뿐이었다. 읽으면서 계속 이건 책이라기 보다는 교과서적인 느낌이 많이 들었다. 읽으면서 내용을 정리하고 실제 개발업무를 할 때 적용할 수 있을지 없을지를 테스트 하면서 해봐야된다는 생각이 읽는 내내 들었다. 결코 한번 읽고 그렇구나 하고 넘어갈 책은 아닌 것이 확실하다.

이 책이 더 좋았던 점은 앤드류 허트와 데이비드 토머스가 제공하는 팁들은 특정 언어나 환경, 기술등에 매이는 것이 아니라 어떤 개발자건 간에 적용을 해서 효과를 볼 수 있다고 느껴졌기 때문이다. 내가 바라고 있는 코더와 프로그래머와 디밸로퍼에서 디밸로퍼로 나아가기 위해서 꼭 필요한 주옥같은 얘기들이 적혀있다.

내용이 워낙 다양하지만 내가 인상이 많이 남은 몇가지 글귀를 인용하는 수준으로 책 내용은 넘어가도록 하겠다.

지식에 대한 투자가 언제나 최고의 이윤을 낸다.   - 벤자민 프랭클린


당신이 가진 생각이 딱 하나밖에 없다면, 그것만큼 위험한 것은 없다.   - 에밀 사르티에 '종교론'



왜 코드가 잘 돌아가지 않게 되었는지 모르는 까닭은, 코드가 처음부터 왜 잘 돌아가는지도 몰랐기 때문이다.



완벽한 소프트웨어


실용주의 프로그래머들은 책임을 회피하지 않는다. 그 대신 도전을 수용하고 자신의 전문적 지식이 널리 알려지는 것을 기뻐한다.



워낙 다양하고 총체적인 내용을 담고 있어서 어디서 부터 어떻게 적용해야 할지 좀 막막한 것은 사실이다. 하지만 실용주의라는 말처럼 그냥 읽고 끝내는 것이 아니라 여기 나오는 팁들을 지속적으로 적용해보고 노력해야 하는 것은 확실하다.  한참동안은 손닿는 곳에 책을 놔두고 수시로 봐야 할 듯 싶다.

[DB]MS SQL Server 2005에서 웹에서 DB접속 되지 않을 때..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

MS SQL Server 2005를 처음 사용해 보았다. 그 이전까지는 MS SQL Server 2000만 쓰다가 회사에서 윈도우를 밀면서 2005로 깔았더니 영~ 적응이 안되고 있는 상태이다. 그냥 비슷하게 될줄 알았는데 이게 왠걸... 내부 디비부분정도가 바뀌었을줄 알았더니 형태가 완전 다르다. EM[엔터프라이즈 매니저]이 없을 때의 그 당혹감이란.... 차차 적응 되겠지만....

계속 쓰던 소스고 틀린데가 없는데 웹페이지 만들어서 DB에 붙으려고 하니까 붙어지지가 않았다. 이건 MS SQL Server 2005가 MS SQL Server 2000과는 설정이 달라서 그런 문제인데 디폴트 상태로는 TCP/IP가 막혀있어서 접속이 되지 않는다.

SQL Server Configuration Manager

[MS SQL Server 2005] - [구성도구] - [SQL Server Configuration Manager]에 들어간다.

사용자 삽입 이미지

MS SQL Server 2005 네트워크 구성에서 원하는 서버를 선택해야 한다. 화면에선 SQLServer를 사용했지만 SQLExpress를 사용한다면 당연히 그에 대한 프로토콜을 설정해 주어야 한다.

기본으로는 TCP/IP가 아니요로 되어 있는데 이것을 예로 바꾸어 준다. 물론 지정된 포트인 1433을 사용하지 않는다면 그에 대한 부분도 Native Client 구성에서 맞추어 주어야 한다.


역시 환경이 바뀌면 여러가지로 피곤해 지는군.....