Flex와 Internet Explorer와만 작업을 하다가 어떤 컴퓨터는 IE 창이 바로 닫혀버리는 문제가 발생하여
Firefox와도 테스트를 해보았다.

인터넷에서 모질라 파이어팍스를 받는다. 네이버 같은 곳에서 받으면 된다.
Firefox Setup 3.6.4_kor.exe
를 설치하고, flash player 10 debug 버젼도 firefox 용으로 받아 설치한다.
flashplayer_10_plugin_debug.exe
http://www.adobe.com/support/flashplayer/downloads.html

Flex에서
Window -> Preferences 메뉴로 들어간다.
General -> Web Browser로 들어가서 New 버튼 클릭
Browse로 firefox가 설치된 폴더를 선택하여 브라우저를 추가한다.
추가한 브라우저에 체크를 하고 저장하면
다음 디버그할때 firefox가 실행된다.

디버그가 잘 되는지도 확인한다.


1. Java SDK를 설치한다.


http://java.sun.com/javase/downloads/index.jsp

jdk-6u20-windows-i586.exe 를 받아서 설치하면 된다.
전엔 17이었는데 꾸준히 업데이트가 된다.

설치 폴더는 기본으로 하면 되는데 아래와 같이 된다.
C:\Program Files\Java\jdk1.6.0_20

설치후 환경변수에 JAVA_HOME을 넣어준다.

제어판 -> 시스템 -> 고급탭 -> 환경변수 버튼 -> 위쪽에 새로 만든다. (추가버튼 클릭)

변수 : JAVA_HOME
값 : C:\Program Files\Java\jdk1.6.0_20



2. Eclipse를 설치한다.


http://www.eclipse.org/downloads/

Eclipse IDE for Java EE Developers (190 MB) 로 설치하면 된다.

SR2까지 나와있다. 역시 새로 받아하는게 좋겠다.

압축만 풀면 설치가 끝난다.
별도의 설치작업이 필요없다.
D:\Eclipse 폴더에 압축을 풀어 놓는다.

실행전 eclipse.ini라는 파일을 열어 진하게 된 것을 써 넣는다.
값들은 메모리 부족현상이 일어나면 나중에 변경해 볼만 하다.
====================
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Program Files\Java\jdk1.6.0_20\bin\javaw.exe

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
=====================

eclipse.exe를 실행하면
workspace를 설정해 주는 창이 나오는데
D:\Flex\Eclipse_workspace 폴더를 만들어 주고, 이 폴더를 써준다.



3. Flex3을 설치한다.


Flash Builder 4가 release되기는 했지만 기존에 했던 것이 있어서 3을 쓴다.
Adobe 웹사이트에서 다운 받으면 된다.

FB3_win.exe를 실행해서 기본설치 폴더에 설치한다.
C:\Program Files\Adobe\Flex Builder 3
Internet Explorer에 체크, Optional Installations은 체크할 필요없다.

실행하고 workspace를 변경해준다.
D:\Flex\Flex_workspace 폴더를 만들어주고
Flex에서 File -> Switch Workspace -> Other 를 선택해서 위 폴더를 써준다.
Flex가 재시작된다.

[sdk 3.5 적용하기]
flex_sdk_3.5.0.12683.zip 를 아래 폴더에 풀어 놓는다.
C:\Program Files\Adobe\Flex Builder 3\sdks\3.5
Flex를 실행해서 Windows -> Preferences 로 간다.
왼쪽 메뉴에서 Flex -> Installed Flex SDKs 선택
우측 Add 버튼 클릭 C:\Program Files\Adobe\Flex Builder 3\sdks\3.5 를 추가한다.
Flex 3.2에 언체크 하고 Flex 3.5 체크한후 OK 하면 3.5를 사용하게 된다.



4. BlazeDS 설치


blazeds-turnkey-3.2.0.3978.zip 를 D:\BlazeDS에 푼다.

Eclipse.exe를 실행한다.
Windows -> Preferences
왼쪽 메뉴에서 Server -> Runtime Environments
우측 Add 버튼 클릭
Apache Tomcat v6.0 선택하고 Next
Tomcat installation directory 만 D:\BlazsDS\tomcat 하고 Finish (Browse해서 찾는다.)



5. Eclipse와 Tomcat 테스트 하기

[Project 추가]
Eclipse에서 New -> Other선택
Web -> Dynamic Web Project 선택
Project name : FirstProject
Next, Finish

D:\Flex\Eclipse_workspace\FirstProject 에 생김.

