달력

4

« 2025/4 »

  • 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
내가 다니는 회사는 제법 규모도 크고, 제조업으로는 알아주는 회사이다. 하지만 내가 느끼는 고민과 동일한 고민을 회사내의 다른 누구가가 할 거라 생각치 않지만, 비슷한 고민들은 하고 있을거라 생각한다.

세상에는 많은 기회들이 있다. 하지만 기회라는 것은 준비된 자들의 몫이었지, 운과 요행으로 얻더라도 이는 얼마 못가서 그 모든것을 준비된 자들에게 빼앗겨 버린다. 이는 순간이고 곧 찰라이다.
하지만, 항상 준비할 수 있는 기회는 있다. 나는 이것을 패러다임의 변화라고 생각을 한다.
새로운 무엇을 기다리며 준비하는 것은 이전에 했던 것들을 그대로 답습해서는 절대로 얻기가 힘들다. 왜냐하면, 남들도 벌써 나와 똑같이 애를 쓰고 노력하고 있기 때문이다.

최근에 우리 사회에 "황제의 귀환"이라고 하며서 각 방송국의 오락프로에 경쟁적으로 섭외하고 있는 개그맨이 있다. 우리에게는 잊혀졌다 돌아온 것처럼 보이지만, 그는 나름 대로 숨어서 내고을 쌓고 있었을 거다. 그가 한 이야기가 생각이 난다.

"이경규씨는 앞으로 콩트가 쇠퇴하고 예능이 주류가 될 거라고 했고 그와 달리 저는 앞으로도 콩트 코미디가 영원히 존재할 거라고 주장했어요. 결과적으로 저는 판단을 잘못한 거고 변화를 따르지 못한 거죠 "


너무나 당연하다고 생각할지 모르지만, 그는 변화라는 실체에 대해서 알았지만, 그 것을 자신의 기회로 삼지 못했기 때문에, 변화이 기회를 놓쳤기 때문에, 그동안의 공백이 있었다고 이야기 하고 있다.

내가 요즘 두려워하는 것은, 이와 같은 맥락에서 이다.
짧게 질문을 하나 던저 보겠다.
요즘 경기가 어렵지만, 나름 선전하고 있는 기업들이 몇개 있다. Googel, Apple 그리고 닌텐도등 몇게의 회사들이 있는데, 이들 회사들이 과거와 같이 미래에도 승승장구하고 나아간다면, 지속적인 성장을 계속한다면, 이는 한국의 삼성과 LG와 같은 기업에 어떠한 영향를 끼칠 것인가? 긍적적으로 도움이 될것인가 아니면, 그렇지 못할 것인가?

이들 회사들은 소프트웨어 회사이다. 하지만 지금은 하드웨어 영역까지 그 영향력을 넓혀가고 있는 중이다. 혹시 Apple는 하드웨어 회사가 아니냐고 할지 모르지만, 그들의 최소한의 인력만을 가지고, 아웃소싱해서 제품을 생산해 내고 있다. 마치 이는 Nike가 제품을 생산하는 구조와 유사하다. 마케팅과 설계 및 제품에 대한 서비스만을 고객들에게 팔고 있는 것이다.
그리고, 이들은 소프트웨어의 강점을 살려서 하드웨어를 만들고 시장에 크게 어필하고 있다.

반면, 한국의 삼성과 LG는 그렇지 못하다. 근본적으로 제조 회사이고 제조업체이다. 이들은 자신들이 만든 제품을 팔기 위해서 소프트웨어를 만들고 있을 뿐이다. 소프트웨어는 한낱 악세서리에 불과하다. 애플과 구글과 마이크로 소프트사가 자신들의 영역을 확장하고 있는데 반하여, 현재의 위치를 지키기 위해서 노럭할 뿐이다.

자 좀더 나가서 생각하면, 소프트웨어 회사들이 하드웨어까지 영역을 확장하는 이유는 과연 무엇일까? 궁긍적으로는 이익을 늘리기 위해서이다. 하지만 단지 물건을 판다는 것이 아니라 서비스를 생산하고 이를 통하여 수익을 창출하려는 것이다. 이는 역시 하드웨어 업체도 동일하고, 서비스를 통해서 이익을 얻기를 바라고 있다.

