처음으로 뛰는 마라톤인데도 잘 뛰었네요.

처음이라 많이 고생했어요. 칩인가? 이거 어떻게 다는 것인지 몰라서 헤맸다는-_-;
신발 끝에 그 구멍을 통과 시키는 것이었어요. 이런 바보같이-_-;

어쨌든, 10km인데도 죽을 뻔했어요. 뭐이리힘든지-_- 장갑도 안끼고 가서 영하2도의 날씨의 체감온도 영하10도의 날씨에서 뛰었어요-_-;

우선 뛰다보니 1km표지판이 보입니다. 아.....가뿐하네.
2km표지판이 보입니다. 점점 힘들어집니다-_-;
3km표지판이 보입니다. 뭐야 왜이렇게 힘들지-_-;
4km표지판이 보입니다. 아....살려줘-_-;
5km표지판이 보입니다. 물이나오네요. 우왕ㅋ 굳ㅋ
6km표지판이 보입니다. 아...아직도 멀었네-_-;
7km표지판이 보입니다. 아...물스펀지가 나오는군요 ^^
8km표지판이 보입니다. 이제 2km남았다-_-;
9km표지판이 보입니다. 아....다왔다-_-;
finish가 보이는군요-_-; 이렇게 해서 완주했어요-_-;

1시간 2분만에 왔어요-_-; 회사에서 20km뛰면 돈주는데 안 받을랍니다-_-;

끝나고 나니 메달이랑 사은품(이거 사은품맞아?-_-;), 빵과 우유를 주더군요(헌혈한 기분이-_-)

사용자 삽입 이미지

메달 앞면입니다-_-;

사용자 삽입 이미지

메달 뒷면입니다. 사실 어디가 앞인지 모르겠군요.

사용자 삽입 이미지

사은품(?)입니다. 이거 어디다 쓰라는건지

사용자 삽입 이미지

위에 것이 이렇게 변신합니다-_-;어디에 쓰라고-_-;

 
Posted by 머드초보
,
 

토요일날에 갔다왔습니다. 약도를 출력안하고 가서 어딘지 몰라서 여기저기 물어보게 되어서 결국 찾아갔습니다^^
우연히 플렉스커뮤니티에서 광고글을 보고 한번 가볼까 생각되어서 가보게 되었습니다.
그러나, 제가 닷넷은 전혀~~ 해보질 않아서 참 어리둥절하게 듣다가 온 것 같군요.
학교다닐 때 C#조금 배운 것 뿐인데요 ^^ 어쨌든 가서 들었습니다.

우선 가니까 이상한 스티커를 나눠주더군요.
Microsoft Expression Studio라고 써있는데, 마소 제품인 듯 했습니다.
Expression Web, Expression Media, Expression Blend, Expression Design 4가지가 있군요.

이것은 adobe의 특정제품과 매칭이 됩니다.

Web은 adobe의 Dreamweaver랑 비슷할 것이고, Blend는 Flash랑 비슷하고, Design은 Illustrator랑 비슷하다고 얘기를 하더군요. Media는 언급이 없었는데 Premiere랑 비슷한 거 아닐까요?-_-;

어쨌든 스티커를 나눠줘서 여기저기 붙여서 홍보를 하라는 것 같군요.
60일 평가판 시디도 주는군요. 한번 써보라는 것이군요-_-;

어쨌든 가니까 훈스닷넷 운영자분이 사회자를 본 것 같은데, 놀라운 건 굉장히 젊다는 겁니다-_-; 저하고 동갑인듯합니다. 존경스럽습니다 ^^ 본 받아야 할 것 같습니다 ^^

첫번째 세션은 거품이 아닌 실버라이트의 실체 라는 주제로 최우진님이 설명하셨는데...
음....조금 버벅 대는 것 같아요-_-; 말도 좀 빠르고-_-; 뉴스를 가지고 얘기를 하시더라구요.
어쨌든, 타피티(tafiti)라는 검색사이트란 것을 소개했는데 굉장하더군요.
http://www.tafiti.com/ 주소이구요. 아직 한글은 안됩니다 ^^ 새로운 인터페이스입니다 ^^
실버라이트설치해야해요^^
어쨌든 실버라이트로 엄청난 것을 구현할 수 있다 라는 것을 말해주네요 ^^

두번째 세션은 디자이너분이신 서미연님이 나오셔서 익스프레션 스튜디오와 함께하는 디자이너의 비전 이라는 주제로 설명하셨는데, 일러스트레이터를 만지던 사람이 마소제품쓰면 금방 적응한다 그런 얘기한 것 같습니다-_-;

