kanemochi

kanemochi.egloos.com

포토로그 마이가든 방명록



어플라이언스 기본테마

http://news.naver.com/main/read.nhn?mode=LSOD&mid=sec&sid1=105&oid=293&aid=0000004524&271723


"강해 지지 않았다면 돌아오지 않았다!"

오는 4월 29일 개봉하는 아이언맨 2의 홍보 블로그에 나온 문구입니다.

영화를 보기보다는 영화 전문지를 사서 '읽는' 데 익숙한 제가 '아이언맨2'를 이야기하는 이상한 일이 벌어진 이유는 순전히 '오라클' 때문입니다. 여기서 거론하는 오라클은 영화 매트릭스에 나온 '예언자'로 국내 영화팬들에게 알려져 있지만 IT 바닥에서는 '데이터베이스'를 만들면서 무지막지한 식욕을 뽑내면서 경쟁 업체들을 가차없이 먹여 삼키고 있는 세계 3대 소프트웨어 기업으로 더 알려져 있습니다.

최근 우리나라 경제지에서는 이 오라클의 래리 엘리슨 회장이 지난해 연봉 950억원을 받아 가장 많은 돈을 벌었다고 소개되기도 했죠. 실은 이 양반은 세계 두번째 부호에 올라있는 인물이기도 합니다.

이야기가 옆으로 샜군요. 전 항상 그렇습니다. 이해해 주시길!!

우선 아이언 맨 2의 홍보 영상을 보면 사람과 기계가 한몸이 돼 악당을 물리치는 '영웅'이 탄생합니다. 할리우드 특유의 상상력들을 적용한 것이지요. 이런 것들이 어제 오늘 다뤄진 주제는 아니었지만 아이언 맨 2가 개봉될 시점과 오라클이 뭔가 고객들에게 이야기하고 싶은 시점이 교묘히 맞아 떨어진 것 같습니다.
oracleironman2100426오라클은 그동안 소프트웨어 한 분야에서만 활동해 왔습니다. 정보화 분야의 핵심 시스템인 데이터베이스 분야에서 1위를 달리고 있습니다. 오라클은 데이터베이스 시장에서 번 돈과 그 영향력을 바탕으로 미들웨어 분야와 ERP(전사적자원관리), CRM(고객관계관리)와 같은 기업용 애플리케이션 분야로 사업을 확장했습니다. 최근에는 리눅스 OS 시장에도 뛰어들면서 IT 분야의 모든 소프트웨어를 품에 안았습니다.

이랬던 오라클이 '솔라리스'와 '자바'로 유명한 썬마이크로시스템즈를 인수했습니다. 썬은 대표적인 하드웨어 업체로 유명하지만 마이크로소프트의 독점 소송을 이끌었던 업체로 국내 누리꾼들에게도 알려진 하드웨어 위주의 사업을 펼쳤던 업체입니다. 썬은 하드웨어 일변도의 정책을 소프트웨어와 서비스 분야로 확대하려고 했지만 타이밍을 놓치고 오라클에 인수됐습니다. 작은 회사로 모든 리소스를 투입해 거함 마이크로소프트와 소송에 매진하다가 시장의 흐름을 놓친 것이죠. 상대를 골라도 잘 골라야 한다는 걸 썬이 잘 보여줬다고나 할까요.

그럼 소프트웨어 회사가 왜 하드웨어 업체를 샀을까요? 래리 엘리슨 오라클 CEO는 썬을 인수하면서 "애플과 시스코 같은 회사의 비즈니스 모델이 부러웠다"고 밝힌 바 있습니다. 요즘 애플 모르면 국내서도 간첩 대접 받을 텐데요. 애플은 하드웨어와 소프트웨어를 최대한 결합해 사용자에게 제공합니다. 시스코의 경우 바퀴벌레 잡는 세스코하고 헷갈려 하는 국내 누리꾼들이 많던데요. 시스코는 전세계 통신 네트워크 장비 1위 업체입니다. 자사의 소프트웨어를 네트워크 장비에 최적화시켜서 세계 시장을 석권하고 있습니다.

오라클은 향후 IT 시장이 이렇게 하드웨어와 소프트웨어가 아주 긴밀히 통합된 형태로 변모할 것이라고 주장하고 있습니다. 그동안 오라클은 소프트웨어만 만들었고, 이를 가져다가 HP, 썬, 델, 후지쯔, IBM 같은 하드웨어 업체가 자사 장비에 최적화시켜 왔습니다. 고객들은 데이터베이스를 구매할 때도 오라클과 서버 업체와 분리해서 구매를 하는 경우가 많았습니다.

그런데 최근 데이터량이 기하급수적으로 늘어나고 있습니다. 표준화된 장비와 소프트웨어로 처리하는 데는 한계가 있는 것이죠. 하드웨어와 소프트웨어가 최고의 궁합을 맞춰서 나온 것들이 바로 '어플라이언스'라는 것입니다. 네트워크 장비나 보안 분야에서는 이미 이런 어플라이언스가 일반화돼 있습니다. 그런데 점차 데이터베이스를 가동하는 서버도 이렇게 변모할 것이라는 거죠.

현재는 모두가 이런 어플라이언스를 원하는 것은 아닙니다. 데이터웨어하우스(DW)로 불리는 특정 영역에서 수요가 있습니다. 기업 내부에 존재하는 수 많은 데이터를 한 곳에 모아놓고 분석을 할 때 사용하는 것이죠. 오라클은 IBM이라는 회사를 겨냥하고 있습니다. IBM은 모든 것들을 다 가지고 있습니다. 소프트웨어 업체들과 일도 많이 하지만 소프트웨어 사업을 강화하면서 자사의 소프트웨어가 자사의 서버에서 최고의 성능을 내도록 하고 있습니다.

고객들 입장에서는 하드웨어와 소프트웨어를 별도로 구매해서 이를 자신의 업무에 최적화 시키느라 많은 시간을 소비할 필요없이 자신의 업무에 맞는 어플라이언스를 사서 필요 부분만 손을 대고 싶어 합니다. 지금은 DW 분야에 한정되고 있지만 향후엔 미들웨어 분야로 확대될 확율도 높습니다. 필요한 어플라이언스를 사서 그냥 쌓기만 하면 작동이 가능하도록 하는 것이죠.

고객 입장에서는 이점도 있지만 특정 업체에 종속되는 상황도 발생할 수 있습니다. 하지만 전반적으로 IT 시장이 몇몇 업체로 과점화되고 있는 상황이기 때문에 선택의 폭도 넓지가 않습니다.

하드웨어와 소프트웨어를 최고로 잘 결합하겠다는 오라클이 아이언맨2를 자사의 홍보에 적극 이용하고 있는 이유입니다.

그런데 여기서 의문이 듭니다. 아이언맨2는 영웅이 됐지만 과연 오라클도 '영웅'이 될까요? 예고편을 보다보면 사악한 '악당'도 등장하거든요. 스파이더맨에서도 고블린이라는 기기를 이용한 악당이 등장합니다. 오라클은 자신이 '영웅'이라고 하지만 고객 입장에서는 '영웅'이 아니라 DB 시장을 장악한 후 고객들의 주머니를 털어가는 '악당'으로 생각하는 이들도 많습니다. 그런 악당이 하드웨어 분야까지 손을 대니 걱정이 더 많다는 것이죠.

오라클(Oracle)은 악당일까요 영웅일까요?

오라클 덕분에 아이언맨 2를 좀 봐야 할 것 같네요. ^.^

도안구 기자 eyeball@bloter.net



도안구 기자님...
오라클에서 명예소송 들어오면 어쩌려구..
암무튼 바른글 좋은글 잘 읽었습니다...


勾配 slope 기본테마


내가 개발한 SSD Project


내가 개발한 도시바 주택용 태양광 발전 시스템 Project


안드로이드, 아이폰OS '추격중' 안드로이드

http://www.zdnet.co.kr/Contents/2010/03/29/zdnet20100329105835.htm


전세계 스마트폰 운영체제(OS) 시장에서 아이폰OS가 독보적인 1위를 유지하는 가운데 구글 안드로이드의 추격전이 가시화되고 있다.

 

IT정보 미디어인 아스테크니카는 27일(현지시간) 아이폰 운영체제(OS)가 여전히 모바일웹을 지배하고 있지만 안드로이드 점유율이 증가세라고 보도했다. 아스테크니카는 모바일광고업체 애드몹이 지난 25일(현지시간) 내놓은 모바일인터넷 통계를 인용했다.

 

애드몹 모바일 통계는 자사 모바일광고 트래픽을 통해 단말기 및 OS 종류, 사용지역 등을 조사한 것이다.

 

보도에 따르면 아이폰과 안드로이드 OS 트래픽 점유율은 전세계 기준으로 여전히 격차가 있었지만 안드로이드는 높은 성장세를 보이며 아이폰을 뒤쫓는 추세다.

 

지난달 기준 전세계 아이폰OS 점유율은 1위(50%), 안드로이드가 2위(24%)로 두배 격차다. 심비안(18%), 리서치인모션(RIM)(4%), 윈도모바일(2%) 등이 뒤를 따랐다.

 

▲ 2010년 2월 전세계 스마트폰 운영체제(OS)별 이용량 (출처: 애드몹)

지난해 2월 점유율은 심비안이 1위(43%), 아이폰이 2위(33%)였다. 지난 1년동안 아이폰은 주로 증가세, 심비안은 하락세였다. 당시 안드로이드(2%)는 RIM(10%)이나 윈도모바일(7%), 팜(3%)보다 낮은 점유율에 머물렀다.

 

▲ 2009년 2월 전세계 스마트폰 운영체제(OS)별 이용량 (출처: 애드몹)

한편 미국내 점유율은 안드로이드가 아이폰을 거의 따라잡은 모양새다.

 

지난달 기준 미국내 아이폰OS 점유율은 1위(44%)인데 안드로이드가 2위(42%)로 그 뒤를 이었다. 아이폰은 지난해 2월에도 1위(50%)였지만 안드로이드는 림, 윈도모바일, 팜에 이어 5위(3%)에 불과했다.

 

▲ 2010년 2월 미국 스마트폰 운영체제(OS)별 이용량 (출처: 애드몹)

아스테크니카는 지난해 10월 아이폰 점유율이 한때 55%까지 이르렀던 사실을 지적하고 "안드로이드는 특히 어마어마한 성장을 거뒀다"며 "여러 HTC 단말기와 모토로라 '드로이드'가 이런 성장세를 이끌었을 것"이라고 분석했다.

 

▲ 2009년 2월 미국 스마트폰 운영체제(OS)별 이용량 (출처: 애드몹)