다만 차이점은 소프트웨어 업체는 그들의 유연한 생각과 패러다임을 유감없이 새로운 서비스를 창출하는데 집중하고 있고, 하드웨어 업체는 기존의 생각의 틀의 변화 없이 지키는데 신경을 쓰고 있는 것이다.

이미 많은 디바이스 또는 가전 제품과 기기들은 Network이 가능하고, 이를 통해서 새로운 서비스틀이 고객들을 즐겁게 해주고 있다. 하지만 기존 틀속에 갖힌 생각으로 절대로 새로운 서비스를 제공할 수 없으며, 결국은 쇠퇴의 길을 걷게 될 것이다.

내가 일하는 회사가 이들 중의 하나가 된다면 굉장히 서글픈 일이다.
소프트웨어든 하드웨어든 새로운 패러다임 안에서는 다 같이 서비스를 제공하기 위한 매개체일 뿐이고, 이익을 창출하는 도구일 뿐이다. 과거 10년 동안 지금과 같이 기술적으로 진일보 했던 적도 없고, 기술적으로 성숙했던 적도 없다. 경제적인 어려움으로 닫쳐버린 지갑을 열수 있는 새로운 서비스를 만든다면, 이보다 더 큰 기회는 없을 거라 생각한다. 하드웨어를 통해서 또는 소프트웨어를 통해서 어떠한 서비스를 제공할 수 있을지가 관건이다. 이는 절대로 하드웨어 마이드로는 이룰수 없다. (반도체와 LCD와 같은 부품은 따로 논하지 않는다.)

구글이 왜 그리 많은 돈을 들여서 Android와 같은 플랫폼을 만들면, Apple과 폐쇄적인 회사가 SDK를 제공하고 자신들에 플랫폼에 Application을 올릴수 있도록 오픈하는지를 생각해 봐야한다.


:
Posted by 행복상자

어떤 사람들은 믿지 않겠지만, Javascript도 Object Oriented Programming을 지원하는 Language이다. 이전에 자바 스크립트가 출현하 지난 10년동안 언어적인 측면과 사용적인 측면에서 많은 변화가 있었지만, 실제로 개발자들은 굉장히 소극적으로 이를 사용했었다. 따라서 별도의 Javascript 함수들을 모은 ".js" 파일을 이용하기도 했지만, 이는 단지 함수들을 재 사용하는 측명에서 였다. 이유는 코드를 고치거나 수정하기 어렵다는 것인데, 자바 스크립트가 가지고 있는 기본적인 속성들을 몰라서 일지도 모른다.
많은 사람들이 Javascript를 다시 보기된 계기는 Google의 Application들이 이를 이용해서 사람들에 자신들의 Application을 제공하기 시작했기 때문이라 생각하는데, 이어서 나온 Yahoo의 YUI도 내게 많은 놀라움을 주었다. 그리고 다른 오픈 소스 라이브러리들 역시 놀라운 정도의 편리함과 쉬운 사용법을 내세우고 개발자들의 쉴 틈(?)을 만들어 주고 있다.

그러나, 남의 것을 사용할 때도, 기본적이고 기초적인 것은 알아야 덜 고생한다.
세상에는 날로 먹을 만한 것이 그리 많지 않다.

오늘은 내가 잘 이해하지 못했던 Javascript의 Scope에 대해 설명할 거다.

자바스크립트는 기본적으로 웹브라우져의 페이지별로 실행된다. 그래서 대부분이 함수를 만들어서 그안에서 지역 변수를 생성하거나, 전역으로 생성해서 사용한다.
일반적으로 사용할때는 별 문제가 없겠지만, Java, C#, C/C++과는 Scope의 영향범위가 다르므로 주의해야 한다.

