Heroku에서 MongoDB도 쓸 수 있군요. 16메가까지 무료로 제공되는 것 같아요. 국내에서 이런 비슷한 서비스가 있다면 바로 썼을텐데...ㅠㅠ 확실히 heroku도 google app engine처럼 외국사이트라서 그런지 사이트가 느리긴 하네요...

http://addons.heroku.com/
addon목록들인데, 보면 MySQL도 있고, 그 외에 다양한 db도 제공하는 것 같아요. 
근데, MongoHQ와 MongoLab 두가지가 있던데, MongoHQ로 일단 해봤습니다. MongoLab은 일단 나중에.....(뭔지도 모르겠고....같은 몽고디비인지....)

아! 그리고 Heroku에서 이제 루비설치하고 gem으로 heroku설치하는 삽질을 안하도록 직접 exe파일의 설치파일을 제공하더라구요. 이 문서를 보고 잘 설치하시면 됩니다.
http://devcenter.heroku.com/articles/quickstart 
그리고 여기 devcenter의 메뉴얼이 너무 잘 작성이 되어있어서 그것만 보셔도 충분히 할 수 있을 것 같습니다.

간단하게 몽고디비와 socket.io를 이용해서 트위터형태에 예제를 만들어봤습니다. 그냥 글을 쓰면 상대방도 같이 접속해 있으면 글이 새로 추가되는 초간단 예제입니다.


1.  Node.js app 생성 및 heroku git에 push

일단 app생성하고 push하는 것은 여기 메뉴얼대로 다 하면 됩니다.
http://devcenter.heroku.com/articles/node-js 


2. 해당 앱에 Add on추가하기

위에 대로 해서 앱을 하나 만드셨다면 앱에 mongohq를 추가하셔야 쓸 수 있습니다. 
http://addons.heroku.com/mongohq 여기서 추가하거나 heroku addons:add mongohq:free라고 콘솔에서 때리시거나 하시면 추가가 됩니다. 추가되면 바로 쓸 수 있습니다. 여기에서 자체적으로 데이터 관리 사이트를 제공합니다. 
접속하는 방법은 heroku.com에서 My App에서 해당앱에 Resource를 클릭하고, 맨 아래 installed addons에서 MongoHQ클릭하면 관리사이트가 나옵니다.


3. Node.js와 연동하기 위한 mongoskin

연동하는 게 여러종류가 있는데, 저는 mongoskin을 사용했습니다. 

npm install mongoskin


사용법은 간단합니다.
 

var mongoUrl = process.env.MONGOHQ_URL || "mongodb://mudchobo:1234@127.0.0.1:27017/mudchobo?auto_reconnect"; 

var db = require("mongoskin").db(mongoUrl);
db.collection("pushboard"); // 컬렉션 가져오기
db.collection("pushboard").find(); // 목록가져오기
db.collection("pushboard").insert({content:"내용"}); 


요런식으로 쓰면 됩니다. heroku에서 사용하는 url은 환경변수로 지정되어있습니다. 그냥 저 변수 쓰면 접속됩니다. heroku에 올리기 전에는 로컬에서 할것이기에 로컬에 깔아놓고 테스트하라고 ||로 처리했습니다.


4. 초간단 푸쉬보드예제!

server쪽!
var PREFIX = "/pushboard";

exports.init = function(app, db, io){
    var pb = db.collection("pushboard");
   
    // 메인화면
    app.get(PREFIX, function(req, res){
        res.render("." + PREFIX + "/index", {
            title:"푸쉬보드!",
            addScript:"aa"
        });
    });
   
    // 리스트가져오기
    app.get(PREFIX + "/getList", function(req, res){
        var list = [];
        db.collection("pushboard").find().sort({_id:0}).limit(100).toArray(function(err, content){
            if (err){
                res.end();
            } else {
                res.json({list:content});
            }
        });
    });
   
    // 글쓰기
    app.post(PREFIX + "/write", function(req, res){
        pb.insert({content:req.body.content});
        res.end();
    });
   
    // 푸쉬소켓
    io.of(PREFIX + "/push").on("connection", function(socket){
        console.log("푸쉬소켓 연결!");
        socket.on("newContent", function(data){
            console.log("newContent = " + data);
            socket.emit("newContent", data);
            socket.broadcast.emit("newContent", data);
        });
        socket.on("disconnect", function(){
        });
    });
}