[test jsp 생성]
Eclipse Welcome 창은 닫습니다.
Eclipse 왼쪽에 보면 FirstProject가 생겨있다.
FirstProject -> WebContent에서 우측버튼 클릭
New -> JSP
File name : test 입력, Finish

test.jsp를 열여 아래와 같이 추가한다.

<body>
<%
 for(int i=1; i<=10; i++) {
  out.println(i+"<br>");
 }
%>

</body>


[Server 추가]
Eclipse 하단에 Servers 탭 선택
마우스 우측버튼 클릭 -> New -> Server

Server's host name : localhost
Tomcat v6.0 Server

Next

FirstProject 선택 Add 버튼 클릭
우측으로 옮기면 된다.
Finish

하단에 추가된 Server에서 우측 버튼 클릭 -> Debug
차단창 뜨면 차단해제 클릭 80포트를 쓰지 않고 다른 포트를 쓰기 때문에 나올 수 있다.
(포트는 왼쪽 Servers -> Tomcat v6.0 Server at localhost -> server.xml을 보면 확인 가능)

브라우저를 실행하고
http://localhost:8400/FirstProject/test.jsp 로 가서 1부터 10까지 숫자가 나오면 성공

Eclipse에서 Break Point를 잡으면 디버깅도 가능하다.


6. Eclipse와 BlazeDS 테스트 하기



[blazeds.war를 이용한 프로젝트 추가]

File -> Import 선택
Web -> WAR file 선택, Next
Browse에서 D:\BlazeDS\blazeds.war 선택
Web Project : SecondProject
Finish

SecondProject가 FirstProject 밑에 생겼다.

[RPC통신을 셋팅 - RemoteObject]
SecondProject -> WebContent -> WEB-INF -> flex -> remoting-config.xml 편집
진하게 된 부분 추가
편집할때 xml 형태로 나오면 오른쪽 마우스 클릭해서 Open with -> Text Editor하면 편집이 가능하다.

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>

 <destination id="testRO">
  <properties>
   <source>com.csit.test</source>
  </properties>
 </destination>

</service>

SecondProject -> WebContent -> WEB-INF -> flex -> services-config.xml 도 RemoteObject 통신할 때 사용된다. my-amf 가 있어야 되는데 기본으로 있다.


[class, jsp 추가]
SecondProject -> WebContent 에서 마우스 우측 버튼
New -> Others 선택
Java -> Class, Next
Package : com.csit
Name : test
Finish

SecondProject -> Java Resources : src -> com.csit -> test.java 이 생성된다.

test.java에 다음과 같이 작성한다.

package com.csit;
import java.util.*;

public class test {
 public List<TestList> read()
 {
  ArrayList<TestList> al = new ArrayList<TestList>();
  al.add( new TestList(1, "홍길동"));
  al.add( new TestList(2, "이순신"));
  al.add( new TestList(3, "세종대왕"));
  return al;
 }
}

TestList.java를 같은 방식으로 추가하고, 다음과 같이 작성한다.

package com.csit;

import java.io.Serializable;

public class TestList implements Serializable {
 public int num;
 public String name;
 public TestList(int num, String name) {
  this.num = num;
  this.name = name;
 }
}




[Eclipse에서 프로젝트 변경]

하단 Servers에서 추가된 서버를 선택하고 우측 버튼 클릭
Add and Remove 선택
FirstProject를 빼고 SecondProject를 넣는다.



[Flex에 프로젝트 생성]
Flex를 실행하고
File -> New -> Flex Project
Project name : TestRO
Application type : Web application
Application server tpe : J2EE
Next
uncheck User detault location for local LiveCycle Data Services server
Root folder : D:\Flex\Eclipse_workspace\SecondProject\WebContent
Root URL : http://localhost:8400/SecondProject/
Context root : /SecondProject
Output folder : D:\Flex\Eclipse_workspace\SecondProject\WebContent\TestRO-debug
Validate 버튼을 누르면 Next가 살아난다.
Next, Finish

TestRO.mxml 을 다음과 같이 편집한다.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
 <mx:RemoteObject id="ro"
  destination="testRO"
  showBusyCursor="true"
  result="dg.dataProvider=event.result"
  fault="trace(event.toString())"/>
 <mx:DataGrid id="dg" width="100%" height="100%"/>
 <mx:Button label="Read" click="ro.read()"/>
</mx:Application>


[Flash Player 10 debug 버젼 설치]
http://www.adobe.com/support/flashplayer/downloads.html
에서 최신을 받아서 설치해야 에러가 안납니다. (2010-02-11)
flashplayer_10_ax_debug.exe 를 설치한다.


