Thursday, October 8, 2009

가로를 세로로 바꾸는 SQL 작성 방법

로를 세로로 바꾸는 SQL 작성 방법

Advanced Oracle 2008/02/28 10:00

오동규 님의 블로그에 세로로 출력되는 데이터를 가로로 출력하는 몇 가지 재미있는 기법들 소개되고 있다.

즉 아래와 같은 데이터를

SELECT DEPTNO, ENAME
FROM EMP;

DEPTNO ENAME
------ ----------
10 CLARK
10 KING
10 MILLER
20 SMITH
20 ADAMS
20 FORD
20 SCOTT
20 JONES
30 ALLEN
30 BLAKE
30 MARTIN
30 JAMES
30 TURNER
30 WARD


아래와 같이 출력하기를 원한다.

DEPTNO ENAME
------- ------------------------------------
10 CLARK,KING,MILLER
20 SMITH,JONES,SCOTT,ADAMS,FORD
30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES


이런 요구사항은 매우 빈번하고 또 일반적이다.

이 블로그에서는 Oracle, MySQL, SQL Server 등에서 이런 출력을 가능하게 하는 다양한 방법을 소개하고 있다. Oracle에서 사용 가능한 방법은 다음과 같이 소개되어 있다.

select deptno,
ltrim(sys_connect_by_path(ename,','),',') ename
from (
select deptno,
ename,
row_number() over (partition by deptno order by empno) rn,
count(*) over (partition by deptno) cnt
from emp
)
where level = cnt
start with rn = 1
connect by prior deptno = deptno and prior rn = rn-1 ;


analytic function과 connect by를 적절히 이용하는 강력한 기법이다. (MySQL는 간단한 함수 하나로 이것을 할 수 있다는게 부러울 따름이다!)

이에 덧붙여 Oracle에서 비슷한 효과를 낼 수 있는 간단한 기법 하나를 소개하고자 한다.
간단한 기법이란 아래와 같이 Cursor 함수를 사용하는 것이다.

SCOTT@ukja10> select
2 e.deptno, cursor(select ename from emp where deptno = e.deptno)
3 from emp e
4 group by e.deptno
5 ;


출력 결과는 다음과 같다.