통계에 따르면 2월부터 지난달까지 1년동안 스마트폰을 통한 인터넷사용량이 193% 늘어 전체 모바일인터넷 비중에서 절반에 달했다. 그에반해 일반 휴드폰은 같은기간 증가량이 31%에 불과하고 전체 비중이 58%에서 35%로 떨어졌다. 휴대폰과 스마트폰을 제외한 모바일 인터넷 기기(MID), 휴대용 게임기와 전자책 단말기 등의 모바일인터넷 사용량은 403% 늘어 전체 17%을 차지했다.

트랙백 주소 : http://www.zdnet.co.kr/Reply/trackback.aspx?key=20100329105835

아이폰에 가사넣기 IPHONE


아이폰에 음악넣기


아이폰을 USB 처럼 만들게 해주는 프로그램 IPHONE

http://mutizen.tistory.com/89





아이폰을 USB 처럼 만들게 해주는 프로그램

 
왜 필요한가? 물론 아이폰의 용량은 16, 32기가로 방대한데 오직
아이튠즈를 통하여 일부 확장자만 기록할 수 있기 때문에 효율성이 많이 떨어집니다.
아이폰이 USB처럼 되면 케이블만 가지고 다니면 외장하드처럼 사용할 수 있다.

또한 외장하드가 된 아이폰에 동영상을
아이튠즈 없이 넣어 실행할 수 있기 때문에 매우 좋습니다.
물론 모든 확장자가 다 올라가는 것은 아닙니다. 특별히 MP4파일은 문제없이 재생됩니다.
일단 아래 싸이트에 방문하셔서 해당 프로그램을 다운 받습니다.

http://iphonefolders.com/



먼저 사용하기 위해서는 숨겨진 폴더를 볼 수 있도록 윈도우에서 설정을 해야 합니다.
매우 간단합니다.

제어판으로 가셔서 폴더옵션을 클릭하시면 창이 뜨죠..


상위 메뉴중에서 '보기'를 클릭합니다.
그리고 스크롤을 아래로 내리다가 보시면 '숨김 파일 및 폴더'가 있습니다.
아래의 '숨김 파일, 폴더 및 드라이브 표시'에 체크 후 확인을 누릅니다.

그리고 아이폰을 컴퓨터와 연결하면
예전처럼 아이폰을 컴퓨터가 감지하면서 드라이브가 생기죠
그 안에 들어가면 'DCIM'이라는 폴더를 전과 같이 보실 수 있습니다.

DCIM 폴더로 들어가면 사용량에 따라
폴더이름이 나오는데 그중 '103APPLE' 폴더가 있을 겁니다.
그곳에 MP4파일을 올려주십니다.

그리고 파일명을 IMG_0000.MOV로 해주시는데 가운데 '0000'
아무런 숫자를 넣으면 됩니다.

그러면 사진 보는 곳에서 해당 동영상을 볼 수 있을 겁니다.

내가 개발한 HD DVD Project

RD-A300/600

http://www3.toshiba.co.jp/hdd-dvd/products/vardia/rd-a600_a300/index.html

 

※各画面は開発中、もしくは従来機種の画面です。実際の製品とは若干異なる場合があります。
※1地上デジタル放送(約17Mbps)をTSモード、HD品質、音声MPEG2 AAC5.1chで録画した場合。ただし、TSモードの1回の最長連続録画予約単位は24時間未満です。
※2画質レートMN1.0Mbps、音声モードM1時のHDD最大録画スペース。ただし、1回の最長 連続録画単位は9時間。
※3ハードディスクの容量は、1GB=10億バイトで計算しています。
●ドルビーロゴ、Dolby、ドルビー、及びダブルD記号は、ドルビーラボラトリーズの登録商標です。 ●DTSロゴ、DTSは、デジタル・シアター・システムズ社の登録商標です。 ●Qサウンド技術はQサウンド社によって開発されたサラウンド音響技術です。 ●HDMI、HDMIロゴおよびHigh-Definition Multimedia Interfaceは、HDMI Licensing LLC.の登録商標または商標です。 ●W録®、WEPG®は、株式会社東芝の登録商標です。 ●その他の社名や商品名は各社の登録商標または商標です。

●各商品説明ページに掲載している画面は機能説明用のものです。実際の製品とは若干異なる場合があります。

 

RD -A301

 

http://www3.toshiba.co.jp/hdd-dvd/products/vardia/rd-a301/index.html

 

※各画面は開発中、もしくは従来機種の画面です。実際の製品とは異なる場合があります。
※1地上デジタル放送(約17Mbps)をTSモード、HD品質、音声MPEG2 AAC5.1chで録画した場合。ただし、TSモードの1回の最長連続録画予約単位は24時間未満です。
※2画質レートMN1.0Mbps、音声モードM1時のHDD最大録画スペース。ただし、1回の最長 連続録画単位は9時間。
※3ハードディスクの容量は、1GB=10億バイトで計算しています。
●ドルビーロゴ、Dolby、ドルビー、及びダブルD記号は、ドルビーラボラトリーズの登録商標です。 ●DTSロゴ、DTSは、デジタル・シアター・システムズ社の登録商標です。●HDMI、HDMIロゴおよびHigh-Definition Multimedia Interfaceは、HDMI Licensing LLC.の登録商標または商標です。 ●W録®、WEPG®は、株式会社東芝の登録商標です。 ●その他の社名や商品名は各社の登録商標または商標です。

●各商品説明ページに掲載している画面は機能説明用のものです。実際の製品とは若干異なる場合があります。
デジタル放送番組の新しいコピー制限にいち早く対応!
 
ダビング10の詳しい機能情報はこちら
HDトランスコーダーで高画質・長時間録画を実現
 
 詳しい情報はこちら
HD DVDプレーヤー機能を搭載しています。DVD-Videoや音楽CDだけでなくHD DVDソフトも高画質で楽しめます。
 
 詳しい情報はこちら
初めて使うユーザーにわかりやすい「スタートメニュー」やはじめての設定など簡単機能を満載。
 
 詳しい情報はこちら
番組を見ながら、選局や録画予約、録画済み番組の再生が可能。
詳しい録画機能情報はこちら
ハイビジョン番組をはじめ、録画番組の編集がフレーム単位で可能。
編集ナビの詳しい機能情報はこちら
画面に沿って進めるだけで、迷わず簡単にダビングできる。
かんたんダビングの詳しい機能情報はこちら
ネットdeナビ(Ver.2)を搭載。ネットdeモニターやネットdeダビング、メール予約といった機能もフル搭載。
ネットdeナビ(Ver.2)の詳しい機能情報はこちら

テレビのリモコンでヴァルディアの操作ができるレグザリンク(HDMI連動)が使えます。

 

 

RD-X7

http://www3.toshiba.co.jp/hdd-dvd/products/vardia/rd-x7/index.html

 

BSデジタルHD放送(24Mbps)をTS録画した場合とTSE3.6Mbps(音声1ストリーム)で録画した場合を比較したおよその値。画質は元の映像に対して変化します。
※1TSE3.6Mbps(音声1ストリーム)で録画した場合。低い画質レートでTSE記録するとブロック状のノイズが目立ったり、映像が乱れたりすることがあります。
※2画質レートMN1.0Mbps、音声モードM1時のハードディスク最大録画スペース。ただし、1回の最長 連続録画単位は9時間。
※3ハードディスクの容量は、1GB=10億バイトで計算しています。
●ドルビーロゴ、Dolby、ドルビー、及びダブルD記号は、ドルビーラボラトリーズの登録商標です。 ●DTS および DTSロゴや記号はDTS社の登録商標または商標です。●HDMI、HDMIロゴおよびHigh-Definition Multimedia Interfaceは、HDMI Licensing LLC.の登録商標または商標です。 ●W録®、WEPG®は、株式会社東芝の登録商標です。 ●その他の社名や商品名は各社の登録商標または商標です。


내가 개발한 au 핸드폰 모델 Project


안드로이드폰이 아이폰보다 좋은 10가지 이유 안드로이드


http://www.zdnet.co.kr/Contents/2010/03/16/zdnet20100316115859.htm


[지디넷코리아]구글의 스마트폰 운영체제(OS) '안드로이드'는 이동통신 시장에 가장 위협적인 존재로 성장하고 있다. 애플에겐 '운명적 숙적'과도 같다.

 

씨넷은 15일 '안드로이드폰이 아이폰보다 좋은 10가지 이유'란 제목에 기사를 내보냈다. '기능·디자인·편의성' 등 다방면에서 두 제품을 비교 분석한 것이다. 

 

■멀티태스크
HTC가 최초 개발한 안드로이드폰인 ‘넥서스원’은 애플 아이폰이 흉내 낼 수 없는 수준의 ‘멀티태스크(multitask)’를 지원한다. 소형 액정에 나타난 바탕화면에서 갖가지 애플리케이션을 동시에 구동시켜 업무효율성 측면에서 우위를 점하고 있다. 

■구글과의 결합  
구글이 제공하는 모든 인터넷서비스와 연동된다는 점은 안드로이드폰만의 특장점이다. 'G메일''구글 토크''구글 맵''구글 고글''유튜브''구글 캘린더', 나아가 구글의 킬러 서비스인 '검색'과도 연동이 잘 이뤄져 통합된 인터넷서비스를 구현할 수 있다. 아이폰도 구글의 서비스를 지원하고 있긴 하나 구글폰을 따라 잡을 수 있을 정도는 아니다.

개인화된 위젯
안드로이드폰 액정에 나타난 아이콘은 사용자가 원하는 대로 설정할 수 있다. 예컨대 ‘바로 가기’를 자유롭게 추가할 수 있고, 관련된 서비스를 폴더에 차곡차곡 정리해 원할 때 빼 쓸 수 있다. 또 소셜네트워크사이트(SNS)인 '페이스북'이나 '트위터'와 뉴스 및 날씨에 대한 위젯을 화면 상단에 따로 배열할 수 있어 당장 필요한 정보를 빠르게 취득할 수 있다. 또 블루투스나 와이파이(Wi-Fi)와 같은 인터넷 접속 옵션도, 액정화면에서 손쉽게 제어할 수 있다. 

안드로이드 오픈마켓
구글 ‘안드로이드 마켓’에 등록된 애플리케이션은 애플 ‘앱스토어’에 비해 수적으로 열세이나 구글은 애플처럼 사용자가 등록한 애플리케이션을 마음대로 삭제하지 않는다.

PC동기화와 외장메모리
안드로이드폰은 아이폰과 다르게 외장 메모리 기능을 지원한다. 또 음원 사이트인 ‘아이튠즈’와 같은 소프트웨어와 반드시 연결되지 않더라도 PC와 연결할 수 있어 더 많은 서비스를 지원받을 수 있다. 

