저는 토렌토(Torrent)를 이용할 때 프로그램을 플래시겟을 사용하는데요. 어느 날 부터인가 Internet Explorer 스크립트 오류가 계속 뜨더라구요. 그래서 언젠간 고치겠지 그러고 계속 쓰고 있었는데요. 고쳐지지가 않는 것 같아요-_- IE8로 업데이트하고 나서 이렇게 된건가.....
사용자 삽입 이미지

그냥 Inter Explorer에서 발생하는 것이면 고급옵션에서 스크립트 디버깅 사용 안 함 체크해주면 되는데요. 여기 FlashGet에서는 뭔가  먹히지 않는 듯 하네요.
보니까 발생하는 부분인 오른쪽에 있는 FlashGet Recommends부분에서 발생하는데, 검색해보니 저창을 그냥 안보이게 하면 되더군요-_-

FlashGet에서 보기 -> 추천페이지 사용 체크해제 -> Disable Recommend Page permanently에서 yes

와 이걸 몰라서 몇달동안 저 화면을 봤다니...다운로드 하나씩 클릭할 때마다 뜨는데 얼마나 짜증났던지...-_-
 
Posted by 머드초보
,
 
처음엔 자바만 지원을 하더니 이제 미친듯이 다른 언어도 지원을 하기 시작했습니다. 어느덧 버전은 이클립스의 두배(?)가량인 6.7버전이 나왔군요-_- 아래는 릴리즈정보입니다.
http://www.netbeans.org/community/releases/67/

5.5부터 저는 써왔는데요. 버전업을 할 때 마다 처음시작 로딩 시 뜨는 이미지가 매번 바뀝니다. 더욱 화려해집니다. 나중에 10버전 나오면 완전 다빈치가 그린 그림 나올듯-_-

사용자 삽입 이미지
아 그리고, 6.7버전부터 한글을 지원하기 시작했습니다. 한글판이 존재합니다. 다운로드할 때 IDE Language부분은 Korean으로 바꾸면 한글판을 사용할 수 있습니다. 신기한 것은 한글판이 용량이 더 작다는거-_-왜그럴까.....-_-
근데, 완벽한 한글이 아닙니다. 넷빈카페에서 시작한 것으로 알고 있는데, 어찌된 것인지 모르겠습니다. 어쨌든 한글판은 반쪽자리 한글판입니다.
사용자 삽입 이미지

약간(?) 덜 된 한글화-_-

릴리즈 노트에 있는 Feature Highlights를 좀 보면...

1. Kenai와 연동
Kenai은 저번에 포스팅에 올린 오픈소스저장소 호스팅입니다. 이것과 연동할 수 있는 기능이 있습니다.
http://mudchobo.tomeii.com/tt/423

2. Maven
메이븐은 제가 잘 몰라서 모르겠는데, 예전에 얼핏듣기로는 java에서 프로젝트관리를 하면서 필요한 lib나 그런것을 손쉽게 업데이트를 해주고, 손쉽게 서버에 배포까지 해주는 그런 것이라고 하더군요. ANT보다 향상된 뭐 그런건가봐요. 암튼, 그것과 연동지원을 하는 듯

3. php
제일 맘에 드는 기능입니다. php툴을 찾고 있었는데, aptana보단 왠지 넷빈즈가 더 끌려요-_- 코드하이라이트는 저번버전부터 제공했었고, 이번엔 SQL문도 코드하이라이트를 지원을 합니다. 강력해요!

그 외에는 다 제공했었는데, 기능향상이 좀 있었군요. 사이트가서 직접 확인해보시길 ㅠㅠ

PS. 근데, JavaFX는 왜 빠졌을까요....뭔가 마이그레이션 하다가 잘 안된 것 같음 ㄷㄷ JavaFX를 하려면 그 이전버전인 6.5.1을 받아야합니다. 6.7은 안됩니다.


 
Posted by 머드초보
,
 
초간단 방명록 시리즈~!-_-

예전에 포스팅한 Zend Amf사용후기- http://mudchobo.tomeii.com/tt/398
Zend Amf가 이번에 출시된 Flash Builder4 Beta에서 기능으로 포함되어있습니다. 사용하기도 더 편해졌구요. 설정 같은 것은 전혀 안해줘도 Flash Builder4가 알아서 다하네요.

우선 Flash Builder4 Beta를 설치해야합니다.(adobe.com 회원가입 후 받을 수 있음!)


New Flex Project -> Project Name은 FlexGuestBook, Application type은 Web, Server technology는 PHP!
Next하면 서버 셋팅을 해야하는데요. 우선 Apache와 Mysql깔려있다는 가정하에 진행!-_-
Server location에서 Web root는 htdocs위치, Root URL은 http://localhost.
Output folder는 냅둬도 돼요^^ 바로 Finish!

