2012년 8월 21일 화요일

GDG Dartlang Korea 안내!!

안녕하세요.

앞으로 Groups 에서 많은 내용을 다룰 예정입니다.!!

더 즐거운 Dart언어를 즐기도록 해요!!

2012년 5월 18일 금요일

Dart server 설치기

작성 : Songhun Kim 

안녕하세요.

요즘 호스팅 해주는 곳이 많지요..
Dart같은 경우는 직접 모든 것을 설치해야 하기 때문에 Server 호스팅을 받아야 하는데요.
어디서 받아야 뒤적거리다가 보니 Cafe24에서 가상서버호스팅이라는 것이 가장 저렴한 것 같아서 신청을 해보았습니다. Ubuntu 11.10 (GNU/Linux 3.0.0-12-server x86_64)

다들 자신의 PC등에서는 서버를 간단히 돌려보셨을꺼예요.(제발 그냥 돌려봤다고 해주세요~)
Windows에서 돌아가는 것은 다른 분을 통해서 봤고, 저 같은 경우는 OSX에서 잘 도는 것을 확인 했기 때문에, 호스팅에서도 간단히 돌 줄 알았는데..
이상하게 동작이 안되는 것이였습니다.

그래서, 메일링 리스트를 뒤적뒤적 거리다 보니..
많은 분들이 저와 같은 얘기를 하고 있더군요.

결론은 "not yet"

하지만, 많은 Linux 서버들이 64bit로 전환 되었기 때문에..
어떻게든 돌려봐야하지 않겠나 해서 더 찾아보니..
32bit Library들을 가져다가 돌리면 되는 것을 발견 하였습니다.

그럼. 64bit linux에서 Dart를 돌리는 방법을 간단히 정리해보도록 하겠습니다.
우선 문서들 부터 정리 하면.

  1. 공식 문서
    1. http://code.google.com/p/chromium/wiki/LinuxBuildInstructionsPrerequisites
    2. http://code.google.com/p/dart/wiki/PreparingYourMachine
    3. http://code.google.com/p/dart/wiki/GettingTheSource
    4. http://code.google.com/p/dart/wiki/Building
  2. DartWatch
    1. http://blog.dartwatch.com/2011/10/step-by-step-setting-up-dart-build.html
Building 까지 하셔도 되지만, 제가 생각할 땐 Build 까지는 안하셔도 될 것 같고..
32bit library까지만 하셔도 Dart를 사용하실 수 있습니다.

무슨 얘기인고 하니..
wget http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh
source install-build-deps.sh
이 것을 가지고 Library들을 설치해주시고..
에서 SDK를 받아서 진행해주셔도 설치가 가능 합니다.

하지만, 잘 안되시는 경우에는 위의 DartWatch에서 제공하는 Step by Step을 진행해보셔야 할 듯 합니다. 저 같은 경우는 Build 과정이 어떻게 되는지 궁금해서 전체 Build를 해보았습니다.

그 과정은 위의 DartWatch에서 상세히 되어있어서 생략하구요.
그 중 특이했던 점과 주의 점만 공유 드립니다.
우선 32bit Library설치 과정인데요.
source install-build-deps.sh --lib32
로 명령어를 줬습니다.
처음에 Install이 안되서 Shell을 열어보니.
다음과 같이 되어있더군요.
222 # Install 32bit backwards compatibility support for 64bit systems
즉, 저와 같은 상황에 계신 분들은 꼭 --lib32 옵션을 주시기 바랍니다.
그 다음, root로는 gclient가 동작되지 않습니다.
유저를 분리 해주셔야 합니다.
#update_depot_tools
if [ "$USER" == "root" ];
then
  echo Running depot tools as root is sad.
  exit
fi
또, 주의 하시면 좋을 점은..
gclient config http://dart.googlecode.com/svn/trunk/deps/all.deps
gclient sync
의 경우 정말로 svn에서 다운받는 과정을 거치기 때문에.
명령어를 실행 시킬 Directory를 잘 확인 하고 실행 하시기 바랍니다.

그럼!! 꼭 성공 하시길 바랍니다~

2012년 5월 17일 목요일

[News] Dart Editor Build 7696


안녕하세요!!
빌드가 엄청 빨리 되네요. :)
이번엔 어떠한 것이 바뀌었는지 살펴보도록 하겠습니다!!

  • 로컬 변수 리펙토링이 확장 되었습니다.
  • 검색과 검색 박스가 변경 되었습니다.
  • 검색에서 숨겨진 디렉토리들(.)을 검색하지 않습니다.
  • File View에서 리소스명을 변경하면,
    Dart소스안에 있는 #import, #source와 #resource의 참조가 업데이트 됩니다.
  • 분석서버의 일반적인 수정이 있습니다.
  • 에디터 외 뉴스 : dart:dom이 deprecated되었습니다.

테스트 해보고 싶은 기능이 있네요.
그리고, 예전에 알려드렸던 dart:dom의 제거 소식 놓치지 마세요~^_^

2012년 5월 15일 화요일

[안내] 5월 Dart Time!!

Go!! Dart Time!!


안녕하세요!!
개발자들의 수다 시간!! Dart Time 5월 모임을 가지려고 합니다!!
다양한 이야기로 수다를 떠는 것이 목적이기 때문에
부담없이 오셔서 즐겁게 얘기 하시면 좋을 듯 합니다.


시간 : 2012.5.31(목) 저녁 8시
장소 : 카페베네 역삼스타점 : http://goo.gl/EoD9M ( 장소 후원: 구글 코리아 http://goo.gl/P57iM )
제공 : 간단한 간식 및 음료 일체
참가 신청 : http://goo.gl/CWC1d


평소에 뭔가 고민이 있었는데..
다른 개발자들은 어떻게 생각하고 있는지 궁금하신 분들!!

간단한 아이디어가 있는데..
구체적으로 잡히지 않는 분들!!

평소에 소심한 성격으로 말을 잘 못해서..
인맥 넓혀보고 싶으신 분들!!


개발자가 아니여도 좋습니다!
개발자들이 어떤 수다를 떠는지 궁금하신 분들!!


그런 분들을 위해 준비 해봤습니다!!
이 번엔 특별히 Golang Korea분들과 함께 즐거운 시간을 가질 것입니다!!



여러분들이 주인공입니다!!
차 한 잔 하고 가세요~
그럼 기다리고 있겠습니다!!


2012년 5월 14일 월요일

[News] Dart Lang Spec 0.09!!

Dart 가 0.09가 되었네요.
조만간 0.1이 될 수 있을까요?^_^