브라우저
안드로이드가 제공하는 기본 브라우저는 아이폰의 ‘사파리’처럼 다채로운 기능을 제공한다. 안드로이드가 제공하는 표준 브라우저가 사용자의 마음에 썩 들지 않더라도 '오페라' 등 다른 선택을 할 수 있다. 무엇보다 ‘플래시 라이트’는 아이폰에서 지원되지 않는 것이다.

골라 잡는 이동통신사
AT&T에 불만을 가지고 있는 아이폰 사용자는 무척 많다. 하지만 안드로이드에선 스프린트, T모바일, 버라이즌 와이어리스 등 모든 이동통신회사 중 원하는 서비스를 선택해 받을 수 있다.

많은 종류의 디바이스
아이폰은 뛰어난 제품이긴 하나 오직 한 가지 디자인에 국한된다. 하지만 안드로이드폰은 다양한 디자인과 크기에 제품을 공급하고 있다.  

■오픈 OS
안드로이드에선 개별 개발자들이 오픈 운영체제(OS)를 통해 독창적인 디자인과 기능을 더할 수 있다. 이를 통해 안드로이드 커뮤니티가 활성화될 수 있는 것이다.

탈부착 배터리
배터리 교환이 불가능한 아이폰에 비해 자유롭게 교체 가능한 안드로이드폰의 하드웨어 속성은 더 이상 말이 필요 없는 최고 차별점이다. 
 



트랙백 주소 : http://www.zdnet.co.kr/Reply/trackback.aspx?key=20100316115859

Checkboxtree

http://moogi.tistory.com/category/jQuery/Plugin

 

http://floatmargin.com/2009/jquery-checkbox-tree-plugin-new-and-improved/

 

 

 

 

  1. <ul class="mytree">  
  2.   <li>  
  3.     <input type="checkbox" name="foo" value="whatever" />  
  4.     <label>Item 1</label>  
  5.   <ul>  
  6.     <li>  
  7.       <input type="checkbox" name="foo" value="whatever" />  
  8.       <label>Child Item 1</label>  
  9.     </li>  
  10.   </ul>  
  11.   </li>  
  12. </ul>  

All you need to use checkbox tree is this:

  1. jQuery(document).ready(function(){   
  2.   jQuery(".mytree").checkboxTree();   

AJAX Upload jQuery

http://valums.com/ajax-upload/





Browsers force us to use file inputs (<input type=”file” />) for uploads, which are impossible to style. Moreover, form-based uploads look obsolete in modern web applications. We can use flash to solve this problem, but JavaScript works nice too.

AJAX Upload allows you to easily upload multiple files without refreshing the page and use any element to show file selection window. It works in all major browsers and doesn’t require any library to run. AJAX Upload doesn’t pollute the global namespace, and is tested with jQuery, Prototypejs.

Demo

Here is an examples for AJAX Upload used with jQuery.

Download

Version 3.9 was released on 01.01.2009

Issues, contributing and latest version

The project has been moved to GitHub, and you are welcome to fork and hack it. Also the preferred way to leave comments, bug reports and requests is to use an issue tracker. You should be registered on GitHub to do that.

How to use it?

Creating the uploader

First, you should create button. (You can use any element).

<div id="upload_button">Upload</div>

Next, you should create ajax upload instance. In it’s simplest form, you can create it using the following code:

// You must create it only after the DOM is ready for manipulations
// Use $(document).ready for jquery
// document.observe("dom:loaded" for prototype
new AjaxUpload('upload_button_id', {action: 'upload.php'});

Configuring ajax upload

new AjaxUpload('upload_button_id', {
 
// Location of the server-side upload script
 
// NOTE: You are not allowed to upload files to another domain
  action
: 'upload.php',
 
// File upload name
  name
: 'userfile',
 
// Additional data to send
  data
: {
    example_key1
: 'example_value',
    example_key2
: 'example_value2'
 
},
 
// Submit file after selection
  autoSubmit
: true,
 
// The type of data that you're expecting back from the server.
 
// HTML (text) and XML are detected automatically.
 
// Useful when you are using JSON data as a response, set to "json" in that case.
 
// Also set server response type to text/html, otherwise it will not work in IE6
  responseType
: false,
 
// Fired after the file is selected
 
// Useful when autoSubmit is disabled
 
// You can return false to cancel upload
 
// @param file basename of uploaded file
 
// @param extension of that file
  onChange
: function(file, extension){},
 
// Fired before the file is uploaded
 
// You can return false to cancel upload
 
// @param file basename of uploaded file
 
// @param extension of that file
  onSubmit
: function(file, extension) {},
 
// Fired when file upload is completed
 
// WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
 
// @param file basename of uploaded file
 
// @param response server response
  onComplete
: function(file, response) {}
});

Note: Do not use the data parameter to attach dynamic data, like this “data: {txt: textfield.value}”, because it will assign data when the instance of the AJAX Upload is created and will not change later. If you want to pass additional data from textfields use setData method in a onSubmit callback.

Instance methods

  • submit – Submits file to the server (useful when autoSubmit is disabled)
  • disable – Disables upload button
  • enable – Enables upload button
  • setData(data) – Overwrites data parameter
//You can use these methods, to configure AJAX Upload later.
var upload = new AjaxUpload('div_id',{action: 'upload.php'});
//For example when user selects something, set some data
upload
.setData({'example_key': 'value'});

//Or you can use these methods directly inside event function
new AjaxUpload('div_id', {
  action
: 'upload.php',
  onSubmit
: function() {
   
// allow only 1 upload
   
this.disable();
 
}
});
});

How do I access the uploaded files?

For the server-side code it looks like the file is uploaded with the simple upload form, because of that you can use any language you want.

You can access the uploaded file with:

  • PHP: $_FILES['userfile']
  • Rails: params[:userfile]

Note that “userfile” is the default value for the option ‘name’.

You can access the additional data with:

  • PHP: $_POST['yourkey']
  • Rails: params[:yourkey]

Server-side script

If you are using php, here is a simplest example that I got straight from php manual

$uploaddir = '/var/www/uploads/';
$uploadfile
= $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo
"success";
} else {
 
// WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
 
// Otherwise onSubmit event will not be fired
  echo
"error";
}

ColdFusion based file upload. (Default barebones solution)

<cffunction name="uploadFile" access="remote" output="false">  <cfargument name="userFile">  <cffile action="upload" fileField="userFile" destination="directory/path/on/server/">  <cfreturn "whatever"></cffunction>

And here is an ASPX handler, please modify it to suit your needs:

using System;
using System.Web;
using System.IO;

public class FileHandler : IHttpHandler
{

   
public void ProcessRequest(HttpContext context)
   
{
       
string strFileName = Path.GetFileName(context.Request.Files[0].FileName);
       
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
       
string strSaveLocation = context.Server.MapPath("Upload") + "" + strFileName;
        context
.Request.Files[0].SaveAs(strSaveLocation);

        context
.Response.ContentType = "text/plain";
        context
.Response.Write("success");
   
}

   
public bool IsReusable
   
{
       
get
       
{
           
return false;
       
}
   
}
}

How to allow only certain file types?

The best way is to check the file type of selected function in a onSubmit callback function and return false to cancel upload if invalid file is selected. But don’t forget to add a server-side check for security.

new AjaxUpload('button2', {
        action
: 'upload.php',
        onSubmit
: function(file , ext){
               
if (! (ext && /^(jpg|png|jpeg|gif)$/i.test(ext))){
                       
// extension is not allowed
                        alert
('Error: invalid file extension');
                       
// cancel upload
                       
return false;
               
}
       
}
});

경제월수입 150만원인 새내기 직장인, 종잣돈 빨리 모으려면... 경제

http://economy.hankooki.com/lpage/hotissue/201003/e2010031415310696990.htm



월수입 150만원인 새내기 직장인, 종잣돈 빨리 모으려면…

■ 맞춤형 재테크
정기적금, 적립식 펀드로 갈아타기 해볼만
급여통장은 CMA로 관리하되 '의료실비보험' 들어두길
연금보험은 고수익 기대할 수 있는 변액보험이 바람직
 


Q: 올해 27살인 직장 새내기입니다. 월급은 150만원 정도입니다. 매달 ▦건강보험 15만원 ▦주택청약종합저축 10만원 ▦연금보험 10만원 ▦정기적금 40만원 ▦월세 20만원 ▦휴대폰 요금 5만원 ▦생활비 30만원 등으로 쓰고 있습니다. 현재 저축여력은 20만원 정도입니다

우선은 종잣돈을 만드는 게 목표입니다. 생활이 빠듯하긴 한데, 돈을 잘 모을 수 있는 방법을 알려주세요

A: 새내기 직장인으로 독립된 경제주체가 된 것을 축하합니다. 사회생활을 시작하는 흥분에 월급을 쉽게 쓸 수 있음에도 노동의 대가를 소중히 여기고 효율적인 자산관리를 위해 고민하는 모습이 좋아 보입니다. 자산관리 첫 단추를 꿰는 중요한 시기이므로 몇 가지 사항을 유의해야 합니다.

우선 수익률보다는 저축습관이 중요합니다. 소모성 지출을 줄여서 매월 10만원의 추가 저축을 하는 것은 목돈 3,500만원을 세전 4%의 예금상품으로 운용하여 얻는 이자보다 많습니다.

또 자산관리의 기간을 짧게 보기보다는 긴 안목을 가지고 계획을 세울 필요가 있습니다. 지금 당장 필요한 부문에 치중하다 보면 앞으로 발생하게 되는 필요자금에 대한 준비는 소홀해 질 수 있습니다. 마지막으로 정기적으로 재무상태를 파악하고 검토할 필요가 있습니다.

현재 현금흐름 내역과 자산상태를 검토해 봤습니다. 월 급여 150만원 중 월세와 생활비, 건강보험을 제외하고 저축성 금융상품으로 적립하는 금액이 80만원입니다. 월 소득대비 저축비율이 50%를 초과하고 있는 점과 대출이자나 현금서비스 상환금액이 없는 것으로 보아 현금흐름 상태는 양호합니다.

아직 자산이 쌓이지 않은 상태여서 별도의 자산은 없지만 앞으로 자산이 쌓인다면 용도별로 구분해 관리할 필요가 있습니다.

매월 15만원을 불입하는 건강보험의 경우 실제 보장내역과 보험료의 적정성을 검토할 필요가 있습니다. 질병ㆍ상해사고를 종합적으로 보장받는 의료실비보험으로 우선 준비하기 바랍니다. 보험료 부담을 줄이기 위해 납입기간을 길게 가져가거나 보험만기 때 환급금이 발생하지 않더라도 순수하게 보장을 목적으로 하는 보험을 가입하는 것이 유리합니다.