[실행]
Flex에서 벌레모양 아이콘을 클릭해서 디버그 모드로 실행을 한다.
컴파일후 에러 메시지가 나오는데 Eclipse에서 Refresh 를 해주어야 한다.
SecondProject에서 오른쪽 마우스 클릭 Refresh (F5) 한다.
Flex에서 다시 실행
잘 안되면 Eclipse에서 서버를 다시 실행한다.
Flex에서 바꾸면 매번 Eclipse쪽에서 Refresh를 해주어야만 한다. 웹서버에 반영을 하기 위함이다.

Read버튼을 눌러 세명의 나오면 성공이다.

참고 사이트 : http://blog.jidolstar.com/365


* Flex에서 프로젝트명 마우스 우측 버튼 클릭해서 Properties를 본다.
  Flex Compiler에 Additional compiler arguments:가 기본은 -services가 없는데 service-config.xml이 추가되어 있을것이다. 확인해 두자.   나중에 없으면 반드시 절대경로로 들어가 있어야 한다.


7. JDBC 연결


MySQL로 설명합니다.
MSSQL로 하려면 http://haloes.tistory.com/166 을 참고하세요.


MySQL JDBC Driver를 tomcat home 밑에 lib 디렉토리에 복사한다.
D:\BlazeDS\Tomcat\lib\mysql-connector-java-5.1.12-bin.jar
적용을 위해선 서버를 다시 실행해야한다.

test.java 만들듯이 test2.java를 Eclipse에 만들어 놓습니다.


package com.csit;

import java.util.ArrayList;
import java.util.*;
import com.csit.TestList;
import java.sql.Connection;
import java.sql.*;

public class test2 {
 public List<TestList> read()
 {
  ArrayList<TestList> al = new ArrayList<TestList>();
  try {
   //JNDI를 이용한 코드샘플
   //Context initCtx = new InitialContext();
   //Context envCtx = (Context) initCtx.lookup("java:comp/env");
   //DataSource ds = (DataSource) envCtx.lookup("jdbc/EmployeeDB");
   //Connection con = ds.getConnection();

   //JNDI를 사용하지 않은 코드샘플
   String connectionUrl = "jdbc:mysql://172.16.100.56:3306/cstest?user=csit&password=xxxxxx";
   Connection con = DriverManager.getConnection(connectionUrl);

      String SQL = "SELECT * FROM users";
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(SQL);
   
   //com.csit.common을 이용하지 않은 코드샘플
   while (rs.next()) {
    al.add(new TestList(rs.getInt("id"),rs.getString("name")));
      }
      rs.close();
      stmt.close();

   con.close();

   return al;
  } catch(Exception e) {
   return al;
  }
 }
}

암호는 수정하시고...



Flex에서는 destination="testRO2" 만 수정합니다.

Eclipse에서 remoting-config.xml 에
 <destination id="testRO2">
  <properties>
   <source>com.csit.test2</source>
  </properties>
 </destination>
를 추가합니다.

Flex에서 컴파일하고
SecondProject에서 Refresh한 후,
Flex에서 디버그로 브라우저 실행...

아까와 다른 DB에 있는 값이 나오면 성공이다.

서버쪽 파일 변경이 있으면 (Java class 말고)
서버 재시작만으로 안될때가 있다.
이때는 아래 서버 목록에서 마우스 우측 클릭, Publish를 해주면 된다.



8. JNDI 사용



Tomcat의 DB Pooling 기능을 이용하기 위해 JNDI를 이용한다.

[Flex]
destination="testRO3"
testRO2를 RO3로 바꾼다. 저장하면 컴파일이 자동으로 된다. 컴파일 진행은 우측 하단 참고.

[Eclipse]
좌측 하단에 추가되어 있는 Server에서 server.xml을 연다.
다음을 
  </GlobalNamingResources> 위에 추가한다.

 <!-- MySQL -->
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="50" maxIdle="10" name="jdbc/cstest" password="xxxxxx" type="javax.sql.DataSource" url="jdbc:mysql://172.16.100.56:3306/cstest" username="csit"/>

context.xml에는 </Context> 위에 다음을 추가한다.

<ResourceLink name="jdbc/cstest" global="jdbc/cstest" type="javax.sql.DataSource"/>


SecondProject -> WebContent -> WEB-INF-> flex 에 remote-config.xml에 다음을 추가한다. 
test3 클래스를 부르기 위함이다.

 <destination id="testRO3">
  <properties>
   <source>com.csit.test3</source>
  </properties>
 </destination>