주요 변경사항은 다음과 같습니다.

  • Abstract Methods는 기본 값을 가집니다. [링크]
  • Interface Methods도 기본 값을 가집니다. [링크]
  • "~/" 연산자는 doubles에도 적용 될 수 있습니다. [링크]
  • Factory들이 사용 되는 것이 허용 되도록,
    Abstract Class 의 인스턴스화에 관한 룰을 재정의 하였습니다. [링크
  • Switch 구문의 사양을 교정 하였습니다. [링크]
  • throw는 null을 던질 수 없습니다. [링크]
  • Imports는 Library scope로 부터 scope 구분을 알려줍니다.
    중복적인 Library들이 prefix를 공유할 수 있습니다.[링크]
  • 재귀typedefs를 허용합니다. [링크]



감사합니다~

[News] Dart Editor Build 7552

거의 1주일에 1번씩 빌드 되는 느낌이네요. :)
뉴스 전해드리는 것 자체가 벅찰 정도로 빠릅니다!!

이번 Build는 7552입니다.
다들 업그레이드 해주시기 바랍니다. :)
주요 변화는 다음과 같습니다.

  • Rename 리펙토링을 개선 하였습니다. 
    • prefix, 로컬 함수, Getter & Setter을 포함합니다.
    • 타입이 변경 되거나 멤버가 private등이 될 때 경고를 알려줍니다.
  • frog와 dart2js를 같이 사용할 수 있습니다.
    • 몇 주내로 dart2js만 사용하도록 할 예정입니다.
  • 외부 파일을 읽기 전용으로 열도록 변경하였습니다.
  • SDK 텍스트 검색 기능을 만들었습니다.
  • 텍스트 파일의 타입의 필터링 기능을 향상 시켰습니다.
    • .dart.js 혹은 config 파일들은 하지 않습니다.

이번 에디터에 포함된 dartium에서 제 fxPresenti가 동작을 하지 않더군요.
이 부분은 문의 진행 중입니다.^_^예제 돌려보실 때 참고 하시기 바랍니다.^_^

감사합니다~

2012년 5월 13일 일요일

[안내] Mini Happy Hour!! (2012.06)



안녕하세요.

제 1회 Mini Happy Hour* 를 개최 합니다.

시간 : 6월 16일 토요일 오전 11시~오후 2시 까지(3시간)
장소 : 강남역 토즈 ( 장소 후원: 구글 코리아 http://goo.gl/P57iM )
정원 : 30명
스케쥴

  • fxPresenti.dart v0.04 를 통한 Dart Project 실습 (15분)
  • Dart Hackathon (2시간)
    • 시간은 짧지만, 주기적으로 할 예정이니 간단히 나눠서 진행하면 됩니다.
  • 진행 상황 공유 및 칭찬 시간(30분)
  • 버퍼시간 : 15분

모집 마감은 장소 예약 사정상 1주 전에 마감하도록 하겠습니다.(6월 9일, 토요일)

참고로 저는 Dart 한국어 문서화를 진행 할 예정이오니
관심있으신 분은 참여 해주시기 바랍니다!!

감사합니다!!

* Global Dart Hackathon 인 Happy Hour에서 빗대어 만들었습니다.
공식적인 Dart Team의 모임은 아님을 알려드립니다.

2012년 5월 12일 토요일

[DevFestX Korea 2012] 발표를 마치고 나서.

작성 : Songhun Kim 

안녕하세요.
어제 DevFextX Korea 2012를 마치고 돌아왔습니다.

Staff로 열심히 일하다가, 발표도 간단히 준비해서 다녀왔는데요.
어제는 Dart관련 발표가 무려 2개!
콤보로 소개 + 실습의 멋진 콤비로 진행 되었습니다.

멋진 발표!!

아직 널리 퍼지지 않은 언어이기 때문에 실습보단
초기 개념잡기를 위한 소개 시간이 중요했기 때문에
그런고로, 신재용님의 시간이 매우 중요했었습니다.^_^
관련된 지식도 많이 전달 해주셨고, 가감 없는 Dart의 장단점을 말씀 해주셔서 좋았습니다!!
많은 분들이 Dart에 대해서 많은 지식을 얻으셨길 바랍니다.

저의 경우는 Dart를 이용한 실습을 보여드리는 시간을 가지고자 하였습니다.
버전이 무려! V0.02였기 때문에 그냥 보여드리는 수준에 머물렀지만,
중요한 문법을 소개 시켜드리는 시간을 가졌습니다!!
제가 그렇게 말이 빠른 사람인 줄은 이 날 발표로 알았네요.ㅋ
이 모든 것을 한 번에 보여드리긴 어렵기 때문에, 그 부분을 추후로 미루기로 하였습니다!!


그러기 위해선?!!



그 날의 풍경을 잠깐 전달 해드릴께요. 제가 찍은건 아니지만 :-)

그날의 모습들

그 외에 저는 Staff로 참여했기 때문에 행사를 운영해보는 경험도 얻은 시간이라 의미가 많이있었습니다. 많은 개발 그룹들이 많습니다. 여러분들도 이런 같은 경험을 얻었으면 좋겠습니다..

앞으로의 활동도 기대해주시고!!
참여하고 싶으신 분들은 어려워 마시고 연락 주세요!!



2012년 5월 6일 일요일

[공유] Tech It! 기고

안녕하세요!!

전문 IT블로그인 Tech It!에 기고를 할 수 있는 기회를 얻었습니다.
링크는 다음과 같습니다. http://techit.co.kr/3253

시간이 많진 않다보니 잠을 약간 줄여가며,
틀릴까봐 나흘간 기초자료 다시 읽어가면서 쓰긴 했는데..
다시 읽어보면 뭔가 어색하고 참 부끄럽고 하네요..

그렇다고 찢어버릴 수도 없고 이미 엎질러진 물...
다들 재밌게 보실 수 있으면 좋겠습니다.

그리고, 소정의 기부금을 받았어요.
그래서 이 금액은 전액 Dartlang.or.kr의 포워드 비용.(년:9,900)에 사용 될 예정입니다.

이 자리를 빌어 Tech It! 관련자 분들에게 감사의 인사 드립니다.



완전쌩큐!

2012년 5월 5일 토요일

Browser에서의 Dart, Server에서의 Dart. 간단한 Http예제

이 문서는 DartWatch 의 번역 문서 입니다.^_^

Dart를 Client(Browser상에서)와 Server에서 사용할 수 있는지에 대해 물어보는 글 들을 메일링 리스트와 Stack Overflow에서 심심치 않게 볼 수 있습니다. 그래서 이 번 포스트에서는 예제를 통해 어떻게 하는 것인지 보여드리고자 합니다.

Server Side