주택청약종합저축에 가입하고 있는 10만원은 적정하다고 보입니다. 무주택 세대주인 근로자의 경우 불입액의 40%까지 연간 48만원을 한도로 소득공제를 받을 수 있습니다.

연금보험의 경우 연금상품 종류를 먼저 확인할 필요가 있습니다. 소득공제가 되는 세제적격 연금보험인지, 아니면 소득공제 혜택은 없지만 연금소득세가 비과세되는 일반 연금상품인지 확인해야 합니다. 세제적격 연금보험이라면 소득수준이 낮은 경우에 소득공제 혜택이 크지 않고 해지 때 오히려 불이익을 받을 수 있으므로 급여 수준이 오른 뒤 가입해도 늦지 않습니다. 먼저 상대적으로 높은 수익률을 기대할 수 있는 변액연금보험 등을 권합니다.

정기적금으로 40만원이 적립되고 있습니다. 정기적금의 경우 우선 만기 시 받게 되는 이자금액이 가입초기 은행에서 제시하는 이자율과는 차이가 있다는 점을 알아둬야 합니다. 가입 첫째 달에 불입하는 40만원은 12개월치 이자가 다 붙게 되지만 12개월째 불입하는 40만원에 대해서는 1달치의 이자만 붙게 되기 때문에 실제적인 이자금액은 은행에서 제시하는 이자율의 절반 남짓하게 됩니다.

종잣돈을 모으기 위해서는 우선 종잣돈의 활용 목적에 대해서 결정할 필요가 있습니다. 새내기 직장인으로서 우선 목표는 결혼자금과 신혼집 마련 자금으로 보입니다.

아직까지 3~5년 정도의 종잣돈 마련 기간이 있으므로 현재 정기적금을 적립식 펀드로 바꿔 운용할 필요가 있습니다. 급여통장을 종합자산관리계좌(CMA) 통장으로 활용하고 월 생활비의 6개월 분 정도인 200만원을 제외하고는 나머지 금액은 적립식 펀드에 가입하기를 권유합니다.

적립식 펀드는 목표 수익률을 정하고 투자해야 합니다. 한 가지 상품에 ‘올인’하지 말고 주식형 펀드, 혼합형 펀드 등으로 분산해 적립하는 게 좋습니다. 적정한 수익률에 도달했을 때 환매를 해 별도의 안정적인 펀드상품에 투자하기 바랍니다.

목표 수익률을 달성한 펀드는 채권 투자비중이 적정한 주식혼합형 펀드나 채권혼합형 펀드 또는 원금보존형 주가연계증권(ELS)에 가입해 원금은 보존하면서 안정적인 수익을 올리는 것이 좋습니다.

※ 실전재테크의 지상 상담을 원하는 독자께서는 ▦장단기 재테크 목표 ▦구체적인 자금 지출ㆍ저축 등 재테크 현황 ▦알고싶은 금융상품 등을 구체적으로 적은 편지를 서울경제 금융부 e-메일(skdaily@hanmail.net)로 보내주세요

jQuery 강좌8. Select 필드를 동적으로 변경하기 width PHP jQuery

http://webnoon.net/entry/jQuey-강좌-6-Select-필드를-동적으로-변경하기-width-PHP


jQuery 강좌8. Select 필드를 동적으로 변경하기 width PHP jQuery

2010/03/10 17:03 수정 삭제

복사 http://blog.naver.com/ix07/140102875362

http://webnoon.net/entry/jQuey-강좌-6-Select-필드를-동적으로-변경하기-width-PHP

 

이제 슬슬 서버사이드 언어인 PHP 와 jQuery 를 함께 사용하는 예제를 다루어 보도록 하겠습니다.
이번 강좌에서는 Select 필드의 항목이 변경되면 다른 필드가 동적으로 변경되는것을 해보도록 하겠습니다.

이 예제는, 여러 사이트의  회원가입 양식에서 보셨을텐데요. 예로, 내가 해당하는 국가를 선택하면 그에 따른 도시명들이 나열되는 select 필드가 동적으로 생성되는 예제입니다.

1. 먼저, Client Language 를 살펴보고, (jQuery 와 Html)
2. Server-side code 를 살펴본다음,
3. 코드에 대한 설명을 하도록 하겠습니다.

1. jQuery & html Code
<script src="../jquery.js.txt" type="text/javascript"></script>
<script type="text/javascript">
    function setup_country_change(){
        //나라가 바뀌는지 이벤트를 감지함.
        //문서가 ready 되면 실행되는 콜백 함수
        $('#country').change(update_cities);
    }
    function update_cities(){
        //선택된 나라를 country 변수에 저장한다.
        var country = $('#country').attr('value');
        //나라가 선택되면 get_city.php 함수 실행
        //데이터가 반환되면 show_cities() 함수가 실행된다.
        $.get('get_cities.php?country='+country,show_cities);
    }
    function show_cities(res){
        //get_cities.php 에 의해 데이터가 반환되면 res로 받아옵니다.
        //필드를 변경한다.
        $('#cities').html(res);
    }
    //문서가 로드 완료되면 setup_country_change() 함수를 실행한다.
    $(document).ready(setup_country_change);
   
</script>
</head>

<body>
<h1>웹눈의 jQuery 강좌 6 - Select 필드 동적으로 변경하기</h1>
<h3>이 강좌는 'http://webnoon.net - 웹눈의 웹이야기' 블로그에서 보실수 있습니다.</h3>
    <form id="select_country" name="select_country" method="" action="#">
        <table>
            <tr>
                <th>Country</th>
                <td>
                    <select name="country" id="country">
                        <option value="" selected="selected">나라를 선택해주세요.</option>
                        <option value="ko">한국</option>
                        <option value="us">미국</option>
                        <option value="uk">영국</option>
                    </select>
                </td>
            </tr>
            <tr>
            <th>Cities</th>
                <td id="cities">나라를 먼저 선택해주시기 바랍니다.</td>
            </tr>
        </table>
    </form>
</body>

2. PHP - Code
<?php
    switch($_REQUEST['country'])
    {
        case "ko":
        $cities = array('서울','대전','부산','대구');
        break ;
       
        case "us":
        $cities = array('New york','Cicago','L.A','또 뭐가 있니');
        break ;
       
        case "uk":
        $cities = array('London','도시1','도시2','도시3');
        break;
        default :
        $cities = false ;
        break;
    }
    if(!$cities) echo "나라를 선택해 주시와요.";
    else echo "<select name='city'><option>".
            join('</option><option>',$cities).
            '</option></select>';
?>

3. 코드에 대한 설명

먼저, 전체적인 그림을 잡아보도록 하지요.
사용자가 하는 행위를 생각해 보면, 우선 나라를 선택을 하게 될것입니다.. 이런 행위를 프로그래밍에서는 '이벤트가 발생한다' 고 하는데요, 즉, 사용자가 나라를 선택하는 행위의 발생을 말합니다.

그러면 우리가(코더 혹은 프로그래머)가 해야 할 일은 이러한 사용자의 행위(이벤트) 의 발생을 감지해서 그에 따른 적절한 조치들을 취해야 겠지요? 이번 예제에서는 선택하는 이벤트가 발생하면 해당 국가의 도시명들을 가지고 오는 작업을 해주어야 하겠습니다.

그럼 1번 jQuery 코드를 살펴보면, 사용자의 이벤트를 감지하는 코드를 볼수가 있습니다. 무엇이냐구요? 바로 setup_country_change() 함수 안에 있는 $('#country').change(update_cities) 부분이 사용자의 이벤트를 감지하는 부분입니다.

$('#country') 라는 'Object(객체)' 에 변화(change) 가 감지되면 update_cities 라는 콜백 함수를 실행하라는 내용이지요. html 코드를 보면 id가 country 로 되어 있는 부분이 select box 로 되어있는것을 알수 있습니다. 즉, 사용자가 select box를 선택(변경) 하면 발생하는 이벤트를 감지해서 update_cities() 라는 함수를 실행한다는 내용입니다.

그럼 변화가 발생하면 실행되는 함수인 update_cities() 함수를 살펴보도록 하지요.
이 함수는 어느 나라가 선택되어졌는지 확인하고, 서버사이드 언어인 PHP에 선택되어진 나라 정보를 전송하게 됩니다.

var country = $('#country').attr('value'); 이 부분이 선택되어진 나라를 변수에 저장하는 부분입니다. select box를 보면 option 마다 속성값이 있는것을 볼수 있는데, 이것이 선택될때마다 #country 객체의 value 값이 바뀌게 됩니다.

만약, '한국'을 선택했다면 country 변수에는 'ko'라는 값이 할당이 되겠지요?

이제 이 예제의 핵심적인 부분을 살펴 보도록 하겠습니다.

$.get('get_cities.php?country='+country,show_cities); 이 부분은 get_cities.php 인 서버측에 선택되어진 나라 정보를 전송하고나서 get_cities.php로 부터 제공되어지는 데이터를 retrieve(되돌려 전송) 받습니다.

선택되어지 나라 정보를 get 방식으로 전송한다는것을 알수 있지요?

$.get() 함수는 두개의 매개변수를 전달 받는데, 첫번째에는 데이터를 전송/수신 할 php 주소를, 두번째는 서버로부터 데이터를 전송받으면 실행할 콜백 함수를 정의합니다. 뭐.. 간단하지요?

마지막으로 show_cities()함수를 살펴보도록 하지요.

show_cities() 함수는 $.get에 의해 불리어지는 함수인데, 서버측에서 제공하는 데이터를 매개변수로 받습니다.
즉, show_cities(res){} 식으로 사용하는데, res에는 서버에서 전송하는 데이터 정보가 담겨져 있지요.
이렇게 서버로부터 전송받은 데이터를 $('#cities').html(res); 와 같은 식으로 #cities 필드의 html 값을 변경시키는 것입니다.

그럼 이제, 서버측 언어를 살펴보도록 하지요. 대충 어떻게 되어있을지 감이 오지 않나요?

네, 간단합니다. $.get에서 전송한 나라 정보를 switch문을 사용해서 판별한다음에,
그에 맞는 도시명들을 반환하는 역할을 하고 있습니다.

여기서는 DB와 연동 하지는 않았지만, DB와도 문제없이 사용할수 있겠지요?
그럼 강좌는 여기서 마치도록 하겠습니다.

p.s - 예제 소스는 파일로 첨부하였으니, 다운받아서 실행해 보시기 바래요. 질문은 언제나 환영입니다~