test3.java를 test2.java와 같은 위치에 만든다.

package com.csit;

import java.util.ArrayList;
import java.util.*;
import com.csit.TestList;
import java.sql.Connection;
import java.sql.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class test3 {
 public List<TestList> read()
 {
  ArrayList<TestList> al = new ArrayList<TestList>();
  try {
   //JNDI를 이용한 코드샘플
   Context initCtx = new InitialContext();
   Context envCtx = (Context) initCtx.lookup("java:comp/env");
   DataSource ds = (DataSource) envCtx.lookup("jdbc/cstest");
   Connection con = ds.getConnection();

      String SQL = "SELECT * FROM users";
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(SQL);
   
   //com.csit.common을 이용하지 않은 코드샘플
   while (rs.next()) {
    al.add(new TestList(rs.getInt("id"),rs.getString("name")));
      }
      rs.close();
      stmt.close();

   con.close();

   return al;
  } catch(Exception e) {
   return al;
  }
 }
}


SecondProject에서 Refresh, Server 목록에서 Publish 하고, Flex에서 실행한다.
잘 안되면 서버 재시작 하고 다시 시도
그래도 안되면 Flex에서 재저장, 컴파일, Eclipse에서 Refresh 한 후 다시 시도
그러다 보면 된다.






JasperForge.org에서 JasperReports를 다운받는다.

http://jasperforge.org/plugins/project/project_home.php?group_id=102

회원 등록 하지 않고 다운 받으려면  No Thanks, Continue to Download  를 누르면 된다.

3.7.2가 이틀전에 나왔다.  몇일전 해본 iReports도 다시 설치했다.


다운받으면 dist 폴더에 있는 jar 파일들을
WEB-INF\lib 에 복사한다. 이것으로 기본 설치는 끝이다.

jasperreports-3.7.2.jar
jasperreports-applet-3.7.2.jar
jasperreports-fonts-3.7.2.jar
jasperreports-javaflow-3.7.2.jar


이제 같이 들어있는 샘플로 테스트를 한다.

테스트 샘플은
jasperreports\demo\samples\webapp
에 있는 것으로 했다.  너무 많아서 고르기가 어려운데 jsp로 구현할 거라 webapp 폴더에 있는 것으로 해보기로 했다.

webapp에 있는 모든 파일을 tomcat 웹서비스 되는 기본 폴더에 모두 복사를 한다.

jasperreports\demo\samples\webapp\WEB-INF\classes 에 있는 java 파일들은 컴파일해서 class파일로 만들어야 한다.
eclipse를 사용하면 src 폴더에만 넣으면 자동으로 해준다.

샘플이 실행되려면 추가로 아래 파일이 필요하다.
commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-digester-2.0.jar

http://commons.apache.org/ 에서 다운 받으면 된다.
역시 WEB-INF\lib 에 복사하고, tomcat을 재시작한다.

iText-2.1.7.jar
iTextAsian.jar
위 파일들도 lib에 복사한다. 이 파일들은 iReport를 설치하면 설치 폴더에서 찾을 수 있다. PDF 출력시 필요한 파일들이다.


http://localhost/index.html 을 실행해서 아래 화면이 나오면 잘 된 것이다.



JRXML를 컴파일한다.



성공하면 다음 메시지가 나온다.



Data를 채운다.


성공하면 다음 메시지가 나온다.




HTML Export를 먼저 해본다.





다음 같이 나오면 성공이다.
중간에 한글을 넣어봤는데 잘 안나온다. euc-kr이나 utf8 로 변경하면 잘 나올 것 같다.



PDF로 만드는 건 한글이 잘 안된다.
iReport할때 했던 방식으로 파일을 만들고 했는데 한글이 안나온다.
폰트를 여기저기 다 넣어봤는데도 안된다.

http://blog.naver.com/minis24?Redirect=Log&logNo=80097851388

위 링크로 가서 보고 build/classes 에 폰트를 넣으니 된다.


iReport에서는
Pdf Font를 HYGoThic-Medium,
Pdf Encoding을 UniKS-UCS2-H (Korean) 로 하면 잘 안된다.
하지만 jsp에서 하면 한글이 잘 나온다.

그렇지만 위 링크에 있는 방식이 iReport와 jasperReport 모두 잘 되고,
폰트 변경도 가능해서 좋을 것 같다. 폰트 크기가 크면 다운받을때 좀 부담되지만 일단 한가지 방법이라도 성공하면 오케이...