세번째 세션은 디자이너와 개발자와 협업을 위한 얘기였는데 실버라이트 디자이너와 개발자와의 대화 라는 주제로 설명하셨습니다. 서금욱님과 장미연님이 설명하셨는데, Blend와 Silverlight로 협업을 하는 것을 보여주더군요. Flash에서는 AS도 알아야하고 디자이너가 힘들다고 하는데요. 음....글쎄요...-_-;

네번째 세션은 실버라이트의 모션 테크닉과 협업 라는 주제로 공인석님이 설명하셨는데, 협업은 시간상 못했구요. 모션테크닉만 보여주셨습니다. 여러가지 모션 테크닉을 보여주셨는데, Flash랑 비슷한 것 같아요-_-;
그리고, 느낌점 한가지는 Blend나 Flash나 노가다이기는 매한가지 라는거?-_-;

마지막 경품추첨시간에 혹시나했는데 안되네요 ㅠㅠ 제 옆에 앉으신 분이 키보드랑 마우스세트 타갔어요 ㅠㅠ
우리집 키보드랑 마우스도 고장날라그러는데 ㅠㅠ


음 오늘 플렉스4일차 교육을 갔는데 강사님께서 동영상에 관한 것은 실버라이트가 더 뛰어나다고 하시더라구요. 동영상으로 뭔가 할꺼면 실버라이트가 더 좋다라고 하네요 ^^
실버라이트도 한번 배워보고 싶네요 ^^ 다음 3회 때도 가야지-_-;

사용자 삽입 이미지

다 나눠준 연필세트(?)입니다-_-; 연필깎이도 있어요!

사용자 삽입 이미지

스티커에요. 어디다 붙이지-_-;

사용자 삽입 이미지

평가판 시디군요. 한번 깔아봐야겠네요-_-;

 
Posted by 머드초보
,
 
사용자 삽입 이미지

껍데기입니다-_-;

사용자 삽입 이미지

거기서 준 마라톤상의 앞면입니다.

사용자 삽입 이미지

거기서 준 마라톤상의 뒷면입니다. 스포츠서울 마라톤이라고 써있어서 평소에 못입고 다니겠습니다-_-;

사용자 삽입 이미지

등번호가 이상하군요. 5533-_-;


회사행사에 참여하게 되었군요.
10km지만-_-; 운동을 전혀 안하는 저에게는 힘들어 보입니다. 게다가 처음이고 ^^
완주를 목표로-_-; 기대되네요 ^^
 
Posted by 머드초보
,
 

클라이언트입니다.

그냥 Socket이랑 조금 틀립니다.

그냥 소켓은 데이터를 받을 때에
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
를 등록해서 데이터가 들어오면 함수가 호출되도록 되어 있습니다.

그리고 보낼 때에도 writeUTF어쩌구로 보냅니다.

근데 XMLSocket은 더 간단하게 주고 받을 수 있습니다.

XMLSocket은 저 아래에있는 이벤트를 등록합니다.
xmlsocket.addEventListener(DataEvent.DATA, socketDataHandler);

그리고, 저 함수에서 DataEvent에 있는 data값에 데이터가 들어있습니다.
그냥 출력해주면 돼요-_-;

보낼 때에는 XMLSocket에 있는 send메소드를 이용해서 그냥 보내면 돼요. 아주 간단해요!

클라이언트(FLEX)
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 creationComplete="initApp()">
 
 <mx:Script>
  <![CDATA[
   private var xmlsocket:XMLSocket;
   [Bindable]
   public var userId:String;
   
   private function initApp():void {
    currentState = "logon";
   }
   
   public function logon():void {
    userId = tUserId.text;
   
    xmlsocket = new XMLSocket();
    xmlsocket.addEventListener(DataEvent.DATA, socketDataHandler);
    xmlsocket.connect("localhost", 10001);
    xmlsocket.send(userId + "\n");
   
    currentState = "chat";
   }

   private function socketDataHandler(event:DataEvent) :void {
    log.text += event.data;
      }
        
   public function send():void {
                xmlsocket.send(msg.text + "\n");
                msg.text = "";
                
   }
  ]]>
 </mx:Script>
 
 <mx:Panel id="panel" width="100%" height="100%" verticalAlign="middle"
  horizontalAlign="center">
  <mx:ControlBar id="cb" height="44" />
 </mx:Panel>
 
 <mx:states>
 
  <mx:State name="logon">
   <mx:AddChild relativeTo="{panel}">
    <mx:HBox>
     <mx:Label text="User Id:" />
     <mx:TextInput id="tUserId" enter="logon()" />
     <mx:Button label="Logon" click="logon()" />
    </mx:HBox>
   </mx:AddChild>
  </mx:State>
 
  <mx:State name="chat">
   <mx:SetProperty target="{panel}" name="title"
    value="접속자 ID : [{userId}]" />
   <mx:AddChild relativeTo="{panel}">
    <mx:TextArea id="log" width="100%" height="100%" editable="false"
     updateComplete="log.verticalScrollPosition=log.maxVerticalScrollPosition;"/>
   </mx:AddChild>
   <mx:AddChild relativeTo="{cb}">
    <mx:HBox width="100%" paddingTop="0" paddingBottom="0">
     <mx:TextInput id="msg" enter="send()" width="100%" />
    </mx:HBox>
   </mx:AddChild>
  </mx:State>
 
 </mx:states>
 