jQuery 강좌7. 고리 분류하기(필터링) jQuery

http://webnoon.net/entry/jQuery-강좌5-카테고리-분류하기필터링



이번 시간에는 카테고리 별로 내용물을 분류해보도록 하겠습니다. (jQuery가 처음이신 분들은 강좌1부터 보시는걸 권장합니다. ) 우리가 무엇을 할것인지 보도록 하지요. 아래 예제를 참고해주세요.

$(document).ready(function(){ $("#example_category a").click(function(e){ e.preventDefault(); var category = $(this).attr("title"); $("#example_newslist li").fadeOut("slow"); if(category == "all"){$("#example_newslist li").fadeIn("slow");} else{$("#example_newslist li[class*="+category+"]").fadeIn("slow");} }); });
위 예제처럼 카테고리를 클릭하면 리스트들이 각 분류에 맞게 정렬되는 것을 해볼것입니다. 어렵지 않아요.

위의 예제를 다운로드 하실수 있습니다.
1. 마크업 구조 보기
<div id="wrap">
<div id="category">
    <h3>카테고리</h3>
        <ul>
       <li><a href="#" title="all">전체기사</a></li>
         <li><a href="#" title="eco">경제/금융</a></li>
            <li><a href="#" title="soc">사회</a></li>
            <li><a href="#" title="star">연예</a></li>
            <li><a href="#" title="sports">스포츠</a></li>
        </ul>
    </div>
    <div id="newslist">
    <h3>뉴스 목록</h3>
    <ul>
     <li class="eco"><a href="#">경제뉴스 1 </a></li>
        <li class="sports"><a href="#">스포츠뉴스 1</a></li>
        <li class="soc"><a href="#">사회뉴스 1</a></li>
        <li class="eco"><a href="#">경제뉴스 2 </a></li>
        <li class="star"><a href="#">연예뉴스 </a></li>
        <li class="sports"><a href="#">스포츠뉴스 2</a></li>
        <li class="eco"><a href="#">경제뉴스 3 </a></li>
        <li class="soc"><a href="#">사회뉴스 2</a></li>
        <li class="eco"><a href="#">경제뉴스 4</a></li>
        <li class="sports"><a href="#">스포츠 뉴스3</a></li>
        <li class="star_sports"><a href="#">연예/스포츠 뉴스 </a></li>
        <li class="eco"><a href="#">경제뉴스 6</a></li>
        <li class="soc"><a href="#">사회뉴스 3</a></li>
        <li class="soc_eco"><a href="#">사회/경제뉴스 </a></li>
    </ul>
    </div>
</div>

우선, 마크업은 보시는바와 같이 간단한 구조로 되어 있습니다. 적색으로 되어진 부분을 활용하여 분류기능을 사용할것입니다.

2. jQuery 코드 보기
$(document).ready(function(){
$("#category a").click(function(e){
e.preventDefault();
var category = $(this).attr("title");
$("#newslist li").fadeOut("slow");
if(category == "all"){$("#newslist li").fadeIn("slow");}
else{$("#newslist li[class*="+category+"]").fadeIn("slow");}
});
});

굉장히 간단하지요? 저렇게 짧은 코드 하나로 멋진 분류기능을 사용할수 있다니.. jQuery가 그만큼 강력하다는 예기겠지요.
순서대로 가보겠습니다.

1. 우선 카테고리의 분류가 클릭(이벤트 발생) 됩니다.
2. 이벤트가 발생되면 실행될 함수(Callback Function)가 있겠지요?
3. 어떠한 내용이 실행되어야 하냐면, 분류에 해당하지 않는 리스트들은 숨기고(fadeOut), 분류에 해당하는 리스트들은 나타나도록(fadeIn) 합니다.

1번에 해당하는 내용은 $("#category a").click(Callback Function) ; 이 되겠군요. 클릭이 되는 대상에 click 이벤트를 적용해 주었습니다. 즉, <div id="category"></div> 안에 있는 Anchor 태그가 대상이 되겠군요.

2번에 해당하는 콜백함수 부분을 보도록 하겠습니다.
function(e){

e.preventDefault();
var category = $(this).attr("title"); // 클릭된 대상의 title 속성 값을 category 변수에 반환합니다.
$("#newslist li").fadeOut("slow"); // 우선 list들을 모두 숨깁니다.
if(category == "all"){$("#newslist li").fadeIn("slow");}
else{

$("#newslist li[class*="+category+"]").fadeIn("slow"); // 분류에 해당하는 list를 나타냅니다.

}
}

3. Key Point
이번 예제에서의 Key Point 는 속성 선택자 입니다.
$("#newslist li[class*="+category+"]").fadeIn("slow"); 이 부분에서 선택자 부분을 잘 보세요. [class*="+category+"] 이 부분이 생소하실 거라고 생각합니다.

[class*="+category+"] 이것을 속성 선택자라고 합니다. 형태는 [Attribute=value] 가 됩니다. 즉, 속성(Attribute)의 값이 value가 되는 대상을 선택하는 것이죠.

그런데 예제에서는 [Attribute*=value] 가 사용되었습니다. *= 은 value 값을 이부분이라도 포함하고 있는 속성값을 선택하겠다는 의미가 됩니다.

속성 선택자에 대해서 자세히 다루는 포스팅을 한번 하도록 하지요. 

난해하거나 기타 질문있으시면 댓글 남겨주세요

filter.html

jQuery 강좌6. 이미지 바꾸기 jQuery

http://webnoon.net/entry/jQuery-강좌4-이미지-바꾸기


이번 강좌에서는 섬네일 이미지를 누르면 큰 이미지가 변환되도록 해보겠습니다. 자세한 내용은 예제를 다운받아 보세요.


1. 마크업 코드
<div id="wrap">
<div id="largeimg">
<a href="#"><img src="images/01.jpg" alt="이미지1"></a>
</div>
<div id="thumnail">
<ul>
<li><a href="images/01.jpg"><img src="images/01.jpg" alt="이미지1 섬네일" /></a></li>
<li><a href="images/02.jpg"><img src="images/02.jpg" alt="이미지2 섬네일" /></a></li>
<li><a href="images/03.jpg"><img src="images/03.jpg" alt="이미지3 섬네일" /></a></li>
<li><a href="images/04.jpg"><img src="images/04.jpg" alt="이미지4 섬네일" /></a></li>
</ul>
</div>

</div>

2. jQuery 코드
$(document).ready(function(){
        $("#thumnail a").click(function(e) {
e.preventDefault();
var largeImgPath = $(this).attr("href");
var largeImgAlt = $(this).find("img").attr("alt").substr(0,4);
$("#largeimg img").attr({src:largeImgPath,alt:largeImgAlt});
});
});

먼저, e.preventDefault() 를 보도록 하지요. 이것은 무엇이냐 하면, 대상을 클릭했을때 발생하는 이벤트를 방지하는 것입니다. 즉, 링크가 걸려있는 Anchor 태그를 클릭하면 해당 주소로 페이지가 이동되지요? 그런데 우리는 해당 링크를 클릭하면 화면전환없이 이미지를 바꾸어야 하니, 페이지 이동 이벤트를 방지해야 합니다. 그래서 e.preventDefault()를 사용한것이지요.
이해가 잘 안되시면 e.preventDefault() 부분을 지우고 한번 해보세요. 무슨 내용인지 금방 알수 있습니다.

attr()메서드는 두가지 경우에 사용할수 있습니다. 먼저, 대상의 속성 값(value)을 알고 싶을때는 attr(Attribute) 처럼 사용합니다. 즉, 위의 예제에서 $(this).attr("href") 이 부분은 선택된 대상의 href 속성 값을 반환합니다.

두번째는 선택된 대상의 속성값을 변경할때 사용합니다. attr({Attribute:Value,Attribute1:Value1,....}); 이런식으로 속성을 설정할수 있지요.

위의 예제를 살펴보면, 처음에는 클릭된 대상의 href 속성의 값을 불러와서 큰 이미지의 src 의 값으로 대체하였습니다. 그러면 큰이미지가 바뀌겠지요?

alt값도 변경하였는데, 이부분은 여러분이 연구해 보시기 바랍니다.

질문이나 기타 피드백 언제나 환영해요

jQuery 강좌5. 스크롤바 따라다니는 슬라이드 메뉴 jQuery

http://webnoon.net/entry/jQuery-강좌3-스크롤바-따라다니는-슬라이드-메뉴

 

jQuery 강좌3. 스크롤바 따라다니는 슬라이드 메뉴




웹서핑을 하다 보면 스크롤바를 따라다니는 슬라이드 메뉴를 자주 볼수 있습니다. 오늘은 슬라이드 메뉴를 jQuery로 만드는 방법을 알아보도록 하지요. jQuery가 처음이신 분들은 강좌1 부터 보시는걸 권장합니다.

예제를 보시려면 아래의 파일을 다운받아 보세요.
1. 슬라이드 메뉴의 Key Point 
  • 어떤 대상을 움직이려면 대상의 position 값은 absolute 또는, relative 값이 되어야 합니다.(css 에서 설정합니다.)
2. 마크업 보기
<body>
<div id="wrap">
(주저리 주저리..컨텐츠 내용)
</div>
<div id="slidemenu">
(슬라이드 메뉴 내용)
</div>
</body>

예제에서는 이런 구조로 마크업 되어 있으며, slidemenu의 css 속성값은 아래와 같습니다.

#slidemenu{background:#12cf3d;position:absolute;width:100px;top:50px;right:10px;}

즉, 현재 슬라이드 메뉴는 브라우저 상에서 상단에서 50px만큼, 우측에서 10px만큼 떨어져 있는 상태입니다.
이제 이 슬라이드 메뉴를 스크롤바에 맞추어 움직이는 jQuery 소스를 보도록 하지요.


<script type="text/javascript" src="jquery.js"></script> // jquery 라이브러리를 가지고 옵니다.(강좌1 참조)
<script type="text/javascript">
$(document).ready(function(){ 
var currentPosition = parseInt($("#slidemenu").css("top")); 
$(window).scroll(function() {
var position = $(window).scrollTop(); // 현재 스크롤바의 위치값을 반환합니다.
$("#slidemenu").stop().animate({"top":position+currentPosition+"px"},1000);
});
});
</script>

자 우선 코드를 분해하기 전에, 어떻게 해야 슬라이드 메뉴가 스크롤바에 맞추어 움직이는지 로직을 생각해 보도록 하지요. 우선, 슬라이드 메뉴가 움직인다는 것은 css의 top 값이 변경된다는 뜻입니다. 즉, 어떠한 이벤트(event) 가 발생하게 될때마다 슬라이드메뉴의 top 의 값이 변경되도록 해야 합니다.