client쪽!
var socket;
$(document).ready(function(){
    //$.floatingMessage("로딩 완료!", {time:3000});
    // 글쓰기 클릭 시
    $("#btnWrite").click(function(){
        var val = $("#taContent").val();
        if (val == ""){
            alert("글을 입력하세요.");
            return;
        }
        $.post("write", {content:val}, function(){
            socket.emit("newContent", val);
        });
        $("#taContent").val("");
    });
   
    // 최초 글 가져오기
    getList();
   
    // 푸쉬서버연결
    socket = io.connect("/pushboard/push").on("newContent", function(data){
        console.log("newcontent! = " + data);
        $("#lvContent").prepend("<li>" + data + "</li>").listview("refresh");
        //$.floatingMessage("새로운 글이 추가되었습니다.", {time:3000});
    });
});

function getList(){
    $.get("getList", {}, function(data){
        var html = "";
        for (var i=0; i<data.list.length; i++){
            html += "<li>" + data.list[i].content + "</li>";
        }
        $("#lvContent").html(html).listview("refresh");
    });
}

초간단 예제라 설명은 그냥 생략하고 싶네요...픽온돋아서.....소스는 github에!
https://github.com/mudchobo/SampleForNodeJS

heroku에도 올렸습니다. 서버는 뭐 언제 내릴지는 모르겠지만, 일단 올려봅니다.
http://samplefornodejs.herokuapp.com/pushboard/

 
Posted by 머드초보
,
 
현재 폰에서 직접 받는 torrent프로그램은 리소스를 너무 많이 잡아먹어서 폰이 완전 느려지는 단점이 있는데요. 이건 remote를 통해 자신의 켜져있는 PC를 통해서 하는 것이고 나중에 다 받아진 파일을 그 PC로부터 받기만 하면 되는 재미있는 방식을 사용합니다. 앞으로 모바일 인터넷속도와 폰속도만 빨라진다면 직접 받겠지만, 아직까지는 이것을 이용하는 게 더 편할 듯 싶네요 ㅇㅇ

검색해보다가 신기한 점을 발견했는데, uTorrent(아오 그냥 u라고 쓸게요-_- 원래는 뮤μ인데...왜 이름을 이딴식으로 지었지-_-)와 bitTorrent가 있는데, 보면 모양도 똑같이 생겼고, 둘 다 똑같이 Remote프로그램이 있습니다. 게다가 같은 회사에서 만든 것 같은데, 두 개의 Remote 계정은 연결되지 않습니다. 둘 다 따로 노네요.
검색해보니 2006년도 쯤에 BitTorrent가 uTorrent를 인수를 했네요...근데, 두개의 클라이언트를 같이 키우다니...-_-
암튼 서론이 길었네요...일단 둘 다 비슷하니, uTorrent로 해볼게요.

1. 일단 torrent프로그램 uTorrent 다운

http://www.utorrent.com/intl/ko/ 
plus버전도 있는데, 유료네요. 어떤 장점이 있나 봤더니 모바일에서 손쉽게 볼 수 있도록 인코딩을 해주는 게 있는 것 같네요. 맞나...-_- 그리고 바이러스로 부터 보호해주고, 어디서든 접속할 수 있는 안전한 파일서버를 만들어 주는 것 같네요.


2. Remote 계정 설정

아이디 생성과 비밀번호 넣음과 동시에 아이디가 없는 것이면 계정을 생성해버립니다. 신기한 계정 정책...ㄷㄷ 
uTorrent에서 옵션 -> 설정 -> 원격으로 가시면 이 창이 나오는데, 체크하고 이름, 암호 입력하고 질문에 대답하면 계정설정이 됩니다. 
이상한 점을 발견했는데, 질문을 한글로 입력하면 잘 안되더라구요. 영어로 입력하세요.



3. Android에서 uTorrent Remote 설치

https://market.android.com/details?id=com.utorrent.web 
설치하고 접속하면 이름, 비번 치는 거 나오는데, 위에서 설정한 것 그대로 치면 됩니다. 
웹에서 토렌트를 추가하거나 모바일에서도 추가할 수 있는데, 어디서 추가를 하든 해당 원격PC에서 다운을 받게 됩니다.

 
4. 폰으로 다운 받기

