개발 언어의 최면 효과. January 1, 2007
Posted by yesjun in Thinking.add a comment
먼저 나는 개발 언어라는게 변수를 설정하고, 흐름을 제어하고, 데이터 구조를 만들고, 알고리즘을 구현하는 등의 기능적인 측면만을 가지고 있을 뿐만 아니라 개발 언어로 인해 프로그래밍 행동에도 큰 영향을 미친다고 생각한다.
예를 들어 Perl로 개발하는 사람은 절차적인 방법으로 프로그래밍 할 것이고 Java로 개발하는 사람은 객체지향적인 방법으로 개발할 것이다.
물론 Java만 쓰면 누구나 다 객체지향적으로 개발 했다고 보긴 어렵지만, Java에서는 객체지향적으로 개발하는 것이 여러모로 유리하기 때문에 개발자가 객체지향 적인 방향으로 개발하도록 행동이 유도된다.
이는 PHP의 경우를 보면 더 확실해 지는데, PHP는 초장기 절차적인 언어에서 객체지향 언어 기능을 추가하여 발표 되었다. 그러나 이러한 객체지향적 기능에도 불구하고 PHP를 이용한 프로그래밍은 객체지향적으로 흘러가지 않았다. 오히려 객제지향적인 PHP로 잘 만든 코드 혹은 라이브러리를 활용하는 과정에서 점차 절차지향적인 코드가 흘러드러와 섞이는 걸 목격했다. 이것은 PHP에서는 절차적인 언어로 개발하는 것이 불리하지 않으므로 절차지향적 개발 행동이 방해받지 않기 때문이다.
메소드 시그너쳐도 마찬 가지이다. ‘Ruby 양, 우아한 드레스에 운동화 신다.’ 글에서도 썼듯이 Named Parameter 는 단순히 인자에 이름을 붙이는 기능만을 하는 것이 아니라, 이로 인해 Named Prameter 적인 메소드를 개발하도록 행동이 유도된다는 것이다. ‘Ruby 양, 우아한 드레스에 운동화 신다.’ 덧글에서 마임님이 말씀해 주셨듯이 Ruby에서도 Named Parameter 를 쓰는 방법이 있다. 하지만 이 방법은 Hash 형 이름 없는 인자를 쓰는 것이지 시그너쳐 자체가 Named Parameter 를 지원 하는 것은 아니다. 때문에 같은 기능은 하지만 (PHP 경우에서처럼) Named Prameter 적인 메소드를 개발하도록 행동이 유도되지는 않을 것이다.
이러한 행동 유도적인 특성이 개발자가 개발언어를 바꾸기 힘들게 하는 것인지도 모르겠다.
또한 같은 이유로 새로운 개발언어를 배우는 것이 새로운 기능을 익히는 것 이상의 가치를 가지는 것 같다.
여러분이 개발언어로 프로그래밍 하는 동안 자신도 모르게 특정한 개발 행동을 하도록 유도 될지 모른다.
마치 조금식 최면에 걸리는 것처럼…
P.S. Named Parameter 방법이 좋은지 아닌지는 아직 확실치 않다. 무었보다 Named Parameter는 은닉을 깨버리는 원인이 된다. 즉 func(a, b, c)로 하던 func(arg1, arg2, arg3)로 하던 인자 순서와 타입만 지키면 됐지만 Named Parameter는 func(titile:, width:, height:) 처럼 메소드 내부에서 사용하는 인자의 이름까지도 노출하게 된다.
Java 6의 Scripting Language Support를 좀더 보자. December 20, 2006
Posted by yesjun in Open Source, Telling.add a comment
스크립트가 실행되는 방식은,
해당 스크립트 엔진을 생성하는 Factory를 ScriptEngineManager 객체에게 요청하고,
Factory에서 해당 스크립트 엔진을 넘겨 받아 사용하는 방식이다.
ScriptEngineManager mgr = new ScriptEngineManager();
engine = mgr.getEngineByName("javascript");
현재 스크립트 매니져가 가지고 있는 엔진전체의 팩토리를 가져올 수도 있다.
List factories = mgr.getEngineFactories();
현재는 Mozilla Rhino 자바스크립트 엔진 밖에 없지만 추후 여러 언어로 추가 될것 같다.
ScriptEngineFactory Info
Script Engine: Mozilla Rhino (1.6 release 2)
Engine Alias: js
Engine Alias: rhino
Engine Alias: JavaScript
Engine Alias: javascript
Engine Alias: ECMAScript
Engine Alias: ecmascript
Language: ECMAScript (1.6)
사용은 마치 JavaScript나 PHP의 eval() 처럼 사용한다.
try {
jsEngine.eval("print('Hello, world!')");
} catch (ScriptException ex) {
ex.printStackTrace();
}
스크립트의 print() 함수는 Rhino 엔진에서 구현된 콘솔 출력 함수이다.
(JavaScript도 PHP나 Ruby 처럼 html에서 뿐만 아니라 다용도로 사용 가능하다)
java.io.Reader 를 사용한 예이다.
ScriptEngineManager engineMgr = new ScriptEngineManager();
ScriptEngine engine = engineMgr.getEngineByName("JavaScript");
InputStream is =
this.getClass().getResourceAsStream("/scripts/F1.js");
try {
Reader reader = new InputStreamReader(is);
engine.eval(reader);
} catch (ScriptException ex) {
ex.printStackTrace();
}
스크립트의 특정 함수를 호출할 수 있다.
jsEngine.eval("function sayHello() {" +
" print('Hello, world!');" +
"}");
Invocable invocableEngine = (Invocable) jsEngine;
invocableEngine.invokeFunction("sayHello");
자바 객체를 스크립트에서 쓸 수 있다.
List namesList = new ArrayList();
namesList.add("Jill");
namesList.add("Bob");
namesList.add("Laureen");
namesList.add("Ed");
jsEngine.put("namesListKey", namesList);
System.out.println("Executing in script environment...");
try {
jsEngine.eval("var x;" +
"var names = namesListKey.toArray();" +
"for(x in names) {" +
" println(names[x]);" +
"}" +
"namesListKey.add(\"Dana\");");
} catch (ScriptException ex) {
ex.printStackTrace();
}
System.out.println("Executing in Java environment...");
for (String name: namesList) {
System.out.println(name);
}
위의 코드 실행 결과는
Executing in script environment...
Jill
Bob
Laureen
Ed
Executing in Java environment...
Jill
Bob
Laureen
Ed
Dana
이상 간단한 소개는 마치고,
Invocable 인터페이스로 객체넘기는 방법과 스크립트에서 Java 패키지 import 하는 방법 등
자세한 내용은 아래 사이트에서 참고하면 된다.
Scripting for the Java Platform
자바에서 다른 스크립트 언어를 지원하다니…
이래서 Open Source (Sun이 완전한 Open Source 계열은 아니지만) 진영이 좋다.
MS도 VBscript가 있으니 한번 해볼만 할텐데…
다만 VBscript는 만든사람과, 예제코드 따라할 때만 사용한다는 소문이 있다.
Java SE 6 정식 릴리즈 되었다. December 20, 2006
Posted by yesjun in Open Source, Telling.add a comment
Java 5의 기능도 제대로 사용 안한것 같은데, 벌써 6가 릴리즈 되다니…
이번에는 2년만의 버전업인데 개발이 상당히 빨랐던 것 같다.
기존 5가 오토박싱과 제네릭과 같은 언어적인 추가가 많이 이루어 졌다면,
이번 6는 성능향상과 웹개발을 위한 추가가 많이 이루어 진것 같다.
추가되는 기능을 간단히 정리하면,
- New Security Features and Enhancements
- Integrated Web Services
- Scripting Language Support (JSR 223)
- Enhanced Management and Serviceability
- Increased Developer Productivity
- Improved User Experience
특히 주목할 내용은 New Security Features and Enhancements 와 Scripting Language Support 인것 같다.
New Security Features and Enhancements를 보면,
GSS/Kerberos 등을 포함한 보안/인증 기능이 기본으로 포함된다.
더이상 보안 라이브러리 가져다 쓸필요도 없고 성능도 최적화 됐다.
Scripting Language Support를 보면,
JavaScript, PHP, Ruby, Phython 등을 자바에서 String 형식이나 java.io.Reader 를 통한 방법으로 사용할 수 있다.
물론 자바객체도 스크립트로 넘겨 직접 사용할 수 있게 해준다.
MS가 내년 Vista를 등에 업고 .NET 3.0 을 보급시키기려는 활발한 움직임에,
Sun도 급하긴 급했나보다.
Sun이 이렇게 빠른 움직임을 보이는 건 처음 봤다.
조립 PC에 Mac OS X 설치하다!!! December 15, 2006
Posted by yesjun in Apple Mac, Doing, Feeling.add a comment
용산에서 Asus 보드 등등으로 조립한, PC에 Mac OS X 10.4.7 Tiger 를 설치했다.
Mac OS X 가 출현 했을 때부터 사용하고 싶어 안달했던 OS 였는데,
금년 부터 Mac 이 Intel CPU를 쓰면서 부터 점점 쉽게 설치할 수 있는 가능성이 보이더니…