첫번째로 Server Side에 대해서 다루고자 합니다. Dart는 Server에서 Python, Ruby그리고 Node.js와 같은 Server Side Script들 처럼 사용할 수 있습니다. Windows에서는 dart.exe <실행.dart> 방식으로 사용 됩니다. 다음 예제를 보시겠습니다.

//MyScript.dart
main() => print("Hello Dart");

그리고, 이것을 Console 에서 "dart.exe MyScript.dart"을 실행 시키면 다음과 같은 결과물을 볼 수 있습니다.

Hello Dart

그럼에도 불구하고 우리는 좀 더 유용한 것을 원합니다. 그래서 저는 다음 Diagram을 통해 어떻게 어플리케이션을 만들 수 있는지 계획을 세웠습니다.


Server Side Component는 2가지 행동을 실행 할 것입니다.
1. Http Protocol을 통해서 브라우저에게 다음 static 파일들을 전송할 것입니다.

- MyApp.html
- MyApp.dart
- MyApp.dart.js

2. 나머지 GET Http Request에 대해서는 요청된 이름을 가진 JSON 데이터를 전송합니다. 예를 들면 http://localhost:8080/helloWorld(/helloWorld가 GET됩니다.)를 호출 하게 되면, 다음과 같은 JSON 데이터가 전송 됩니다.

{"get":"helloWorld"}

이를 위해서 우리는 dart:io Library를 통해 HTTPServer를 이용해야 합니다. 모든 Dart 앱들은 main() 함수를 통해 시작이 되므로, MyServer.dart라는 화일을 다음과 같이 구성해 보겠습니다.

#import("dart:io"); // dart:io Library를 가져옵니다.


main() {
    HttpServer server = new HttpServer(); // Server를 생성합니다.

    serve.listen("127.0.0.1", 8080); // Listening을 시작합니다.

}

Server는 "dart.exe MyServer.dart"를 통해 실행 시킬 수 있습니다. 아직 이것은 아무 동작도 되지 않습니다. 그래서 우리는 Request에 반응 할 수 있는 Callback함수를 추가해야 합니다. 처음엔 기본적인 Response를 추가하겠습니다. 이 함수는 HttpRequest를 통해 URL을 분석하여 JSON 데이터를 생성하여 HttpResponse를 통해 데이터를 내려주는 것입니다. Callback은 defaultRequestHandler 속성을 통해서 할당 합니다.

#import("dart:io"); // dart:io Library를 가져옵니다.

#import("dart:json"); //json Library를 가져옵니다.


main() {
    HttpServer server = new HttpServer(); // Server를 생성합니다.

    server.defaultRequestHandler = defaultHandler; // Handle 함수를 할당 합니다.(하단에 있습니다)

    serve.listen("127.0.0.1", 8080); // Listening을 시작합니다.

    print("http://127.0.0.1:8080 서버가 활성화 되었습니다");

}

defaultHandler(HttpRequest req, HttpResponse res) {

    Map data = new Map(); // Response를 위한 Map을 생성합니다.

    print("${req.path}가 요청 되었습니다");

    data["get"] == req.path; // 요청된 Path를 data에 담습니다.

    String responseData = JSON.stringify(data); // map을 JSON으로 변경 합니다.

    res.outputStream.writeString(responseData); // Client 에게 응답을 합니다.

    res.outputStream.close(); // 응답을 닫습니다.

}


이제 Script를 실행 하고, 브라우저에 http://localhost:8080/hello를 입력하게 된다면 JSON데이터를 받을 수 있습니다.

두 번째로 실행 할 것은 Static파일 제공하기 입니다. 1회 요청에 3개 파일을 Load하고, 그 데이터를 응답하게 하는 방법을 알아보도록 하겠습니다.  MyApp.html을 요청 받고, Browser에 정상적으로 데이터를 보내는 예제를 만들어 보도록 하겠습니다.

#import("dart:io"); // dart:io Library를 가져옵니다.
#import("dart:json"); //json Library를 가져옵니다.

main() {

    HttpServer server = new HttpServer(); // Server를 생성합니다.
    server.addRequestHandler(matchMyApp, myAppHandler); // 만약에 "myApp"로 시작하는 요청이 있으면 Handle합니다.
    server.defaultRequestHandler = defaultHandler; // Handle 함수를 할당 합니다.(하단에 있습니다)
    serve.listen("127.0.0.1", 8080); // Listening을 시작합니다.
    print("http://127.0.0.1:8080 서버가 활성화 되었습니다");

}



defaultHandler(HttpRequest req, HttpResponse res) {

    Map data = new Map(); // Response를 위한 Map을 생성합니다.
    print("${req.path}가 요청 되었습니다");
    data["get"] == req.path; // 요청된 Path를 data에 담습니다.
    String responseData = JSON.stringify(data); // map을 JSON으로 변경 합니다.
    res.outputStream.writeString(responseData); // Client 에게 응답을 합니다.
    res.outputStream.close(); // 응답을 닫습니다.

}

bool matchMyApp(HttpRequest req){

    bool result = req.path.startsWith("/MyApp"); // MyApp으로 시작 되면
    print("MyApp과 일치여부 : $result");
    return result;

}

// 파일을 열고 Client에게 전송한다.
void myAppHandler(HttpRequest req, HttpResponse res) {
    File file = new File(".${req.path}"); // 요청한 파일을 가져옵니다. 예): ./MyApp.html
    file.openInputStream().pipe(res.outputStream); // 요청에 응답합니다.
}

이제 Server를 돌리게 되면, Client가 MyApp.html을 호출 시 정상적으로 응답해줄 수 있습니다.(지금은 Editor 마법사에 의해 Dart 앱이 만들어질 것입니다.)
GitHub에서 이 파일을 다운로드 받고 실행 하신 후, http://localhost:8080/MyApp.html 혹은 http://localhost:8080/helloWorld를 실행해보시기 바랍니다.
(이것은 에디터 빌드넘버 7232 에서 안정적으로 동작합니다.)

Client Side Dart...


Client Side의 Dart를 시작해봅시다. 우선 Editor에서 New > Web Application으로 예제 앱을 만들어 봅니다.( Server Side Dart에서 호출이 될 수 있도록 MyApp이라고 이름을 설정합니다.)

Editor는 MyApp.dart와 MyApp.html 파일을 생성할 것입니다.MyApp.dart는 최초에 다음과 같을 것입니다.
#import('dart:html');

class MyApp{
    MyApp(){
    }
    void run() {
        write("Hello World!");
    }
    void write(String message) {
        // HTML library는 "document" 전역 변수를 정의 합니다.
        document.query('#status').innerHTML = message;
    }
}

void main(){
    new MuApp().run(); // Class의 instance를 생성하고, run함수를 호출 합니다.

    // TODO : ui element를 이곳에 더 추가합니다.
}

