티스토리 툴바


달력

02

« 2012/02 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  •  
  •  
  •  

'Programming'에 해당되는 글 58

  1. 2012/02/09 Eclipse에 vrapper 설치 후 키 설정하기
  2. 2011/10/18 svn 저장소(repository) dump 및 load 복구 정리
  3. 2011/10/06 안드로이드 치수 정리, dpi, dp, dip, sp, pt px, mm, in (4)
  4. 2011/10/04 오디오 볼륨 조정하기.. (1)
  5. 2011/05/02 구글에서 사전의 음성 및 TTS 음성 MP3 받기.. (2)
  6. 2011/02/28 osx에서 subversion 사용하기.
  7. 2010/12/27 VisualSVN에서 Hook 스크립트. (1)
  8. 2010/12/13 SyntaxHighlighter 3.X를 tistory에 적용하기. (19)
  9. 2009/11/27 ActionScript 3.0(Flash)에서 JSON 데이터 읽기. (1)
  10. 2009/11/19 [jQuery] if문으로 요소(element)가 있는지 확인하기.
  11. 2009/11/19 [jQuery] JSON에서 데이터 읽어 오기. (1)
  12. 2009/11/19 [jQuery] 애니메이션 후 삭제하기.
  13. 2009/11/17 온라인 JSON 파서..
  14. 2009/11/17 jQuery UI 선택 메뉴
  15. 2009/11/10 웹서버 & IDE & 서비스까지를 한방에.. CodeRun Studio
  16. 2009/11/05 De MonsterDebugger를 이용해서 Flash 디버깅 하기.
  17. 2009/11/04 XHTML Character Entity Reference
  18. 2009/10/30 jQuery를 사용해서 폼 기본값 넣기.
  19. 2009/10/22 [MySQL] 최신 리스트 만들기.
  20. 2009/10/22 [MySQL] 사고다발자 제거하기.
  21. 2009/10/22 [MySQL] 연관되어 있지 않은 테이블 제거하기.
  22. 2009/10/22 [MySQL] 중복 레코드 지우기..
  23. 2009/09/27 codeIgniter용 디버그 헬퍼.
  24. 2009/09/26 PHP에서 AJAX 요청 판별하기
  25. 2009/09/25 CodeIgniter에서 접속자 국가 알아내기..
  26. 2009/09/23 파이어버그를 이용한 자바스크립트 디버깅.. (2)
  27. 2009/09/21 HTML에서 FLASH로 변수 전달하기..(AS 3.0) 2부...
  28. 2009/09/21 Flash에서 z-index 문제 해결 방법...
  29. 2009/09/21 PHP, RUBY, JS, CSS 프레임워크 비교 사이트..
  30. 2009/09/18 Javascript URL Base64 인코딩/디코딩

이클립스(eclipse)에서 vim 커맨드 사용하기
를 포스팅 한 적이 있는데..
키 설정하는걸 빼 먹은거 같아서 글 쓴지 약 1년 반 후에 붙여서 씁니다.

먼저 홈페이지는  http://vrapper.sourceforge.net/home/ 입니다.


1. 설치하기

메뉴에서 Help -> Install New Software...
http://vrapper.sourceforge.net/update-site/stable
주소를 추가하고 설치 합니다.

2. 키 설정하기
Window -> Preferences -> General -> Keys -> Vim's key bindings
아래와 같이 설정 합니다.
  • Page Down: Ctrl+F
  • Page Up: Ctrl+B
  • Scroll Line Down: Ctrl+E
  • Scroll Line Up: Ctrl+Y

그리고 Apply 버튼을 누르고 OK



저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

덤프 받기

1. 전체 덤프 받기
svnadmin dump /var/www/svn/reposA/  > ~/reposA.svn_dump

전체 저장소를 덤프 받습니다.

2. 지정 덤프 받기
svnadmin dump /var/www/svn/reposA/ -r 10  > ~/reposA.svn_dump

리비전 10만 덤프 받습니다.

3. 구간 덤프 받기
svnadmin dump /var/www/svn/reposA/ -r 10:20  > ~/reposA.svn_dump

리비전 10에서 20까지 덤프를 받습니다.

4. 특정 폴더 덤프 받기
svnadmin dump /var/www/svn/reposA/ | svndumpfilter include WORK > ~/reposA.svn_dump

저장소에서 WORK 폴더만 덤프를 받습니다.

5. 특정 폴더를 제외 하고덤프 받기
svnadmin dump /var/www/svn/reposA/ | svndumpfilter exclude TEMP > ~/reposA.svn_dump

저장소에서 TEMP 폴더만 제외하고 덤프를 받습니다.

5. 증분 덤프 받기
svnadmin dump /var/www/svn/reposA/ -r 0:1000  > ~/repos-0-1000.svn_dump
svnadmin dump /var/www/svn/reposA/ -r 1000:2000 --incremental > ~/repos-1000-2000.svn_dump
svnadmin dump /var/www/svn/reposA/ -r 2000:3000 --incremental > ~/repos-2000-3000.svn_dump

구간별로 증분이 가능 하도록 덤프를 받습니다. load시 증분해서 복원이 가능 함.



덤프 복원하기
덤프를 복원하기 위해서는 기존의 저장소나 빈 저장소가 있어야 합니다.
svnadmin --help create 를 참고 하세요.

1. 복원하기
svnadmin load repo < ~/reposA.svn_dump

repo라는 저장소에 덤프 파일을 복원 합니다.

2. 증분 덤프 복원하기
svnadmin load < ~/repos-0-1000.svn_dump
svnadmin load < ~/repos-1000-2000.svn_dump
svnadmin load < ~/repos-2000-3000.svn_dump

이전에 증분했던 순서대로 다시 차례대로 넣어 주면 됩니다.

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

dpi (Dots Per Inch )

1인치(2.54 센티미터)에 들어 있는 픽셀의 수. 안드로이드에서는 160을 기본으로 한다.

참고 : http://en.wikipedia.org/wiki/Dots_per_inch



dp 또는 dip (Density-independent Pixels)

화면의 크기를 기준으로 표시. 어떤 화면의 크기에서도 동일한 크기를 표시 하게 된다.
스크린의 픽셀과  dp가 160인 경우에는 1dp는 1pixel과 같다. 그러나 dpi가 240인 경우에는 1dp는 1.5pixel이 된다.