기본적으로 폰으로 다운 받는 기능을 제공하는데요. 파일을 받으려고 하면 받기 시작하는데, 속도가 그지같이 느립니다-_- 느린 건 둘째치고, 파일 다운로드를 Android Service에서 돌리는 것 같지 않고, 그냥 Acitivity안에서 다운로드를 시도하는 것 같습니다. 뒤로가기 하면 다 받아지지도 않았는데, 받다가 끊어졌는지 다 받은 것 처럼 나옵니다. 이것만 개선하면 정말 좋을 듯 한데...
알ftp로 서버를 만들고, Android ftp프로그램으로 접속해서 받는 것이 그나마 나을 것 같긴한데, 공유기쓰는 사람들은 포트포워딩이나 DMZ설정을 통해서 해당 PC에 포트를 열어야 하구요. 물론 방화벽까지 ㅇㅇ IP가 바뀔 수도 있고, 이래저래 문제가 많네요.
그래도 FTP방식이 그나마 빠르네요.

PS. 결론은....이거 폰으로 전송하다가 시간 다가겠.......좀 참았다가 집에가서 보든지-_- 아님 좀 더 좋은 모바일을 기대하는 수밖에! 
 
Posted by 머드초보
,
 
저번에 해커톤에 가서 코딩하고 온 할리갈리 게임입니다.
jQuery Mobile와 Java와 html5의 Cavans의 짬뽕 조화로.....이루어져있습니다....ㄷㄷ
Client는 Cavans로 만들었는데, IE계열에서 전혀 동작하지 않네요. IE9에서도 안되네요ㅠ 그리고 Android계열 브라우저에도 잘 안되는 듯 합니다. 되는 곳은 iPhone계열 밖에 없네요ㅠ 아이폰이랑은 같이 게임을 하실 수 있을겁니다^^
뭐 그냥 ChannelAPI 공부하는데에 전혀 무리 없이 보실 수 있을 것 같습니다.
물론 공식사이트에 있는 Tic-Tac-Toc 예제가 더 심플하고 보기 쉬운 예제입니다ㅠ 
http://code.google.com/p/java-channel-tic-tac-toe/

 그래도 그 외에 방 개념을 넣어서 만든거라 한서버당 여러 게임을 즐길 수 있어요!
근데 몰랐는데, 문제는 무료 계정을 사용할 경우 Resource에 한계가 있습니다. 근데, 이 ChannelAPI의 Channel Created 리소스는 너무 쪼잔하게 줍니다. 하루에 100개가 제한입니다. 결국은 접속자 100명이 들어오면 끝나는 것이죠....ㄷㄷ 페이지당 채널하나니 뭐 그냥 몇명이 게임하면 끝나는 것이죠 ㅇㅇ

 그래서 다음에는 Node.js로 만들어서 무료호스팅 하는 곳에 올려볼 생각입니다!
스샷

일단 원리는 간단합니다.

1. 해당 게임페이지에 접속 시 채널생성.

채널을 생성하고 Javascript에서 Open요청을 하면 /_ah/channel/connected 요청이 호출됩니다. 여기서 입장을 시키면 됩니다. 서버에 접속되었다고 객체의 유저목록에 추가하면 됩ㄴ니다. 그 뒤에 이 사용자가 끊어질 경우 /_ah/channel/disconnected 요청이 호출되므로 그때 유저목록에서 삭제해주면 되죠!

2. 해당 방에 객체를 만들어 ClientId저장

ClientId를 저장해두어야 나중에 해당 방에 있는 유저들에게만 데이터를 보낼 때 해당 ClientId로 보낼 수 있습니다. 

쓰다보니 별거없네... 암튼 이런식으로 되는거라......
 
소스는 여기에
https://github.com/mudchobo/HalliGalliForAppEngine 

올려놓은 사이트는 여기에
http://halligalligame.appspot.com/ 

PS. 만들면서 느끼는 게 Javascript로 타이머 하나 걸면 무조건 이기겠더라구요... 웹게임에 대한 어뷰저는 어떻게 처리를 해야할 지 고민이 크네요... 
 
Posted by 머드초보
,
 
휴~ 후기가 늦었네... 어제 힘든 코딩을 마치고 집에서 무한도전 감상하느라 바로 기절하고 오늘은 추운 날씨에 야구를 하고나니 어느새 주말이 다가버렸네요...ㅠㅠ