Editor에서 "Tools > Generate Javascript"를 선택 하면 MyApp.dart.js 파일을 생성할 수 있습니다. HTML 파일을 살펴보면, Dartium에서는 자동으로 MyApp.dart 파일을 Load할 수 있도록 링크가 걸려 있을 것입니다. 그리고, 이 HTML파일은 Dartium이 아닌 브라우저를 위해서 MyApp.dart.js를 Load할 수 있도록 되어있습니다.
이 파일들은 MyServer.dart와 같은 폴더에 위치 되어야 합니다. 다시 한번 dart.exe를 이용해 MyServer.dart를 실행 시키고, http://127.0.0.1:8080/MyApp.html 을 요청 해보면 정상적으로 동작 됨을 볼 수 있습니다.

MyApp.dart를 좀 더 개선해보기로 하겠습니다. UI Element들을 더 추가하고, XMLHttpRequest(XHR)을 이용하여 Server Side에서 응답하는 JSON데이터를 받아보는 함수를 만들어보도록 하겠습니다.
이 함수는 Textbox, Button 그리고 서버에서 응답하는 데이터를 표시 할 수 있도록 Span Tag를 추가 할 것입니다. 그리고, Button을 클릭하면 Textbox에 입력된 URL에 XMLHttpRequest 객체를 이용하여 "GET"요청을 실행 할 것입니다. 예를 들어, "HelloWorld"를 TextBox에 입력 하고 Button을 클릭하게 되면 "http://127.0.0.1:8080/HelloWorld"에 요청하고 해당 JSON데이터로 응답할 것입니다. 아마도 {"get":"HelloWorld"}가 될 것입니다.

코드로 표현 해보도록 하겠습니다.
#import('dart:html');

class MyApp{
    MyApp(){
    }
    void run() {
        write("Hello World!");
    }
    void write(String message) {
        // HTML library는 "document" 전역 변수를 정의 합니다.
        document.query('#status').innerHTML = message;
    }
}

void main(){
    new MuApp().run(); // Class의 instance를 생성하고, run함수를 호출 합니다.

    addUiElements() 
}

addUiElements() {
  // UI를 추가합니다.
  var elements = new Element.html("""
Enter some text:
Request=
Response=
"""); document.body.nodes.add(elements); ButtonElement button = document.body.query("#myButton"); // Button을 선택합니다. // Button에 Click이벤트를 추가합니다. button.on.click.add(EventListener (data) { // TextBox에서 URL을 가져와 XHR호출을 하게 됩니다. // URL을 가져옵니다. InputElement textbox = document.body.query("#myTextbox"); // TextBox를 선택합니다. String url = "http://127.0.0.1:8080/${textbox.value}"; // 중요: url은 호출 된 서버와 같아야 합니다. // 만약에 http://localhost 로 호출을 하였다면, // url도 http://localhost로 변경해야 합니다. // 그렇지 않다면 Access-Control-Origin 에러가 발생 됩니다. // UI에 url을 적습니다. SpanElement requestSpan = document.body.query("#requestSpan"); // 요청을 기록할 Span requestSpan.innerHTML += "GET: $url"; // UI에 요청을 적습니다. // 서버로 부터 응답이 오면 실행 되는 부분 XMLHttpRequest request = new XMLHttpRequest.get(url, (XMLHttpRequest request) { SpanElement responseSpan = document.body.query("#responseSpan"); // 응답 Span responseSpan.innerHTML += "${request.responseText}"; // 응답을 출력합니다. }); }); }

MyApp.dart를 수정 한 후, 다시 한번 Javascript 생성을 해주시기 바랍니다.
여기까지의 코드는 GitHub에서 받아 볼 수 있습니다. 총 4개의 파일로 구성 되어있습니다.(MyServer.dart, MyApp.html, MyApp.dart, MyApp.dart.js)
간단히 이 파일들을 한 폴더 안에 위치 시키고, 다음 명령어를 내려보세요.
path/to/dart.exe MyServer.dart
그 이후, Daritum 혹은 브라우저로 다음 URL을 실행 해보세요.
http://127.0.0.1:8080/MyApp.html
Cross Origin에러가 발생 되었다면, XMLHttpRequest가 다른 서버에서 호출하고 있다는 거을 뜻합니다. 서버가 http://127.0.0.1:8080 인지 재확인 해주시기 바랍니다.

만약에 문제가 없다면 다음과 같은 화면을 보실 수 있게 됩니다.




여러분이 Dart를 Client Side와 Server Side에서 어떻게 사용하는지 이해되었기를 희망합니다.
이 Server Side Implementation은 믿을 수 없을 정도로 기초적입니다. 어떠한 Http Header를 제공하지 않습니다. 예를 들어, MyApp이라는 것만 골라내는 코드를 만들기는 상당히 어렵습니다. 여러분들이 한 번 도전 해보시기 바랍니다.

비록 이 블로그에서는 Dart를 Client Side와 Server Side에서 동시에 사용하고 있습니다만, 여러분들은 다른 언어로 만들어 볼 수 있습니다. 예로, Server Side Dart + Client Side Flash 혹은 Server Side Ruby + Client Side Dart 등등이 되겠습니다.

JSON을 다루는 것을 더 알기 원한다면, 이 문서를 참조 해주세요.

2012년 4월 30일 월요일

[의견수집] Dart를 발전 시켜주세요!!

안녕하세요!!

Global Dart Hackathon 진행에서 가장 많이 나왔던 이야기가 여러가지가 있었고.
일부는 현재 의견을 전달 해둔 상태입니다. ^_^

하지만, 현재 가장 많이 들리는 Document 개선에 대해서 Dart Team에서도 고민을 하고 있지만,
어떠한 형태가 가장 좋은 것인가?! 에 대해서는 다들 모르고 있는 상태입니다.
http://api.dartlang.org/ 아휴~ 어렵다~ 그죠잉~


저희도 한 번 의견을 모아서, 저희 취향(?)에 맞는 Document가 될 수 있도록 해보고 싶다는 생각을 했습니다.


그래서!! Dart Document 개선 아이디어 공모전!! 을 해보겠습니다.


참가 방법은!!
https://groups.google.com/forum/?fromgroups#!forum/dartlang-korea
우선 가입해주시고, 의견 개진 해주시면 됩니다.(구체적일 수록 좋겠죠?^_^)



채택 된 분들에게는 제가 특별히 준비한 소정의 선물을 드리도록 하겠습니다!!





기간은 5월 30일 전까지 지속적으로 주시구요.
여러 의견 모이기 바라겠습니다!!

감사합니다!!

[News] Dart Editor Build 6943

안녕하세요!!
새로운 뉴스~ 전해드립니다.

아직은 안정화 단계가 아닌지..
계속 빌드 버전이 나오네요.^_^

이번에 6943이 나왔습니다.(사실 저번 주에 나왔는데..제가 해커톤 준비로 게을러서 지금 봤네요)
  • Console view가 좀 더 좋아졌습니다.
  • 여러 개 실행 되는 어플리케이션을 위한 멀티플 콘솔 지원
  • 파일명 수정 개선 및 버그 수정
  • 삭제한 어플리케이션의 설정도 잘 삭제가 되도록 수정
  • 같은 것이 여러번 import되는지 분석 지원
  • Javascript 컴파일러와 Dartium 개선
  • UI와 분석의 개선과 버그 수정
Update 궈궈씽!

2012년 4월 29일 일요일

[Happy Hour] Postscript in Korea (28/4/12)


Hello everyone!!

We finished "Happy Hour Korea" very successful.
At the first, I worried about the events, because there was a couple of hackathon events at same time and  very clear weather for picnic. So we thought there were not enough developers for enjoy hackathon.
Therefore we decided to unite the place of 2 hackathons. This plan worked very well and we could play the events.

And I introduce 7 great Programmers of Dartlang Korea.


just 7, but we made 4 projects!!


If there are more hackers, a hackathon is more enjoyable, I think.
So we felt more funny and agreed it's good chance for talking about Dart language.



And then we made four great project in this Happy Hour.
  • Web & Chatting Server and Prototype of Shell
    • Simple Web Server and Chatting Server with IO APIs.
    • Command Shell Prototype.
    • We found and hoped that the Dart will stand in for Node.js.
  • Simple Piano
    • Emulate a piano with keyboard events.
    • In the near future, I hope we can control a real piano. :) 
  • Dart Complete
    • When we input codes in textarea, this program suggests apis(auto complete).
    • We'll suggest this idea for adding to Dartboard in Dartlang.org.
  • fxPresenti.dart
    • Web presentation tool written by Dart and HTML/CSS.
    • It's just v0.01. But I try to improve functions and replace all presentations in Dartlang.org.
    • So I hope "Fork me!!"