아래는 셈플 코드인데, 전역으로 foo 변수를 생성했고, 이어서 if 문안에 생성했고, 마지막으로
 function 문 안에서 생성하였다.

위에 주석으로 설명이 다 되어있지만, 다시 설명을 하면
6번째 줄에서 foo변수를 전역으로 선언하고 "test"라는 문자열을 저장하였다. 그리고 나서 12번째 줄에 새로운 foo 변수를 정의하고 "new test"라는 문자열을 저장하였다. 그러나 이는 이전에 생성했던 전경 변수와 동일하다. 다시 말하면, 이는 전역 Scope의 영향 아래에 있다. Java나 C#, C/C++은 전혀 다르므로 혹시 이를 착각하고 사용할 가능성이 많다.
이의 확인은 15번째 줄에서 알수 있다. 이를 실행하면 동일함을 확인할 수 있다.

이어서, 17번째에 함수 test를 만들고 24번째 줄에서 실행하면, 이전에 function test에서 할당한 문자는 function Scope에서 이미 생명주기가 다했음을 알수있다.

그럼다면, 함수안에 if 문에서 변수 foo를 새로 정의한 경우는 어떻게 될까?

한번 실행보면 알겠지만, 역시 if구문 안에 정의한 변수는 주의해야 한다. 자신이 원치 않는 결과를 가져올수 있다.
:
Posted by 행복상자
그 동안 관심은 있었으나, 제대로 마음먹고 해보지 못했던 자바 스크립트를 공부하기 시작한지 오늘로서 1주일이 다 되어 간다. 아니 사실은 5일정도 되었는데, 언어적인 측면에서는 그 동안 내가 익혔던 언어와 많이 다르다는 것을 깨닫고 있는 중이다. 

내가 공부하는 것을 정리하려고 하는데, 오늘은 Javascritp의 데이터 타입을 확인하는 방법에 대해서 간략하게 이야기 하려고 한다.

자바 스크립트에서 Type를 확인하는 방법은 2가지가 있다.
아래의 이에 대한 2가지 소스를 통해서 사용하는 방법에 대해 설명하려고 한다.

    // Check to see if our number is actually a string
    if ( typeof num == "string" )
    // If it is, then parse a number out of it

    num = parseInt( num );
    // Check to see if our array is actually a string

    if ( typeof arr == "string" )
    // If that's the case, make an array, splitting on commas

    arr = arr.split(",");

위의 예제에서는 Javascript에서 string 과 string type의 배열에 대해서,
- String 변수를 값이 저장된 경우는 number type의 변수에 저장하고,
- 만약 string 배열로 저장된 값일  경우는 이를 "," 를 구분자로 해서 배열로 저장한다. 
이 경우는 typeof 연산자를 이용해서 변수의 type을 확인하는 예제이다.
별로 이해하기 어려운 코드가 아니므로, 쉽게 이해할 수 있을 것이다.

두번째 방법은 먼저 아래의 예제를 보면, 이해가 쉡게 될 것이다.
    // Check to see if our number is actually a string
    if ( num.constructor == String )
    // If it is, then parse a number out of it
    num = parseInt( num );
    // Check to see if our string is actually an array
    if ( str.constructor == Array )
    // If that's the case, make a string by joining the array using commas
    str = str.join(',');


위 예제의 내용은 첫번째 예제와 코드의 결과물을 다르지 않다. 다만 여기서는 변수의 "construgtor"를 이용하여 "String"타입의 변수와 "Array"변수의 타입을 비교를 수행한 것이다.

물론 위와 아래의 예제 모두 실제 코드가 경우에, 필요에 따라 적절하게 사용하면 된다. 
아래의 표는 typeofconstructor를 사용이 가능한 Variable 목록들이다.