샘플이 일단 성공했으니 이제 반은 성공한 셈이다. ^^

(참고)
다른 폰트들도 테스트를 해봤는데 파일이 좀 큰 건 안된다.
Java에 Heap 메모리 에러가 나니까 크기를 늘려주면 될 것 같은데 일단 작은걸로 잘되니 문제는 없다.

폰트 폴더에 복사해 놓고 아래와 같이 해주면 되는데 fontName는 중요하지 않지만 안쓰면 한글이 안나온다.

<font fontName="굴림" pdfFontName="fonts/H2GPRM.TTF" pdfEncoding="Identity-H" isPdfEmbedded="false"/>


open source Report tool 을 찾아보던중 iReport라는 것이 있어서 사용해 봤다.

http://jasperforge.org/plugins/project/project_home.php?group_id=83

에 있는 튜토리얼을 따라하면 되는데 한글이 PDF로 안 만들어진다.

웹에서 찾아보고 따라해봐도 안된다.  버젼이 바뀌면서 달라진 것 같다.

해서 여러가지 해봤는데 3시간정도 걸려서 찾은 결과는 간단하다.


우선 폰트를 등록한다.
c:\windows\fonts 밑에 있는 맑은 고딕 (MALGUN.TTF)을 추가했다.


추가하면 C:\Program Files\Jaspersoft\iReport-3.7.1\ireport\fonts 에 파일이 생긴다.




한글이 있는 텍스트 박스를 선택하고 위 그림처럼 해주면 된다.
Pdf Font는 써주고, Pdf Encoding은 선택한다.

Pdf Font : 폰트 파일명
Pdf Encoding : Identity-H (Unicode with horizontal writing)


Pdf Embedded는 선택해제해도 된다.

폰트는 True Type 폰트면 되는 것 같다. 모두 테스트 해보지는 못했다.


메뉴에서 Preview를 PDF로 해주고 Preview를 보면 PDF viewer가 실행되고 한글도 나오게 된다.
static으로 제목만 테스트했고, DB에서도 한글을 잘 가져와서 보여주는 건 해봐야 겠다.

JasperReports 와도 연동해야 하고 넘어야 할 산이 많다....


보안문제때문에 인증없이 이미지를 웹서버에서 직접 보여주게 하고 싶지 않을때 php 같은 서버쪽 프로그램에서
세션을 확인하고 보내주게 된다.
이를 flex image 컨틑로에서 보여주게 하려고 했다.

하지만 너무 쉬워서였나 이와 관련된 내용을 찾기가 어려웠고 3일정도 자료찾고, 시도해보고 하다가 겨우 성공했다.
하고나니 간단하네...크...

서버쪽 코드 : imgdown.php
<?php
$file = $_GET['file'];
if (file_exists($file))
{
    // Note: You should probably do some more checks
    // on the filetype, size, etc.
    $contents = file_get_contents($file);

    // Note: You should probably implement some kind
    // of check on filetype
    //header('Content-type: image/jpeg'); 주석을 해도되고 풀어도됨
    echo $contents;
}
?>

클라이언트쪽 코드 :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

 <mx:Script>
  <![CDATA[
   import mx.rpc.events.ResultEvent;
   public var req:URLRequest = new URLRequest("http://localhost/imgdown.php");
   public var loader:Loader = new Loader();
     
   private function clickImage():void {
     var variables:URLVariables = new URLVariables();
     variables.file = "D:/Winter.jpg";
     req.data = variables;
    loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler );
    loader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR, onLoadError );
     loader.load(req);
   }
         private function completeHandler(event:Event):void {
          var bmp: Bitmap = ( event.target as LoaderInfo ).content as Bitmap;
          imgPic.source = bmp;
         }   
   private function onLoadError( event: IOErrorEvent ): void
   {
    trace('error', event);
   }
  ]]>
 </mx:Script>

 <mx:Image x="10" y="10" width="167" height="163" id="imgPic"/>
 <mx:Button x="10" y="181" label="이미지보기" id="btnImage" click="clickImage()"/>

</mx:Application>

=========================================================

서버에 D:/Winter.jpg 라는 이미지를 놓고 해보면 된다.
imgdown.php은 웹서버 루트에 놓고, flex를 실행하면 이미지가 보인다.

처음엔 Loader 가 아닌 URLLoader로 했는데 그래서 오래걸렸다.


출처 : http://giveup.egloos.com/2361943

MDict 를 사용하다 보면 가장 짜증나는 일중 하나가 발음기호가 깨지는 것이다.
어쩌라고 소리가 절로 나온다.