결국……
특히 근래 Keynote 프리젠테이션을 보고 감명받아 설치 욕구가 상승하던 중,

몇일 전 Apple 개발자 사이트의 경악할 만한 문구를 보고 참지 못하고 냅다 설치했다.

Xcode 3.0은 여러분이 계속 추구해왔던 성능을 갖추었을 뿐만 아니라 새로운 기술도 적용되었습니다. 따라서 놀라울 정도로 멋지며 더 많은 기능을 갖춘 Mac 응용 프로그램을 더 빨리 만들 수 있습니다. 기능에 촛점이 맞추어진 그래픽 통합개발환경(IDE)을 즐겨보십시오. 디버거(debugger)는 어떻게 작동하는 지 보고 싶어서
일부러(?!@ 덜덜) 에러를 낼 정도로 뛰어납니다. 여기에 여러분의 마무리만 추가하면 고객이 벌린 입을 다물지 못할 만큼 멋진 프로그램이 될 것입니다. 이 모든 것은 여러분과 Xcode 3.0이 이루어 낸 일입니다.
더구나 프로그래밍 시각화 툴이라는 Xray 도 지원한다.

디버깅을 하면서 추가 도움이 필요한 경우에는 Xcode 3.0에 새롭게 포함된 Xray를 사용하십시오. Xray는
GarageBand(?!@ 이건 음악 작곡 프로그램 아닌가)같은 타임라인 편집기에서 인터페이스 큐를 제공하므로 응용 프로그램의 성능을 시각화할 수 있습니다. 이전에는 그 누구도 생각하지 못했던 기능입니다. 여러분의 응용 프로그램에 다른 기능을 추가하면 해당 코드의 분석 결과를 즉시 확인할 수 있습니다. 읽기/쓰기 액션, UI 이벤트, CPU 점유율을 동시에 추적할 수 있으므로 이들의 관계도 쉽게 결정할 수 있습니다.
하지만, 이런건 Mac OS X 다음 버전인 Leopard에서 지원한다는 거(쳇)
요즘 많은 회사(MS나 Apple과 같은 OS 제작 회사는 물론이고)들이 개발의 효율성을 높이기위해 다양한 툴을 출시 하는것 같다.
과연 2007년에 어떤 툴이 이슈가 될지 사뭇 기되된다.
예전에 Mac 이라하면 디자이너 용이라는 느낌이 강했는데, 왜 요즘 개발자들이 Mac을 선호하는 지 약간이나마 알것도 같다.
근데 나는(한국도???) Windows에 심하게 Coupling 되어 있다는 거~
非 MS 개발자가 본 WPF December 11, 2006
Posted by yesjun in MS .NET, Thinking.add a comment
아래 ‘MS WPF 세미나를 다녀와서 느낀점.’ 글에 이어 WPF에 대해 좀더 이야기를 하고자 한다.
WPF 및 .NET Framework 3.0 에대한 내용은 아래 ‘특집기사 Microsoft WPF’를 참조하기 바란다.
일단 WPF 애플리케이션 데모 동영상 (봤어도 다시한번)을 보자.
물론 화면에 나오는 애플리케이션들을 말그대로 MS Expression 제품군에서 드래그&드롭으로 쉽게 만들 수 있는 건 아니다.
디자이너가 필요한건 물론이고, 전문 Presentation Layer(UI라고 할 수도 있으나 WPF는 기존 UI 뿐만 아니라 좀더 깊이 관여해 화면에서 보여지는 모든 부분을 책임지기 때문에 Java Framework에서 주로 사용되는 Presentation Layer 라는 용어를 사용하겠다) 프로그래머(C#이나 VB .NET 을 사용)가 이벤트와 동작을 프로그래밍 해야 한다.
그런데 이러한 판타스틱한 사용자 화면은 이미 오래전 부터 Apple의 Mac OS X 에서 사용되고 있다.
특히 그래픽카드의 3D 성능을 게임 이외의 곳에서 사용한다는 기술은
Mac OS X의 Quartz Extreme 으로 또한 예전에 사용되고 있다.
그러면, WPF는 그냥 MS의 홍보전략으로 치부하고 무시해 버릴 것인가,
혹은 나는 Presentation Layer 와는 관계없으니 그러려니 하고 넘어갈 것인가.
WPF는 .NET의 Server-Client 통신 및 연결을 담당하고 있는 WCF와 밀접하게 관계되어 있다.
물론 다른 전송 프로토콜인 Soap나 REST와 같은 방식을 이용할 수 있으나,
WPF는 WCF를 써야만 제성능을 발휘할 수 있고 쉽게 연동된다.
더구나 MS의 판매 전략 특성상 WPF를 사용하면(MS Expression 제품을 써서) WCF를 비롯한 .NET Framework 전체를 사용해야 편하고,
이러다 보변 대부분의 개발은 VS 2005로 하게되고 버전 및 형상관리는 VS Team Sytem을 쓸 것이고,
DB도 지금 쓰는 Oracle이나 MySQL 보다는 MS SQL을 사용하기 쉽다.
결국 WPF는 Presentation Layer 라고 따로 떨어뜨려 생각하기 보다,
.NET Framework 및 MS 개발 솔루션을 전파시키는 선봉장이라 할 수 있다.
(옮김) 특집기사 Microsoft WPF December 11, 2006
Posted by yesjun in MS .NET.1 comment so far
Windows Vista and WinFX™
차세대 운영체제 이런 예기는 이미 충분히 들었을 줄로 안다.
Windows Vista에 대한 예기들을 하면서 깔끔한 UI, 강화된 보안기능등에 대한
예기를 하면서도 정작 엄청나게 바뀐 내부적인 변화에 대해서는 섵불리
예기 하기가 쉽지 않은것은 그 변화 폭과 내용이 너무 엄청나서 일 것이다.
누가 그랬던가 Windows 3.x에서 Windows 95가 나올때 이상의 변화이다 라고
물론 그때도 UI적인 측면이 충격적으로 바뀠지만 그 보다 더 중요한 변화라고 하면
Win16 API에서 Win32 API로의 환경적인 변화가 실상 더 큰 변화 였다.
이번의 Windows Vista의 변화 역시 Win32 API와 .NET Framework가
WinFX라는 환경으로의 충격적인 진화와 확장이 된 버전으로 그 내부적인 환경의
변화를 설명할 수 있다.

WinFX는 아래와 같이 세 부분으로 크게 구성되어 있다.
-WPF -Presentation Foundation
-WCF -Communication Foundation
-WWF -Workflow Foundation
UI의 혁명적 변화를 이끌어 낼 WPF와 SOA를 단일환경으로 통합시릴 수 있는 WCF
그리고 Workflow로 비지니스 프로세스를 구조화 할 수 있는 WWF와 같은 요소들은
바로 WinFX를 구성하고 있는 주요 구성 요소이다.
이 중에서도 설명해 드릴 내용은 WPF라고 하는 UI의 혁명이다.
제가 백마디 하는 것 보다 데모 동영상을 보고나서 계속 이어가겠다.
동영상 URL:http://www.microsoft.com/products/expression/en/demos.mspx
일단은 보기에는 멋있다. 멋있는 정도가 아니라 무슨 방송용 화면이나 광고같기도 하다.
심지어는 마이널리티 리포터의 한 장면이 떠오를라 하려고 까지 한다.
문제는 저런 화면을 실제로 구현할 수 있는가 하는 것이다.
KBS 개그맨 중에서 백수들의 애환을 다루고 있는 누구는
“안돼는게 어딧니~” 라는 대사로 항상 코너를 마무리 지었다.
말 그대로 안되는 건 사실상 거의 없다. 하지만 그 정도의 혁신적인 UI와 환경을
구축하는데 얼마 만큼의 시간과 비용이 소비되는가 하는게 문제 일 것이다.
WPF는 이런 완성된 그리고 엄청난 UI를 비교적 쉽게 구현할 수 있는 환경을 예기하고
있다. WPF는 아래와 같은 구성 요소를 가지고 있다.

WPF는 위의 그림에서 볼 수 있듯이 XAML(Extensible Application Markup Language)
와 C#과 같은 언어로 구성되어 있다.
XAML은 UI를 구성하는 XML의 일종으로 WPF에서 UI의 모든 부분을 담당하고 있다.
UI를 XAML로 구성하면서 UI에 대한 관리가 좀더 직관적으로 변하였고 융통성 있게
관리할 수 있는 장점이 생겼다.
Markup tag로 애플리케이션 구축 할 수 있게 되였고 단순한 명시적 선언구조에
어떤 CLR 객체 구조 표현 가능해 졌다. 또 코드와 내용의 효과적 분리가 되었고
설계자와 개발자 사이의 협업과 동시작업이 가능하다.
XAML로 구성된 UI의 실제 기능은 C#, VB.NET, Java Script등으로 구성할 수 있다.
WPF의 핵심 구성요소로 다음과 같은 내용들을 제공해 준다.
-탐색, 윈도우, 대화상자에 대한 지원
-UI Data binding, 확장 layout 및 풍부한 control objects,
-2D와 3D 그래픽, Animation, Media, Document
엄청나지 않은가 기본적인 폼 이외에도 각종 Media와 2D, 3D 그래픽까지 모두 다룰
수 있게 되었기 때문에 위의 데모 동영상에서 본 것과 같은 화려한 화면을 구상할
수 있게 된 것이다.
또 WPF는 기본적으로 아래와 같이 OS를 지원할 예정이다.
-Windows의 다음 버전인 Vista에 포함예정
-Windows XP SP2와 Windows Server 2003 SP1에는 WinFX 런타임의 일부로 제공될 예정
-Windows Presentation Foundation Everywhere(WPF/e)
XAML과 Javascript에 기반을 둔 WPF의 mobile version
3D 기능은 제공되지 않음, 그러나, XPS, vector-based drawing,
hardware acceleration은 제공
위의 내용을 정리해 보면 WPF는 Vista 부터 본격적으로 지원이 되지만
Windows XP나 Windows 2003에서도 그 기능을 사용할 수 있다. 또한 Web Application과
Windows Application을 공통적으로 개발할 수 있는 기반이 된다.
이 비슷한 기술들이 이미 RIA(Rich Internet Application)라는 이름으로 나와 있는
제품들도 많이 있다. 가장 대표적인 재품은 Adobe사의 Flex가 그 예이다.
하지만 Flex은 현재 몇가지 치명적인 문제점들이 보이는데
디자이너와 개발자의 협업과 성능, 보안 문제들이 존재한다.
디자이너와 개발자의 협업은 보통 일정 규모 이상의 프로젝트에서 사용하는 형상관리
툴인 CVS나 Visual Source safe, Team System 중에서 CVS만 지원하고 있으며 이는
규모 있는 Project의 운영에 치명적인 약점으로 작용한다.
둘째 성능상의 문제는 Flex는 모든 화면 처리를 CPU가 직접 계산하고 있기 때문에
화면 해상도가 높아지고 Control수와 Effect가 많아지면 화면이 끊기고
CPU점유율이 100%를 상위하는 경우를 쉽게 볼 수 있다.
처리 결과를 보여주어야 할 화면이 처리를 못하게 CPU를 점유하는 아이러니가 남게
되는 것이다.
또 아직은 성능과 보안적인 이슈를 않고 있기 때문에 비교적 데이터양이 적은
영화 예약과 같은 곳에 한정적으로 활용되고 있다.
그럼 WPF의 경우는 어떠한가 WPF는 형상관리 툴을 적극적으로 활용할 수 있으며
Microsoft에 제공하는 개발도구들은 모두 Team System과 Visual Source Safe를 활용 할
수 있게 되어 있다. 또한 WPF는 일반적으로 우리가 3D 가속 칩으로 알고 있는 GPU를
활용할 수 있게 되어 있다. 이는 CPU의 부하를 획기적으로 줄여주면서 더 매끄럽고
화려한 효과를 줄 수 있다. (Nvidia 혹은 ATI의 제품들이 소위 말하는 GPU)이다.
아직 보안과 성능에 관련한 이슈에 대한 답은 아직 WPF라도 처리 방법을 지금은 테스트
해보지는 않았으나 나름 방법은 있을 것이라 기대하고 있다.
WPF를 이용하기 위한 개발환경을 구성하기 위해서는 무엇이 필요한가?
WPF는 WinFX의 한 부분이며 따라서 WPF를 설치하고 테스트 해보기 위해서는 WinFX 개발환경을
구성해야 한다. WinFX의 개발환경을 구성하기 위해서는 설치할 것도 많다.
하지만 WinFX가 정식 발표 되었을 때는 개발도구에 모두 통합되어서 간단히 설치 할 수도
있을 것 같다. WinFX를 사용하기 위해서 설치해야 되는 목록과 순서는 아래와 같다.
이 순서는 친절한 성철씨가 3일간 삽질한 결과로 올려 놓은 것이라 한다.
이 자리를 빌어서 감사의 말씀을 드립니다.
http://lovewiz.pe.kr/31
1. Windows XP SP2 or Windows Server 2003 SP1 설치된 깨끗한 컴퓨터
(Windows Vista도 가능)
2. WinFX Runtime Components 다운로드 및 설치
http://msdn.microsoft.com/windowsvista/downloads/getthebetaaspx?FamilyId=AD0CE56E-D
7B6-44BC-910D-E91F3E370477&displaylang=en
3. Visual Studio 2005 설치
4. Windows SDK 다운로드 및 설치
http://www.microsoft.com/downloads/details.aspx?FamilyId=9BE1FC7F-0542-47F1-88DD-61E3EF88C402&displaylang=en
5. Visual Studio Extensions for WinFX 다운로드 및 설치
http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0CE56E-D7B6-44BC-910D-E91F3E370477&displaylang=en
6. Interactive Designer 다운로드 및 설치(Option)
http://www.microsoft.com/downloads/details.aspx?familyid=D0161985-AE53-4794-9860-61A4906587F0&displaylang=en
Windows SDK를 설치하고 나면 C:\Program files\Windows SDKs\ 하위에 Sample code가 있으며
Sample code를 통해서 전체적인 모습을 보실 수 있다.
김영욱 Microsoft MVP
blog: blog.naver.com/microsoftMVP
Web: www.winkey.pe.kr
email: iwinkey@Hotmail.com
MS WPF 세미나를 다녀와서… December 10, 2006
Posted by yesjun in Feeling, MS .NET, Watching.1 comment so far
MS WPF 세미나를 다녀와서 느낀점.
- MS 세미나는 세미나라기 보다, 교육(선생-학생 관계)의 느낌이 강하다
- 개념보다 도구 사용법을 알려준다
- 프리젠테이션 화면이 너무나 무척 (정신없을 정도로) 화려하다 (특히 Keynote로 하는 PT에 비하면 더욱)
- 경쟁 솔루션(이번엔 Flex)의 나쁜점만을 교묘하게 들춰내어 깐다 (Open Source 진영이 MS를 깔때는 확실히 ‘MS 솔루션이 좋을지도 모르지만, 나는 싫다고 하면서 깐다)
- 경쟁 솔루션과 비교할때 동등한 조건이 아니라 MS에게 유리한 조건으로 해놓고 비교한다 (이번엔 WPF 애플리케이션과 Flex를 비교, WPF/E 와 Flex 를 비교해야 맞다)
- 예제 소스코드를 보면 냄새 (if 문의 과다한 사용-strategy 패턴으로 바꿀 수 있을 텐데)가 난다 (Java 세미나에서는 쪽팔려서라도 리팩토링을 해준다)
- A 솔루션을 쓰면 B 솔루션도 있어야 한다 (MS Expression Blend를 쓰면 VS 2005가 있어야 한다)
- MS는 돈되는 프로젝트에서 많이 쓴다고 강조한다 (즉 Open Source는 돈 안된다는 말이다)
- 돈쓴 느낌이 팍팍 난다 (의자와 프로젝터와 음향 시스템과 세미나실 모두)
- 접수 받는 분이나 도우미들이 모델급이다
하지만 세미나 끝나고 돌아오면 상품소개 받은 느낌만 남는다.
blogger.com과 블로그 서비스. December 2, 2006
Posted by yesjun in Doing, Google.add a comment
그동안 정들었던(1달정도 썼나…) blogger.com에서 이곳 wordpress.com으로 블로그 서비스를 바꿨다.
다행이 blgger.com의 글을 임포트하는 기능(LiveJournal도 지원한다)이 있어서, 손쉽게 옮길수 있었다.
이럴 땐 정말 사람들이 많이 쓰는걸 선택하길 잘했다는 생각이 든다.
blogger.com은 쉽고 편리한 사용법으로 초기 블로그 서비스를 선도했던 사이트다.
더구나 구글에 인수되면서 블로그 시장을 주도할 것으로 예상했다.
그런데 여기에는 몇가지 문제가 있다.
- 처음에는 쉽고 편리한게 좋지만, 사용자들은 점점더 어렵지만 강력한 기능을 원한다
- 자유로운 페이지 레이아웃 변경 및 플러그인 기능 - 블로그 표준 기술의 발전속도에 비해 blogger.com에서는 신기술을 더디게 적용한다
- trackback 이나 RSS 등 - 구글과의 연동이 미약하여 큰 시너지 효과는 얻지 못했다
- 구글 계정과 blogger.com의 계정을 통합하지 못했고, 기타 특별한 연동기능도 없다 - 현재 서비스가 불안정 하다
- 서버가 갑자기 느려지거나 세션이 이유 없이 끊기는 등 시스템이 아직도 불안정 하다 - blogger.com 다음 버전으로의 서비스 업그레이드가 원활하게 진행되지 않는다
- 다음 버전으로 업그레이드를 하려고 업그레이드 링크를 클릭하면, 페이지가 없거나 서버가 반응하지 않는다
blogger.com이 다음 버전에 총력을 기울이고 있는 건 알겠지만, 패키지 프로그램 판매가 아닌 서비스를 제공하는 회사라면
제공하는 서비스의 질을 일정수준 유지시켜야 한다.
아무리 “조금만 참고 기다려 주세요, 곧 최고의 블로그 애플리케이션을 보여 드리겠습니다.” 라고 애원한들
기쁨마음으로 참고 기달려줄 고객은 드믈다.
Ruby 양, 우아한 드레스에 운동화 신다. December 1, 2006
Posted by yesjun in Ruby, Thinking.4 comments
Ruby는 우아한(Elegant) 코드 작성을 자랑하는 언어다.
블록, 영어식 코딩, 괄호 제거 규칙, 덕 타이핑 등등.
그런데 루비는 인자의 위치로 메소드의 시그니쳐를 구분한다.
루비에서도 당연히 될 줄 알았는데 이름은 같고 인자갯수가 다른 메소드를 만들면, 나중에 만든 메소드가 처음 만든 메소드를 덮어 씌여 버린다.
def sameMethodName(one)
puts "One!"
end
def sameMethodName(one, two)
puts "two!"
end
sameMethodName(1, 2)
two!
sameMethodName(1)
ArgumentError: wrong number of arguments (1 for 2)
운동화가 아니라 쓰레빠 였나…
예를 들어 다음은 일반적인 루비 자바 메소드 호출 방법이다.
window.addNewControl("Title", 20, 50, 100, 50, true)
뭔가 컨트롤을 만드는 거 같은데 무슨 인자가 들어가는지는 API 문서나 메소드 선언부를 봐야 한다.
아래와 같은 인자 갯수가 다른 하지만 동일한 기능을 하는 메소드를 한개 더 보자.
window.addNewControl("Title", 100, 50, true)
2개의 인자가 기본값을 취하는 것 같은데 이 또한 API 문서나 메소드 선언부를 봐야 좀 알거 같다.
다음은 Objective C 에서 메소드를 호출하는 모습이다.
[window addNewControl WithTitle:@"Title"
xPosition:20
yPosition:50
width:100
height:50
drawingNow:YES];
그렇다, “Title”이란 이름으로 (x, y) 위치가 (20, 50)으로 너비가 100, 높이가 50 인걸 지금 그리란 이야기다.
[window addNewControl WithTitle:@"Title"
width:100
height:50
drawingNow:YES];
이건 아까 호출한 메소드랑 똑같은데, 위치가 기본값으로 들어가는 군.
이렇게 인자의 이름(키값)으로 메소드 시그니쳐를 구별하는게 Named parameter 방식이다.
그리고 이름만 같으면 순서는 상관없다.
[window addNewControl WithTitle:@"Title"
height:50
width:100
drawingNow:YES];
이런 우아한 방식을 왜 Ruby에서 안쓸까?
마침 이러한 Ruby에서의 Named parameter에 대한 토론을 볼 수 있었다.
Matz와 Tsela의 덧글을 중심으로 정리해 보면 Named parameter 방식은 인자조차 public 하게 공개된다는 것이다.
음… 그렇군 하이힐을 신으면 우아하기는 하지만 디스크와 발 형태 변화를 일으킬 수 있군.
미안해 Java군 그동안 우아하지 못한 운동화에 츄리닝 입었다고 뭐라고 해서.
사실 구두에 화려한 턱시도 입고 뛰기는 힘들겠지.
그리고 Ruby양, 운동화 신었지만 충분히 이뻐.
운동화는 어느정도 괜찮겠는데 쓰레빠는 쫌…
그런데 Ruby양은 좀더 우아해 지기 위해 구두를 구입하려고 생각 중이다.
당신의 올해 북 트랜드는? November 30, 2006
Posted by yesjun in `Uncategorized.2 comments
codian 님이 CSS Mastery 라는 책이 번역되어 나온다고 알려 주셨다.
그런데 출판사가 에이콘이다.
둘러보니 나도 에이콘 출판사의 책이 꽤 있는 것 같다.
대부분은 근 1년안에 구입한 책이다.
특히 루씬인 액션, Ajax 인 액션, 예제로 배우는 Adobe 플렉스 2, 서브버전 같은 책은
해당 분야 최초의 책으로 기억한다.
최초의 책을 출간하기 위해서는 그만큼 준비도 많이하고 기술흐름을 인식하고 있어야,
가능하다고 생각한다.
4~5년 전만해도 정보문화사(MS 관련 책이 많다)와 인포북의 책이 가장 많았던 것 같다.
그러던 것이 Java와 오픈소스를 접하면서 한빛미디어(오렐리 번역서)로 넘어 가기 시작했고,
1~2년 전부터 Web 2.0과 개발방법론에 관심을 가지면서,
위에서 말한 에이콘 출판사와 인사이트(방법론 책이 많다, 특히 익스트림과 애자일)의 책이 늘어난 것이다.
책도 의류 처럼 트랜드가 있는 걸까?
아마도 내년에는 루비와 레일즈가 트랜드를 주도하는 데 한몫 할 것 같다.