그럼, 어떠한 이벤트가 발생되어야 할까요? 맞습니다. 브라우저상의 스크롤바의 위치값이 변경될때마다 슬라이드 메뉴의 위치값이 변경되어야 합니다.

즉, 위의 소스코드에서 볼때  $(window).scroll(fn) 이 부분이, "window 창에서 scroll 이벤트가 발생할때마다 콜백함수 fn 을 실행하여라." 라는 뜻이 됩니다.

그럼 스크롤 이벤트가 발생할때마다 실행되는 콜백함수 부분을 보지요.
var position = $(window).scrollTop(); // 현재 스크롤바의 위치값을 반환합니다.
$("#slidemenu").stop().animate({"top":position+currentPosition+"px"},1000);

var position = $(window).scrollTop(); 부분을 보도록 하겠습니다. 이 부분은 주석으로 달아놨듯이 현재 스크롤바의 위치값을 반환하여 변수 position 에 할당하는 것입니다.(변수의 개념을 잘 모르시면 댓글남겨 주세요)

그리고 다음으로 핵심적인 부분을 보도록 하지요. 

$("#slidemenu").stop().animate({"top":position+currentPosition+"px"},1000);

$("#slidemenu") 부분은 강좌1,2 에서 설명했듯이 선택자 영역입니다. ID 속성값이 slidemenu 인 대상이 선택되어진 상태이지요. 슬라이드 메뉴를 감싼 div 가 되겠지요?

그런다음에 stop()과 animate() 라는 메서드가 보입니다. 우선 stop()은 넘어가도록 하지요.

animate(매개변수,진행시간) 메서드에 대해 자세히 다루어 보겠습니다. animate() 메서드는 두개의 인자를 받습니다. 처음 인자는 속성값을 정하는 부분인데요, {"속성":"값"} 형식으로 들어가게 됩니다. 즉, 대상의 속성을  해당하는 값으로 변화시킨다는 것이지요.  

위의 예제에서는 top 속성값을 현재 스크롤바의 위치값으로 변경하였습니다. 그래서 스크롤바의 위치값이 변경될때마다 대상의 top 값이 현재 스크롤바의 위치값으로 변경되면서 대상이 움직이게 되는 것이지요.

animate() 두번째 인자에는 애니메이션이 얼마동안의 시간안에 시현이 완료될것인지 정할수 있는 microTime 값이 들어가게 됩니다. 즉 1000이라 함은 1초를 뜻하게 됩니다.slidemenu.htm

예제를 살펴보면, 1초동안 슬라이드 메뉴가 현재의 스크롤바 위치로 이동하게 되는것이지요. 1초라는 시간이 주여졌기 때문에 슬라이드 메뉴가 바로바로 이동하지 않고 약간은 스크롤바에 뒤쳐져 이동하는것을 알수 있습니다.

여기서 stop() 메서드는 여러분들이 직접 실험해 보세요. 제가 백마디 하는것보다 stop()메서드가 없을때와, 있을때의 차이점을 보시는것이 더욱 이해하기 좋습니다.

처음이라 자세히 설명하려고 하다보니 글이 길어지네요. 자세한 설명은 점차 줄여나가도록 하겠습니다.
질문사항이나 해주었으면 하는 예제가 있으시면 댓글 남겨주세요

jQuery 강좌4. 펼침목록 만들기

http://webnoon.net/entry/jQuery-강좌2-펼침목록-만들기



이번 강좌에서는 펼침목록 만들기를 해보겠습니다.
예제보기를 원하시면 위 htm 파일 링크를 클릭하세요.

jQuery 를 처음 접하시는 분은 강좌 1부분부터 보시는걸 권장합니다.

그럼 예제1 부분에서 h3 엘리먼트 영역을 클릭시 아래의 <p> 엘리먼트 영역이 사라지는 것을 보도록 하지요. 소스 코드는 아래와 같습니다.

<script type="text/javascript">
$(document).ready(function(){
// 예제1 코드
$("#first h3").toggle(function(e){ // 선택자에 toggle이라는 이벤트를 주었습니다.
e.preventDefault(); // 아직은 신경쓰지 않으셔도 되는 부분
$(this).next().slideUp();  //next()와 slideUp() 이라는 메서드가 보입니다.
},function(e){
e.preventDefault();
$(this).next().slideDown();
});
});
</script>

먼저 toggle(fn1,fn2) 이벤트에 대해서 살펴보도록 하겠습니다. 저번 강의시간에 click(fn) 이라는 이벤트에 대해서는 설명을 드렸습니다. toggle도 click 과 같은 이벤트인데, 인자로 두개의 Callback function 을 갖는것을 볼수 있습니다.

즉, toggle 이벤트는 한번 클릭이 될때마다 fn1 과 fn2을 번갈아 실행하게 되지요.

toggle 인자로 주어진 첫번째 콜백함수에서 $(this).next().slideUp(); 라는 코드가 보입니다.

$("#first h3") 로 선택한 대상을 한번 클릭하면 클릭된 대상 $(this)의 다음 대상 next() 을 슬라이드업 slideUp() 하라는 내용이지요. 여기서 다음 대상을 찾아보면 마크업 상에 <h3> 다음에는 <p> 엘리멘트가 있지요? 이것을 선택하게 됩니다. 즉 <p>엘리멘트가 슬라이드업(사라짐) 이 되는것이지요.

마찬가지로 대상을 한번 더 클릭하게 되면 toggle의 두번째 인자인 콜백함수 $(this).next().slideDown(); 의 내용이 실행됩니다.

두번째 예제는 여러분들이 한번 보시고 이해해 보세요. 첫번째 예제를 이해하시면 두번째도 충분히 이해하실수 있습니다.

언제나 질문이나 기타 피드백 환영합니다.

toggle.htm


jQuery 강좌 3. 어려운개념은 버리고 바로 시작하기 jQuery

http://webnoon.net/entry/jQuery-강좌-1-어려운개념은-버리고-바로-시작하기


오늘부터 저와함께 하루에 한두개정도씩 jQuery를 가지고 놀아 보겠습니다.
처음부터 현란한 예제로 시작하는것보다 간단한 예제를 가지고 시작해서 응용하실수 있도록 하겠습니다.

처음에만 간략하게 jQuery에 대해 설명해 드리며, 다음 예제부터는 쓸대없는 주석은 달지 않도록 하겠습니다.

우선 jQuery는 일종의 자바스크립트 라이브러리로써, 현재 다른 라이브러리로써는 prototype이라든가 네이버의 '진도'가 있습니다.
라이브러리라 함은 쉽게 설명하면, 프로그래밍언어에서 자주 사용하는 함수나 메서드등을 재사용이 가능하도록 모아놓은 것을 말합니다.


그럼 이제부터 예제를 시작합니다.

1. jQuery를 사용하기
 - 위 파일을 다운받습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>jQuery 연습1 애니메이션효과</title>
<script type="text/javascript" src="jquery.js"></script>

- 위의 코드중 빨간색 으로 되어 있는 것처럼 html 파일안에 불러들입니다. 이로써 jQuery를 사용할 준비는 모두 끝났습니다.
%jQuery 최신 버전은 http://jquery.com 에서 다운받으실수 있습니다.


2. DIV 태그를 클릭하면 숨기기

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>jQuery 연습1 애니메이션효과</title>
<script type="text/javascript" src="jquery.js"></script> // jQuery를 불러오기
<script type="text/javascript">
$(document).ready(function(){ // 페이지가 로딩이 완료되면(이미지제외)
$("#hello").click(function(){
$(this).hide() ;
});
});
</script>
<style type="text/css">
#hello{background:#ff0000;width:100px;position:absolute;}
</style>
</head>

<body>
<div id="hello">Hello World!</div>
</body>
</html>

$(document).ready(function() {
(이곳에 시연하고자 하는 jquery 코드가 들어감.)
});

위의 코드가 jQuery를 시작하는 기본 코드가 됩니다. 
Javascript 에서의 window.onload = function() { } ;
부분과 비슷합니다만, 다른점은 자바스크립트의 onload가 모든 이미지들의 로딩이 마쳐야 시연되는 반면에, jQuery는 이미지가 로딩되지 않아도 시연이 됩니다.

그럼 이제 시연하고자 하는 코드를 보도록 하겠습니다.

$("#hello").click(function(){
$(this).hide() ;
});

위의 코드에서 파란 색 부분을 선택자(Selector) 라고 합니다. 즉, 구현할 대상에 되는 녀석을 선택하는 것이죠. 사용 방법은 $() 의 괄호안에 대상이 되는 녀석을 선택하는것입니다. jQuery가 좋은것이 선택자 개념이 CSS와 거의 흡사하기 때문에 쉽게 사용할수 있습니다.

저는 <body></body> 안에 있는 <div id="hello"> 를 선택하고자 하였습니다 . 그래서 $() 안에 "#hello" 를 넣은것이죠.
#hello 는 CSS에서 id 속성(Attribute) 값이 hello 인 태그(Element)를 선택합니다. jQuery도 같지요?

이 선택자의 개념만 잘 익히고 있으면 jQuery를 90%정도 무리없이 사용할수 있다고 할수 있습니다. 정작 메소드들의 종류는 그렇게 많지가 않기 때문이지요.

위의 코드에서 오렌지색으로 되어 있는 부분이 메서드 입니다. 선택된 대상들에게 행동을 명시하는 부분이지요. 위의 코드를 사람이 사용하는 언어로 표현하면,
"#hello 야 너는 hide()를 하여라 " 정도가 되겠죠.

$("#hello").click(function(){ (A)  });  를 보면 선택된 대상이 클릭이 되면 (A) 부분의 내용이 시현됩니다.

여기서 click 은 이벤트의 한 종류로써, 자세한것은 다음에 예제를 진행해 나가면서 하나하나 설명하도록 하겠습니다.
.ready(function(){}); 도 이벤트의 한 종류입니다.

위의 코드에서는 (A) 부분에 $(this).hide() ;  들어가 있는것을 보실수 있습니다. $(this)는 중요한 개념으로 이벤트를 발생시킨 주최를 가리키는 것이죠. 즉, $("#hello") 가 됩니다. 위 소스를 넣고 브라우저로 확인하면, <div id="hello">안녕하세요?</div>를 클릭하면 "안녕하세요?" 를 감싼 빨간 박스가 사라지는것을 보실수 있습니다.

다음번 강좌부터는 예제 하나씩 준비해서 분석해보는 시간을 갖도록 해보겠습니다. 질문사항이나 기타 건의사항은 댓글 부탁드려요~!
jquery.js