개인적으로 사용하는 국어사전도 고어가 다 깨져서 나온다.
(고어까지 살려서 만들었는데 폰트가 없다니!!)


해서 폰트찾아 삼만리.

몇가지 대안을 찾을 수 있었다.

  1. 유저들이 제작한 ttf 파일을 첨부한다.
    맑은고딕 한자, 일어 합본 등등등 다양하다.
    (고어가 있는 파일은 하나밖에 못찾았다. 천년마왕님의 사전제작 카페의 '푸른바다'님의 작품 하나)
  2. 네이버사전체, 새굴림, 기타 메이저 사전폰트를 사용한다.
    상당히 좋지만 용량이 상당하다. 네이버사전체 30MB, 새굴림 25MB
  3. MDict 의 html 기능을 이용해서 발음기호, 고어 부분을 태그처리 해서 폰트를 지정해준다.
    좋은 방법이다만.. 이렇게 해서 깔끔하게 나오는 경우가 있고 아닌 경우가 있다.
    고어나 본문 사이사이 끼어있는 발음기호 하나하나 font나 span 태그를 사용하자니.. 소스 용량이 너무 늘어난다.
  4. 발음기호나 기타 부호에 이미지 사용.
    원본 소스가 이렇게 되있는 경우에는 문제가 되지 않는다. 그러나,, 그러나,, 내가 언제 이미지다 만들어서 링크거나. 그리고 이미지로 사전을 제작하면 글자 크기 조절이 안된다는 엄청난 단점이 있다.
  5. 직접 폰트 제작
    가장 깔끔할 것이다만.. 쉽지가 않다. 노가다에..피곤하고..
  6. ????


목적에 따라 대안을 달리 해야겠다.
한중일 폰트가 필요한 경우에는 네이버사전체를 사용하고, 기타 언어까지 필요한 경우에는 arialuni 폰트를 사용하는게 나을듯 싶다.

영어사전 발음기호만 필요할 경우에는 Tahoma 폰트에 Lucida Sans Unicode폰트의 발음기호 부호를 추가해서 새 Tahoma를 만드는게 가장 깔끔할듯 싶다.

한글고어가 문제인 경우에는 네이버사전체,'푸른바다'님의 한글고어, 새굴림의 한글고어를 가져와서 폰트를 제작하면 될듯 싶다.


여기서 문제. 시스템 폰트가 지원하지 않는 폰트는 pda 에서 일단 깨져보인다. mdict 의 인덱스라던가..
그럼 시스템 폰트에 추가를 해주어야 하는데, 시스템 폰트는 무조건 'Tahoma' 다.
여기서 FontLink 라는걸 사용하게 된다.
검색해보면 FontLink에 대해 참 많이 나온다.
HKLM/software/Microsoft/FontLink/SystemLink

Tahoma에 없는 글자를 다른 폰트에서 가져온다는 것인데, 국내 정발 pda의 경우에는 Gulim 폰트가 링크되어 있다.
적당한 한자와 한글로 이루어진 굴림폰트.
저 Link에 폰트를 최고 3개? 쓸수 있다고 하는데.,. 모르겠다.
또한 용량이 큰 폰트부터 참고한다고 하는데.. 모르겠다.
우선순위가 좀 지멋데로인듯 한데,,
그래서 애초부터 폰트를 겹치지 않게 만들기로 했다.


아래는 내맘대로 제작한 사용기
Gulim 대신 나눔고딕을 쓰기로 하고, 발음기호는 Lucida Sans Unicode를 사용, 한글고어는 Lucida.... 에 추가했다.
그리고 SystemLink를 다음과 같이 수정했다.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
"Courier New"="\\Windows\\Lucida Sans Unicode.ttf,Lucida Sans Unicode;\\Windows\\NNGD.TTF,NanumGothic"
"Gulim"="\\Windows\\tahoma.ttf,Tahoma;\\Windows\\Lucida Sans Unicode.ttf,Lucida Sans Unicode"
"NanumGothic"="\\Windows\\tahoma.ttf,Tahoma;\\Windows\\Lucida Sans Unicode.ttf,Lucida Sans Unicode"
"Tahoma"="\\Windows\\Lucida Sans Unicode.ttf,Lucida Sans Unicode;\\Windows\\NNGD.TTF,NanumGothic"
"굴림"="\\Windows\\tahoma.ttf,Tahoma;\\Windows\\Lucida Sans Unicode.ttf,Lucida Sans Unicode"
"나눔고딕"="\\Windows\\tahoma.ttf,Tahoma;\\Windows\\Lucida Sans Unicode.ttf,Lucida Sans Unicode"