저는 아이디어도 별로 괜춘하지 않았는데, 뽑아주셔서 너무 감사했습니다! 회사의 반복된 일상속에 찌들어있던 저에게 다시 코딩에 대한 의욕을 주셔서 감사했습니다. 앞으로 더욱 더 열심히 살아야겠다는 생각이 계속 들게하네요^^

12월 2일날은 저녁에 간단한 OT(?)개념으로 사용자들이 개발할 것을 PT하는 자리를 가졌습니다.
근데, 사람들이 준비해온 것을 보면 다들 엄청난 것을 많이 기획해오셨더라구요. 간단히 구현할 수 있는 것들도 많았는데, 좀 구현하기 힘들어보였던 것도 많이 있었네요. 그래도 참 재미있는 아이디어가 많이 있었습니다. 나중에 제가 사업 아이템으로 한번 써봐야.....(사실 참가 목적은 사업 아이템 스틸...은 농담입니다.....ㅠㅠ)


3일날 바로 오자마자 코딩을 시작했습니다. 친절하게 구글 직원분들이 셋팅을 도와주셔서 무사히 셋팅을 완료 했습니다~!
그리고 오신 모든 분들이 코딩을 시작했습니다. 저도 코딩을~! 사실 저는 서버단을 어느정도만들어와서 html5의 Canvas쪽으로 js클라이언트를 주로 개발했습니다. Canvas에 대해서는 들어보기만 하고 뭐 거의 써보질 않아서 요번 기회에 한번 써봤습니다. 그냥 간단히 이미지랑 텍스트만 출력하는 게 다여서...(뷰가 사실 그게 다임...ㅠㅠ) 다음에 시간나면 이것저것 많이 해봐야겠네요~^^

저녁 5시30분이 되어서 발표시간이 다가왔습니다.
역시 예상대로 많은 분들이 구현을 많이 못했더라구요. 
 

괜춘한 PT있으면 찍으려고 했는데, 첫번째 것만 찍고 하나도 못찍었네요....ㅠㅠ
해커톤 행사하면서 프리젠테이션파일을 공개해도 될런지 모르겠네요... 좋은 내용이 많았던 것 같은데^^ 유튜브링크도 올려도 될랑가 모르겠네요... 문제가 된다면 삭제하겠습니다~

발표하면서 기억에 남는 작품을 좀 뽑자면......

Tango : 사용자들을 모아서 음악을 만드는 프로그램을 만드려고 했던 것 같아요. 사용자가 접속을 하면 음악이 바뀌고 뭐 그런 내용이였던 것 같아요. 뭔가 사용자가 접속할 때마다 서버세계(?)가 달라지는 게 저에게는 신기해보였네요^^


Beat & Brain : 이거 잼있었어요~^^ 사칙연산을 하는 간단한 게임인데, 거기에 리듬감을 넣어서 쿵쿵딱~ 하는 사이에 풀어야해요~ 이 분은 문화상품권을 가지고 와서 게임을 해서 랭킹이 1, 2, 3등 하신 분들께 나눠주고 가셨어요~ 저도 열심히 해서 3등으로....받았습니다~ 좋은데 쓸게요 핫핫^^


크롬용 ssh client : 이건 어떻게 만들었는지 꽤 궁금하네요. 보니까 라이브러리가 있는 것 같은데... 암튼 이것만 있으면 서버에 코딩은 vi로 하고, 크롬북만 있어도 다할 수 있는 세상이 곧 오겠네요^^ (구글 직원 말로는 이런걸 이미 쓰고 있다고 하네요~ 나도 알아봐야겠다!)


Social Curator : 소셜 커머스를 모아서 보여주는 프로그램이였던 것 같은데, 이런거는 다른 사이트에서도 많이 있었던 것 같네요. 근데 제가 인상깊게 본 것은 타일형태로 보여주는 것과 연관검색어로 다시 검색해서 보여줬던 것이 좀 인상깊었네요~ 타일형태로 보여줘서 많이 팔린 것은 크게 보여주고 그래서 사용자의 선택을 쉽게 하는 좋은 아이디어였던 것 같아요!



발표가 다 끝나고 구글직원분과 비트&브레인 개발하신 분들과 얘기를 나눴는데, 매우 좋은 정보를 많이 알고 가서 좋았던 것 같아요.
비트&브레인 개발하신 분은 혼자서 사업자 등록을 하고 아이폰과 안드로이드 개발을 모두 하고 계신다고 하네요. 저보다 어리신데, 매우 열정적인 모습을 본받아야할 것 같아요.
그 외에 구글직원분에게 구글에 대해서 참 재미있는 얘기를 많이 들어서 좋았던 것 같아요~ 