jQuery 강좌2. jQuery

http://neokido.tistory.com/entry/JQuery-기본-Selector

# 기본 셀렉터
*             : 모든 엘리먼트와 일치
E             : 태그명이 E인 모든 엘리먼트와 일치
E F          : E의 자손이면서 태그명이 F인 모든 엘리먼트와 일치
E>F         : E의 바로 아래 자식이면서 태그명이 F인 모든 엘러먼트와 일치
E+F         : E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F와 일치
E~F        : E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F와 일치
E:has(F) : 태그명이 F인 자손을 하나 이상 가지는 태그명이 E인 모든 엘리먼트와 일치
E.C        : 클래스명 C를 가지는 모든 엘리먼트 E와 일치, E의 생각은 *.C와 동일함
E#I         : 아이디가 I인 엘리먼트 E와 일치. E의 생략은 *#I와 동일함
E[A]       : 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
E[A=V]   : 값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
E[A^=V]  : 값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
E[A$=V]  : 값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치
E[A*=V] : 값에 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

# 위치기반 셀렉터
:first            : 페이지에서 처음으로 일치하는 엘리먼트. li a:first는 리스트 아이템의 첫번째 링크를 반환함
:last            : 페이지에서 마지막으로 일치하는 엘리먼트. li a:last는 리스트 아이템의 마지막 링크를 반환함
:first-child    : 첫번째 자식 엘리먼트. li:first-child는 각 리스트의 첫번째 아이템을 반환한다.
:last-child        : 마지막 자식 엘리먼트. li:last-child는 각 리스트의 마지막 아이템을 반환한다.
:only-child        : 형제가 없는 모든 엘리먼트 반환
:nth-child(n)    : n번째 자식 엘리먼트. li:nth-child(2)는 각 리스트의 두번째 리스트 아이템을 반환함
:nth-child(event|odd) : 짝수 또는 홀수 자식 엘리먼트. li:nth-child(event)은 각 목록의 짝수 번째 자식 엘리먼트 반환
:nth-child(Xn + Y) : 전달된 공식에 따른 n번째 자식 엘리먼트. Y는 0인경우 생략가능하다. li:nth-child(3n)은 3의 배수번째 아이템을 반환, li:nth-child(5n+1) 은 5의 배수 +1번째 아이템을 반환
:event / :odd    : 페이지 전체의 짝수/홀수 번째 엘리먼트. li:even은 모든 짝수번째 아이템을 반환한다.
:eq(n)            : n번째로 일치하는 엘리먼트
:gt(n)            : n번째 엘리먼트(포함안됨) 이후의 엘리먼트와 일치
:lt(n)            : n번째 엘리먼트(포함안됨) 이전의 엘리먼트와 일치

# 필터 셀럭터
:animated        : 현재 애니메이션이 적용되고 있는 엘리먼트를 선택
:button            : 모든 버튼을 선택함(input[type=submit], input[type=reset], input[type=button], button)
:checkbox        : 체크박스 엘리먼트만 선택(input[type=checkbox])
:checked        : 선택된 체크박스나 라디오 버튼만을 선택
:contains(foo)    : 텍스트 foo를 포함하고 있는 엘리먼트만 선택
:disabled        : 인터페이스에서 비활성화 상태인 모든 폼 엘리먼트를 선택한다.
:enabled        : 인터페이스에서 활성화 상태인 모든 폼 엘리먼트를 선택한다.
:file            : 모든 파일 엘리먼트를 선택함(input[type=file])
:header            : 헤더 엘리먼트만 선택한다. 예를 들어 <h1>부터 <h6>엘리먼트만 선택한다.
:hidden            : 감춰진 엘리먼트만 선택한다.
:image            : 폼 이미지를 선택한다.(input[type=image])
:input            : 폼 엘리먼트만 선택한다.(input, select, textarea, button)
:not(filter)    : 필터의 값을 반대로 변경한다.
:parent            : 빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트를 선택한다.
:password        : 패스워드 엘리먼트만 선택한다. (input[type=password])
:radio            : 라디오 버튼 엘리먼트만 선택한다.(input[type=radio])
:reset            : 리셋 버튼을 선택(input[type=reset], button[type=reset])
:selected        : 선택된 엘리먼트만 선택한다.
:submit            : 전송 버튼을 선택한다.(button[type=submit], input[type=button])
:text            : 텍스트 엘리먼트만 선택(input[type=text])
:visible        : 보이는 (visible)엘리먼트만 선택한다.

jQuery 강좌 1 jQuery


http://webnoon.net/entry/jQuery-강좌-Selector선택자-개념

jQuery 강좌 - Selector(선택자) 개념



우리가 선택하고자 하는것이 무엇이든지, jQuery 는 달러 사인으로 된 함수: $() 로 시작을 하게 됩니다.
$() 함수는 일반적으로 html 태그와 ID , Class 속성값과 함께 사용됩니다.

표1. CSS와 jQuery 의 선택자 비교문
 SelectorCSS
jQuery
설명
 ID #ID_Name $('#ID_Name')ID값이  'ID_Name' 을 가지는 하나의 엘리먼트를 선택합니다.
 Class .Class_Name$('.Class_Name')
Class 속성값이 'Class_Name' 값을 가지는 모든 엘리먼트를 선택합니다.
 Tag P $('P')모든 P 태그를 선택합니다.

여기서 주목할만한 점은 Class Selector와 Tag Selector는 해당하는 엘리먼트를 하나만 선택하는것이 아니라 조건이 만족되는 모든 엘리먼트를 선택하고 있다는 점입니다

jQuery 와 Ajax의 사용예 jQuery


jQuery jQuery

http://cafe.naver.com/uistorys.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=220



jQuery 자바스크립트 HTML 사이의 상호작용을 강조하는 경량화된 애플리케이션 프레임워크이다.

레시그 의해, 2006 뉴욕 바캠프(Barcamp NYC)에서 릴리즈되었다.

jQuery MIT 라이선스 GNU 일반 공중 사용 허가서 듀얼 라이선스 하의 자유 오픈 소프트웨어이다.


기능

jQuery 다음과 같은 기능을 같고 있다

 

DOM 엘리먼트 선택

DOM 트래버설 수정 (CSS 1-3 지원. 기본적인 XPath 플러그인 형태로 지원)

이벤트

CSS 조작.

특수효과 애니메이션

Ajax

확장성

유틸리티 - 브라우저 버전, "each" 함수

자바스크립트 플러그인

 

 

사용법

jQuery 개의 JavaScript 파일로 존재한다. 공통의 DOM, 이벤트, 특수 효과, Ajax 함수를 포함한다. 다음 코드를 쓰면, 페이지로 포함시킬 있다:

<PRE class=de1><script type="text/javascript" src="path/to/jQuery.js"></script></PRE>

jQuery 가지의 상호 작용 스타일을 갖고 있다:

$ 함수 이용. jQuery 오브젝트의 팩토리 메소드이다. 함수들은 "chainable"하다: 각각은 jQuery 오브젝트를 리턴한다.

$. - 앞에 붙은 함수 이용. 이들 함수는 jQuery 오브젝트 자체와 연동되지는 않는다.

 

일반적으로 여러 개의 DOM 노드들을 조작하는 웍플로우는 $ 함수로 시작된다.

CSS 셀렉터 스트링을 가지고 호출된다. 결과적으로 0 혹은 이상의 HTML 페이지 내의 엘리먼트를 리퍼런스하는 jQuery 오브젝트가 리턴된다. 노드 집합들은 jQuery 오브젝트에 대해 인스턴스 메소드들을 적용함으로써 조작될 있다. 혹은 노드들 자체가 조작될 있다. 예를 들면 다음과 같다:

<PRE class=de1>$("div.test").add("p.quote").addClass("blue").slideDown("slow");</PRE>

div 태그가 달린 모든 엘리먼트를 찾되, 클래스 애트리뷰트가 test 것을 찾는다.

p 태그를 찾되, 클래스 애트리뷰트가 quote 것을 찾는다. 찾아낸 각각의 엘리먼트에 대해 클래스 애트리뷰트 blue 추가한다.

애니메이션 효과를 주어 아래쪽으로 슬라이드(미끄러지게) 시킨다.

$ add 함수는, 찾아낸(matched) 집합(set) 영향을 준다. addClass slideDown 리퍼런스된 노드들에 영향을 준다.

$. 앞에 붙은 함수들은, 글로벌 프로퍼티나 비해이비어에 영향을 주는, 간편한(유틸리티) 메소드들이다.

예를 들면 다음과 같다:

<PRE class=de1>$.each([1,2,3], function() { document.write(this + 1);});</PRE>

234 도큐먼트에 출력한다.

Ajax 루틴들은 $.ajax 관련 코드를 이용하여 수행할 있다.

이를 사용하여, 원격 데이터(remote data) 로드하거나 조작할 있다.

<PRE class=de1>$.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); }});</PRE>

 

파라미터 name=John, location=Boston 주면서 some.php 요청을 보낸다. 요청이 성공적으로 수행되었으면, 응답이 alert()된다.


Cookie2 javascript

<HTML>
<HEAD>
<TITLE>
자바 스크립트 쿠키 셋팅, 추출, 삭제 예제</TITLE>
<STYLE type = "text/css">
 table{ font-size:9pt; }