Although we were few programmers, but we made 4 projects!!(Fantastic 4!)
And we talked about the cause that the Dart is a very simple and clear language.

Just.. documents are not enough(not good for searching/so we made a "Dart complete")
And the Editor is not worked on windows XP(check plz..^_^) and little slow(build codes every saving time).
But it's on Technical Preview. So we thought it's very amazing!!!


We didn't have a enough time for talking, so we took a rain check.
And then we made a promise having parties much more.
So, look forward activity of Dartlang Korea. please!!

Forever Dart!!!




[Happy Hour] 4월 28일 후기

안녕하세요!!


어제 다행히 Happy Hour Korea를 마무리 하였습니다!
수원 안드로이드 해커톤과 일정도 겹치고, 날씨도 너무 좋고 그래서 아쉽게도 많은 분들이 참석을 못했었는데요.











마...망하는 줄 알았따요..









하지만, 솓아날 구멍이 있었습니다!!
GDG 수원 분들과 합류를 하기로 결정!



Dartlang Korea의 7인의 권위자가 탄생 되었습니다!!!


머찌다아~(부끄러워서 작게)







해커톤은 여러 명이 참여해서 서로 격려 하면서 진행 하는 재미가 있기 때문에..
(.......사실 말은 격려지만...실제로는 서로 눈치 봐가면서 서로 막 열심히 하게 되죠!!!  )



Dartlang 에서는 4가지 프로젝트가 진행 되었는데요.
  • Dart를 이용한 각종 서버 및 console
    • Http Web server / Chatting Server를 이용해서 서버를 구현하셨습니다.
    • 그리고, shell 상에서 Dart명령어를 받아볼 수 있는 입력기도 간단히 구현하셨습니다.
    • 이로서 Node.js가 할 수 있는 사항을 Dart 에서도 할 수 있다는 것을 알 수 있었습니다.
  • Simple Piano
    • 키보드 입력을 이용한 Piano 제작!!
    • 나중에 소리도 날 수 있으면 좋을거 같아요!!
  • Dart Complete
    • 웹상에서 Dart 코드를 입력하면, 자동완성 시켜주는 툴입니다.
    • Dartlang.org의 Dartboard에 채택되면 상당히 좋을 듯 합니다.
  • fxPresenti.dart
    • Dart로 제작한 웹 프리젠테이션 툴
    • 이제 Dart 관련 프리젠테이션은.....음..완성도가 아직은...
    • Fork 해주세요!!
적은 인원으로 많은 프로젝트가 진행 되었죠?!
참여하신 분들께서도 생각보다 쉽게 익힐 수 있었다고 말씀하셨어요.

다만 Document가 좀 안 좋고, Editor가 느리고...XP에서 돌지 않는 등....
약간의 문제가 있긴 하지만..
아직 Technical Preview 상황을 고려해 볼 때 상당히 긍정적으로 볼 수 있을 듯 합니다.


저희 끼리 트로피도 받으면서 자축하고, 많은 의견을 나누진 못했지만..
앞으로 더 재밌게 활동 할 수 있을 듯 합니다.

앞으로도 Dartlang Korea는 모임을 가질 예정이예요!!
많은 관심 가져주시고. 부끄러워 하지 말고 함께해요!!



















췟!! 진짜 망하는 줄 알았땅께!!
다음엔 더 재밌는거 준비할끼다!!


2012년 4월 21일 토요일

[fxPresenti] 프로젝트를 시작합니다!!


작성 : Songhun Kim 

저는 문득 생각했습니다.
Dartlang.org 의 몇 가지 Web Presentations은 왜 Dart로 안짜져있는 것일까?

그래서!! Dart로도 할 수 있다! 이걸 난 믿어!


      아이빌리브!

그래서 시작했습니다.
fxPresenti
네. 저 f(x)팬입니다.

V0.1 까지의 전 과정을 여러분께 공개를 하고,
Happy Hour의 소개를 이 것으로 선 보이도록 하겠습니다!!(공약인가요. 무리수 던져 봅니다)

그리고, Happy Hour에서 저와 팀을 이루실 분 모집합니다!!
목표는 완성도와 알파 버전으로 변경 하고, 예제 다듬고, 매뉴얼 만들기 입니다.(V0.2)
2분!!!

근데.. 나랑 팀 먹으면 상은 못 타..
 응?


자 오늘은!!
개발 환경을 설정하는 것을 공유하도록 하겠습니다!!
제 개발환경은 OSX + Dart Editor build 6722 + GitHub for Mac 으로 진행 할 예정입니다.

우선 github.com 에서 우선 Public으로 열구요.
GitHub for Mac 으로 workspace에 clone을 합니다.