계산 공식은 아래와 같다

dp = pixel / (density / 160)

내 화면의 dp를 구하기 위해서는 아래와 같이 WindowManager를 쓰면 된다.

DisplayMetrics outMetrics = new DisplayMetrics();    getWindowManager().getDefaultDisplay().getMetrics(outMetrics);

int sum = outMetrics.densityDpi;




sp (Scale-independent Pixels)

dp의 비슷하다. 다만 사용자가 선택한 글꼴 크기에 의해 크기가 조절된다.




pt

1/72 인치 기반의 물리적 화면 사이즈, 인쇄에서 쓰이던 크기, 안드로이드 화면에서는 잘 사용되지 않는다.



px (Pixels)

스크린의 실제 픽셀 단위를 사용. 실제 크기나 밀도와 상관 없음




mm (Millimeters)

화면의 물리적 사이즈 기반으로 밀리미터를 사용



in (Inches)

화면의 물리적 사이즈 기반으로 인치를 사용




비교표



저해상도 화면 고해상도 화면에 같은 크기
물리적 넓이 1.5 인치 1.5 인치
dpi (Dots Per Inch) 160 240
px (Pixels) 240 360
밀도 (기본값 160) 1.0 1.5
dip 또는 dp (Density-independent Pixels) 240 240
sip 또는 sp
(Scale-independent pixels)
사용자 폰트 설정 사이즈 따름 동일
px (Pixels) 40픽셀을 1인치에 표시 40픽셀을 0.66인치에 표시
mm (Millimeters) 1 밀리미티 1밀리미티
in (Inches) 1 인치 1인치

참고로 아래는 DPI의 치수를 편하게 계산해 주는 사이트 입니다.

http://members.ping.de/~sven/dpi.html  
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG Android, dip, dp, DPI, SP
Posted by 신규하
2011/10/04 16:58

오디오 볼륨 조정하기.. Programming/Android2011/10/04 16:58

안드로이드 앱을 짜다 보면, 미디어의 불륨을 조정해야 할 때가 있습니다.
그런데 불륨 조정을 누르면 당황스럽게 벨소리 볼륨이 조정이 됩니다.

그걸 다른걸로 조정하고 싶을 경우에는 아래와 같이 onCreate에 setVolumeControlStream을 넣어 주시면 됩니다.

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setVolumeControlStream(AudioManager.STREAM_MUSIC); // 하드웨어 볼륨이 미디어 볼륨을 조절
    }
설정할 수 있는 키는 아래와 같습니다.
  • AudioManager.STREAM_ALARM : 알람 볼륨.
  • AudioManager.STREAM_DTMF : DTMF 톤 볼륨.
  • AudioManager.STREAM_MUSIC : 미디어 볼륨입.
  • AudioManager.STREAM_NOTIFICATION : 알림 볼륨.
  • AudioManager.STREAM_RING : 벨소리 볼륨.
  • AudioManager.STREAM_SYSTEM : 시스템 볼륨.
  • AudioManager.SYSTEM_VOICE_CALL : 음성 통화 볼륨.

또 다른 방법으로는 아래와 같이 키를 가로채서도 동작이 가능 합니다.
    private AudioManager audio;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        audio = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    }
   
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                    AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                    AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
            return true;
        }
        super.onKeyDown(keyCode, event);
        return true;
    }

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG Android, Audio
Posted by 신규하

음성이 파일이 필요해서, 파이썬 스크립트를 작성해 봤습니다.

아래는 2가지 인데.. 한개는 사전에서 음성을 받아 오는 거고, 2번째는 구글 번역에서 받아 옵니다.
둘다 음성 파일의 파일 목록이 필요 합니다.




구글 사전에서 음성 파일 받아 오기.
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import string
import os
import shutil
import codecs

if len(sys.argv) is 1:
    print >> sys.stderr, '읽을 파일명을 입력해 주세요'
    print ''
    print '* 파일의 내용'
    print '\t[원본 파일명]
    print ''
    print '* 사용예'
    print '\t./getWordSound.py [목록 파일 이름]'
    exit(1)

try:
    f = codecs.open(sys.argv[1], "r", "utf-8") # 파일 오픈
except IOError:
    print >> sys.stderr, '그런 파일이 없거나, 열기 에러입니다.'
    exit(1)

topath = "mp3"
if    os.path.exists(topath) == False:
    os.mkdir(topath, 0755)

for line in f.readlines():
    word =  line.strip('\n\r').strip();
    url = "http://www.gstatic.com/dictionary/static/sounds/de/0/"+word+".mp3"
    print url
    os.system("wget -P "+topath+" "+url)

구글 번역에서 TTS 음성 받아 오기
#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import string
import os
import shutil
import codecs

if len(sys.argv) is 1:
    print >> sys.stderr, '읽을 파일명을 입력해 주세요'
    print ''
    print '* 파일의 내용'
    print '\t[음성 파일 스크립트]'
    print ''
    print '* 사용예'
    print '\t'+sys.argv[0]+' [목록 파일 이름]'
    exit(1)

try:
    f = codecs.open(sys.argv[1], "r", "utf-8") # 파일 오픈
except IOError:
    print >> sys.stderr, '그런 파일이 없거나, 열기 에러입니다.'
    exit(1)

topath = "mp3"
if    os.path.exists(topath) == False:
    os.mkdir(topath, 0755)

os.chdir(topath)
for line in f.readlines():
    script = line.strip()
    if script.startswith(u'\ufeff'):
        script = script[1:]
    url = "\"http://translate.google.com/translate_tts?tl=en&q="+script+"\""
    output = "\""+script+".mp3\""
    getCommand = "wget -U firefox "+url+" -O "+output
    print getCommand
    os.system(getCommand)

그런데 이렇게 받은 음성의 라이센스를 아시는 분 있으신가요?
구글에 문의를 해 봤는데.. 함흥차사네요..
내 영어가 너무 구린가? ㅜ.ㅜ
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2011/02/28 20:27

osx에서 subversion 사용하기. Programming2011/02/28 20:27


먼저 한국사람이니.. 한글 패치를 해 줘야 합니다.

기본에서는 한글 파일들은 ?가 나오게 됩니다.
먼저  macport를 설치 합니다.
(맥포트를 설치 하려면 xcode가 있어야 합니다 ^^;;;)