자바스크립트는 그리 많지 않은 변수들을 가지고 있다.
:
Posted by 행복상자
작년에 진행하던 프로젝트를 마무리하고 나서 틈틈히 공부하는 책이 있다.
사실 웹 개발을 오래하다 보면, 쉽게 간과하기 쉬운 부분이 Javascript와 CSS와 같은 부분이다. 왜냐하면, 요즘에 나오는 HTML Editor 툴과 개발에 사용하는 IDE의 성능이 상당히 향상되어서 양질의 코드를 생산할 수 있기 때문이다.
그러나 요즘에 사용하는 자바스크립트는 이전의 그것과 전혀 다른 모습을 띄고 있다. 한 마디로 스크립트 언어이기에 배우기 쉽고, 인터넷의 웹에서 비슷한 Sample들을 쉽게 가져 올 수 있기 때문에 별로 배울 가치가 없다라고 생각하면 큰 코 다친다.

AJAX라는 기술이 Web 2.0을 대표하는 기술로 이야기 되어진 이후로, Javascript를 좀도 체계적이고, 라이브러리처럼 쓸수 있는 많은 Javascript Framework들이 만들어 졌다. Yahoo의 YUI, Roby on Rails에서 기본적으로 사용할 수 있는 Prototype, 최근에 마이크로 소프트의 ASP.NET을 위해서 Visual Studio에서 지원하는 JQuery 그리고, ExtJS와 같은 상용 프레임워크까지 셀수 없이 많은 새로운 Javascript Framework가 나타나고 있다.

하지만 자바 스크립트라는 언어의 근간을 이해하지 못하면, 좀더 효율적으로 사용하지 못할 거라고 생각 한다. 그렇기 때문에, 공부의 우선순위가 떨어져서 한번을 공부해야지 했던것이 이제야 살펴 볼수 있는 기회를 갖게 되었다.

책을 읽어가면서 내가 느낀것은, 한마디로, 내가 10여년전에 사용하고 이해하던 자바스크립트와는 전혀 다른 세계였다. OO를 적용한 객체지향적인 속성과 재활용을 위한 여러가지 기능과 속성들을 이해해야만 한다.  너무나도 자유롭고 쉬운 문법을 가지고 있지만, 확장과 변경을 위해서는 언어의 특성을 완전히 이해해야만 한다.

위의 보이는 사진속의 책이 내가 최근에 공부하고 있는 책이다.
책은 각 쳅터의 주제에 맞는 쉬운 예제들을 보여주고 있다. 이를 통해서 기본 원리들을 익힐 수 있도록 구성되어 있다. DOM을 통한 Object를 찾고 접근하고 제어하는 방법과 Dynamic HTML의 속성들을 이용하여 접근할 수 있는 Object들의 사용법도 익히면, 책의 내용을 이해할 수 있는 기본적인 소양을 갖추고 있다고 할 수 있다.

책의 내용을 결코 어렵지 않지만, 이전에 알고 있던 자바스크립트에 대한 선입견을 버리지 않는다면 쉽게 이해하기 어려울 것이다.

나와 같이 개발에 참여하고 있는 개발자는 ExtJS를 이용하는데, 큰 어려움을 가지고 개발 작업을 진행했다. 사실 ExtJS를 구매하고 개발에 이용하는 목적은 개발의 효율성과 리소스를 절약하려는 목적이었는데, 이에 대한 효과는 전무하였다.
나름 대로 분석을 해보면, 주어진 컴포넌트는 API 다큐멘트를 찾아보면 알수 있지만, 이의 변형이나 새로운 형태로 변형을 가할 때는 Javascript와 Prototype 라이브러리에 대한 이해가 적었기 때문이다. 그렇기 때문에 다른 컴포넌트를 이용할 때도 기본기는 항상 중요하다.

약 380페이지의 책중에서 현재 110페이지를 읽고, 코드를 짜보고 있다. 책 속에는 개발시 필요한 디버커 툴을 소개해 주고 있는데, 개인적으로는 Firefox의 plug-in인 Firebug를 좋아하고 자주 사용하고 있다. 이외의 다른 툴들은 책의 내용을 참고하면 된다. 그리고 Junit와 유사한 Javascript Unit 테스트 툴들도 소개하고 있다. 아직은 별로 관심 없는 부분이다.




:
Posted by 행복상자