사람들의 생각은 다 틀린 것 같아요. 그래서 다양한 아이디어와 구현 프로토타입을 보는 것만으로도 매우 즐거운 행사였던 것 같습니다.

PS 마지막으로 가장 맘에 들었던 미니 스피커!!!ㅠㅠ

앞으로도 구글에서 개발자들을 위한 행사를 많이 했으면 좋겠네요. 아 그리고, NHN에선 Deview, Daum에선 DevOn, KTH에선 H3라는 행사를 올해 진행했었지요. 이보다 훨씬 좋은 개발기술 및 SDK를 가지고 있는 Google이 가만 있을 순 없지 않나요? 외국에서 Google IO를 하듯이 국내에서도 이런 컨퍼런스를 한번 가지고, 구글 기술을 소개할 수 있는 자리를 마련했으면 좋겠습니다!^^ 
 
Posted by 머드초보
,
 
연말에 좋은 컨퍼런스가 참 많네요~ 얼마전에 갔다온 Daum DevOn도 그렇고, 요번에 KTH에서 한 H3컨퍼런스도 그렇고~ 이런 곳에 한번 갔다오고 나면 난 진짜 대충 살았구나를 느끼고 공부에 대한 의욕을 높여주는 좋은 계기가 되는 것 같아요. 좋아요!

 근데 다음에는 역에서 나오자마자 있는 공간에서 하는 게 좋을 것 같아요. 신대방삼거리역에서 나오자마자 길치인 저는 공황장애가 발생하여 어쩔 줄 몰랐...ㅠㅠ 암튼 개발자처럼 생기신 분들을 따라가서 동작05번 타고 잘 내려서 겨우 도착했네요!

 들어가서 등록을 하니 에버랜드에서나 주는 팔찌를 주더라구요. 와....에버랜드 안간지 백만년 된 나를 위해서 이렇게 이런 팔찌를 만들어주다니....고맙네요.....ㅠ
 
들어가는 순간.....여기는 참 잠자기 좋은 장소다 라는 생각이 들정도로 푹신한 의자가 절 반기네요...실제로 몇몇 세션은 듣다가 졸았습니다ㅠ 화면에는 #H3 태그를 통해 트위터에 올라온 글들을 보여주는 프로그램이 돌아가고 있었네요~

아....참가 기념품 중에 책을 하나줬는데, 오늘 발표한 것들 발표에 대한 내용과 유용한 블로그글들을 책으로 인쇄해서 나눠줬네요. 유용하게 볼 것 같습니다.
블로그 글에는 제가 관심을 조금 가지는 MongoDB관련된 내용도 있어서 참 좋네요.
 

1. 하이브리드 앱의 미래, 앱스프레소 1.0

이것도 한 번 삽질해봐야할 과제네요. 예전에 Titanium Studio는 어느정도 해봤는데, 얘는 아직 어떤 건지 확인을 안해봤네요. PhoneGap과 함께 비교를 해봐야겠어요. 앞으로 모바일 시장이 안드로이드가 대세에 3중인 iOS와 Windows, 블랙베리가 될 것이라고 전망했네요.

일단 하이브리드 앱이라는 게 iOS와 Android 등의 멀티플랫폼 개발을 하나의 소스코드로 하겠다는 건데, 저는 예전부터 이런 것에 대해서 좀 부정적인 생각을 많이 가져왔습니다. Adobe AIR도 그렇구요. 개발방식이 틀려도 각각 만드는 것이 맞다고 생각하는 사람 중에 하나입니다! 앱의 자유도에 한계가 분명 올 것 같구요. 그리고 각각 플랫폼이 모두 같은 것이 아니어서 분명 이 플랫폼에서 필요한 기능이 있고 저 플랫폼에서 필요한 기능들이 있을 겁니다. 그런 면에서 좀 자유도가 분명 떨어질 것이라고 생각합니다. 물론 특별한 기능을 쓰지 않고 간단하고 평범한 앱이라면 이런 것을 쓰는 것이 더 좋을 수도 있죠. 각각 장단점은 있어 보이네요^^(내 잡설이 길어졌다-_-)