DEPTNO CURSOR(SELECTENAMEFR
---------- --------------------
30 CURSOR STATEMENT : 2

CURSOR STATEMENT : 2

ENAME
------------------------------
ALLEN
WARD
MARTIN
BLAKE
TURNER
JAMES

6 rows selected.

20 CURSOR STATEMENT : 2

CURSOR STATEMENT : 2

ENAME
------------------------------
SMITH
JONES
SCOTT
ADAMS
FORD

10 CURSOR STATEMENT : 2

CURSOR STATEMENT : 2

ENAME
------------------------------
CLARK
KING
MILLER


엄밀하게 말하면 가로로 출력하는게 아니라 Cursor를 컬럼처럼 리턴받아서 이 Cursor에 대해 Fetch를 하는 방식이다. JDBC 등에서 이를 출력받아서 Fetch 하면서 디스플레이하면 마치 가로로 출력한 것과 동일한 효과를 얻을 수 있다. 이 방법의 장점 하나는 매우 복잡한 요구 사항도 쉽게 처리가 가능하다는 것이다.

comet

자바 서블릿 컨테이너의 Comet 지원 2 - Tomcat 소스

자바 서블릿 컨테이너의 Comet 지원 2 - Tomcat

Corund 님의 글을 보고 테스트한 샘플코드를 올립니다.comet_tomcat.zip

* 스크립트라이브러리로 jQuery를 사용했습니다.
* chat.jsp 의 pollMessage 의 url을 조금 수정했습니다. - IE(7.0)에서 url을 캐싱하는 바람에 ajax request가 안가서요..
* Corund 님 설명대로 ChatMessageSenderListener 를 만들고 web.xml에서 등록했습니다.
* ChatMessageSenderListener는 MessageSender만들고 컨텍스트에 setAttribute합니다.
* BroadcasterServlet 의 init()에서 MessageSender를 getAttribute합니다.
* CometProcessor를 구현했더니.. getServletContext()가 null네요. 왜그럴까요??
* event()메소드 CometEvent.EventType.END 에 event.close() 한줄 추가 했습니다.
* ChatServlet 의 init()에서 MessageSender를 getAttribute합니다.
* 한글 깨지지 말라고 doPost()에 request.setCharacterEncoding("UTF-8"); 한줄 추가 했습니다.
* apache-tomcat-6.0.18 에서 테스트 했습니다.

이상 원글에서 수정한것들입니다.

BoarecasterServlet에서 CometEvent.EventType.ERROR 와 CometEvent.EventType.END 이벤트가 발생하면 event.close()이 실행되는데.. 여기서 response 는 상태코드 200을 갖고 스트림이 종료되된다. 이로인해 클라이언트측(chat.jsp)의 폴링메소드의 complete 가 실행되어 "롱폴링"이 일어나는 것이다.

CometEvent.EventType.END 는 MessageSender에서 각 클라이언트로 메세지 보내낸 후 response.flushBuffer();가 실행되면 발생한다.

Comet 타임아웃 설정
CometEvent.EventType.BEGIN 이벤트 발생하면 event.setTimeout(30 * 1000)와 같이 타임아웃을 설정할 수 있다. 타임아웃이 되면 CometEvent.EventType.ERROR를 발생시킨다.

참.. server.xml에서 아래 밑줄 잊지 마세요..
protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

http://localhost:8080/comet_tomcat/chat 접속해 보면..

comet

자바 서블릿 컨테이너의 Comet 지원 2 - Tomcat

이전글

Tomcat 에서는 버전 6.0의 Advanced IO 지원을 통해 Comet 모델을 효과적으로 구현할 수 있게 되었다. Tomcat 6.0 에서는 Jetty 와는 달리 서블릿을 확장하는 형태로 지원하고 있다.

javax.servlet.Servlet 인터페이스를 확장한 org.apache.catalina.CometProcessor 가 그것인데 이 인터페이스는 Servlet 인터페이스를 상속한 것이다. 이 인터페이스에는 event(CometEvent) 메서드가 있는데 이 인터페이스를 구현한 클래스가 서블릿으로 등록되어 있으면 Tomcat 은 요청을 처리할 때 기존 서블릿의 service(...) 메서드를 호출하지 않고 이 event(...) 메서드를 호출하게 된다. 이 메서드는 한 요청 처리 트랜잭션에서 여러번 호출될 수 있으며 이벤트 정보가 인자로 넘어오게 된다. 이 인자로 넘어온 객체를 통해 여러 정보를 알 수 있고 IO도 처리할 수 있다. 입력(input)은 이 이벤트 처리 메서드 안에서 이루어져야 하지만, 출력(output)은 이 이벤트 처리 메서드 밖에서도 처리할 수 있다.

CometProcessor 를 사용하기 위해서는 Tomcat 설정을 조금 손봐야 한다. CometProcessor 는 Tomcat connector 가 Native 또는 NIO connector 여야 한다. 자바 1.4 버전 이상이라면 NIO 를 쓰면 되며 Tomcat 설정 파일을 다음과 같이 수정하면 된다.



protocol="org.apache.coyote.http11.Http11NioProtocol" useComet="true" redirectPort="8443"/>


event 메서드는 BEGIN, READ, END, ERROR 이벤트가 발생할 때 호출되는데 이때 인자로 org.apache.catalina.CometEvent 객체가 넘어온다. 이 객체에는 위의 Event Type 을 얻는 메서드와 HttpServletRequest, HttpServletResponse 객체를 얻는 메서드 등이 있다.

이전 Jetty 의 경우와 마찬가지로 채팅 예제로 실제 사용법을 알아본다. 먼저 ChatServlet 과 chat.jsp 는 이전 jetty 의 경우와 같다. BroadcasterServlet 은 CometProcessor 를 사용해야 하는데 코드는 다음과 같다.

public class BroadcasterServlet extends HttpServlet implements CometProcessor {
...
@Override
public void event(CometEvent event) throws ServletException, IOException {
HttpServletRequest request = event.getHttpServletRequest();
HttpServletResponse response = event.getHttpServletResponse();
String sessionId = request.getSessionId();

if (CometEvent.EventType.BEGIN == event.getEventType()) {
// 요청을 최초로 처리할 때 호출됨.
response.setContentType("text/html; charset=utf-8");
messageSender.addSession(sessionId, event);
} else if (CometEvent.EventType.ERROR == event.getEventType()) {
// IO 에러가 발생했을 때.
messageSender.removeSession(sessionId);
event.close(); // 요청 처리 완료.
} else if (CometEvent.EventType.END == event.getEventType()) {
// 요청 처리가 완료되었을 때
log("End event");
} else if (CometEvent.EventType.READ == event.getEventType()) {
log("Read event");
}
}
...
}


요청을 최초로 처리할 때 BEGIN 이벤트가 발생하며 이때 Request 정보를 읽는 작업을 한다. 여기서는 채팅 메시지가 있을 때 메시지를 보낼 수 있도록 event 객체를 messageSender 객체에 저장해 놓는 작업도 한다.

요청에서 읽을 데이타가 준비되었을 때 (즉 request.getInputStream() 등) READ 이벤트가 발생하며, 에러가 발생했을 때 ERROR 이벤트가 요청 처리가 완료되면 END 이벤트가 발생한다. 여기서는 ERROR 이벤트가 발생하였을 때 관련 정보를 messageSender 에서 삭제하고 요청을 마치는 작업을 한다.

MessageSender 클래스는 다음과 같다. Jetty 의 경우와 조금 다른데 메시지를 실제로 보내는 작업도 여기서 처리하고 있다. CometProcessor 에 원하는 때 이벤트를 발생시킬 수 없기 때문이다. 따라서 이벤트가 발생할 때 출력을 하기 위해 미리 CometEvent 객체를 저장하여 HttpServletResponse 객체를 얻어 출력을 한다.

MessageSender.java
public class MessageSender implements Runnable {
private volatile boolean running = true;
private final BlockingQueue messages =
new LinkedBlockingQueue();
private final Map sessions =
new ConcurrentHashMap();
private final ExecutorService executor = Executors.newFixedThreadPool(5);

public void send(String message) {
try {
messages.put(message);
} catch (InterruptedException ignore) {
// ignore
}
}

public void addSession(String id, CometEvent event) {
sessions.put(id, event);
}

public void removeSession(String id) {
sessions.remove(id);
}

public void stop() {
this.running = false;
this.executor.shutdown();
}

@Override
public void run() {
while (running) {
String message = null;
try {
message = messages.take();
} catch (InterruptedException ignore) {
// ignore
}
for (String id : sessions.keySet()) {
executor.submit(new Task(id, message));
}
}
}

private class Task implements Runnable {
private String sessionId;
private String message;

public Task(String id, String msg) {
sessionId = id;
message = msg;
}

public void run() {
CometEvent event = sessions.get(sessionId);
if (null == event) {
return;
}
HttpServletResponse response = event.getHttpServletResponse();
PrintWriter out = null;
try {
out = response.getWriter();
out.println(message);
out.flush();
response.flushBuffer();
} catch (IOException naive) {
naive.printStackTrace();
} finally {
try { out.close(); } catch (Exception ignore) {}
try { event.close(); } catch (Exception ignore) {}
sessions.remove(sessionId);
}
}
}
}


Jetty 의 경우와 달리 Tomcat 은 Servlet 인터페이스를 확장하여 웹 요청 단계에 따라 이벤트를 발생시키는 방식으로 작동한다. 네트워크 서버가 많이 취하고 있는 방식이라 쉽게 이해할 수 있다. 그러나 실제 프로그래밍을 하려면 번거로운 점이 있다. Jetty 처럼 원하는 때 resume 을 시킬 수 없기 때문에 long polling 처럼 원하는 때 출력을 하려면 서블릿 코드 밖에서 출력을 해야 하며 따라서 직접 스레드를 관리할 필요가 생긴다. 또한 Error 시에 적절히 자원을 정리하는 코드도 필요하다.

정리하자면 Tomcat 의 Comet 지원은 일반 네트워크 서버 스타일에 가깝다고 볼 수 있다. 좀더 웹 프로그래밍 스타일에 가깝게 만들었으면 좋지 않았을까 하는 생각이 든다.

by Corund | 2008/07/30 19:31 | 트랙백(1) | 핑백(1) | 덧글(1)

트랙백 주소 : http://corund.egloos.com/tb/1910202
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 나는 해피엔딩이 좋아 at 2009/06/02 19:25

제목 : 자바 서블릿 컨테이너의 Comet 지원 2 - To..
자바 서블릿 컨테이너의 Comet 지원 2 - Tomcat Corund 님의 글을 보고 테스트한 샘플코드를 올립니다. * 스크립트라이브러리로 jQuery를 사용했습니다. * chat.jsp 의 pollMessage 의 url을 조금 수정했습니다. - IE(7.0)에서 url을 캐싱하는 바람에 ajax request가 안가서요.. * Corund 님 설명대로 ChatMessageSenderListener 를 만들고 web.xml에서......more

more

Linked at 점프와 쉼없는 나아감 : 자바.. at 2008/08/01 09:35

... 이전글 Comet 에 대하여 자바 서블릿 컨테이너의 Comet 지원 1 - Jetty자바 서블릿 컨테이너의 Comet 지원 2 - Tomcat Resin 은 버전 3.1에서 Comet 모델을 지원한다. Tomcat 과 마찬가지로 javax.servlet.Servlet 을 확장한 인 ... more

Commented by 민예원 at 2009/05/29 11:15
좋은글 잘 보고 갑니다. 감사합니다.

comit server

http://corund.egloos.com/1910202

http://yewon.egloos.com/2335303

Tuesday, October 6, 2009

-Jquer

-Jquery 플러그인 모음 이거한방이면 끝..!! : http://www.seek-blog.com/41065/14090/240-plugins-jquery.html

-light box(이미지 미리보기,pre,next) : http://leandrovieira.com/projects/jquery/lightbox/

-이미지 스크롤 : http://benjaminsterling.com/2007/09/09/jquery-jqgalscroll-photo-gallery/

-이미지 싸이클 : http://www.malsup.com/jquery/cycle/

-BlockUI Plugin(processing,처리중 등등,confirm) : http://www.malsup.com/jquery/block/#element

-UI Modal : http://jquery.com/demo/thickbox/

-플래쉬 플러그인 삽입 : http://jquery.lukelutman.com/plugins/flash/#examples

-Photo Slider Tutorial : http://opiefoto.com/articles/photoslider#example

-jScrollPane : http://kelvinluck.com/assets/jquery/jScrollPane/jScrollPane.html

-Accessible News Slider : http://www.reindel.com/accessible_news_slider/#examples

- unobtrusive tabs(탭메뉴) : http://stilbuero.de/jquery/tabs/#fragment-29
http://www.sunsean.com/idTabs/#t3

-jQuery Ajax Link Checker : http://troy.dyle.net/linkchecker/

-jQuery Form Plugin : http://malsup.com/jquery/form/#code-samples

-jquery.suggest, an alternative jQuery based autocomplete library(자동완성)
http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/
http://nodstrum.com/2007/09/19/autocompleter/

-jlook(폼객체 리뉴얼) :

http://envero.org/jlook/

-jQuery - LinkedSelect(멀티 select) :

http://www.msxhost.com/jquery/linked-selects/json/

-Masked Input Plugin : (입력포맷 확인)
http://digitalbush.com/projects/masked-input-plugin
http://www.appelsiini.net/projects/jeditable/default.html

-Overlabel with JQuery(박스안에 워터마킹처리) : http://scott.sauyet.com/Javascript/Demo/Overlabel/

-Styling an input type="file"(파일찾기 이미지 처리)
http://www.quirksmode.org/dom/inputfile.html

-jQuery UI Datepicker v3.0 Examples(달력)
http://marcgrabanski.com/code/ui-datepicker/

-jQuery Validation Plugin(폼체크,포커싱)
http://jquery.bassistance.de/validate/demo-test/
http://www.texotela.co.uk/code/jquery/focusfields/

-jQuery columnHover plugin(컬럼 하이라이트/컬럼 컨트롤)
http://p.sohei.org/stuff/jquery/columnhover/demo/demo.html
http://p.sohei.org/stuff/jquery/columnmanager/demo/demo.html

-tablesorterDocumentation(테이블 순서)
http://tablesorter.com/docs/index.html

-jQuery Accordion Demo(컨테이너 예제)
http://jquery.bassistance.de/accordion/?p=1.1.1

-jQPanView based in jQuery 1.1(이미지 확대보기)
http://projects.sevir.org/storage/jpanview/index.html

-jQuery Impromptu(confirm,alert 등등)
http://trentrichardson.com/Impromptu/

-jqGrid Examples(그리드)
http://trirand.com/jqgrid/jqgrid.html#

-Toggle HTML-Elements with jQuery
http://jquery.andreaseberhard.de/toggleElements/

-UI/Sortables(테이블 위치변경 ^^)
http://docs.jquery.com/UI/Sortables

-뉴스 슬라이더(부분보기,전체보기)
http://www.reindel.com/accessible_news_slider/

-로컬 스크롤러
http://www.freewebs.com/flesler/jQuery.LocalScroll/

-핫키 테스트
http://jshotkeys.googlepages.com/test-static.html

-슬라이더
http://docs.jquery.com/UI/Slider/slider

-쇼핑카트
http://www.mimul.com/pebble/default/2007/10/30/1193753340000.html

-테이블 소트
http://www.mimul.com/pebble/default/2007/11/06/1194348600000.html

-이미지 나중에 로딩시키기
http://www.mimul.com/pebble/default/2007/11/10/1194695220000.html

-오토탭(입력시 폼객체 자동넘김)
http://dev.lousyllama.com/autotab/

-실시간 폼객체 수정
http://www.appelsiini.net/projects/jeditable/custom.html

-프린트
http://www.designerkamal.com/jPrintArea/#
-차트
http://www.reach1to1.com/sandbox/jquery/jqchart/

-CSS Dock Menu (Jquery + CSS)
후니넷에서 보삼
-툴팁
http://www.codylindley.com/blogstuff/js/jtip/

-XML데이터 뿌리기
http://blog.reindel.com/src/jquery_browse/
http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html
http://www.mimul.com/pebble/default/2006/11/05/1162710000000.html

-Clearing Form

http://www.learningjquery.com/2007/08/clearing-form-data

--암호 복잡성 체크

http://phiras.googlepages.com/PasswordStrengthMeter.html

--Form Serialize

http://dev.jquery.com/wiki/Plugins/FastSerialize

--GetString 퍼라미터 가져오기
http://www.mathias-bank.de/2006/10/28/jquery-plugin-geturlparam/

--검색 후 콤보생성(ajax with combo) 아주 유용함
http://extjs.com/deploy/ext/examples/form/forum-search.html
http://extjs.com/deploy/ext/examples/grid/edit-grid.html-->그리드

--파일 업로드(input=file) 리폼
http://www.appelsiini.net/projects/filestyle/demo.html

Jquery Best
http://www.spicyexpress.net/general/jquerry-at-it-best-downloadable-jquerry-plugins-and-widgets-for-you-2/

웹디자인 템플릿트(2.0)
-http://www.templateworld.com/free_templates.html

----------------------------------------
Jquery tag cloud
http://www.ajaxrain.com/tagcloud.php
Jquery 기본설명
http://www.zzbb.kr/34
----------------------------------------

^^Star Rater(순위) --활용가능성 높음
http://www.m3nt0r.de/devel/raterDemo/

^^ AJAX CALLING --활용가능성 높음
http://cgaskell.wordpress.com/2006/11/02/jquery-ajax-call-and-result-xml-parsing/

--AJAX 아이디 중복체크 - 활용가능성 아주높음
http://www.shawngo.com/gafyd/index.html

^^ jQuery framework plugins which provide a way to sort and nest elements in web applications, using drag-and-drop(테이블드래그앤드랍) --활용가능성 중간
http://code.google.com/p/nestedsortables/

^^Simple tableSorter(리스트 정렬) 활용가능성 중간
http://motherrussia.polyester.se/docs/tablesorter/

^^Cookie 활용가능성 높음
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/

^^태깅 --그냥한번보자..ㅎ
http://www.alcoholwang.cn/jquery/jTaggingDemo.htm

^^죽이는 어코디언 메뉴
http://dev.portalzine.de/index?/Horizontal_Accordion--print

^^ AJAX Indicator 이미지
http://qureyoon.blogspot.com/2006/11/make-your-own-loading-gif.html

----------------------------------------
2007.12.28 찾은것
----------------------------------------
http://rikrikrik.com/jquery/quicksearch/#usage
http://nadiaspot.com/jquery/confirm/#examples
http://host.sonspring.com/portlets/
http://jquery.andreaseberhard.de/toggleElements/
http://www.getintothis.com/pub/projects/rb_menu/
http://icon.cat/software/iconDock/0.8b/dock.html
http://www.nuernberg.de/internet/portal/index.html
http://rikrikrik.com/jquery/shortkeys/#examples
http://rikrikrik.com/jquery/pager/#examples
http://famspam.com/facebox/ --라이트박스같은것
http://www.andreacfm.com/
http://www.vulgarisoip.com/2007/06/29/jquerysuggest-an-alternative-jquery-based-autocomplete-library/ --autocomplete
http://www.gcmingati.net/wordpress/wp-content/lab/jquery/newsticker/jq-liscroll/scrollanimate.html - 뉴스 스크롤
http://d-scribe.de/webtools/jquery-pagination/demo.htm# --페이징
http://tinymce.moxiecode.com/example_full.php?example=true --Open Source WYSWYG 웹 에디터
http://www.laptoptips.ca/projects/tinymce-advanced/ --Open Source WYSWYG 웹 에디터 advanced
http://extjs.com/ -또다른 RIA JAVASCRIPT 프레임워크
http://www.digital-web.com/extras/jquery_crash_course/ -jquery로 만든 비행 예약 시스템 데모(Passenger Management )
http://markc.renta.net/jquery/ --jquery 간단예제
http://www.xml.com/pub/a/2007/10/10/jquery-and-xml.html?page=2 -jquery와 XML
http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/ -쿠키 플러그인
http://jquery.com/files/demo/dl-done.html --간단한 어코디언 메뉴
http://mjslib.org/doc/legacy/fieldgroup.html --폼필드 컨트롤
http://extjs.com/deploy/dev/examples/tree/two-trees.html --트리
http://www.amcharts.com/column/ - 차트(바로 사용^^)
http://particletree.com/features/rediscovering-the-button-element/ - 버튼 스타일링
http://www.i-marco.nl/weblog/jquery-accordion-menu/ - 실용성 높은 어코디언 메뉴


http://www.sastgroup.com/jquery/240-plugins-jquery
http://jquery.bassistance.de/jquery-getting-started.html



두서없이 모아봤습니다............

정리를 해야할낀데..^^


[출처] 자바스크립트 라이브러리 Jquery 플러그인|작성자 흑운객

Monday, October 5, 2009

swf -fla 변환

http://blog.daum.net/kjarden/12190265





 


<플래시 완성 swf 파일을 플래시 수정 가능한 fla 파일로 변환하는 프로그램>


 


1. 파일을 다운받은뒤(여기를 누름),
2. 압축을 풀어줍니다.
3. 보이는것처럼, program 폴더 압축을 풀어준뒤, keygen 프로그램을 실행하여 이름과 이메일을 입력합니다.(아무거나)
4. 이제부터 중요!!!   keygen 프로그램으로 생성된 asv40.pke 파일을 압축을 푼 program 폴더에 넣어줍니다.
5. 그 파일을 넣은뒤, program 폴더안으로 들어가서asv40 프로그램을 실행합니다. //설치가 다 되셧죠? ^^


asv40 프로그램을 실행된 것을 다시 끕니다.
다음 swf 플래시 파일을 한개 준비한다.
여기부터 아주 중요!!!

자신이 다운받은 swf 파일을 asv40 프로그램을 이용해서 엽니다.
그다음, "Export Rebuild Data(JSFL)"를 실행합니다.
실행하면 폴더찾아보기 라는 창이 뜹니다.
이상태에서, asv40 프로그램을 상태바에 줄여놓고,
바탕화면에 new 라는 폴더를 만듭니다.
그다음, asv40로 돌아와서 저장장소를 new폴더로 선택합니다.
확인버튼을 눌르면 new 폴더에 파일들이 새로 생깁니다.

이제부터 아주아주 중요합니다!!

FlashMX 2004 또는 FlashMX 2004 professional 을 실행합니다.
(Flash 예전버전은 절대루 안됩니다.!)

실행한뒤, 파일>새로만들기 를 합니다.
그다음, 파일>가져오기>라이브러리로 가져오기를 선택합니다.
그다음 라이브러리로 가져오기 창이 뜨면 아까전에 만든 new 파일을 선택해서 안에 있는 파일을 모두 선택한다음 열기를 누릅니다.

이제, 이상태에서 파일>다른이름으로 저장 버튼을 누릅니다.
그다음 rebuild  라고 이름을 쓴뒤 저장합니다
.(반드시 new폴더에 rebuild라는 이름으로 저장해야 함)

이제 98%완료!!  

아까전에 만든 new 폴더로 들어간뒤,

rebuild.jsfl    파일을 더블클릭합니다.(두개가 있는데 그중에서 편지지 모양과 빨간색 동그라미가 같이 있는 파일입니다.)
그러면 아까전에 만든 rebuild.fla 파일이 열리면서 fla 파일이 완성되었습니다.^^

 


 


 



ASV 4.0 (Action Script Viewer 4.0 )를 이용하여,

SWF파일를 FLA파일로 변환하는 방법.


 



▲ 샘플SWF파일 : watch.swf


 
 



 



▲ ASV4.0으로 SWF파일를 연다.


 



▲ "Export Rebuild Data(JSFL)" 실행한다. - JSFL를 포함한 모든 라이브러리 소스들이 추출된다.

 


 




 


▲ 추출된 JSFL파일과 라이브러리들의 모습.
 




 


▲ FlashMX 2004 또는 FlashMX 2004 PRO를 실행 하여 도큐먼트 하나를 만든다.


( SWF -> FLA 변환시 필요 파일인 JSFL파일은 Flash MX 2004 이상 버젼만 인식됨.)



 




 


▲ 추출된 라이브러리 파일들 모두 새로 만든 도큐먼트에 라이브러리로 불러들인다.



 




 


▲ JSFL파일인  "rebuild.jsfl" 같은 파일명으로 FLA파일을 저장(rebuild.fla) 후 플래쉬를 종료한다. (반드시 같은 폴더, 같은 파일명으로 저장 )



 




 


▲ rebuild.jsfl 파일을 더블클릭하면, rebuild.fla 파일이 열리면서 라이브러리와  jsfl파일의 구조를


해석하여 원본 FLA파일로 만든다.


( 모든 라이브러리가 살아 있다.)



 




 


▲ 모든 액션스크립트가 살아 있다. ....(-_-) ...감동이다~



 




 


▲ 참고로 Flash MX 2004 버젼에서는 함수 위에 마우스를 올려놓고 F1키를 누르면, 해당 함수의 레퍼런스를 볼 수 있다.   


 


 


출처 : http://blog.naver.com/goodvirus.do?Redirect=Log&logNo=40003063467

jQuery의 AJAX전송시 한글문제 좀더 편하게 풀어보자 Script(xml,ajax)































jQuery의 AJAX전송시 한글문제 좀더 편하게 풀어보자 Script(xml,ajax)

2009/02/03 11:35



복사 http://blog.naver.com/kvivaldi/60061867921




Query의 AJAX 기능을 사용하다 보면 특정 서버에 한글이 깨져서 전송 된다. 사실 jQuery의 문제가 아니라 각 브라우져에 탑재된 XMLHTTP모듈의 인코딩 방식에 따라 한글이 깨지거나 안깨지거나 하는 것 같다.
인터넷을 검색해보면 한글 깨짐 문제에 대한 많은 솔루션들이 존재한다. 그것은 전송하려는 값에 encodeURIComponent()함수를 사용하여 인코딩 하는 방법이다. 나 역시도 서버에 값들을 보내기 위해 보내는 값마다 열심히 함수를 붙여서 코딩을 했다.

그러다가 이런 생각이 들었다.
"어차피 죄다 인코딩 해주는거 jQuery 안에서 모두 처리하게 해주면 안되나?"

그래서 jQuery소스의 AJAX관련 코드를 뒤지다가 파라메터들을 직렬화 해주는 함수에 이를 적용할 수 있을 것으로 판단했다. (본 내용은 1.2.6 버전 기준으로 작성)
① 에디터로 jquery-1.2.6.js 을 연다.
② 직렬화 함수인 param함수를 찾는다. (Ctrl+F 하고 param을 쳐보자 ^^)
③ encodeURIComponent()함수를 escape()함수로 싼다. (아래 코드 참조)


   // Serialize an array of form elements or a set of
   // key/values into a query string
   param: function( a ) {
       var s = [];

       // If an array was passed in, assume that it is an array
       // of form elements
       if ( a.constructor == Array || a.jquery )
           // Serialize the form elements
           jQuery.each( a, function(){
               s.push( escape(encodeURIComponent(this.name)) +"=" + escape(encodeURIComponent( this.value )));
           });

       // Otherwise, assume that it's an object of key/value pairs
       else
           // Serialize the key/values
           for ( var j in a )
               // If the value is an array then the key names need to be repeated
               if ( a[j] && a[j].constructor == Array )
                   jQuery.each( a[j], function(){
                       s.push( escape(encodeURIComponent(j)) + "=" + escape(encodeURIComponent( this ) ));
                   });
               else
                   s.push( escape(encodeURIComponent(j)) + "=" +

escape(encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] ) ));


       // Return the resulting serialization
       return s.join("&").replace(/%20/g, "+");
   }

이미 encodeURIComponent()라는 함수로 모든 값들을 처리하고 있었다. 이미 인코딩 처리를 하고 있는데 무엇이 문제였을까 하고 계속 검색하다가 찾은 방법이 escape()라는 함수를 덧 붙여 사용하는 방법이다.

이 방법을 사용하면 각자 작성하는 코드에서 값마다 일일이 인코딩 처리를 안해주어도 된다.
그러나 정작 작성하고도 왜 escape()를 붙였을 경우 제대로 전송이 되는지에 대해서는 이해가 가지 않는다.
혹시 이 글을 본 다른 개발자 분들의 조언을 부탁드리며...

http://elemen.tistory.com/45



이 포스트를..  


덧글 쓰기 엮인글 쓰기 공감하기