그 다음에 Dart Editor를 통해서, 저의 경우에는 샘플로 우선은 파일 1개로만 진해을 할 예정입니다. 아마도 이후에 최적화 하면서 나뉠 수도 있겠지만, 우선은 1개로 하겠습니다.


우선 Sample.html / sample.css 2개로 표현을 할 예정이고, fxPresenti.dart 라이브러리를 진행 할 예정입니다. 아직 저도 초보이기 때문에 main이 이 파일 안에 같이 포함되었습니다.

그 다음 Sample.html/ sample.css의 구조는 Fathom 프로젝트의 후원(?!)을 받았습니다!

그럼 한 번 Run!!!

정상적으로 Dartrium이 실행 되는 것을 보셨죠?
이것이 Hello world!에 버금가는 예제!!

이 프로젝트가 얼마나 완성이 되어서 Happy Hour에서 보여드릴 수 있을지 계속 지켜봐주세요~
그리고 여러분도 따라하면서 28일을 준비해보세요!!

그럼!!
Happy Hacking!!




2012년 4월 20일 금요일

[News] Dart Editor Build 6722



새로운 Dart Editor가 나왔어요. Build 6722 입니다.
다음과 같은 개선이 있다고 합니다. 

  • Rename Method와 Filed(진행중)
  • "Run"버튼을 눌렀을 시 마지막 실행 된 어플리케이션이 실행 됩니다.
  • 현재 선택의 실행을 위한 새로운 "Run" 컨텍스트 메뉴가 생겼습니다.
  • 디버깅시에 in/over/out을 실행하는 단축키 제공합니다.
  • "저장시 필요 없는 공백제거" 기능 설정을 제공합니다.
  • 자동 UI 테스트는 수정 중 입니다.
  • 코드 자동완성 과 분석 복원이 개선되었습니다.

Dart Editor tutorial 에서 다운로드 받으세요~

[Happy Hour] 어떤 프로젝트 하실지 고민해보셨어요?


안녕하세요!!

이제 1주일 정도 Happy Hour가 남았네요!!
다들 무엇을 하실지 고민 좀 해보셨나요?
아직 막막 하실 것으로 생각이 드는데요.
(저도 물론.으으으으으으...)
Dart 팀 분들과 어떤 프로젝트가 나오면 좋을까에 대해서 상의를 해봤습니다.
그래서, 무엇을 해야 할지 모르시는 분들을 위해 다음과 같은 의견들을 모았습니다.

  • 게임 / 서비스
    • HTML5 Canvas를 이용한 간단한 게임 만들기
    • JSONP를 이용한 서비스 만들어보기
    • Web Audio API를 이용하여 만들어보기
    • WebGL을 이용하여 만들어 보기
    • Dart로 Mobile Web 만들어 보기
    • Client와 Server간에 코드를 공유 할 수 있는 쿨한 프로젝트 만들어보기
    • Isolate기능을 이용하는 인공지능적인 게임들.
      • 오목
  • 라이브러리 제작
    • 즐겨 사용하는 Javascript 나 Java Library 를 Dart로 변환해보기
    • 암호화 라이브러리만들어 보기
    • 간단한 Web Server Framework 만들어 보기
    • Redis 혹은 Riak Database의 드라이버 만들어 보기
  • 문서관련
    • 라이브러리 문서에서 잘 못 된 점 수정하기
    • Dart VM과 V8과 Java들과 성능 벤치 마크 해보기
    • Dart 시작하는 분들을 위한 문서 작성하기
    • Dart와 Java를 비교해보는 문서 만들기
    • html5rocks.com 에 있는 문서와 샘플들을 Dart로 변경 해보기

위의 내용을 보시면 아시겠지만, 굳이 Dart 언어 결과물이 아니더라도 많은 것을 할 수 있습니다!!
개인적으로는 앞으로 저희에게 필요한 것이 무엇일 까에 대해서 고민 해봤습니다.
  • Dart 한글화 프로젝트
    • Dart 홈페이지 만들어보기
    • Dart 문서 한글화 하기
  • Presentation Tools
여러분들만의 자유로운 상상들 많이 해보시면 좋을 것 같아요!!
그럼!! 즐거운 Hack!!

2012년 4월 19일 목요일

[DevFextX Korea] 가장 쿨한 개발자들의 축제


"가장 쿨한 개발자들의 축제"

구글 관련 개발자 모임 연합이 주최하고 구글 코리아가 공식 후원하는 5월의 환상적인 축제에 개발자 여러분을 초대합니다.

일시: 2012년 5월 12일 오전 11시 ~ 오후 6시


행사는 무료로 진행되며, 참가자 전원에게는 식사와 기념품이 제공됩니다.

행사와 관련된 최신 정보는 이 사이트와 아래 SNS를 참고하세요~



후원: Google Korea




참~ 좋은 행사인데..
뭐라고 말로 설명하긴 그렇고....
일단 한 번 오셔봐~ :D

[Happy Hour] 스티커가 왔네요!!



말이 필요 없죠?

쵝 to the 오





2012년 4월 13일 금요일

[News] Dart Editor Build 6442




Dart Editor 의 Build 6442가 나왔습니다.(2012.04.12)
개인적으론 HTML/CSS 에디터 와 CSS바로 반영 되는 부분이 가장 기대 되네요.^_^
한 번 설치 해보세요!!
자세한 변경된 사항은 다음과 같습니다. 

  • 기본적으로 Debug모드가 켜집니다. 
  • 새로운 HTML/CSS 에디터의 초기 설계(진행 중) 
  • CSS를 수정함과 동시에 바로 새로고침없이도 Dartium에 바로 반영. 
  • 새로운 호출자 View 
  • Debugging 부분 점검 및 Dartium 안정성이 향상. 
  • 로컬 변수의 명칭 수정(진행 중) 
  • 파서 복구와 코드 완성 향상 
  • Dartdoc Hover Text 향상



2012년 4월 12일 목요일

[팁] Dart 로 작성하고 공유 하세요!!



안녕하세요.^_^)/

Dart로 뭔가 작성해보고는 싶은데..
그렇게 뭘 길게 짜보기는 그렇고..
개발 환경은 어떻게 꾸며야 하는지 귀찮고..
그럴 때 어떻게 하면 좋을까요?

그럼 한번!!
DartBoard 에서 실행 해보세요!!

javascript 에서는 jsFiddle 이 있다면.
Dart는 DartBoard 가 있습니다.
간편하게 작성하고, 실행하고, 공유하세요!!

작성하고!
실행하고!
공유하고!

위의 그림에서 보면, 우측 상단에 공유 할 수 있는 링크가 생성 됩니다!!
이것을 바로 공유!! 
jsFiddle 부럽지 않네요.^_^