어쨌든, 하이브리드 앱은 개발을 html5를 통해서 하게 된다고 합니다. 그러면 하나의 코드로 카메라에도 접근하고 모바일로컬자원에도 접근하는 Device API라는 것을 호출하여 사용 되는 방식이랍니다. 현재 다양한 하이브리드 앱이 있는데, 이것도 앞으로 망쳐지지 않으려면 여러업체들의 파편화된 것에 대해 표준화가 필요하다고 합니다. 확실히 표준화그룹은 꼭 필요한 존재인 것 같습니다. 안그러면 개발자들이 힘들어지니까요ㅠㅠ 

그리고 앱스프레소 개발하게 된 계기가 진짜 "맛있는 집 찾다가 없어서 내가 차린 집"이라는 게 사실인가요? ㄷㄷ KTH쪽 사람들은 확실히 우리나라 최고의 웹기술을 가진 게 분명함!
그리고 오늘 1.0 정식버전이 릴리즈되었답니다. 그렇네요. 저번에는 RC4버전인가 그랬던 것 같은데^^
http://appspresso.com/ko/
 
앞으로 Guide, Tutorial, Sample Source 등을 많이 추가할 것이라고 합니다. 보면 이런 것이 잘 되어있는 제품이 많은 개발자를 확보할 수 있습니다. iOS쪽을 보면 이런 것이 정말 잘 되어있죠. 이것이 개발자를 모으는데 한 몫을 한 것 같습니다. 개발자 이외의 사람들도 손쉽게 접근을 했었으니까요^^

그리고 마지막에 Cloud Build라는 것을 얘기했는데, 이게 무슨 맥이 없는 사람들에게 iOS쪽을 대신 빌드해주는 그런 형태로 설명을 하던데 어떤 것인지 좀 알아봐야겠습니다.

보통 개발자를 위한 도구인 SDK는 국산제품은 거의 없고 좋지도 않아서 주로 잘 만들어진 외국제품에 눈을 돌리기 마련입니다. 하지만, KTH에서 내놓은 Appspresso는 전세계적으로 꼭 성공하는 플랫폼이 되었으면 좋겠네요^^

2. 모바일 클라우드가 꿈꾸는 미래(이정표)

아....너무 졸렸나....졸았습니다...

저는 모바일 클라우드가 뭔가 해서 그냥 NDrive같은 거 얘기하는 줄 알았는데, 그런 게 아닌 것 같네요. 전 시간에 얘기한 Cloud Build와 관련이 되어있는 것 같습니다. 뭐 현재 모바일 앱이 대박이 나서 서버트래픽을 많이 잡아먹어서 앱이 동작하지 않는 경우를 대비해서 모바일 클라우드라는 서비스를 이용하여 서비스하라 뭐 이런 얘기였던 것 같네요. 모바일 클라우드는 다른 아마존 클라우드와 같은 것처럼 트래픽을 대비하고 뭐 그런 것을 얘기하는 것 같습니다. 여러 다른 클라우드 서비스를 소개했는데, 아무것도 몰랐습니다...ㅠㅠ 
마지막에 얘기하는 게 kth쪽에서도 이런 비슷한 앱스프레소 클라우드 서비스 런칭을 준비하는 것 같습니다...

우리나라는 보통 외국에서 만드는 툴이나 서비스를 개발자들이 주로 이용하는 편인데, 그리고 그걸 이용해서 SI사업을 주로 해서 이런 것을 연구하거나 투자를 전혀 하지 않는데, KTH는 참 이런 것에 대해서 많이 연구 및 투자를 하는 좋은 기업인 것 같네요 ㄷㄷ 
국내 다른 기업이라면 분명 돈 안된다고 시작조차 하지 않았을텐데 ㄷㄷ


아.....점심시간.....
 
양이 너무 적은 듯....ㅠㅠ 


3. 웹 소프트웨어 시장의 새로운 Role 모델, 자바스크립트

대세는 JavaScript...  대체 자바스크립트가 어쩌다가 이렇게 발전하게 된 것인지... 애미도 누군지 모르는 이상한 언어가 이렇게 비대하게 발전할 줄이야!
예전에는 다이나믹한 웹을 위해서 탄생을 했는데, 사람들에게 외면을 받다가 구글이 ajax를 통해 Map을 개발하면서 재평가 받은 언어죠. 현재는 모바일앱 개발에도 쓰고, 이제는 서버쪽 언어까지 장악해버린 엄청난 언어!