htdocs/FlexGuestBook-debug생기면 성공!

아...디비부터 만들어야겠군요.
[code]DROP TABLE IF EXISTS `mudchobo`.`guestbook`;
CREATE TABLE  `mudchobo`.`guestbook` (
  `idx` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `author` varchar(45) NOT NULL,
  `content` text NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`idx`)
);[/code]
그럼 PHP코딩해봅시다.
저같은 경우 NetBeans를 사용해서 하는데, 그게 정신건강에 좋아요-_- PHP는 NetBeans와 함께-_-
아까Web root에서 FlexGuestBook폴더를 만듭니다.
PhpClass파일을 하나 만듭니다.
GuestBookService.php
[code]<?php
class GuestBookService {
    private $connection;

    private function connect()
    {
        $this->connection = mysqli_connect("localhost", "root", "mudchobo", "mudchobo")
            or die(mysqli_connect_error());
    }

    public function getList()
    {
        $this->connect();
        $sql = "SELECT * FROM guestbook order by idx desc limit 0, 10";

        $result = mysqli_query($this->connection, $sql)
            or die("Query failed: " . mysqli_error($this->connection));

        $rows = array();
        while($row = mysqli_fetch_object($result))
        {
            $rows[] = $row;
        }

        mysqli_free_result($result);
        mysqli_close($this->connection);

        return $rows;
    }

    public function insert($author, $content)
    {
        $this->connect();
        $sql = "INSERT INTO guestbook (idx, author, content, date) VALUES (null, '" .
            $author . "', '" . $content . "', now())";

        $result = mysqli_query($this->connection, $sql)
            or die("Query failed: " . mysqli_error($this->connection));

        mysqli_close($this->connection);
    }
}
?>[/code]
클래스에 초간단 insert함수와 getList()함수가 있어요. 여기서 잠깐! NetBeans6.7의 새로운 기능-_-
쿼리문의 코드힌트가 가능해요!!! idx, author, content, date가 다보여요. guestbook 테이블명도 보이는군요.
사용자 삽입 이미지

Flash Builder설명하다 튀어나온 NetBeans...-_-

뭐어쨌든, 이제 진짜 FlashBuilder로 가는거임.
FlashBuilder에서 하단에 Data/Services가 있는데요. Connect Data/Service를 클릭하면 PHP가 있는데, 클릭하고, ServiceName은 GuestBookService로 하고, Php Location은 아까 작성한 GuestBookService.php를 선택합니다.
이 과정에서 Zend Amf가 설치가 안되어있으면 설치할꺼냐고 물어봅니다. 설치해야합니다^^
설치할 때 htdocs/ZendFramework폴더에 자동으로 설치됩니다.
Finish! 그려면 services.guestbookservice패키지에 뭔가 생겼을 겁니다.
그럼  getList와 insert가 보이는데요. 리턴타입을 설정해야해서 getList에 오른쪽버튼 누르면, Configure Return Type이 있는데, Create a new custom data type에서 GuestBook을 입력하고, Finish를 하면 모든 타입이 String으로 된 Bean같은 것을 만듭니다-_-(Bean마다 타입은 지정이 안되는데, 왜그런지 모르겠음 ㅠ)
insert는 기존에 있는 타입에서 void로 고르고!^^

그럼 이제 진짜 Flex로 와서 Design모드로 바꾸고, DataGrid를 넣어봅시다.
사용자 삽입 이미지

왜 한글로 나오지...한글화가 되다 말았네-_-