그리고 터미널에서 아래와 같이 실행 해 줍니다.
sudo port install subversion +unicode_path
이렇게 하면, 한글에 문제가 없는 svn이 만들어 집니다.

그리고 나서 예외 설정을 해 주세요..

~/.subversion/config 이 파일을 보시면 global-ignores가 #으로 주석처리 되어 있습니다.

# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
간단하게 아래와 같이 주석을 지워 주세요.

global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store

그리고, commit을 할 때 면 귀찮게.. nano 에디터기가 뜰겁니다.
저 같은 경우는 사용하기 불편해서.. vi로 수정을 해서 사용하고 있습니다.

$ vi ~/.bash_profile


이렇게 실행해서

export SVN_EDITOR=vi


이렇게 한줄을 추가해 주시면 됩니다.

이 정도만 세팅해 주시면, 맥 터미널에서도 svn을 쓸만 하실 겁니다.

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2010/12/27 11:44

VisualSVN에서 Hook 스크립트. Programming2010/12/27 11:44

이번에 VisualSVN으로 서버를 옮기면서, hook 스크립트를 추가해 봤습니다.

현재는 두가지 체크를 하고 있습니다.
  1. 빈 로그 메시지
  2. 이슈 번호가 들어 있는지

이슈 번호는 레드마인을 사용하고 있어서.. #[숫자] 이런 식으로 되어 있습니다.
간단하게 #과 숫자가 붙은게 있는지를 체크 합니다.

VisualSVN에서 프로젝트의 마우스 오른쪽을 클릭후 메뉴에서
모든 작업 > Manage Hooks

를 선택합니다.

위와 같은 메뉴에서 Pre-commit hook를 선택하고 편집을 합니다.


이 화면에서 아래 내용을 붙여 넣습니다.
@echo off
::
:: 로그 메시지가 없거나 이슈번호가 없으면 commit 중단
::
@echo off
 
setlocal
 
set REPOS=%1
set TXN=%2
 
set SVNLOOK="C:\Program Files (x86)\VisualSVN Server\bin\svnlook.exe"
 
%SVNLOOK% log %REPOS% -t %TXN% | findstr . > nul
if %errorlevel% gtr 0 (goto ERROR_TOO_SHORT)

%SVNLOOK% log %REPOS% -t %TXN% | findstr /r /c:"#[0-9]" > nul
if %errorlevel% gtr 0 (goto ERROR_ISSUE) else (goto NORMAL_EXIT)

:ERROR_TOO_SHORT
echo Your commit has been blocked because your log message was too 1>&2
echo short. Please write a log message describing the purpose of your 1>&2
echo changes and then try committing again. Thanks! 1>&2
goto ERROR_EXIT

:ERROR_ISSUE
echo empty issue, please fill issue number 1>&2
echo changes and then try committing again. Thanks! 1>&2
echo example : #000 hello world 1>&2
goto ERROR_EXIT
 
:ERROR_EXIT
exit /b 1
 
:NORMAL_EXIT
exit 0
17, 18번 행이 이슈트래커용입니다.

그리고, 36bit용 windows를 설치 하신 분들은 13번 행에서 (x86)을 빼 주셔야 합니다.

필요 하신 분들은 잘 사용하세요.

참고 사이트 :
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하


이전 버전을 계속 포스팅 했었는데, br태그가 이상하게 나온다거나.. tistory에서 사용 할 때 불편한 문제점들이 이것저것 있는데.. 아래 처럼 사용하면 좀 더 편하게 사용 할 수 있습니다.

먼저 최신 버전의 SyntaxHighlighter을 다운로드 받습니다.

압축을 풀면 아래와 같이 보입니다.
여기서 scripts와 styles 폴더의 내용을 모두,
관리자 화면 > 스킨 > HTML/CSS편집 > 파일 업로드에서 파일 업로드를 통해서 올려 줍니다.

추가 된 것을 확인 하시면,
관리자 화면 > 스킨 > HTML/CSS편집 > HTML/CSS편집에서 <title> 밑에 아래 코드를 추가해 줍니다.

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="./images/shCore.js"></script>
<script type="text/javascript" src="./images/shLegacy.js"></script>
<script type="text/javascript" src="./images/shBrushAppleScript.js"></script>
<script type="text/javascript" src="./images/shBrushAS3.js"></script>
<script type="text/javascript" src="./images/shBrushBash.js"></script>
<script type="text/javascript" src="./images/shBrushColdFusion.js"></script>
<script type="text/javascript" src="./images/shBrushCpp.js"></script>
<script type="text/javascript" src="./images/shBrushCSharp.js"></script>
<script type="text/javascript" src="./images/shBrushCss.js"></script>
<script type="text/javascript" src="./images/shBrushDelphi.js"></script>
<script type="text/javascript" src="./images/shBrushDiff.js"></script>
<script type="text/javascript" src="./images/shBrushErlang.js"></script>
<script type="text/javascript" src="./images/shBrushGroovy.js"></script>
<script type="text/javascript" src="./images/shBrushJava.js"></script>
<script type="text/javascript" src="./images/shBrushJavaFx.js"></script>
<script type="text/javascript" src="./images/shBrushJScript.js"></script>
<script type="text/javascript" src="./images/shBrushPerl.js"></script>
<script type="text/javascript" src="./images/shBrushPhp.js"></script>
<script type="text/javascript" src="./images/shBrushPlain.js"></script>
<script type="text/javascript" src="./images/shBrushPowerShell.js"></script>
<script type="text/javascript" src="./images/shBrushPython.js"></script>
<script type="text/javascript" src="./images/shBrushRuby.js"></script>
<script type="text/javascript" src="./images/shBrushSass.js"></script>
<script type="text/javascript" src="./images/shBrushScala.js"></script>
<script type="text/javascript" src="./images/shBrushSql.js"></script>
<script type="text/javascript" src="./images/shBrushVb.js"></script>
<script type="text/javascript" src="./images/shBrushXml.js"></script>
<link type="text/css" rel="stylesheet" href="./images/shCore.css"/>
<link type="text/css" rel="stylesheet" href="./images/shThemeDefault.css"/>
<script type="text/javascript">