그리고 새로운 사실이 우리가 지금 사용하고 있는 자바스크립트가 1998년에 정의된 것이였다니... 그걸로도 현재 엄청난 다이나믹한 웹을 만들고 있는 것 자체도 대단한 것 같네요. 현재 우리가 js로 고생을 하는 것은 다 웹표준 만드는 사람들이 게을러서인건가...ㅠㅠ 중간에 침체기가 있었다는 얘기를 듣고보니, 뭐 이런 저런 히스토리가 많이 있었나보네요. 앞으로 표준화를 잘해서 개발자들을 좀 편하게 했으면 좋겠어요!

그리고 js가 더 나아가서 서버쪽도 장악하게 될 것이라고 예측을 하셨는데, Node.js를 두고 하는 말 같습니다. Node.js를 조금 써봤는데, 매우 재미있는 제품이였죠. 서버도 손쉽게 만들고, 소켓 같은 것도 플러그인들(npm이라고 하죠!)을 통해 손쉽게 조작할 수 있고, 매우 쉽게 개발할 수 있습니다. 

마지막에 비유를 든 게 현재 http://h3.paran.com/ 사이트를 예를 들었습니다. 서버와 클라이언트를 전부다 js로 만들었다고 합니다. 한국어, 영어, 일본어가 모여서 사이트를 이루는 것보다 한국어로만 이루어져 사이트를 이루게 되면 더욱 말도 잘 통한다고 비유를 하셨네요^^ 잼있는 비유입니다^^


4. 경쟁력있는 웹앱 개발을 위한 모바일 자바스크립트 프레임웍

이번에도 kth제품 소개인 것 같네요. 웹앱 프레임워크에 대해서 소개를 했는데요. 
jQuery Mobile와 Sencha Touch.
jQuery Mobile : http://jquerymobile.com/
jQuery Mobile은 생산성이 매우 뛰어난 프레임워크죠. 버튼태그만 쓰면 테마가 알아서 버튼을 만들어주며, 태그로 손쉽게 컴포넌트를 만들며 모바일 웹브라우징을 위한 다양한 기능을 제공합니다.
하지만, 퍼포먼스는 별로 라고 하네요. 뭐 이것은 jQuery 제작자의 철학 때문이라고 합니다. 저도 갤러리쪽을 둘러보니 jQuery Mobile은 웹앱보단 모바일웹사이트쪽 기능에 더욱 치중을 해서 만든 느낌입니다.
갤러리 : http://www.jqmgallery.com/
이런 사이트가 있었다니 몰랐네요. jQuery Mobile이나 좀 만져봐야겠네요. 공부할 것이 자꾸 늘고 있어요-_-

Sencha Touch : http://www.sencha.com/products/touch 
시연하는 거 보니까 엔터프라이즈 솔루션의 기본인 차트도 있고, 퍼포먼스도 매우 빠르고, 괜춘한 것 같은데, 마크업 없이 js로만 개발을 해야해서 슈퍼 자바스크립트 개발자가 필요하대요 ㄷㄷ 

Praha.js

결국 말하고 싶은건 kth에서 개발한 웹앱프레임워크인 프라하. 프라하 회의실이라는 곳이 있어서 거기서 회의하다가 이름이 프라하가 되었대요 ㄷㄷ 
얘기 들어보면 html과 css는 완전 분리가 되어있어서 Sencha Touch처럼 힘들게 슈퍼js개발자가 없어도 되며 퍼포먼스도 괜춘하고, 생산성도 뛰어나게 되어 위에 소개한 두개의 프레임워크의 장단점을 섞어 놓은 프레임워크라는 걸 말하고 있네요.
그러고보니 제가 들은 세션은 전부 kth의 개발의 흔적 즉, 자사 제품 소개 세션만 들은 듯...-_- 그래도 최신 모바일웹 동향에 대해서 알게 되어서 좋았어요!^^


5. 반응형 웹디자인, 진짜 할 만 한가?