시스템 폰트는 나눔고딕(한자 8천자 내외 포함버전)을 사용하고. 발음기호 한글고어는 Lucida Sans Unicode+고어 를 사용했다.
결과물은 다음번에 보도록 하자..


출처 : http://blog.jidolstar.com/134

Flex

개발자 커뮤니티

Flex IDE & Framework

블로그

서적

Article & Lecture



추가사항

Flex3 메뉴얼
http://livedocs.adobe.com/labs/flex/3/langref/index.html
http://livedocs.adobe.com/labs/flex/3/html/wwhelp/wwhimpl/js/html/wwhelp.htm

ActionScript3
http://blog.jidolstar.com/106
http://livedocs.adobe.com/flash/9.0_kr/main/flash_as3_programming.pdf

예제
각종예제집합 - http://www.adobe.com/devnet/flex/index.html?tab:samples=1
스타일 익스풀로러 - http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html
컴포넌트 익스풀로러 - http://examples.adobe.com/flex2/inproduct/sdk/explorer/explorer.html
Transition Effect - http://blog.keutgens.de/download/flexEffectExplorer/current/swf/TransitionsAndEffects.html
필터 익스풀로러 - http://www.merhl.com/flex2_samples/filterExplorer/
프리미티브 익스풀로러 - http://www.3gcomm.fr/Flex/PrimitiveExplorer/Flex2PrimitiveExplorer.html

추천사이트
FlexComponent카페 - http://cafe.naver.com/flexcomponent
Flex Lab - http://labs.adobe.com/technologies/flex/
Flex 개발센터 - http://www.adobe.com/devnet/flex/
자수 - http://jasu.tistory.com
지돌스타 -http://blog.jidolstar.com
FlexBox(다양한 컴포넌트) - http://flexbox.mrinalwadhwa.com/
OKgosu(플렉스책저자-옥상훈) - http://blog.javastudy.co.kr/okgosu/
열이아빠 - http://koko8829.tistory.com
Everything Flex - http://blog.everythingflex.com/
Flex 챔피언 - http://adobeflex.tistory.com/
Flex.org - http://www.flex.org/

showcase
Flex 캘린더 - http://demo.quietlyscheming.com/calendar/app.html
플렉스 확대경 - http://demo.quietlyscheming.com/landscape/Declaration.html
RandomWalk 메뉴 - http://demo.quietlyscheming.com/RandomWalk/app.html
Display Shelf  - http://demo.quietlyscheming.com/displayShelf/index.html
Yahoo Map - http://maps.yahoo.com
Papervision3D 자동차 - http://www.carlosulloa.com/
Papervision3D 코뿔소 - http://www.noventaynueve.com/lab/rhino/
Papervision3D 동영상 - http://www.blog.lessrain.com/?p=552
ScrapBlog - http://www.scrapblog.com/
Picnik - http://www.picnik.com/app#/home/welcome
fauxto - http://www.fauxto.com/
이퀄라이져 - http://lab.benstucki.net/archives/visualizationexplorer/
3D 비디오 룸 - http://dev.getoutsmart.com/os3d/demos/videoroom/
라이브 검색기 - http://www.msdewey.com/



이벤트 발생순서 - http://cafe.naver.com/flexcomponent/3426 
파일업로드 - http://weblog.cahlan.com/2006/09/uploading-files-with-flex-and-php.html
 http://weblog.cahlan.com/files/FileUpload/FileUploadApp.html
엑션스크립트 콤퍼넌트 만들기 - http://www.adobe.com/devnet/flex/quickstart/building_components_in_as/
플렉스 각종 예제 - http://blog.jidolstar.com/category/%C1%F1%B0%C5%BF%EE%B0%B3%B9%DF/Flex/Flash/AS
웹 캠 -  http://newmovieclip.wordpress.com/2006/05/26/take-a-webcam-snapshot-in-flex-20-beta-3/


컴포넌트
Flex-Ajax Bridge - http://labs.adobe.com/wiki/index.php/Flex_Framework:FABridge
Flex Boot 컴포넌트  - http://www.quietlyscheming.com/blog/components/flexbook/
Fish Eye 앨범 컴포넌트 - http://demo.quietlyscheming.com/fisheye/TileExplorer.html
Google FlexLib - http://code.google.com/p/flexlib/
캔콤 - http://labs.adobe.com/wiki/index.php/Cairngorm
PHP RIA SDK - http://phpriasdk.riaforge.org/