/* jQuery 부분  */
jQuery.noConflict();  // 다른 라이브러리와 충돌을 방지한다.
jQuery(document).ready(function(){  // 문서가 모두 읽힌 후에 다음을 실행
    jQuery("blockquote").each( function() {  //blokquote가 사용한 태그
        if (jQuery(this).attr('class').substr(0,5)=='brush')
        // 그중 클래스명이 brush로 시작하는 것을 찾아 적용
        {
            var temp = jQuery(this).html(); //  내용 복사
            temp = temp.replace(/\n/gi, "");
            temp = temp.replace(/<BR>/gi, "\n");
            temp = temp.replace(/<BR \/>/gi, "\n");
            //temp = '<pre class="'+ jQuery(this).attr('class') + '">'+temp+'</pre>'
            temp = '<script type="syntaxhighlighter" class="'+ jQuery(this).attr('class') + '"><![CDATA['+temp+']]><\/script>'
            jQuery(this).after(temp);   // 뒤에 새 작성된 pre 또는 script태그로 붙인다.
            jQuery(this).remove();         //  기존의 인용태그 삭제
        }
    });

    /* SyntaxHighlighter 부분 */
    SyntaxHighlighter.defaults['toolbar'] = false;    // 툴바 안 보기
    SyntaxHighlighter.all();
});
</script>



jQuery는 구글의 apis에서 가져다 오도록 했습니다. 현재 최신 버전이 1.4.4입니다.
그리고, 41번과 42번 줄에 보시면, pre태그와 script태그를 둘중 하나를 선택해서 사용 하시면 되는데..
여기를 참고 하시고 선택해서 사용하세요.
저 같은 경우에는 script 태그를 선택 했습니다.
그리고 사용하는 방법은 매우 간단해 졌습니다.

텍스트 모드에서 붙여 넣기를 한 후,
인용구<Ctrl+Q>를 선택 하시면 됩니다.

그리고 HTML 편집 모드로 들어 가셔서 blockquote를 찾으셔서, 태그에 적당한 brush를 넣어 주시면, 코드가 깔끔하게 들어 갑니다.

<blockquote class="brush:html">
...
</blockquote>
그리고, 줄에 하일라이트를 넣고 싶거나, 상세 설정은
  • http://alexgorbatchev.com/SyntaxHighlighter/manual/configuration/
이 페이지를 참고 하시면 됩니다.


지원 문법

Brush nameBrush aliasesFile name
ActionScript3 as3, actionscript3 shBrushAS3.js
Bash/shell bash, shell shBrushBash.js
ColdFusion cf, coldfusion shBrushColdFusion.js
C# c-sharp, csharp shBrushCSharp.js
C++ cpp, c shBrushCpp.js
CSS css shBrushCss.js
Delphi delphi, pas, pascal shBrushDelphi.js
Diff diff, patch shBrushDiff.js
Erlang erl, erlang shBrushErlang.js
Groovy groovy shBrushGroovy.js
JavaScript js, jscript, javascript shBrushJScript.js
Java java shBrushJava.js
JavaFX jfx, javafx shBrushJavaFX.js
Perl perl, pl shBrushPerl.js
PHP php shBrushPhp.js
Plain Text plain, text shBrushPlain.js
PowerShell ps, powershell shBrushPowerShell.js
Python py, python shBrushPython.js
Ruby rails, ror, ruby shBrushRuby.js
Scala scala shBrushScala.js
SQL sql shBrushSql.js
Visual Basic vb, vbnet shBrushVb.js
XML xml, xhtml, xslt, html, xhtml shBrushXml.js


참고 사이트

이 포스팅에 사용된 버전


더보기


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

ActionScript에서 JSON 데이터를 읽어서 파싱하는 예제입니다.
Cake's Good의 내용을 약간 수정하고, adobe core library를 최신 버전으로 업데이트 한 예제입니다.

1. adobe core library를 다운로드 받습니다. 다운로드 받은 파일을 압축을 풀고 src 폴더 안의 com 폴더를 .fla파일이 있는 폴더에 복사해 줍니다.

2. PHP나 개발자가 사용하는 언어로 JSON 파일을 만들어 줍니다.
[ {"name":"Jaylo", "number":"3243251", "age":"23"}, {"name":"Jenny", "number":"8675309", "age":"35"}]

3. 플래쉬 파일에서 첫번째 프레임에 아래 코드를 넣어 줍니다.
import com.adobe.serialization.json.JSON

/* Objects 생성 */
var loader:URLLoader = new URLLoader() ;
var request:URLRequest = new URLRequest() ;

/* numbers.txt에서 데이터 읽어 오기. */
request.url = "numbers.php" ;
loader.load(request) ;

/* 파일 읽기가 완료 되고 나서 decodeJSON을 실행하기 위해서 listener 등록 */
loader.addEventListener(Event.COMPLETE, decodeJSON) ;

/* JSON데이터 디코딩 */
function decodeJSON(event:Event):void {

    var loader:URLLoader = URLLoader(event.target) ;
    var People:Array = JSON.decode(loader.data) ;
    
    /* JSON data를 출력해 보기 */
    trace(People[0].name) ; //Jaylo
    trace(People[0].number) ; //3243251
    trace(People[0].age) ; // 23
    trace(People[1].name) ; //Jenny
    trace(People[1].number) ; //8675309
    trace(People[1].age) ; // 35
    trace("-------------------");
    
    /* for loop로 출력해 보기 */
    for (var key:Object in People) {
        trace(People[key].name) ;
        trace(People[key].number) ;
        trace(People[key].age) ;      
    }
}

실행 결과
Jaylo
3243251
23
Jenny
8675309
35
-------------------
Jaylo
3243251
23
Jenny
8675309
35

예제 다운로드


원본 : http://www.cakesgood.com/2009/04/flash-cs3-actionscript-30-json-keep-it_3277.html
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하


자바스크립트에서는 아래와 같이 해당 id가 있는지(exists) 체크를 합니다.

<script>
if (document.getElementById('myDiv')) {
    alert('myDiv exists');
}
</script>


하지만, jQuery에서는 아래와 같이 확인합니다.
<script>
if ($('#myDiv').length) {
    alert('myDiv exists');
}
</script>


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하


jQuery를 사용해서 JSON의 데이터를 읽어서 사용하는 예제입니다.

JSON Data
{
    'US' :
        {'AK' : 'Alaska', 'AL' : 'Alabama'},
    'CA' :
        {'AB' : 'Alberta', 'MB' : 'Manitoba'}
}