</STYLE>
<SCRIPT>
 /**
  * 쿠키값 추출
  * @param cookieName 쿠키명
  */

 function getCookie( cookieName )
 {
  var search = cookieName + "=";
  var cookie = document.cookie;

  // 현재 쿠키가 존재할 경우
  if( cookie.length > 0 )
  {
   // 해당 쿠키명이 존재하는지 검색한 후 존재하면 위치를 리턴.
   
startIndex = cookie.indexOf( cookieName );

   // 만약 존재한다면
   if( startIndex != -1 )
   {
    // 값을 얻어내기 위해 시작 인덱스 조절
    
startIndex += cookieName.length;

    // 값을 얻어내기 위해 종료 인덱스 추출
    
endIndex = cookie.indexOf( ";", startIndex );

    // 만약 종료 인덱스를 못찾게 되면 쿠키 전체길이로 설정
    if
( endIndex == -1) endIndex = cookie.length;

    // 쿠키값을 추출하여 리턴
    return unescape( cookie.substring( startIndex + 1, endIndex ) );
   }
   else
   {
    // 쿠키 내에 해당 쿠키가 존재하지 않을 경우
    return false;
   
}
  }
  else
  {
   // 쿠키 자체가 없을 경우
   return false;
  }
 }

 

 /**
  * 쿠키 설정
  * @param cookieName 쿠키명
  * @param cookieValue 쿠키값
  * @param expireDay 쿠키 유효날짜
  */
 function setCookie( cookieName, cookieValue, expireDate )
 {
  var today = new Date();
  today.setDate( today.getDate() + parseInt( expireDate ) );
  document.cookie = cookieName + "=" + escape( cookieValue ) + "; path=/; expires=" + today.toGMTString() + ";";
 }

 

 /**
  * 쿠키 삭제
  * @param cookieName 삭제할 쿠키명
  */
 function deleteCookie( cookieName )
 {
  var expireDate = new Date();
  
  //어제 날짜를 쿠키 소멸 날짜로 설정한다.
  expireDate.setDate( expireDate.getDate() - 1 );
  document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString() + "; path=/";
 }

 

 /**
  * 자신이 지정한 값으로 쿠키 설정
  */
 function setMyCookie()
 {
  setCookie( form.setName.value, form.setValue.value, form.expire.value );
  viewCookie(); // 전체 쿠키 출력 갱신
 }

 

 /**
  * 자신이 지정한 쿠키명으로 확인
  */
 function getMyCookie()
 {
  alert( "쿠키 값 : " + getCookie( form.getName.value ) );
 }

 

 /**
  * 자신이 지정한 쿠키명으로 쿠키 삭제
  */
 function deleteMyCookie()
 {
  deleteCookie( form.deleteName.value );
  alert("쿠키가 삭제되었습니다.");
  viewCookie();
 }

 

 /**
  * 전체 쿠키 출력
  */
 function viewCookie()
 {
  if( document.cookie.length > 0 )
   cookieOut.innerText = document.cookie;
  else
   cookieOut.innerText = "저장된 쿠키가 없습니다.";
 }
</SCRIPT>
</HEAD>
<BODY
onLoad = "viewCookie()">
<FORM name = "form">
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
 <TD bgcolor = "#666666">
  <TABLE cellpadding = "0" cellspacing = "1">
  <TR height = "25">
   <TD align = "center"><FONT color = "#ffffff">쿠키 설정</FONT></TD>
  </TR>
  <TR>
   <TD bgcolor = "#ffffff" align = "center">
    쿠키명 : <INPUT type = "text" name = "setName"><BR>
    쿠키값 : <INPUT type = "text" name = "setValue"><BR>
    기한 : <INPUT type = "text" name = "expire"><BR>
    <INPUT type = "button" onClick = "setMyCookie()" value = "쿠키설정">
   </TD>
  </TR>
  </TABLE>
 </TD>
</TR>
</TABLE>
<BR>
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
 <TD bgcolor = "#666666">
  <TABLE cellpadding = "0" cellspacing = "1">
  <TR height = "25">
   <TD align = "center"><FONT color = "#ffffff">쿠키 확인</FONT></TD>
  </TR>
  <TR>
   <TD bgcolor = "#ffffff" align = "center">
    쿠키명 : <INPUT type = "text" name = "getName"><BR>
    <INPUT type = "button" onClick = "getMyCookie()" value = "쿠키확인">
   </TD>
  </TR>
  </TABLE>
 </TD>
</TR>
</TABLE>
<BR>
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
 <TD bgcolor = "#666666">
  <TABLE cellpadding = "0" cellspacing = "1">
  <TR height = "25">
   <TD align = "center"><FONT color = "#ffffff">쿠키 삭제</FONT></TD>
  </TR>
  <TR>
   <TD bgcolor = "#ffffff" align = "center">
    쿠키명 : <INPUT type = "text" name = "deleteName"><BR>
    <INPUT type = "button" onClick = "deleteMyCookie()" value = "쿠키삭제">
   </TD>
  </TR>
  </TABLE>
 </TD>
</TR>
</TABLE>
<BR>
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
 <TD bgcolor = "#666666">
  <TABLE cellpadding = "0" cellspacing = "1">
  <TR height = "25">
   <TD align = "center"><FONT color = "#ffffff">전체 쿠키</FONT></TD>
  </TR>
  <TR height = "25">
   <TD bgcolor = "#ffffff" align = "center">
    <DIV id = "cookieOut"></DIV>
   </TD>
  </TR>
  </TABLE>
 </TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>


$(); jQuery

$();

어떤 것이든 일단 괄호 안에 넣기만 하면 자동으로반복 순회하여 jQuery 객체로 만들어진다.

 

태그이름 : $('div')는 document 내에서 모든 html div를 얻어냄

ID : $('#id')는 document 내에서 id라는 아이디를 가지는 요소를 얻어냄

CLASS : $('.class')는 document 내에서 class라는 클래스 이름을 가진 모든 요소를 얻어냄

[출처] $();|작성자 미자씨


ready jQuery


http://api.jquery.com/ready/

 

 

window.onload 이벤트는 관련된 모든 도큐먼트가 브라우저로 다운로드된 후에 발생한다.

-> 자바스크립트에서 페이지의 모든 요소에 접근 가능

 

$(document).ready()는 DOM이 로드되어 사용할 준비가 끝나는 시점에 호출된다.

-> 스크립트에서 모든 요소들에 접근 가능

 

※중요한 차이점

관련된 모든 파일들이 다운로드된 후를 의미하는 것은 아니다.

HTML이 다운로드되자마자 다른 관련 파일(이미지 등)의 다운로드 완료 상태와 상관없이 바로 DOM 트리로 파싱되고, 곧바로 코드가 실행된도록 되어 있다.


cookie javascript

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040202&docId=67789880&qb=anNwIO2OmOydtOyngOulvCDrspfslrTrgqDrlYwg7L+g7YKk&enc=utf8&section=kin&rank=2&sort=0&spq=0&pid=fHUO0v331xossvO7epsssv--502851&sid=S5W2iKWBlUsAAF0tQR8




쿠키 예제...

function ReadCookie (Name)
{
    var search = Name + "="
    if (document.cookie.length > 0)
    {
        offset = document.cookie.indexOf(search)
        if (offset != -1)
        {
            offset += search.length
            end = document.cookie.indexOf(";", offset)
            if (end == -1)
                end = document.cookie.length
            return (document.cookie.substring(offset, end))
        }
        else
            return ("");
    }
    else
        return ("");
}

function WriteCookie (cookieName, cookieValue, expiry)
{
    var expDate = new Date();

    expDate.setTime (expDate.getTime() + expiry);
    document.cookie = cookieName + "=" + escape (cookieValue) + "; expires=" + expDate.toGMTString() + "; path=/";
}

위 예제 참고하셔서 작성하시면 될 듯 합니다. ^^

 

소스 출처는... www.blueb.co.kr 입니다.


워런버핏, '플레이보이'보다 '재무제표' 사랑 경제

http://www.asiae.co.kr/news/view.htm?idxno=2010030807562443669



재무제표는 장기적 경쟁우위 기업 발굴 위한 바로미터

[아시아경제 임선태 기자]
워런버핏
"어떤 사람들은 플레이보이(Playboy)를 보지만 나는 재무제표를 읽는다."

가치투자 미다스의 손 '워런 버핏(사진)'이 말한 '좋은 투자로 향하는 지름길'이다. 단타매매가 성행하는 증시에서 각 기업별 사업보고서와 재무제표를 반드시 읽어야 궁극적인 수익을 낼 수 있다는 투자의 정석을 강조한 대목이기도 하다.

버핏은 재무제표를 활용해 초우량주를 솎아내는 주식투자 노하우를 강조했다. 대박과 쪽박 사이를 오가는 주식 투자에서 진짜 대박 주식은 재무제표에 숨어 있다는 판단 때문.

재무제표를 바라보는 버핏의 시각은 장기적 경쟁우위를 가진 기업에 몰입돼 있다. 그는 "고유의 제품 혹은 서비스를 제공하는 기업 즉 독점적 기술력을 확보한 기업이 제 1의 가치 투자 대상"이라며 "아울러 원가가 낮은 기업도 장기적 경쟁우위를 선점하고 있다고 볼 수 있다"고 발언했다. 이어 '대차대조표-손익계산서-현금흐름표' 등 3대 주요 재무제표의 계정 과목들은 될성부른 기업들의 징후를 발견하는데 전혀 손색이 없다고 강조했다.

◆현금흐름표=기업의 혈액(자금) 순환 흐름을 보여주는 현금흐름표에서는 자본적 지출을 가장 눈여겨 봐야 할 부분으로 꼽았다. 당기순이익 대비 자본적 지출 비율이 절반 미만일 경우 장기적으로 경쟁력있는 기업으로 분류된다는 것. 자본적 지출 비율이 25% 미만일 경우 '10루타 주식'을 찾은 것이나 마찬가지라는 표현으로 극찬했다. 자본적 지출이란 고정자산에 대한 지출로 고정자산의 가치를 증대시키고 가용연수를 증가시키는데 들어가는 비용을 일컫는다.

◆손익계산서=손익계산서를 통해 본 대박주 조건의 1순위는 역대 매출액 대비 당기순이익 비율이다. 그는 "이것저것 비용을 모두 제외한 수익이 벌어들인 액수의 5분의1 이상이면 그 조건을 만족하고 있다"고 해석했다. "반면 해당 비율이 10% 미만인 기업은 장기적인 경쟁우위가 미약하며 관련 시장을 '레드오션(Red Ocean)'으로 구분해 경쟁이 격화된 상황"이라며 관련주 투자를 경고했다.

◆대차대조표=버핏은 또 투자 리스크 최소화 방안으로 대차대조표와 재무에 대한 이해를 언급했다. 주식투자로 큰 손실을 입는 대표적 사례는 자산건전성(대차대조표)이 부실한 기업에 투자한 경우라는 말도 빼놓지 않았다. 잘 나가는 주식을 고르는 탁월한 능력도 중요하지만 부실한 기업을 골라내는 안목도 중요하다는 설명이다.

그는 부채 비중이 높은 기업에 투자하는 것과 부채 없는 기업을 대출로 매입하는 것이 동일하다고 말했다. 두 경우 모두 여건에 따라 자금 압박의 궁지에 몰리기 쉽다는 것.

평범한 투자자가 버핏의 수준에 도달하기 위해서는 끊임없는 노력과 천부적인 혜안이 필요한 것이 사실이다. 하지만 한치 앞도 내다볼 수 없는 증시에서 과거와 현재의 지표로 미래를 예견할 수 있다면 밑지지 않는 장사 아닐까. 이런 맥락에서 버핏의 재무제표 활용법은 가치·미래투자의 묘안이며 국가별 회계기준을 초월해 통용된다는 점에서 재무제표에 생소했던 투자자들이 익혀둬야 할 지침서다. 

seasar


1 2 3 4 5 6



iphone