</mx:Application>
[/code]

 
Posted by 머드초보
,
 

XMLSocket은 뭔가 이상하군요-_-;

그냥 Socket클래스는 그냥 쓰던 소켓같은데 XMLSocket은 삽질한 결과 이상하게 주고 받는 것 같아요.

우선 보낼 때 이상하게 나눠서 보내게 되더라구요.

그리고 \0을 끝으로 인식하는 듯합니다. 그래서 자바서버에서 보낼 때 pw.println("blur~blur~")이렇게 보낼 때에는 blur~blur~\r\n이 가게 되는데 저것이 끝이라고 인식을 못하더라구요.
그래서 보낼 때에는 pw.print("blur~blur~\n\0") 이라고 보내야해요.

그리고,
mudchobo : 안녕하세요\n\0 라고 보내면, 이상하게 나눠서 호출이 되더라구요-_-;
mudchobo : 데이터를 받고, 그다음에 안녕하세요\n\0을 받아요-_-;

왜그럴까요-_-; 어쨌든, 편법으로 만든 채팅프로그램입니다.

서버(JAVA)
ChatServer.java
[code]package com.mudchobo.chat;

import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;

public class ChatServer {

 private ServerSocket server;
 
 void startServer() {
  try {
   server = new ServerSocket(10001);
   System.out.println("접속을 기다립니다.");
   HashMap<String, PrintWriter> hashMap =
    new HashMap<String, PrintWriter>();
   
   while (true) {
    Socket sock = server.accept();
    ChatThread chatThread =
     new ChatThread(sock, hashMap);
    chatThread.start();
   } // while
  } catch (Exception e) {
   System.out.println(e);
  }
 }
 public static void main(String[] args) {
  ChatServer chatServer = new ChatServer();
  chatServer.startServer();
 }
}
[/code]

ChatThread.java
[code]package com.mudchobo.chat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.Socket;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

class ChatThread extends Thread {
 private Socket sock;
 private String id;
 PrintWriter pw;
 private BufferedReader br;
 private HashMap<String, PrintWriter> hashMap;

 public ChatThread(Socket sock, HashMap<String, PrintWriter> hashMap)
  throws UnsupportedEncodingException, IOException {
  this.sock = sock;
  this.hashMap = hashMap;
 
  pw = new PrintWriter(
    new OutputStreamWriter(sock.getOutputStream(),"UTF-8"));
  br = new BufferedReader(
    new InputStreamReader(sock.getInputStream(), "UTF-8"));
  id = br.readLine();
  hashMap.put(id, pw);
  broadcast(id + "님이 접속하였습니다.");
  System.out.println("접속한 사용자의 아이디는 " + id + "입니다.");
 }

 public void run() {
  try {
   String line = null;
   while ((line = br.readLine()) != null) {
    if (line.equals("/q")) {
     break;
    } else {
     broadcast(id + " : " + line);
    }
   }
  } catch (Exception ex) {
   System.out.println(ex);
  } finally {
   hashMap.remove(id);
   broadcast(id + " 님이 접속 종료하였습니다.");
   System.out.println(id + " 님이 접속 종료하였습니다.");
   try { if (sock != null) sock.close(); } catch (Exception ex) {}
  }
 }

 public void broadcast(String msg) {
  Collection<PrintWriter> collection = hashMap.values();
  Iterator<PrintWriter> iter = collection.iterator();
  while (iter.hasNext()) {
   PrintWriter pw = (PrintWriter) iter.next();
   pw.print(msg + "\n\0");
   pw.flush();
  }
 }
}
[/code]
저 부분만 바뀌었어요 ^^

이제 클라이언트로-_-;

 
Posted by 머드초보
,