jQuery 스크립트
$.getJSON('/state.json',function(data) {
    $.each(data.US, function(key,state) {
        $($select_state).append('<option value="' + key + '">' + state + '</option>');
    });
});

설명
/stat.json 이라는 파일에서 JSON 데이터를 읽어 와서 data에 넣습니다.
$.each로 data안에 'US'의 내용을 하나씩 읽어서 key과 state에 넣습니다.
아래 append예제는 US의 내용을 select box에 추가하는 작업입니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하


selectedLi.slideUp("normal").remove();

이런식으로 slideUp()이후에서 remove()를 하려고 하면, 바로 애니메이션이 보일려고 하다가, 바로 삭제 되어 버립니다.

이럴 경우에는 callback을 이용해서 remove()를 넣어 주시면,
의도한 대로 애니메이션이 실행되고 나서 삭제 작업이 실행 됩니다.

selectedLi.slideUp("normal", function() { $(this).remove(); } );

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2009/11/17 23:45

온라인 JSON 파서.. Programming/PHP2009/11/17 23:45


온라인 JSON파서 에서는 JSON문자열을 바로 테스트 할 수 있습니다.
JSON의 내용을 색상과 트리 보기로 표시해 줍니다.
JSON으로 데이터 전달을 제작 할 때 디버깅 작업을 할 때 도움이 될 듯 싶습니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2009/11/17 18:02

jQuery UI 선택 메뉴 Programming/jQuery2009/11/17 18:02


jQuery UI 선택 메뉴 플러그인은 HTML의 select 기능을 확장 할 수 있도록 제작 되었습니다.
느낌이 전혀 다른 선택 메뉴 및 아이콘 옵션을 추가해서 계층 구조로 만들 수 있습니다.
그리고, 마우스 동작과 키보드 제어 및 테마 기능까지 갖추고 있습니다.






저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

아무런, 웹서버 설치, 에디터기도 설치 하지 않고, 바로 웹브라우저에서 스크립트 코드를 짤 수 있는 사이트 입니다.
PHP, C#/.NET 서버의 설치도 필요 없습니다.
바로 실행과 디버그까지 가능 합니다.
그리고, 웹 호스팅도 가능해서 무료로 사용할 경우 7일까지 사용 가능하고, 그 이후는 유료로 전환해서 사용 하면 됩니다.

정말 최고의 통합이 아닌가 싶습니다.
계정만 있으면, 서버 & 코딩 & 서비스 까지 완료가 되니까요..

데모 보기 : http://www.coderun.com/ide/