모듈에서 parentApplication 을 하면 간단하게 Application의 변수들에 접근할 수 있다.

모듈이 여러개라면 Appilcation을 통해서 접근하면 된다.

출처 : http://lostsin.tistory.com/104


이미 컴파일러 옵션을 알고 계신 분들은
100만년 전에 알고 계셨을테지만 ^^;

전 오늘 첨 해봤네요-
그냥 내부적으로 그렇게 된다고만 알고 있었지.. 막상 직접 보니
감회가 새로워서 글로 정리합니다.

서두는 이 정도로 하고

[윈도우즈, 빌더 기준]
C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.1.1739\frameworks\flex-config.xml
C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.1.1739\frameworks\air-config.xml
파일을 열어 다음 구문을 찾습니다.

<!-- Turn on writing of generated/*.as files to disk. These files are generated by -->
<!-- the compiler during mxml translation and are helpful with understanding and   -->
<!-- debugging Flex applications.                                                  -->
<keep-generated-actionscript>false</keep-generated-actionscript>

flase 부분을 true로 바꿉니다.

다시 컴파일하고 나면
프로젝트 폴더의 src 하위에 "generated"라는 폴더가 생깁니다.
이제 그곳을 확인하시면
mxml이 as로 변환된 과정을 확인하실 수 있습니다.


사용자 삽입 이미지

http://media.daum.net/digital/view.html?cateid=1067&newsid=20100111063203238&p=yonhap

SKT 고객정보 암호화…해킹 '원천봉쇄'

연합뉴스 | 입력 2010.01.11 06:32 | 수정 2010.01.11 06:56 | 누가 봤을까? 20대 남성, 서울

 
(서울=연합뉴스) 박대한 기자 = SK텔레콤이 세계 최대 규모의 고객정보 데이터베이스(DB)를 암호화하는 데 성공했다.

이에 따라 SK텔레콤의 전산시스템이 해킹되더라도 고객정보가 대량 유출돼 악용되는 상황은 원천적으로 차단된다.

SK텔레콤은 고객정보 DB에 암호화를 적용해 구축한 시스템을 안정적으로 오픈했다고 11일 밝혔다.

이번 작업은 지난 2008년 6월 개정된 '정보통신망 이용촉진 및 정보보호 등에 관한 법률'에 따른 것으로, 불법적인 외부 침입자가 DB에 접근하더라도 피해를 최소화하기 위해 마련됐다.

정부는 해킹이나 DB 접속 권한을 가진 시스템 운영자에 의해 대량의 고객정보가 유출되는 사례가 잇따라 발생하자 시행령을 통해 2010년 1월 29일까지 이러한 DB 암호화 시스템을 구축하도록 했다.

SK텔레콤의 이번 고객 DB 암호화 프로젝트는 고객정보 보호 강화에 대한 최고경영자(CEO)의 강력한 뒷받침 하에 정보보안총괄임원(CSO) 주도로 약 1년간 진행됐다.

SK텔레콤은 3천본(프로그램 수를 나타내는 단위) 이상의 프로그램과 관련 테이블(DB 내 여러가지 표나 일람표를 자료 형태로 모아둔 것)에 대해 발생 가능한 모든 상황을 고려해 테스트를 거쳤다.

특히 200명 규모의 통합상황실을 구성해 연휴 기간인 지난 1∼3일 개발한 프로그램을 실제 운영시스템으로 옮기는 데이터 마이그레이션 작업을 18시간에 걸쳐 진행했다.

이번 시스템의 암호화 대상은 SK텔레콤 이동통신 및 기타 서비스 가입 고객, T-World 등 웹사이트 가입자, 내부 및 관계사 직원 등의 개인정보로, SK텔레콤은 이번에 암호화된 DB가 세계적으로도 유례를 찾아보기 힘들 정도로 대규모라고 설명했다.

SK텔레콤은 11개 주요 자회사에 대해서도 이달 말까지 고객정보 DB 암호화 조치를 완료할 계획이다.

SK텔레콤 관계자는 이번 고객 DB 암호화에 대해 "기존 보안 인프라와 보안 관리체계와의 시너지를 고려하면 강력한 고객정보 유출 방지체계가 구축된 만큼 고객 만족도가 크게 향상될 것"이라고 말했다.

SK텔레콤은 아이핀(I-PiN) 적용, 접근기록 위ㆍ변조 방지, 불법접근 차단 등의 개정 법안에 따른 추진과제들도 지난해 말까지 완료했다.

pdhis959@yna.co.kr
(끝)

+ Recent posts