데이터그리드에 대고 오른쪽 버튼을 누르면 Bind To Data라는 메뉴가 생겼습니다. 누르면 아래와 같은 메뉴가 나옵니다.
사용자 삽입 이미지
OK누르면 자동으로 코드도 입력해주네요.
예전에는 Php로 Service랑 설정파일 작성하고 그랬는데, 그럴필요가 없어요. 알아서 다 만들어주거든요.
Insert하고 getList하는 것도 다 추가하면 아래와 같은 코드를 완성할 수 있어요.
[code]<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" minWidth="1024" minHeight="768" xmlns:guestbookservice="services.guestbookservice.*">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.controls.Alert;

            protected function dataGrid_creationCompleteHandler(event:FlexEvent):void
            {
                getListResult.token = guestBookService.getList();
            }

            protected function btnWrite_clickHandler(event:MouseEvent):void
            {
                if (inputAuthor.text.length < 1)
                {
                    Alert.show("글쓴이를 입력하세요");
                    return;
                }
                if (taContent.text.length < 1)
                {
                    Alert.show("내용을 입력하세요");
                    return;
                }
               
                guestBookService.insert(inputAuthor.text, taContent.text);
                inputAuthor.text = "";
                taContent.text = "";
               
                getListResult.token = guestBookService.getList();
            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <s:CallResponder id="getListResult"/>
        <guestbookservice:GuestBookService id="guestBookService" destination="GuestBookService" endpoint="http://localhost/PhpFlexGuestBook/gateway.php" fault="Alert.show(event.fault.faultString)" showBusyCursor="true" source="GuestBookService"/>
    </fx:Declarations>
    <mx:DataGrid x="72" y="21" width="489" height="307" id="dataGrid" creationComplete="dataGrid_creationCompleteHandler(event)" dataProvider="{getListResult.lastResult}">
        <mx:columns>
            <mx:DataGridColumn headerText="content" dataField="content" showDataTips="true" dataTipField="content"/>
            <mx:DataGridColumn headerText="author" dataField="author" showDataTips="true" dataTipField="author"/>
            <mx:DataGridColumn headerText="idx" dataField="idx"/>
            <mx:DataGridColumn headerText="date" dataField="date"/>
        </mx:columns>
    </mx:DataGrid>
    <mx:Label x="70" y="370" text="내용 :"/>
    <s:TextArea id="taContent" x="111" y="369" width="447"/>
    <s:Button id="btnWrite" x="279" y="524" label="글쓰기" click="btnWrite_clickHandler(event)"/>
    <mx:Label x="59" y="344" text="글쓴이 :"/>
    <s:TextInput id="inputAuthor" x="112" y="343"/>
   
</s:Application>[/code]
사용자 삽입 이미지
위에 부분 댓글인줄 알고 낚이는 사람 있겠다-_-

참고자료 : http://sujitreddyg.wordpress.com/2009/06/01/building-flex-application-for-a-php-class-using-flash-builder-4/
 
Posted by 머드초보
,
 
Sun에서 대단한 것을 준비했네요(근데, 오라클이 먹어버리다니-_-) 무료로 SVN+Trac서비스로 유명한 assembla보다 훨씬좋습니다. 아래는 이전에 썼던 assembla소개글^^

[유틸리티] 무료로 SVN + TRAC 개발공간 제공해주는 사이트.


Project Kenai는......음 우선 Kenai는 어떻게 읽는거지....케나이라고 읽는건가.....아....여기서 제공하는 ScreenCast를 보니 키나이라고 발음을 하네요. 키나이가 맞는듯-_-
암튼 Project Kenai는 소스코드관리, 이슈트래킹, 위키, 포럼 등을 지원을 합니다(프로젝트 단위로^^)

assembla랑 비교하면 assembla는 온니 SVN만 되고, Project Kenai는 다양한 소스코드관리시스템을 지원을 합니다. 보니까 Subversion, Mercurial, Git를 지원하네요(외부에 있는 것도 가져올 수 있는 External도 있는 듯 합니다).
또한 assembla는 Trac과 자체적 Ticket시스템을 이슈관리시스템으로 사용하고 있는데, Project Kenai는 Bugzilla와 Jira를 지원하더군요.

음...단점은 프로젝트를 5개밖에 못만드는데요. 테스트하느라고 2개날렸습니다 젠장....

암튼, 테스트를 해봅시다.
이 Kenai는 NetBeans하고 쉽게 연동할 수 있습니다. 이클립스에 비하면 Mylyn같은 것이 NetBeans에 통째로 들어있습니다. 아...넷빈즈는 6.7 RC1이상에서만 됩니다. 곧 있으면 넷빈즈6.7나옴 ㄷㄷ 지금은 RC3버전! 이클립스3.5출시시기와 비슷하게 출시하겠군요^^ 둘다 참 매력적인 IDE죠^^ (얘기가 샜군-_-)

그럼 NetBeans 6.7 RC3버전을 설치해봅시다.
메뉴에 Team -> Kenai - > Login to Kenai를 합니다. 아.....-_- 가입을 먼저 해야합니다-_-
http://kenai.com/ 이곳에서 가입을 하면 됩니다.
가입한 뒤 로그인을 합니다. 로그인하면 넷빈즈에 Kenai탭에서 자신의 프로젝트를 볼 수 있습니다. 회원가입 후 처음로그인이라면 아무것도 없죠^^ 아무 프로젝트를 생성 후 Kenai에 올려봅시다.
File -> New Project -> Java -> Java Application선택, Project이름은 PrintFucking으로 해봅시다. 프로젝트가 생성이 되었으면 프로젝트 이름에 대고, 마우스오른쪽버튼을 누르면 Share on Kenai라는 게 있습니다.
프로젝트 이름 및 설명 등을 입력할 수 있어요. 그리고, Project License를 꼭 입력해야 해요. 익숙한 라이센스들이지만, 다 뭐가 틀린지는 모르겠네요-_-
사용자 삽입 이미지

라이센스를 정하면 finish를 할 수 있어요. 그리고 Kenai탭에서 보면 프로젝트에 대해서 Kenai와 연동해서 작업을 할 수 있는 메뉴가 보입니다. 이슈를 찾을 수 있고, 이슈를 여기서 직접 생성할 수 있어요. 자신에게 할당된 이슈도 볼 수 있구요^^ wiki도 볼 수 있네요^^ (아....젠장.....3번째꺼 이름을 Fucking을 해버리다니.....)
사용자 삽입 이미지
소스코드를 고쳐서 커밋해볼까요?
[code]System.out.println("Fuck!");[/code]를 main함수에 추가하고 커밋을 해봅시다.
커밋은 프로젝트메뉴 -> Subversion -> Commit을 선택하면 됩니다.
사용자 삽입 이미지
Project Kenai웹페이지에서 해당 프로젝트가 커밋되었는지 확인할 수 있어요.
안타까운 점은 한글이 깨지네요-_-
사용자 삽입 이미지
어쨌든, 매우 쉽게 오픈소스프로젝트 개발환경을 구축할 수 있게 해준 Kenai에 찬사를 보내야겠네요. 게다가 넷빈즈는 Java뿐만 아니라 다양한 언어 개발환경을 제공하거든요. C/C++, PHP, Python, Ruby, JavaFX 등! 더욱 활용도가 높아졌으면 좋겠네요. 국내에서는 대세가 이클립스여서 이클립스를 많이 쓰는 듯 한데, 넷빈즈도 그에 못지않은 기능을 가지고 있어요^^ 6.7나오면 사용해보도록 하세요 ^^

 
Posted by 머드초보
,
 
Flex ANT관련 자료는 지돌스타님이 자세히 써주셨기때문에 참고해주세요.
http://blog.jidolstar.com/505

mxmlc로 컴파일을 해본적이 없어서 작성하는데에 욕봤습니다.
우선 ANT에서 제공하는 태그들이 있는데요. 그걸 이용해서 하려고 하는데 잘 안돼서-_- 그냥 exec로 작성했습니다 ㅠㅠ

그냥 rsl을 사용하지 않은 프로젝트는 ant로 매우 쉽게 할 수 있는데, RSL을 사용하면 조금 복잡해집니다.

RSL로 사용할 Flex Library Project를 하나 만듭니다. 그리고 클래스나 MXML을 추가하게 되면 bin디렉토리에 *.swc파일이 생깁니다. 이걸이용해서 메인프로젝트에서 컴파일을 해야합니다. 또한 *.swc파일을 이용해서 optimizer된 *.swf를 만들어야합니다.
[code]<target name="optimizer">
    <unzip src="${SWC파일}" dest="${SWC파일을 풀어놓을 디렉토리}" />
    <exec executable="${optimizer.exe파일 경로}">
        <arg line="-input '${SWC파일 풀어놓은 디렉토리}/library.swf'" />
        <arg line="-output '{아웃풋할 파일명.swf}'" />
    </exec>
</target>[/code]
몰랐는데, SWC파일 풀면 library.swf가 나오는데, 그걸 optimizer.exe한 것이 Flex Builder에서 나오는 swf파일이랑 같은것이더라구요(알고보니 나만 몰랐던거....다 알고있었음!-_-)
이렇게 하면 swf파일이 만들어집니다.
그럼 메인프로젝트 컴파일 하려면 이런식으로 하면 됩니다.
[code]<target name="compile">
    <exec executable="${mxmlc.exe파일 경로}">
        <arg line="-verify-digests=false" />
        <arg line="-runtime-shared-library-path '${rsl swc파일경로}' '${rsl경로위치url}'" />
        <arg line="-o '${아웃풋 경로}'" />
        <arg line="'${소스mxml메인파일}'" />
    </exec>
</target>[/code]
compile하기전에 optimizer target을 depends해야함^^
아마 verify-digests는 properties에서 설정할 때 체크하는 그것일꺼에요. 음..저는 이런식으로 하니까 되더라구요-_- -runtime-shared-library-path에서 swc파일 경로랑 rsl경로위치url(나중에 파일을 올릴 때 해당 위치에 있어야할 url입니다)로 지정하니 되더군요. 이것때문에 고생을 좀 해서-_-
메인프로젝트에 SWC파일을 LIB로 사용한다면 이런식으로 해야하구요^^
[code]<arg line="-library-path+='${basedir}/libs/Mate_08_8_1.swc'" />[/code]
ftp올리는 것도 지돌스타님 블로그에 잘 정리 되어있음!
http://blog.jidolstar.com/506
이러면 원클릭 배포가 가능해짐-_- 귀차니즘을 위한 ANT임!-_-
 
Posted by 머드초보
,