솔직히, 신택스 하일라이트, 코드 자동완성(C#만 지원) 되는건 좋은데,
웹기반이라서 느리고 귀찮습니다 -_-;;
여기서 개발은 하지 않을꺼 같습니다 ^^;;

장점이라면, 아무런 설치 없이, 어느 곳에서나 작업을 할 수 있다는 정도 입니다.

그래도, 그냥.. 사용해 보는 것은 무료 입니다.
가끔 PHP나 C#코드를 서버 설치 없이, 테스트 해 볼 수 있는 용도로는 괜찮은것 같습니다.

지원 테이블.
Language / Platform Syntax Coloring Code Completion Compilation Server Side Debugging Hyperlink code sharing Single Click Deployment
C# / ASP.NET Yes Yes Yes Yes Yes Yes
C# / WPF Yes Yes Yes Yes Yes Yes
C# / Silverlight Yes Yes Yes Yes Yes Yes
PHP Yes No N/A No Yes Yes
JavaScript Yes No N/A No Yes Yes
HTML Yes No N/A No Yes Yes
CSS Yes No N/A No Yes Yes


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG coderun
Posted by 신규하

Flash에서도 디버그용 외부 프로그램이 있더군요. 몬스터디버거라는 프로그램 입니다.
Flash로 만든 프로그램 뿐만 아니라, Air, Flex로 만든 프로그램까지 디버깅이 가능 합니다.

디버깅시 가장 많이 사용하는 trace지원은 당연하고,
실행중인 프로그램 트리구조로 보여 주고, 라이브로 실행 내용을 변경이 가능 합니다.




사용법 요약
  • 먼저 Adobe AIR가 설치 되어 있어야 합니다.
  • Adobe AIR가 설치가 되어 있으면, 사이트에서 Download를 열어서 De MonsterDebugger를 설치 합니다.
  • 설치가 완료 되었으면, De MonsterDebugger를 실행합니다.
  • File > Export Client Class를 누르시고, De MonsterDebugger를 사용 할 프로젝트를 선택합니다.
  • 프로젝트하위에 nl이라는 폴더가 생성 된것을 확인 합니다.
  • 프로그램 시작 위치에 아래와 같은 코드를 프로그램에 추가해 줍니다.

import nl.demonsters.debugger.MonsterDebugger;
// Variable to hold the debugger
var debugger:MonsterDebugger;

// Init the debugger
debugger = new MonsterDebugger(this);

// Send a simple trace
MonsterDebugger.trace(this, "Hello World!")

패키지로 사용해서 따로 분리 하거나, Flex에서 사용 하실 때에는
De MonsterDebugger How it works를 참고해서 사용하시면 됩니다.

참고 사이트

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2009/11/04 13:49

XHTML Character Entity Reference Programming2009/11/04 13:49

웹개발 하시다 보면, 가끔 특수 문자를 입력해야 할 경우가 있는데, 이 특수 문자를 입력 할려면, 난감 할 때가 많습니다.
이럴때 참고 하는 사이트를 소개 합니다.



저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

폼에서 기본값을 넣어 주고.. 포커스가 가면 그 값을 지워주는 코드 입니다.
defaultValue에 대한 자바스크립트 코드는 이곳을 참고 하세요.

$(document).ready(function() {
   $('input[type=text]').focus(function() {
      if($(this).val() == $(this).attr('defaultValue')) {
         $(this).val('');
      }
   })
   .blur(function() {
      if($(this).val().length == 0) {
         $(this).val($(this).attr('defaultValue'));
      }
   });
});

위와 같은 코드를 넣어 주고.. 아래와 같은 코드를 사용하시면 됩니다.
<input type="text" value="입력해주세요." />

이렇게 해 주면.. "입력해주세요."가 기본값으로 입력 되게 됩니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2009/10/22 12:48

[MySQL] 최신 리스트 만들기. Programming/MySQL2009/10/22 12:48

매달 칵테일 파티를 열고 있습니다.
그리고 매달 최고의 금발 소녀를 탑 10을 뽑습니다.
선발 기준은 금발에 바스트사이즈가 3이상 ^^;;;;
그런데 매달 이 아가씨들을 뽑고 리스트를 갱신 하려니.. 귀찮습니다.
그래서 이걸 쿼리 한방으로 해결 할려고 합니다.
어떻게 할까요?

DROP TABLE IF EXISTS best_10_blond_girls;
CREATE View best_10_blond_girls as
SELECT concat(`name`,' has breast size = ', breast _size) as girls, hotness
from girls
WHERE hair_color like blond and breast _size > 3
ORDER BY hotness desc
LIMIT 10


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG MySQL
Posted by 신규하
2009/10/22 12:08

[MySQL] 사고다발자 제거하기. Programming/MySQL2009/10/22 12:08

이 놈의 클럽에서 자꾸 사고가 일어 나고 있습니다.
사장님은 극단의 결정을 내립니다.
클럽에서 사고를 3이번 이상 낸 고객을 고객 명단에서 삭제 할려고 합니다.
어떻게 해야 할 까요?

Table Club_members
-id
-name
-address

Table Club_accidents
-club_id
-accident_desc

여기에서도 역시 WHERE IN을 사용하면 됩니다.

DELETE from Club_members where id in (select club_id from club_accidents group by club_id having count(*) >= 3)

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG MySQL
Posted by 신규하

아래와 같은 테이블 GIRLS이 데이터가 있고 주소가 있는데.. 주소가 입력되어 있지 않은 걸들의 주소를 삭제 하고 싶다면,

TABLE GIRLS
-id INT
-name VARCHAR
-address_id INT [ foreign key ]
-hair_color VARCHAR

TABLE GIRL_ADDRESS
-address_id INT
-address_info VARCHAR
-phone VARCHAR

아래와 같이 작성해 주시면 됩니다.

DELETE from girls WHERE address_id not in (SELECT address_id from address)


저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG MySQL
Posted by 신규하
2009/10/22 11:46

[MySQL] 중복 레코드 지우기.. Programming/MySQL2009/10/22 11:46

기본적으로 중복되지 말아야 하는데.. 중복이 된 경우 그 행을 삭제하는 방법입니다.

DELETE FROM duplicate
WHERE id not in ( SELECT id from ( SELECT id from
duplicate group by phone) as id )

전화번호가 중복 된 것이 있을 경우, 위와 같이 WHERE NOT IN을 사용해서 제거해 줄 수 있습니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG MySQL
Posted by 신규하

예전 포스팅 중에서 codeigniter(이하 ci)에서 firephp 사용하기에 대한 포스팅이 있습니다.
그런데 사용할때 마다, $this->firephp->log('내용') 이런식으로 길게 사용하는게 귀찮아서 helper를 제작 했습니다.
아.. 그리고 뒤에 있는 내용들은 일반적으로 사용할 수 있는 debug도 추가해 봤습니다.

먼저 firephp를 설치 하셔야 합니다.

사용법 :
  • application/helper 디렉토리에 debug_helper.php를 복사해 줍니다.
  • application/autoload.php에 helper로딩에 debug를 추가해 줍니다.

파일명 : debug_helper.php
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * firephp
 *
 * @param    $var array, string, integer
 * @type    string : "log", "warn", "error"
 */
function firephp($value, $type = 'log')
{
    if( $type != 'log' AND $type != 'warn' AND $type != 'error')
    {
        $type = 'warn';
    }
    $CI =& get_instance();
    $CI->firephp->{$type}($value);
}

//------------------------------------------------------------------------------

/**
 * firephp
 *
 * @type    string : log, warn, error
 */
function firephp_last_query($type = 'log')
{
    if( $type != 'log' AND $type != 'warn' AND $type != 'error')
    {
        $type = 'warn';
    }
    $CI =& get_instance();
    $CI->firephp->{$type}($CI->db->last_query());
}

//------------------------------------------------------------------------------

/**
 * Outputs the query result
 *
 * @type    string : log, warn, error
 */
function firephp_session($type = 'log')
{
    if( $type != 'log' AND $type != 'warn' AND $type != 'error')
    {
        $type = 'warn';
    }
    $CI =& get_instance();
    $CI->firephp->{$type}($CI->session->all_userdata());
}

//------------------------------------------------------------------------------
/**
 * Outputs an array or variable
 *
 * @param    $var array, string, integer
 * @return    string
 */
function debug_var($var = '')
{
    echo _before();
    if (is_array($var))
    {
        print_r($var);
    }
    else
    {
        echo $var;
    }
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Outputs the last query
 *
 * @return    string
 */
function debug_last_query()
{
    $CI =& get_instance();
    echo _before();
    echo $CI->db->last_query();
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Outputs the query result
 *
 * @param    $query object
 * @return    string
 */
function debug_query_result($query = '')
{
    echo _before();
    print_r($query->result_array());
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Outputs all session data
 *
 * @return    string
 */
function debug_session()
{
    $CI =& get_instance();
    echo _before();
    print_r($CI->session->all_userdata());
    echo _after();
}

//------------------------------------------------------------------------------

/**
 * Logs a message or var
 *
 * @param    $message array, string, integer
 * @return    string
 */
function debug_log($message = '')
{
    is_array($message) ? log_message('debug', print_r($message)) : log_message('debug', $message);
}

//------------------------------------------------------------------------------

/**
 * _before
 *
 * @return    string
 */
function _before()
{
    $before = '<div style="padding:10px 20px 10px 20px; background-color:#fbe6f2; border:1px solid #d893a1; color: #000; font-size: 12px;>'."\n";
    $before .= '<h5 style="font-family:verdana,sans-serif; font-weight:bold; font-size:18px;">Debug Helper Output</h5>'."\n";
    $before .= '<pre>'."\n";
    return $before;
}

//------------------------------------------------------------------------------

/**
 * _after
 *
 * @return    string
 */

function _after()
{
    $after = '</pre>'."\n";
    $after .= '</div>'."\n";
    return $after;
}


//------------------------------------------------------------------------------


다운로드 :


사용법은...
간단한게 소스에서

firephp('내용');
등등.. 함수 내용대로 ^^;

참 쉽죠?

뒷 부분 원본 : http://codeigniter.com/forums/viewthread/130302/#When:06:42:58Z
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하
2009/09/26 12:25

PHP에서 AJAX 요청 판별하기 Programming/PHP2009/09/26 12:25

ajax로 요청한 값인지, 일반적인 웹페이지에서 요청한 값인지를 알아내는 방법입니다.

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
    // Ajax Request일 경우
    echo 'This is an ajax request!';
    exit;
}
// Ajax Request가 아닐 경우
echo 'This is clearly not an ajax request!';

아래와 같이 define을 해서 사용 하셔도 좋습니다.

// Define Ajax Request
define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');

필요한 곳에 if( IS_AJAX) 이렇게 사용하시면 됩니다.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

ci(CodeIgniter)에서 접속한 국가를 알아내는 플러그인이 있어서 소개 합니다.


사용자가 접속한 사람의 IP를 가지고 사용자의 지역을 알아 줍니다.
플러그인에서 약간 수정하고 정리한 것을 여기에 올렸습니다. 참고 하시고 사용하세요.


지역 정보는 아래 데이터에서 받아서 사용합니다.(압축에 포함되어 있음)

ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest ftp://ftp.arin.net/pub/stats/arin/delegated-arin-latest ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest ftp://ftp.ripe.net/ripe/stats/delegated-ripencc-latest ftp://ftp.apnic.net/pub/stats/iana/delegated-iana-latest

여기서 delegated-iana-latest 파일의 데이터를 추가 하면, ZZ로 나오는 지역이 있어서.. 제외 하셔도 괜찮습니다. 그리고 지역이 없으면 빈값이 나옵니다.

PHP용 클래스가 필요 하신 분은
여기로 가서 참조 하세요.
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

FireBug는 파이어폭스의 디버그용 에드온 입니다. 이 파이어버그를 이용해서 javascript를 좀 더 유연하고, 우아하게 디버깅하는 방법을 소개 해 볼까 합니다.

전 이걸 모르기 전까지는 주로 alert을 사용해서 주로 디버깅을 했습니다. -_-;;
정말 시끄럽고 우아하지 않은 방법이였는데.
firebug 덕분에 우아한 자바스크립드 디버깅이 가능해 졌습니다 ^^;

먼저 준비물..
파이어폭스를 설치 하시고 에드온을 설치 하시면 됩니다.

설치가 제대로 되었다면 위 스샷과 같이 바퀴벌레 한마리가 파폭 오른쪽 하단에 생깁니다. 벌레라서.. 짜증 날지도 모르지만, 자주 사용하다 보면, 너무 유용해서 애정까지 생기게 됩니다.


샘플 코드
test.html
<html>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>파이어버그를 이용한 자바스크립트 디버깅</title>
    <script type="text/javascript" src="test.js"></script>

</head>

<body>
파이어버그를 이용한 자바스크립트 디버깅
</body>
</html>


test.js
//스택 만들어 주기.
function Stack(){
    this.list = [];
}

Stack.prototype.push = function(value){
    this.list.push(value);
}

Stack.prototype.pop = function(){
    return this.list.pop();
}

Stack.prototype.size = function(){
    return this.list.length;
}

//스택의 내용으로 스트링 만들어 주기.
Stack.prototype.toString = function(){
    var temp = '[ ';
    for(var i = 0, length = this.list.length; i <= length; i++){
      temp += this.list[i];
      if(length - i != 1){
          temp += ', ';
      }
    }
    temp += ' ]';
    return temp;
}

var fileName = "test.js"

var stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
alert(stack.toString());


샘플 코드 다운로드 :




FireBug의 꽃... 스트립트 브레이크 포인트 걸기


샘플코드를 실행 하시면, 알림창이 하나 똑~ 뜰겁니다.. 살포시 닫아 주시고, 오른쪽 하단의 파이어버그 버튼을 눌러주세요. 그리고 스크립트 탭(?)을 눌러 줍니다. 그러면, 스크립트 코드가 나옵니다. 그리고 all옆에 있는 콤보를 클릭하면, 현재 파일에서 포함된 스크립트 목록이 나옵니다. 여기서 test.js를 선택 해 줍니다. 일반적으로 사이트를 제작하면서 보면, 스크립트 파일을 여러게 포함하게 되니까.. 이런 파일들은 여기서 찾아서 선택해 주시면 됩니다.

그리고 샘플소스에서 20번째 줄 옆을 클릭해서 브레이크 포인트를 걸어 줍니다. 그리고 F5를 눌러서 페이지를 새로읽기를 합니다.
그러면, 아래 스샷과 같이 브레이크 포인트가 걸리게 됩니다. 그리고 옆 창에 있는 감시를 눌러 주시면, 현재 브레이크 포인트에서 설정된 값들이 출력되게 됩니다.


그러면 브레이크 포인트 이동.. 이동은 상단의 버튼으로 하시면 됩니다.
순서대로 설명 드리면, 실행, 함수안으로(F11), 한줄씩 실행(F10), 함수 밖으로.. 이렇게 구성되어 있습니다. 이렇게 현재의 값을 보면서, 스크립트 디버깅을 하시면, 훨씬 편하게 하실 수 있습니다.



콘솔에 메시지 찍기

test.js파일에 아래와 같이 추가를 해 보고 실행을 해 봅니다.

console.log(stack.toString());
console.debug(stack.toString());
console.info(stack.toString());
console.warn(stack.toString());
console.error(stack.toString());


그러면 파폭의 오른쪽 하단에 아래와 같은 메시지가 출력 됩니다. 오류가 2개나 있답니다. ^^


이건 console.warn과 console.error때문입니다.
오류가 있다고 하니 봐야 겠죠? 파이어버그에서 콘솔 탭을 클릭해 봅니다.
그러면 아래와 같이 출력이 되어 있을 겁니다. 혹시 출력이 안 되어 있다면, F5로 다시 읽기해 주세요.. 가끔 그런 경우가 있더라구요.


이걸 사용하면 alert이나 스트링 출력으로 하던 디버깅의 수고를 덜 수 있습니다.

그런데 주의 할 점은 이 console 명령어가, 데브툴이 설치되어 있지 않은 브라우저에서는 동작을 안 하고.. 스크립트가 멈추는 경우가 있습니다. 디버깅 이후에는 오류 알림 빼고는 삭제 해 주는 것을 추천합니다.




명령어도 실행해 보자

파이어버그의 또 다른 감정은 스크립트의 값을 바로 보고, 함수를 실행해 볼 수 있다는 겁니다.

우선 fileName에 뭐가 들어 있는지 보고 싶다면, 콘솔의 오른쪽 창에 fileName이라고 타이핑을 하고 하단에 있는 실행을 클릭하거나, Ctrl+엔터를 누르면 실행이 됩니다.

실행을 해 보면, 위와 같이 fileName에 들어 있는 내용을 확인 해 보실 수 있습니다.

다른 다음에는 stack에는 뭐가 들어 있는지 확인해 보겠습니다.

값이 저런식으로 들어 있군요..
그러면, 값을 추가 하고 내용을 보겠습니다.
이런식으로 2줄을 쓰고 실행을 해도 연속으로 실행이 됩니다.


여기서 좀 더 응용을 하면, 아까 브레이크 포인트를 건 곳을 다시 실행해 보고 싶으시다면, 콘솔창에서 브레이크 걸어 둔 함수를 다시 실행해서 하실 수 있죠..

이 외에도 파이어버그의 기능이 많은데.. 자바스크립트를 디버그 하는 기능은 이정도까지 설명하겠습니다
저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

HTML에서 FLASH로 변수 전달하기..(AS 3.0)  라는 제목으로 포스팅을 했었습니다.
그런데, objectswf.js를 사용 할 때에는 이전에 썼던 방법으로 값이 전달 되지 않는 문제가 있어서, 수정한 코드를 새로 올려 드립니다.

예제는 이전과 비슷한 폼입니다.

위와 같이 생긴 플래쉬 파일을 만들고... 다이나믹 텍스트로 tx_userName, tx_gender라는 파일을 만들었습니다.

기본적으로 출력하는 폼에 FlashVars를 추가해 줍니다.
<script type="text/javascript" src="./swfobject.js"></script>
<script type="text/javascript">
    var flashvars = false;
    var params = {
        FlashVars : "userName=gyuha&gender=male",
    };
    var attributes = {
    };
    swfobject.embedSWF("./sample.swf", "flash", "320", "240", "9.0.0", "./expressInstall.swf", flashvars, params, attributes);
</script>

<div id="flash">
        <h1>Alternative content</h1>
        <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>

그리고 플래쉬 소스에는 아래와 같이 입력해 줍니다.

	var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
	tx_userName.text = paramObj.userName;
	tx_gender.text = paramObj.gender

자세한 내용은 예제를 받아서 보시면 될 것 같습니다.


예제 다운로드 :

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

Flash를 홈페이지에 넣고... jquery로 z-index로 모달을 만들어서 사용 할려고 하면, flash가 z-index와는 아무 상관 없이.. 떡하니.. 위에 나오는 문제가 발생합니다.
이를 해결 하는 방법은 아래와 같습니다.

여기에서 사용한 swfobject.js는 아래 주소의 swfobject 최신 버전을 사용했습니다.


<script type="text/javascript" src="./swfobject.js"></script>
<style type="text/css">
    #test
    {
        position: absolute;
        top: 100px;
        left: 200px;
        width: 400px;
        height: 200px;
        background-color: #ccc;
        padding: 10px;
        color: #333;
        font-family: georgia;
        font-size: 2em;
    }
</style>
</head>
<body bgcolor="#ffffff">

<div id="flash">
        <h1>Alternative content</h1>
        <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
<div id="test">테스트 레이어</div>

<script type="text/javascript">
    var flashvars = false;
    var params = {
    };
    var attributes = {
    };

    swfobject.embedSWF("./wmode.swf", "flash", "320", "270", "9.0.0", "/public/swf/expressInstall.swf", flashvars, params, attributes);
</script>

분명히 test 위치해 있는데.. flash가 떡하니 위로 나오는 문제가 발생합니다.


해결 방법은 간단합니다.

<style type="text/css">
    #test
    {
        position: absolute;
        top: 100px;
        left: 200px;
        width: 400px;
        height: 200px;
        background-color: #ccc;
        padding: 10px;
        color: #333;
        font-family: georgia;
        font-size: 2em;
    }
</style>
</head>
<body bgcolor="#ffffff">

<div id="flash">
        <h1>Alternative content</h1>
        <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
<div id="test">테스트 레이어</div>

<script type="text/javascript">
    var flashvars = false;
    var params = {
        wmode: 'opaque'
    };
    var attributes = {
    };

    swfobject.embedSWF("./wmode.swf", "flash", "320", "270", "9.0.0", "/public/swf/expressInstall.swf", flashvars, params, attributes);
</script>

params에 wmode: 'opaque'를 추가해 주면 아래와 같이 정상적으로 출력 됩니다.
원래는 flash에서 기본으로 만들어 태그에서 수정해 볼려고 했는데, 이상하게 거기서는 이 방법이 통하지 않아서.. swfobjectf를 사용해서 이 문제를 해결 했습니다.


예제 다운로드 :

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하

웹개발 프레임 워크를 비교해 놓은 사이트가 있어서 소개 합니다.
각 프레임 워크별로 비교를 하고 있고 필요한 기능들과 라이센스를 표기하고 있습니다.



프레임워크 비교해 놓은 것을 커닝해 보겠습니다. 자세한 내용은 각 이미지를 클릭해 보세요.





저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG CSS, Framework, JS, php, Ruby
Posted by 신규하
2009/09/18 14:13

Javascript URL Base64 인코딩/디코딩 Programming2009/09/18 14:13

URL에서 한글을 쓸 때 문제가 생겨서 URL을 인코딩/디코딩을 이것저것 실험해 보다.. 한글에도 문제가 없는 것을 찾았습니다.


우선, 이 코드가 별 문제가 없이 되는것을 확인 했습니다.
간단하게 예제 프로그램을 만들어서 올립니다.

아래에서 실행해서 테스트 해 보셔도 괜찮습니다.
문자입력 상자에 문자를 입력하면 각 해당 방법으로 인코딩/디코딩 한 문자열이 출력 됩니다. 그리고 인코딩이나 디코딩한 문자열을 문자입력 상자에 적용해 보고 싶으면 apply를 클릭해 주시면 됩니다.


문자입력

base64 encoded data (apply);

base64 decode data (apply);

UTF-8 encoded data (apply);

UTF-8 decoded data (apply);

URL Encoded data (apply);

URL Decoded data (apply);

저작자 표시
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 신규하