서로서로 팁은 Gist를 통해서도 공유 해볼 수 있을 듯 합니다!!

그럼 오늘도 즐거운 Dart!!

2012년 4월 11일 수요일

[긴급공지] Happy Hour Korea 일정변경


안녕하세요.

오늘은 좀 어려운 얘기를 드리게 되었습니다.
약간의 불찰로 인해, 행사가 21일에서 28일로 연기가 되는 상황이 벌어지고 말았습니다.
Android Hackathon과 겹치가 되서, 그 행사 준비 하시는 분들에게도 죄송한 마음이 생기네요.

혹시 21일이라 참석을 못하셨던 분들은 28일 스케쥴 확인 부탁드리며..
기존에 신청하셨던 분들도 28일 스케쥴 확인 부탁드리겠습니다.

다시 한 번 행사 진행의 미숙함에 사과 드리며..
더 알찬 행사 준비하도록 하겠습니다.

감사합니다!!

2012년 4월 9일 월요일

Happy Hour 준비 방향?!

안녕하세요.^_^

하루하루 일정이 다가옴에 따라 저도 입이 바짝바짝 말라가네요.
근래에는 야근도 약간 잦아져서, 준비할 수 있는 시간이 상당히 모자라지만!!
나름 열심히 해보고 있습니다. 그래서 준비한 Hackathon준비 시간!!!
Hackathon 준비 기간에 조금씩 익혀 나가 봅시다!!

오늘 상당히 좋은 링크를 얻었습니다. (Thanks to Kay Kim(김기웅))
제목이 무려!!

"Hackathon이 실패하지 않기 위한 10가지 전문가팁!" 입니다.


오!! 전문가님 눈에서 빛이나십니다.(저희 팀 유행어입니다.)
네!! 행사를 준비하고 있는 저에게 상당히 도움이 되는 글입니다!!
준비하는 저에게도 도움이 되지만, 참가 하시는 분들에게도 상당히 도움이 될 듯 하여 공유 합니다!! 
그럼! 간략하게 요약 들어 갑니다!(Kay님의 제목 번역 + 제 맘대로 해석)


1. 파워포인트 금지. 절대. (No Powerpoint. Ever.)
재미 없는 파워포인트는 안뇽!! 우리는 해커니깐!! 그럼..교육은 어쩔까나..

2. 내향적인 사람들을 위한 아이스브레이킹. (Icebreaking for Introverts.)
평소에 만나기 어려웠던 사람들의 모임이니 만큼!! 우리 즐겁게 협업해볼 수 있는 기회를 가지도록 하죠!! 여기서 안면 트고, 나중에 협업 도구로 더욱 더 즐겁게!!

3. 해카쏜은 문화를 반영한다. (Your Hackathon is a Reflection of your Culture.)
서로 다른 환경에서 개발해왔던 분들이죠? 서로가 개발하는 모습을 보면서 고유의 생각과 방법들을 더 표현 할 수 있는 기회가 있으면 좋겠어요!!

4. 친한 회사들과 함께 개최하라. (Co-organize with kindred companies)
N모사와 G모사....여러분.. Dart로 하..한번만 조합해보실라우?

5. 원활한 인터넷(Plentiful Powerstrips and Pipe)
이 번엔 참여자가 인터넷 문제를 발생 시킬 만큼 많지는 않을 것으로 생각 합니다. 하지만, 아무리 잘 준비해도 네트워크 문제는 항상 발생 하더군요..혹시 모르니 개인 Hotspot을 꼭 준비 해주세요..^_^;;

6. 가능한 규칙은 적게. 그러나 지킬 것은 지켜라. (Have as few rules as possible – but enforce the ones you do.)
이 행사는 저희가 스스로 만들어가는 행사입니다. 서로 많은 의견을 전달하여 모두가 만족할 수 있는 룰을 만들었으면 좋겠어요!!

7. 해카쏜에서 흔히 보는 실수들. (The Most Common Hackathon Faux Pas We See)
기존에 있던 것이던지, 회사에서 하던걸 들고와서 고치고 하는 것을 하지 말라네요.. 개발을 즐기는 목적이 아니라 업무의 연장으로 하지 말라는 것 같네요. 역시 자기가 정말 해보고 싶은걸 해야 하겠죠?



8. 사업계획서 보다는 과학경시대회처럼 만들라. (More Science Fair, Less Business Plan Competition.)
아이디어의 향연(?)이 되었으면 좋겠습니다. 굳이 업무에 Dart를 꼭 하겠어 보다는, Dart로 뭘 만들면 재밌을까? 라는 생각을 많이 했으면 좋겠습니다!! 완성품 보다는 아이디어!!

9. 해커의 안식처를 만들라. (Create a Hacker Haven.)
후원사 G사에서 잘 해주시리라 믿습니다!! ㅋ
좋은 회사니깐~
먹을 것도 많이 주시고..상품도 많이 주실거고..그죠?
그런거죠?
막 땡겨주실거죠? 그죠?


10. 해카쏜은 남학생 사교 클럽(fraternity) 파티가 아니다. (Your Hackathon is not a Frat Party)

술은 나중에 뒷풀이에서!!(토요일이라 할 까나?)

아 고민 해야 할 것이 너무 많네요..
그래도!! 우리들의 행사니깐!!
꼭 참석 해주시고.. 이건 Hackathon 정신에 위배되자나!!! 이 바보 운영진 이렇게 고치라고!!
준비기간에도 진행 중에도 많이 간섭 해주세요!!

그럼!! 또 봐요!!











쳇!! 내 계획 따위!!!



2012년 4월 6일 금요일

Happy Hour 즐기는 방법?!


여러분!!!
혹시 이러고 있지 않으신가요?!!


제가 처음  Hackathon 같은 행사를 접했을 때는 저랬습니다. :)
그냥 막연한 생각에 뭔가 강의를 듣는건가? 하고 신청했는데..
난데없이 "뭐 만드실 거예요?" 라고 물어보는 순간...멘붕.

그럼 제가 생각하는 Happy Hour(Dart Hackathon) 즐기기 방법을 소개하고자 합니다!!

Hackathon이 무엇일까요?
원래의 Hackathon은 개발자와 각 분야의 사람들이 협업을 하여 짧은 시간에 집중적으로 프로젝트를 진행하는 행사입니다. 그리고, 교육과 교류의 한 방법으로도 활용 되기도 합니다.


우리 같이 즐겨요!!