사실 git를 잘 몰라서 그거 들으려고 내려갔는데, 너무 사람이 많아서 그냥 다시 4층으로 올라왔습니다...-_- git는 나중에 동영상이랑 ebook올라오면 그거 봐야겠어요~
반응형 웹디자인은 css쪽의 얘기가 많아서 주로 개발자들이 귀찮아 하는 작업들을 한 곳에 모아둔 얘기같네요. 모든 디바이스를 고려해서 다른 css를 내려줘서 사용자에게 맞게 보여주는 작업을 하자! 뭐 이런 얘기인데요.
저는 css include할 때 media를 항상 screen으로 써서 이게 뭔지 알아볼 생각도 안하고 계속 썼었는데, 저기에는 엄청 심오한 뜻이 있었군요... 프린트할 때에는 다른 css를 적용해서 다르게 보여서 인쇄할 수 있다는 것도 이제야 알았네요...ㅠㅠ
CSS의 새로운 기능으로 미디어쿼리라는 기능을 소개해줬는데, 위에 미디어타입과 같이 브라우저 상태에 따라서 다른 CSS를 적용할 수 있는 기술입니다. 그렇게 되면 모바일 웹을 따로 만들 필요가 없이 CSS에 따라서 각각 처리하면 된다고 설명했습니다.
그러나, 제 생각은 조쿰 틀린 게... 애플리케이션 형태인 경우 뭔가 큰 경우와 작은 경우에 따라서 기능을 제대로 표현하고 못하고에 차이가 생기게 되는 경우가 발생합니다. 저희가 운영하는 음악사이트도 보면 웹사이트를 한 개로 제작할 수가 없는 상황에 이르게 됩니다. 물론 간단한 뷰를 보여주거나 데탑웹과 모바일웹에 최적화가 될 수 있는 것은 쓰기에는 좋지만 뭐 애플리케이션 형태로는 분명 따로 제작해야하는 게 더 편해질 것 같은 생각이 드네요.
CSS는 아직도 float을 잘 몰라서 대충 막 이렇게 해보고 잡는 편이 편해서 계속 이렇게 하고 있는데, 오늘 강의를 듣고 나니 제대로 한번 공부해봐야겠다는 생각이 드네요.


6.  모바일 시대의 Search Engine Optimization 전략

권정혁님은 항상 좋은 블로그글을 많이 올려주셔서 너무 잘 보고 있어서 이번 세션을 선택하게 되었습니다^^
검색 엔진에 최적화를 시키는 작업도 필요하다는 것을 이번 강의를 듣고 알았네요. 구글의 스크랩봇 녀석이 읽어갈 때 최대한 많은 정보를 줄 수 있도록 표준에 맞게 웹사이트를 개발해야 한다는 것을 알았네요...
가장 인상 깊었던 것은 닭집사장으로 가는 로드맵.... 

그 다음장면의 모든 연구원도 닭집 사장으로......-_-
몰랐는데, 현재 모바일 검색 점유율이 구글이 98.3%랍니다... 독점이네... 공정위 제재 들어가야....-_-
내용은 주로 title입력 잘하고, 메타데이터 잘 활용해서 넣어서 구글이 스크랩 시에 잘 긁어가도록 하자는 것이고, 잘 된 사이트로 애플사이트를 예를 들었고, 잘 안된 사이트는 정말 빵터지는 사이트가 많았네요.(아마 우리 사이트도 그럴꺼야.....ㅠㅠ 방금 검색해봤는데 그러네...ㅜㅜ)
그리고 마지막으로 구글 분석에 대해서 소개를 해주셨는데, 저도 잘 쓰지 않아서 몰랐는데, 이 구글분석 툴에는 엄청난 기능이 많이 숨어있었네요. 저도 잘 활용해서 제 블로그 방문자수를 더욱 늘리는 데 증진하도록 해야겠습니다!으핫!


아.....웹 최신 동향에 대해서는 kth가 가장 많이 알고 있는 회사라는 느낌이 드는군요. 그리고 간만에 http://www.paran.com/ 에 접속했는데, 기존 3사 포털과 완전 다른 구조 형태로 되어있네요. 정말 새로운 것을 많이 시도하려고 하고, 외국 기술에 뒤지지 않는 기술을 개발하려고 많이 노력하는 회사인 것 같네요.

ps. 아.....두서없이 글을 썼는데, 완전 길어졌네요...-_- 그냥 제가 하는 헛소리니 한귀로 듣고 한귀로 흘리세요-_-
ps2. 그 진행요원분들이 입고 계신 후드티 남는거 없나...이쁘던데-_-
 
Posted by 머드초보
,