개인적으로 방향을 잡고 있는 이번 Happy Hour 는 Enjoy Dart!! 입니다.
개발자에게도 "Dart할래?" 라고 물어보면.. "오~ 어디 좋은 Pub이라도 생겼어?" 라고 물어 봅니다. Orz..
그래서, 이번 행사에서는 Dart가 정말 재밌는 언어이고, 앞으로도 발전될 수 있는 언어임을 같이 공감하는 자리가 되고, 널리 알릴 수 있는 기회가 되길 하는 생각이 더 큽니다.^_^

저 하나도 몰라요!!! 뭘 알아야 해보지 않을까요?

원래 Happy Hour에는 강의가 없습니다. 근데 Dart를 잘 모르는(심지어 저도)상황에서 갑자기 뭔가 시작한다는 건 상당히 부담스럽죠?
그래서, 최대한 초기 1~2시간 정도 Dart집중 교육 시간을 가질까 합니다. 아직 협의 중 단계긴 하지만 많은 지식 공유할 수 있도록 준비 하겠습니다!!


개인인데요. 외로워요!

개인으로 오세요!! 그리고, 다른 개인 분들과 함께 같이 만들어보세요!!
사실 Dart라는 언어를 인지 하고 있는 있는 개발자를 만나는 것도 쉽지 않은 기회입니다.(T_T안습이네요..크흑..)
저도 원래 낯가리는 성격이지만, 적극적으로 개인으로 오신 분들 즉석 미팅(?응?)을 주선해드리도록 하겠습니다!! 즉석 미팅을 원하시는 분은 정문에서 절 찾...(응?!)
혹은, 사용자 그룹에서도 팀원을 모집해 보세요!!
아직은 막 시작 하는 곳이라 서로 낯설고 하지만, 한 번 여러분야의 분들을 만나보세요!!

뭘 만들어야 할지 모르겠어요!!

괜찮습니다!! 그냥 오셔서 앉아계세요. 대신 상품이 없어요...



농담이구요!!!
제가 Dart 개발팀과 상의 해서 방향을 못 잡으시는 분들을 위해 개발 과제를 몇 가지 만들 예정입니다. 주제는 다음 주에 말씀드릴께요~ ^_^)/

Dart는 계속 발전 하고 있는 언어입니다. 즉, 이번 Happy Hour에 참석하시는 분들은 Dart의 발전에 상당한 영향을 끼치는 것이라고 생각 하시면 됩니다~ 이것저것 많이 만들어서 Dart 팀이 더 멋진 Dart를 만들도록 도와주는 멋진 여러분이 되는 것입니다!!

어떠신가요? 정말 참여하고 싶어지죠~!!
그럼 바로 신청하세요!! Go!Go!Go!

1. 가기 싫어.

2. 너 되게 불쌍해. 그래 내가 이번 한 번 참석해줄께..

젭알... 2222222222


협찬 : Line / 9Gag.com

[팁] Dart란 무엇인가요?

이 포스트는 다음 문서를 참고하여 작성 되었습니다.


Dart: An Introduction
Florian Loitsch, Riviera DEV,  

Dart는 Javascript와 비교 되지만, 새로운 만들어진 언어입니다
새로운 개발 도구를 가지고 있으며,  OpenSource 언어 입니다.


현재의 Javascript는 유연하며, 점진적 개발이 가능합니다.  그리고, 플랫폼에 국한되지 않고, 사용자의 PC에 설치 하지 않고도 쉽게 배포를 할 수 있습니다.
웹 환경의 급속한 발전과 혁신이 일어나며, 좀 더 많은 기능을 요구하는 시대가 다가오고 있습니다. 하지만, Javascript의 성능상 그 모든 것을 만족 하기 부족하다고 생각을 하였습니다.


그래서, Dart 팀은 다음과 같은 목표를 가지고 새로운 언어를 제작하게 됩니다.

  • 유연한 구조를 가지고 있는 구조화 언어여야 한다.
  • 개발자들에게 친근하고 자연스러운 언어여야 한다.
  • 웹으로 접근하는 장비들을 모두 지원할 수 있어야 한다.
  • 많이 사용 되는 모던 브라우저들을 지원할 수 있는 도구가 필요하다.

그럼 Dart는 어떤 특성을 가지고 있을까요?
당연하게도 OOP언어 이며, Interface를 가진 단일 상속 되는 Class를 지닙니다.
정적 범위 지정이 가능 하고, Static 타입(Optional)을 가집니다. 또한, 씽글쓰레드 방식입니다.

중요한 특징 중에 Isolates라는 것이 있습니다. 이는 동시에 여러 프로세스를 동작 시킬 수 있게 하는 Dart의 방법입니다.
위의 그림에서 보는 바와 같이 독립된 isolates들은 서로 메세지를 주고 받으므로서, 독립적면서도 동시에 실행을 할 수 있어 대용량 처리가 가능하게 됩니다. 이 isolates 기능을 통해, Dart는 single-thread 언어임에도 불구하고 multi-thread의 특징을 가질 수도 있습니다.

그러면, Dart는 어떤 방식으로 실행이 될까요?
많은 분들이 가장 궁금해 하면서도 물어보시는 사항입니다.
다음 그림을 보시면 이해가 쉬울 것이라 생각 되네요.
Source 가 Dart VM이 있는 브라우저(현재는 Chrome / Chromium)에서는 Dart Source 가 바로 실행이 됩니다. 하지만 지원하지 않는 브라우저를 위해서는 DartC를 통해 Javascript파일을 생성하여 실행이 가능 합니다.
이 다음에 나오는 질문들은 바로 이것입니다.
"얼마나 빠른데? 그렇게 되면 느린거 아냐?"


DartC의 결과물을 보게 되면, 몇 상황을 빼고 꽤 좋은 성능을 보이고 있다는 것을 알 수 있습니다. (현재 DartC는 Frog 로 대체되어 가는 것으로 보입니다.//틀렸으면 말해주세요.)

또한, Dart Source자체는 Snapshot기능을 이용하면, Source가 Cache가 되어 1회 실행 된 어플리케이션의 경우, 실행 시점이 극적으로 빨라지게 됩니다. 즉, 큰 어플리케이션을 작성을 하여도 1회를 제외한 나머지 경우에는 상당한 퍼포먼스를 보일 수 있다는 뜻입니다.

위의 PPT에서 중요하다고 생각되는 포인트만 정리를 해보았습니다.
잠깐 읽어보시면 아시겠지만, 상당히 속도에 맞춰서 큰 어플리케이션을 제작하는데 좋은 언어임을 알 수 있습니다. 
물론 아직은 발전 하고 있는 단계기 때문에, 바로 실무에서 적용하지 못할 수 있습니다. 하지만, 점차 동적인 화면이 많아져가는 웹에서 더 좋은 퍼포먼스를내기 위해  점진적으로 Dart를 사용 해보시는 것이 어떨까요?

Dart를 재밌게 즐겨보기 바랍니다!!