반응형
We suggest the following mirror site for your download:

http://apache.tt.co.kr/

Other mirror sites are suggested below. Please use the backup mirrors only to download PGP and MD5 signatures to verify your downloads or if no other mirrors are working.

HTTP

FTP

Backup Sites

http://www.apache.org/dist/
http://www.eu.apache.org/dist/

The full listing of mirror sites is also available. The procedure for setting up new mirrors is described in How to become a mirror.

Verify the integrity of the files

It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. Please read Verifying Apache Software Foundation Releases for more information on why you should verify our releases.

The PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from the main distribution site, rather than from a mirror. Then verify the signatures using

% pgpk -a KEYS
% pgpv downloaded_file.asc
or
% pgp -ka KEYS
% pgp downloaded_file.asc
or
% gpg --import KEYS
% gpg --verify downloaded_file.asc

Alternatively, you can verify the MD5 signature on the files. A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of GNU Textutils. Windows users can get binary md5 programs from here, here, or here.

Posted by 1010
98..Etc/Anyframe2008. 8. 8. 16:06
반응형
Posted by 1010
반응형
참조 및 번역 http://www.w3schools.com/js/default.asp

자바스크립트는 웹에서 사용하는 스크립트 언어 입니다!

자바스크립트는 수만 개의 웹 페이지에서 디자인을 향상 시키고, 폼을 검증하고, 브라우저를 인식하고, 쿠키를 생성하는데 사용하고 있습니다.

자바스크립트는 인터넷에서 가장 유명한 스크립트 언어입니다.

자바스크립트는 배우기 쉬워요! 즐겨보세요!

JS Basic
JS HOME(Whiteship's Note)
JS Introduction(Introduction to JavaScript)
JS How To(JavaScript How To ...)
JS Where To(JavaScript Where To ...)
JS Variables(JavaScript Variables)
JS If...Else(JavaScript If...Else와 Switch Statement)
JS Switch
JS Operators(JavaScript Operators)
JS Popup Boxes(JavaScript Popup Boxes)
JS Functions(JavaScript Functions)
JS For Loop(JavaScript For Loop와 While Loop)
JS While Loop
JS Break Loops
JS For...In
JS Events(JavaScript Events)
JS Try...Catch(JavaScript Try...Catch Statement)
JS Throw(JavaScript Throw Statement)
JS onerror(JavaScript The onerror Event)
JS Special Text(JavaScript Special Characters)
JS Guidelines(JavaScript Guidelines)

JS Objects
JS Objects Intro(JavaScript Objects Introduction)
JS String(avaScript String Object)
JS Date(JavaScript Date Object)
JS Array(JavaScript Array Object)
JS Boolean(JavaScript Boolean Object)
JS Math(JavaScript Math Object)
JS HTML DOM(JavaScript HTML DOM Objects)

JS Advanced
JS Browser(JavaScript Browser Detection)
JS Cookies(JavaScript Cookies)
JS Validation(JavaScript Form Validation)
JS Animation(JavaScript Animation)
JS Image Maps
JS Timing(JavaScript Timing Events)
JS Create Object(JavaScript Create Your Own Objects)
JS Summary
Basic 부분은 요약 하는 식으로 정리했으며
Object와 Advanced 부분은 거의 번역을 했습니다.

전부 살표보신 분들은 재미삼아 퀴즈도 보실 수 있습니다.
물론 다 보지 않고도 퀴즈만 볼 수도 있지요.ㅋ

사용자 삽입 이미지
문제 난이도는 매우 쉬운데(20문제 푸는데 3분 10초면..그냥 찍기 수준입니다.ㅋㅋ).. 저는 두 문제를 틀려버렸어요;;


출처 : http://whiteship.me/1004
Posted by 1010
98..Etc/Anyframe2008. 8. 8. 15:56
반응형

anyframe(http://www.anyframejava.org)의 등장..

옆에서 기자분이 열심히 어디론가 전화를 하고 있다.

그런데 spring이 나오고 오픈 소스가 나온다..

그러더니 기사가 나오기 시작했다.

http://www.zdnet.co.kr/news/enterprise/si/0,39031197,39169880,00.htm
http://www.zdnet.co.kr/news/enterprise/si/0,39031197,39169940,00.htm
http://www.zdnet.co.kr/news/enterprise/si/0,39031197,39168226,00.htm

왠지 반가운 느낌이 더 많이 든다.

앞으로 SI들이 통일된 프레임웍을 통해서 개발될 확률이 많아 졌고,

그리고 오픈 소스라는 점에서 이 프레임웍이 많은 발전을 이룰것이며,,

또한 삼성 SDS 라는 점도 이를 더 뒷받침하지 않을까 한다.

이 프레임웍은 스프링을 기반으로 하기에 왠지 더 정감이 간당..ㅋㅋ (요즘 열공중..)

물론 앞으로 좀 더 지켜봐야겠지만...

이런 시도들이 좀 더 나왔으면 한다.


출처 : http://rrwr.tistory.com/76?srchid=BR1http%3A%2F%2Frrwr.tistory.com%2F76

Posted by 1010
98..Etc/Etc...2008. 8. 8. 09:59
반응형
 cclskin.net
start.com
del.icio.us
craigslist: san francisco bay area classifieds for jobs, apartments, personals, for sale, services, community, and events
Rollyo: Roll Your Own Search Engine
TechCrunch
Etsy - Your place to buy and sell all things handmade
Protopage v2 released - free AJAX start pages now with RSS news feeds, sticky notes and bookmarks
meebo.com
Google
Windows Live Local
43 Things
Where do you want to go? | 43 Places
Welcome to Flickr - Photo Sharing
CEITON technologies
야후! 허브 - 태그로 세상을 담는다!
Kiko - A New Kind of Online Calendar
Netvibes
TagWorld
Google Base
Windows Live
Google Local
Google Maps API
BlinkList | Your personal start page and social bookmarking engine
Google Transit
Ning | Home: Front Page
smugmug - The ultimate in photo sharing. Online photo albums, photo sharing, photo hosting and photo storage.
YouTube - Broadcast Yourself.

?

Social Bookmarking/Search/Invitation:
Simpy
Goovite
Furl
Spurl
Rollyo
Squidoo
StumbleUpon
RawSugar
Kopikol
SurfTail

Content Filtering
Techtiki
ScoopGo
Filangy

To Do Lists
GooTodo
Listal

Online Calendars
HipCal
AirSet
zEvents
EventSniper

Web Site/Blog Analytics:
Measure Map
Google Analytics

Peer Production Content (News/Music/Listings)
Shoutwire
Millions of Games
Rojo
Last.fm
Pandora
WikiCompany
Glypho
Yazai
BlockRocker
Wists
SpinSpy
NowPublic
Odeo
WebJay
180 Degree News
Quimble
Riffs
ButterFly
Bandnews

Mash-Ups
Ning
FlickrMap
LivePlasma
CoverPop
Qube
Kayak
toEat
AlexaDex

Aggregators
Google Reader
SuprGlu
PBwiki
Attensa
fluctu8
NewsMob
Blummy
Fluxiom
MeFeedia

Start Pages
PageFlakes
Google Ig

Team Planning, Organization, Coordination, & Project Management
Planzo
Backpack
Zimbra
ProjectPlace
Doodle
ZohoPlanner

E-Mail and Communication
Meebo
GMail
myemail
Tempinbox
Citadel

Online Storage
Avvenu
SendSpace
eSnips
StreamLoad

Image Storage, Search, & Sharing
Fotolia
iStockPhoto
Riya
PhotoBucket

Mapping
Google Maps
Yahoo! Maps
MSN Maps
Wayfaring

Word Processing & Note Taking
JotSpot Live
Webnote

Web 2.0 Parts
TinyMCE
RSS2PDF
ZohoChallenge

Grassroots Web 2.0
Knowmore.org

Online Business Software
2ndSite
NetWorthIQ
ThinkFree
CampaignMonitor

Web 2.0 Social Communities
MySpace
Orkut
LinkedIn

Web 2.0 Command Line
YubNub
Ambedo

Web 2.0 Humor
Web 2.0 Validator

?

?

?

부록2. 시맨틱웹(웹2.0) 관련 사이트

시맨틱웹 또는 웹2.0을 좀더 잘 이해하려면 관련 사이트를 직접 둘러보는 것이 좋다. 이 책에서 미처 소개하지 못한 곳을 포함해 관련 사이트를 정리해봤다. 시간이 나는대로 차례대로 방문해보거나 검색엔진을 통해 아래 소개된 사이트에 대한 정보를 찾아보기 바란다.

(2006.01.25 최종 수정. 사이트 주소는 수시로 바뀝니다.)


43things(www.43things.com) : 꼬리표 기술을 적극 활용하는 소셜 네트워크 기반의 블로그 커뮤니티

A9(www.a9.com) : 아마존의 검색엔진으로 Ajax를 도입한 것이 특징이다. 일단 일반 검색이 아닌 전자상거래 검색 분야로 좁혀 전문적인 검색시장부터 노리고 있다.

Browsr : social directory manager 사이트. 쉽게 설명하자면 웹사이트를 주제별로 구분했던 야후 디렉토리 서비스를 사용자들이 구분하는 사이트다. 사회적책갈피(소셜북마크)의 한 종류로 볼 수 있는데, 각종 사이트 링크를 사용자들이 평가하고 분류한다는 점이 특징이다. 물론 꼬리표 적용은 필수.

BudgetTracker(http://budgettracker.com/login.php) : 무료로 사용할 수 있는 웹 회계, 일정관리 서비스.

Bunchball(www.bunchball.com) : 플래시 기반의 온라인 게임 서비스. 개발자들이 직접 게임 개발에 참여할 수 있는 것이 특징이다.

DrawSWF(http://drawswf.sourceforge.net/) : 웹 상에서 그림을 그릴 수 있다. Java2를 이용한 것이 특징이며 SVG 형식을 활용해 그린 그림을 플래시 애니메이션 파일로 저장할 수 있는 점이 독특하다.

Flock(www.flock.com) : 불여우 기반의 오픈소스 소셜 브라우저 공식 사이트. 즐겨찾기, 방문기록, 블로깅 등의 활동을 브라우저 차원에서 제공해준다.


?

JotSpot(www.jotspot.com) : 개인용 위키 응용프로그램 제공 사이트

KnowNow(www.knownow.com) : RSS 알리미(alert) 시스템 사이트로 기업에서 필요한 정보를 모아서 제공하는 솔류션을 발표했다.

MS 라이브로컬(http://local.live.com) : 미국 주요 지역의 정밀항공사진 지도서비스를 포함한 지역정보 종합서비스

MS 라이브닷컴(www.live.com) : 마이크로소프트가 선보인 라이브 소프트웨어를 제공하는 사이트

MS 스타트닷컴(www.start.com) : 마이크로소프트의 개인화 서비스 사이트

MSN 버추얼 어스(virtualearth.msn.com) : 마이크로소프트의 위성지도 서비스

MSN 샌드박스(sandbox.msn.com) : 마이크로소프트가 진행 중인 프로젝트를 보여주는 사이트

MusicBrainz(http://musicbrainz.org) : 음악 관련 자료를 RDF 문법을 이용해 제공하는 사이트

Oddpost(www.oddpost.com) : 웹기반 이메일 업체로 DHTML을 이용하여 브라우저에서 아웃룩과 거의 같은 인터페이스를 구현하여 주목받은 회사. 야후가 인수했다.

Orb(www.orb.com) : 웹과 연동해 동영상 사진 화상캠 등을 통해 집안을 관리하거나 각종 알리미 기능을 이용할 수 있는 홈관리 시스템 사이트.

Podscope(www.podscope.com) : 파드캐스팅 자료를 검색해주는 검색엔진으로 숨은자료(meta data)를 활용한 검색엔진이라는 특징이 있다.

Pubsub(www.pubsub.com) : RSS와 블로그 전문 검색엔진. 구조화된 블로깅(Structured Blogging) 기술을 선보였다.

Real Travel(http://realtravel.com/) : 여행을 주제로 한 소셜 네트워크. 블로그 형식과 지도 연계 정보가 특징이다.

Rico(www.openrico.org) : 자바스크립트를 이용한 RIA기술 사이트. Ajax 기술을 사용한 개발 사이트.

SAGE(sage.mozdev.org) : 불여우 브라우저의 탭브라우징 기능과 접목해 사용하는 불여우 브라우저용 RSS 구독기 확장기능 사이트

W3C(www.w3.org) : 웹표준을 만들고 웹을 주관하는 공식기관. 시맨틱웹에 관한 자료도 이곳에 있다.

ZDNET RSS 공급 페이지(http://www.zdnet.co.kr/etc/feeds/xml/) : 다양한 형식의 RSS를 주제별로 제공해주고 있는 사례를 볼 수 있다.

Zvents(www.zvents.com) : 지역의 각종 행사(이벤트) 검색 서비스. 현재 샌프란시스코 지역의 행사를 검색해주며, 구글맵과 연동되어 장소를 소개한다.

개버(http://www.gabbr.com/) : 사용자가 덧글을 다는 것을 주요 특징으로 내세우는 뉴스 사이트. 덧글 수가 대문의 주요 뉴스에 표시됨으로써 사용자들의 관심도를 측정할 수 있다.

구글 개인화 홈페이지(http://www.google.co.kr/ig) : 구글의 개인화 홈페이지 사이트. 아작스를 도입해 옮기려는 영역을 마우스로 끌어다놓으면 원하는 위치로 바로 재배치되는 것을 볼 수 있다.

구글 라이드파인더(http://labs.google.com/ridefinder) : 구글의 Ride Finder는 검색 지역의 수송수단을 찾아주는 로컬 서비스로, 지도 서비스와 연동되는 서비스다.

구글 리더(http://www.google.com/reader/) : 구글의 RSS 웹구독 서비스. 지메일과 비슷한 화면을 가지고 있으며 검색과 연동된 점이 특징이다.

구글 베이스(http://base.google.com) : 구글이 내놓은 무료 알맹이(content) 검색 서비스

구글 비디오검색(http://video.google.com/) : 구글의 멀티미디어 검색 서비스

구글 야후 교통 날씨 지도(traffic.poly9.com) : '구글맵 + 야후 교통정보 + 월드웨더(worldweather) 날씨정보'를 결합하여 지도를 통해 교통상황과 날씨를 함께 확인할 수 있는 서비스. 그레그 새더츠키(Greg Sadetsky)가 개발했다.

구글 오컷(www.orkut.com) : 사회적 네트워크(Social Network)의 대명사처럼 인식되는 사이트로 평판 시스템과 검색 기능이 특징이다.

구글 지메일(www.gmail.com) : 구글의 웹메일 서비스. 기존의 폴더 방식이 아닌 레이블(lable, 찌종이) 방식으로 편지를 관리하고 있으며 아작스 등을 도입한 점, 2기가바이트가 넘는 용량이 특징이다.

구글 트랜지트 여행 플래너(Google Transit Trip Planner, http://www.google.com/transit) : 구글이 선보인 교통 안내 서비스. 미국 포틀랜드(Portland) 지역에 한정적으로 공개되었다.

구글(www.google.com) : 상장 1년 만에 미국 20대 기업에 들고 100조가 넘는 기업으로 성장한 세계 최고의 검색엔진 기업. 웹2.0 기술을 가장 잘 활용하는 곳이다.

구글 어스(Google Earth, http://earth.google.com) : 구글의 위성지도 서비스

구글 지도(http://maps.google.com/) : 아작스를 도입한 구글의 지도 서비스 사이트

그리스몽키(Greasemonkey, http://greasemonkey.mozdev.org/) : 아론 부드맨이 2004년 12월에 친구를 위해 개발한 불여우 브라우저용 확장 기능의 하나로 자신이 보는 페이지를 재정의해서 볼 수 있다.

나우퍼블릭(http://www.nowpublic.com/) : 사용자들이 기사를 작성할 수 있는 뉴스 사이트로 꼬리표를 적용하고 있다.

넘섬(http://www.numsum.com) : Ajax로 구현한 웹스프레드시트 사이트.

넷바이브스(http://www.netvibes.com/) : Ajax로 구현한 개인이 설정할 수 있는 개인화 페이지.

넷플릭스(www.netflix.com) : 미국의 DVD 대여 사이트로 아작스를 도입해 마우스를 올려놓기만 해도 상자가 뜨면서 DVD 요약 내용이 나온다.

뉴스게이터(www.newsgator.com) : 사용자가 좋아하는 뉴스, 사이트, 블로그를 한 자리에서 볼 수 있게 해주는 서비스. 아웃룩이나 피드데몬을 이용할 수도 있다.

다음 RSS넷(rss.daum.net) : 국내 포탈로는 처음 선보인 RSS웹구독기.

닷지볼(www.dodgeball.com) : 휴대전화 소셜 네트워킹 애플리케이션. 구글이 인수했다.

델리셔스(http://del.icio.us) : 조슈아 샤흐터(Joshua Schachter)가 만든 소셜 북마크 공유 서비스. 웹2.0 시대에 플릭커와 함께 양대 스타로 떠오른 사이트로 야후에 인수되었다. 30만 사용자들이 1000만개 즐겨찾기(북마크)를 공유했다.

디그(www.digg.com) : 슬래시(slashdot.org)와 같은 뉴스 포럼 사이트. 2006년 초부터 슬래시의 트래픽을 따라잡을만큼 급성장했다. 슬래시는 편집진에 의해 주제가 선정되지만 디그는 사용자의 투표(digg it)를 통해 선정되는 점이 다르다. 네티즌의 자발적 참여가 성장에 어떤 역할을 하는지 보여주는 사례.

라에드는 어디에(http://dear_raed.blogspot.com) : 블로그의 매체성을 가장 잘 보여준 살람팍스의 블로그

라이브마크스(http://sandbox.sourcelabs.com/livemarks/) : Ajax로 구현한, 델리셔스(del.icio.us)의 새로 추가된 북마크 실시간 보기 사이트.

라이트리(www.writely.com) : 웹 기반의 워드프로세서. 웹에서 문서를 작성한 후 컴퓨터에 Word, HTML, ZIP 형식으로 저장할 수 있고 공유도 가능한 점이 특징이다. 어디서나 사용할 수 있다는 점 때문에 최근 주목받는 사이트.

로조닷컴(www.rojo.com) : 블로그라인스와 같은 웹 기반의 RSS 구독기. 포크소노미 기술로 꼬리표에 가중치를 부여해 구성원들이 체계화시키고 있다.

롤요(www.rollyo.com) : 사용자가 원하는 사이트를 묶어두면 해당 사이트만을 대상으로 검색해주는 개인화 검색엔진. 데이브 펠이 만들었다.

리멤버더밀크(http://www.rememberthemilk.com) : Ajax를 적용한 할일 목록 관리 사이트. 메신저로 수신이 가능한 점이 특징이다.

리야닷컴(http://riya.com) : 인공지능 사진 검색엔진

마요미(www.mayomi.com) : 브라우저 상에서 사용 가능한 웹 마인드맵 서비스.

마이스페이스(www.myspace.com) : 미국 10대들이 주로 사용하는 커뮤니티 사이트

마이웹2.0(http://myweb.yahoo.com) : 야후가 내세우는 소셜 검색엔진(social search engine)

모든블로그(www.modenblog.com) : 휴대전화를 이용해 RSS를 구독할 수 있는 한국 사이트

모질라(www.mozilla.org) : 불여우(Firefox) 브라우저와 천둥새 편지 프로그램을 등을 배포하는 사이트. 오픈소스와 플랫폼 기반의 프로그램 흐름을 파악할 수 있다.

미보(http://www.meebo.com) : Ajax로 구현한 웹메신저. 당연히 프로그램 설치 없이 웹에서 바로 사용할 수 있는 메신저다. MSN 메신저 외에 야후, ICQ, 구글토크 등과도 연결된다.

믹시(www.mixi.co.jp) : 일본의 사회적 네트워크 사이트로 한국의 싸이월드와 구글을 섞은 것 같은 사이트다.

백베이스(www.backbase.com) : 아작스 기반의 응용 프로그램 개발 사이트

보잉보잉(http://boingboing.net) : 해외의 블로그 사이트. 방문객들의 불여우 브라우저 사용자가 IE 사용자를 추월하는 일이 나타나 화제를 모았다.

블로거닷컴(www.blogger.com) : 가입형 블로그 서비스. 구글이 인수했다.

블로그라인스(www.bloglines.com) : 전문 RSS웹서비스로 가장 유명한 곳. 해외 사이트지만 사용하기 편리하다는 이유로 한국 네티즌도 많이 사용한다. 애스크지브스에 인수된 후 IAC로 넘어갔다.

블로그펄스(www.blogpulse.com) : 블로그 검색엔진

샤프리더(www.sharpreader.net) : RSS구독기인 샤프리더 배포 사이트

세이바로직(www.ceiva.com) : 디지털액자 판매 기업으로 가족들이 사진을 인터넷에 올려놓기만 하면 다음 날 액자를 통해 새롭게 올라온 가족사진을 감상할 수 있는 서비스를 제공한다.

소셜텍스트(www.socialtext.com) : 기업용 위키 제품 사이트

스카이프(www.skype.com) : VoIP 서비스의 대표 사이트로 이베이(eBay)에 최대 41억 달러라는 천문학적인 돈을 받고 인수되었다.

스퀘어프리 HTML에디트(http://www.squarefree.com/htmledit/) : Ajax로 구현한 실시간 HTML 편집기

시맨틱웹 커뮤니티 포탈(www.semanticweb.org) : 시맨틱웹 관련 정보를 얻을 수 있는 포탈. 시맨틱웹에 관한 행사나 다양한 정보가 올라오며 시맨틱웹 컨퍼런스인 ISWC 정보도 여기에 올라온다.

싱잉피시(www.singingfish.com) : AOL 검색기에서 선보인 멀티미디어 검색 사이트

썸원뉴(www.someonenew.com) : 스카이프를 플랫폼으로 이용하고 있는 데이트 사이트

아이스로켓(www.icerocket.com) : 블로그 검색엔진

애스크지브스(www.ask.com) : 검색 엔진. 블로그라인스를 인수했으나 애스크지브스 자체가 IAC로 인수되었다.

애플 아이튠즈(http://www.apple.com/itunes/) : 애플의 온라인 뮤직 스토어인 아이튠즈는 고객이 자신의 마음에 들도록 RSS 공급 내용을 설정할 수 있다.

야후 360(http://360.yahoo.com) : 야후에서 만든 블로그와 소셜 네트워크를 혼합한 서비스

야후 앤서즈(Yahoo Answers, http://answers.yahoo.com) : 네이버 지식인과 비슷한 문답형 커뮤니티

야후 위젯(http://kr.widget.yahoo.com) : 야후가 인수한 콘파뷸레이터를 위젯이라는 이름으로 배포하는 사이트

야후 피플링(http://kr.ring.yahoo.com) : 구독하는 RSS를 테마별로 공유하는 커뮤니티 성격의 사이트

어댑티브패스(www.adaptivepath.com) : 웹 디자인 회사로 Ajax라는 이름을 만든 Jesse James Garrett의 에세이를 볼 수 있다.

업커밍(www.upcoming.org) : 트래킹 서비스 사이트. 야후가 인수했다.

에트시(http://www.etsy.com) : 다양한 기술을 적용한 쇼핑몰. 색깔 별 재질 별로 상품을 볼 수 있고, 상품 색을 바꿔볼 수 있고, RSS로 상품 목록 지원에 꼬리표를 사용한 꼬리표구름 목록까지. 그외 다양한 웹2.0 기술을 사용하는 쇼핑몰.

엑스파이더(www.xpyder.co.kr) : RSS구독기인 엑스파이더 배포 사이트

오데오(http://odeo.com/) : 파드캐스팅 포털 사이트.

오디오블로그닷컴(www.audioblog.com) : 파드캐스팅과 비디오 블로그 서비스 사이트.

오라일리 미디어(www.oreilly.com) : 미국의 미디어기업으로 국내에는 IT전문 출판사로 더 유명하다. 웹2.0 컨퍼런스를 주최하며 웹2.0이라는 낱말을 만들고 전파시켰다.

오버추어(www.overture.com) : 한국에서도 검색광고의 절반 정도를 차지하는 세계 검색광고 시장의 강자. 야후에 인수되었다.

올블로그(www.allblog.net) : 한국의 대표적인 메타사이트로 등록된 블로그 사이트의 RSS를 모아서 보여준다.

워크스팟(www.workspot.com) : 브라우저 상에서 리눅스를 사용할 수 있다. 현재 설치된 것은 Red Hat 8 & Mandrake 9.1 remote desktops.

웨이백머신(www.archive.org) : 인터넷의 과거 정보를 저장하고 검색할 수 있는 사이트로 웹사이트 문서 저장에서 텔레비젼 프로그램 저장까지 다양한 정보를 기록하고 있다.

웹2.0컨퍼런스(www.web2con.com) : 오라일리가 주최해 2004년 10월 5일부터 일주일 동안 미국 샌프란시스코에서 열린 웹2.0 컨퍼런스의 공식 사이트

위키피디아(www.wikipedia.org) : 전세계 네티즌이 참여해 만드는 공용백과사전

윙크(www.wink.com) : 마이클 태니(Michael Tanne)의 태그 기반 검색엔진. 태그랭크(TagRank)을 이용한 필터링을 통해 최고의 검색 결과를 제공하고 검색 결과를 발행하는 기능이 특징이다. 스팸이 없는 깨끗한 검색결과도 특징이다.

이글루스(www.egloos.com) : 한국의 블로그 전문 사이트. '이글루스 가든'이라는 꼬리표를 적용한 새로운 커뮤니티를 선보였다.

잉키보드(http://www.cfcassidy.com/InkyBoard/) : 태블릿PC(Tablet PC)를 위한 칠판(Whiteboard). 인터넷 상에서 칠판 대용으로 사용할 수 있다는 것이 특징이다.

인트라V뉴스(www.intravnews.com) : 아웃룩 플러그인 방식의 구독기 배포 사이트

자쿠바(www.jacuba.com) : 철자 검사 사이트. 브라우저나 사용환경에 상관 없이 동작한다는 점이 특징이다. 윈도 사용 환경이 아닌 경우 유용.

조이엔트(Joyent, www.joyent.com) : 개인의 편지나 일정, 주소록 등을 관리하는 PIMS 서비스로 기존 서비스와 다른 점은 꼬리표를 이용해 분류를 하고, 아작스, 주소록의 구글지도 연동과 같은 시맨틱웹 기술을 이용하는 점이다.

지오뉴스(Geonews, http://www.wereporters.com/geonews.htm) : 구글 뉴스와 구글 맵을 혼합한 서비스로 하우징맵, 지오블로거와 함께 혼합(mash-up) 서비스의 한 종류로 주목받고 있다.

지오블로거(www.geobloggers.com) : 세계 주요 도시에서 찍은 사진들을 구글 지도에 표시해주는 사이트. 네티즌이 플릭커에 올린 해당 도시 사진에 지오블로거를 이용해 도시이름 꼬리표를 붙여주면 구글의 지도를 선택할 경우 관련 사진이 뜨는 서비스다.

짐브라(Zimbra, www.zimbra.com) : 개인일정 서비스로 아작스와 RSS, 스카이프, 구글지도 연동이라는 특징을 가지고 있다.

칼렌다허브(http://www.calendarhub.com) : Ajax로 구현된 일정관리 사이트.

콘파뷸레이터(www.konfabulator.com) : 콘파뷸레이터라는 대시보드 프로그램 개발사. 콘파뷸레이터도 XML과 자바스크립트를 이용하기 때문에 위젯이라는 확장 프로그램을 사용자들이 개발하기 쉽다. 야후에 인수된 후 야후 위젯(http://kr.widget.yahoo.com)으로 다시 태어났다.

클립마크스(www.clipmarks.com) : 신문 잡지의 일부를 찢어서 보관하는 것처럼 웹에서도 일부분을 보관할 수 있도록 하라는 사이트. 웹페이지 전체가 아니라 부분만 찢어서 보관할 수 있도록 해주는 사이트로, 웹 상의 페이지 일부 클립(스크랩)은 물론 소셜클립마크를 지향하고 있는 사이트다.

클립폴리오(klipfolio, www.serence.com) : 작은 크기의 RSS 구독기 프로그램인 클립폴리오 배포 사이트

키코(http://www.kiko.com) : Ajax로 구현된 일정관리 사이트. 드래그 앤 드롭 인터페이스와 찌종이(레이블)를 지원한다.

타이프테스터(http://typetester.maratz.com) : Ajax로 구현한 글꼴(font) 비교하기 사이트

태그클라우드(www.tagcloud.com) : 꼬리표 낱말의 크기가 모두 달라 꼬리표가 구름모양으로 표시된다는 꼬리표구름. 꼬리표 기술을 알아보려면 들러야 할 곳이다.

태터센터(www.tattertools.com) : 블로그 프로그램인 태터툴즈를 만들어 제공하는 곳. 최근 꼬리표 기술을 적용해 커뮤니티 사이트로 변화중이다.

테일랭크(http://www.tailrank.com/) : 수 천 개 블로그 중에서 최고의 알맹이만을 골라서 보여준다는 사이트. 사용자들이 직접 기사를 수정하는 것이 특징이다.

테크노라티(www.technorati.com) : 2천만 개의 블로그가 등록된 꼬리표(tag) 기반의 블로그 전문 검색엔진. 구글보다 빨리 블로그를 검색해준다는 이유로 스타가 되었다.

토크디거(www.talkdigger.com) : 메타링크 검색엔진. 자신이 알고 있는 URL을 입력하면 해당 URL을 인용한 사이트를 찾아준다. 즉 특정 URL을 화제로 삼은 사이트를 찾아주는 검색엔진.

토픽스넷(www.topix.net) : 우편번호를 입력하면 30만 주제의 뉴스를 찾아주는 서비스

트라이루비(http://tryruby.hobix.com/) : 아작스로 구현한 루비 사이트. ruby 인터프리터쉘을 웹에서 사용 할 수가 있다.

파드캐스트(www.podcast.co.kr) : 파드캐스팅을 지원하는 국내 사이트

파인도리(http://www.findory.com/) : 뉴스와 블로그를 결합시켜 뉴스를 읽고 배우고 개인화시키는 서비스. 인공지능형 뉴스 사이트라는 점이 특징이다.

판도(www.pando.com/) : 누구나 무료로 어떤 크기의 파일이나 폴더라도 이메일로 전송하는 응용 프로그램.

패닉닷컴 쇼핑몰(http://panic.com/goods/) : Ajax를 이용한 쇼핑카트의 예를 볼 수 있다.

페이스북(http://facebook.com/) : 미국 대학생들이 많이 사용하는 커뮤니티 사이트

프로토페이지(www.protopage.com) : 개인화된 뉴스, 쪽지(sticky notes), 즐겨 찾기, 그외 각종 웹페이지를 하나의 페이지에서 볼 수 있게 만든 개인화 홈페이지 서비스 중 하나. 아작스(Ajax)를 이용하는 것이 특징이다.

플란조(http://www.planzo.com) : 일정관리 사이트로 다른 사람들과 일정 공유로 커뮤니티 일정 관리 가능. Ajax를 이용하여 드래그 앤 드롭 인터페이스 지원. RSS 공급 지원.

플릭커(www.flickr.com) : 꼬리표 기반의 사진 사이트. 웹2.0을 대표하는 사이트로 각종 상을 휩쓸다가 야후에 인수되었다.

피드데몬(http://www.bradsoft.com/feeddemon) : 가장 대표적인 RSS 구독기 프로그램인 피드데몬 배포 사이트

피드버너(www.feedburner.com) : 개인 블로그의 트래픽 부담을 덜기 위해 RSS 트래픽을 대신 떠안는 서비스.

피드스터(http://feedster.com) : 미국 샌프란시스코에 위치한 검색 엔진과 XML 웹 컨텐트 신디케이션 기업.

피카사(http://picasa.google.com/) : 웹 기반의 사진 관리 편집 사이트. 구글에 인수되었다.

하우징맵(www.housingmaps.com) : 폴 레이드매처(Paul Rademacher)라는 디자이너가 개발한 부동산 서비스로 구글지도에 크레이그리스트(craigslist)의 부동산 정보를 결합했다.

<!-- //포스팅 -->

출처 : [기타] 인터넷 : http://webperse.com

Posted by 1010
98..Etc/Etc...2008. 8. 8. 09:08
반응형

블로그를 보다 zzony님의 포스팅을 찾았다.

 

웹페이지를 하나의 그림이나 파일로 저장해줍니다」라는 글이다.

 

서비스를 제공하는 사이트는 thumbalizr.com인데 네이버로 테스트 해봤다.

 

홈페이지에 접속하여 이미지로 만들 사이트의 주소를 적으면 다음과 같이 간단한 섬네일과 해상도를 표시한다.

 

    

 

해상도를 선택하면 그 해상도에 맞는 페이지를 깔끔하게 이미지로 저장하여 보여준다.

다음은 800 해상도를 선택했을 때의 그림이다.

 

 

 

이 서비스를 사용해보면서 블로그에서의 문제가 되는 스크랩기능을 이렇게 이미지로 제공하면 어떨까 라는 생각을 해본다.

 

컨텐츠의 스크랩에 있어서 문제가 되는 것이 대부분 스크랩을 지원하는 사이트의 경우 스크랩 후에 그 컨텐츠의 내용을 수정할 수 있다는 점이다.

 

즉 양질의 컨텐츠라해도 복사&붙여넣기나 스크랩 버튼 클릭하나로 다른 사람의 것으로 쉽게 보여질 수 있는 것이다.

 

물론 이렇게 이미지로 제공하는 것이 스크린 캡쳐나 내용을 다시 작성하는 것 등의 방법으로 컨텐츠의 불법스크랩을 할 수 있다고 해도 지금처럼의 무분별한 펌질이나 수정을 어느정도 막을 수 있지 않을까 생각한다.

 

그리고 스크랩을 수행할때 이미지를 배경에 저작자와 서비스 제공자의 워터마크를 추가하면 본 저작자의 저작권 보호와 불법 스크랩을 근절한다는 서비스 업체의 이미지에도 도움이 될 것 같다.

Posted by 1010
반응형

<HTML>

       <HEAD>

              <TITLE>TextArea </TITLE>

              <SCRIPT LANGUAGE="JavaScript">

<!--

 

function CheckStrLength()

{

 

 var temp;

 var f = document.form.write_text.value.length;

 var msglen = 256; //최대 길이

 var tmpstr = "";

 var enter = 0;

 var strlen;

 

 // 초기 최대길이를 텍스트 박스에 뿌려준다.

 if(f == 0)

  document.form.remain.value = msglen;

 else

 {

  for(k=0;k<f;k++)

  {

   temp = document.form.write_text.value.charAt(k);

  

   if(temp == '\n')// 입력 라인 제한을 위해 엔터키 횟수 증가

   {

    enter++;

   }

 

   if(escape(temp).length > 4)

    msglen -= 2;

   else

    msglen--;

 

 

   if(msglen < 0)

   {

    alert("총 영문 512자 한글 256자 까지 쓰실 수 있습니다.");

    document.form.write_text.value = tmpstr;

    break;

   }

   else if(enter > 3)

   {

    alert("라인수 4라인을 넘을수 없습니다.");

    enter = 0;

    strlen = tmpstr.length - 1;

    //alert(strlen);

    document.form.write_text.value = tmpstr.substring(0,strlen);

    break;

   }

   else

   {

 

    document.form.remain.value = msglen;

    tmpstr += temp;

   }

  }

 }

}

//-->

              </SCRIPT>

       </HEAD>

       <BODY>

              아는 후배 한테 받은건데 잘써먹고 있어요

              <FORM name="form" METHOD="POST" ACTION="" ID="Form1">

                     <table border="0" cellspacing="0" cellpadding="0" ID="Table1">

                            <tr>

                                   <td width="200" style="FONT-FAMILY: 굴림; FONT-SIZE: 12pt">⊙ 내용입력 남은 글자수 :

                                   </td>

                                   <td align="left" width="50"><input type="text" name="remain" size="3" value="" style="background-color:#ffffff;border:1 solid #33333; FONT-FAMILY: 굴림; FONT-SIZE: 10pt"

                                                 readonly ID="Text1">

                                   </td>

                                   <td align="" valign="bottom" width="360">(4줄까지만 작성 가능합니다.)

                                   </td>

                            </tr>

                            <tr>

                                   <td colspan="3" height="1"></td>

                            </tr>

                            <tr>

                                   <td colspan="3"><img src="http://okjsp.pe.kr/images/okjsp_top.gif" width="1" height="3" border="0"><br>

                                          <textarea name="write_text" cols="75" rows="10" WRAP="SOFT" onChange="CheckStrLength()" onKeyUp="CheckStrLength()"

                                                 ID="Textarea1"></textarea>

                                   </td>

                            </tr>

                     </table>

              </FORM>

       </BODY>

</HTML>

Posted by 1010
반응형

<!--

// 최상위 체크 로직(chars로 넘긴 값이 있다면 true)

    function containsCharsOnly(input,chars) {

        for (var inx = 0; inx < input.value.length; inx++) {

            if (chars.indexOf(input.value.charAt(inx)) == -1)

                return false;

        }

        return true;

    }

 

 

// 최상위 체크 로직(chars로 넘긴 값이 있다면 false)

 function containsChars(input,chars) {

     for (var inx = 0; inx < input.value.length; inx++) {

        if (chars.indexOf(input.value.charAt(inx)) != -1)

            return true;

     }

     return false;

 }

 

 

 

// 숫자 체크

    function isNum(input) {

        var chars = "0123456789";

        return containsCharsOnly(input,chars);

    }

 

 

 

// 이름체크

 function nameCheck(input){

  var chars = '0123456789~!@#$%^&*()_-+=|{}[]<>,./?';

        return containsChars(input,chars);

 }

 

 

 

// 전화 번호 Check

    function isPhoneCheck(input) {

     var chars = "0123456789( ).-,<>{}[]_~";

        return containsCharsOnly(input,chars);

    }

 

 

 

// 영문 판별

    function isPhoneCheck(input) {

     var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        return containsCharsOnly(input,chars);

    }

 

 

 

// 영숫자 판별

    function isPhoneCheck(input) {

     var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        return containsCharsOnly(input,chars);

    }

 

 

 

 // 입력값이 숫자,대시(-)로 되어있는지 체크

 function isNumDash(input) {

     var chars = "-0123456789";

     return containsCharsOnly(input,chars);

 }

 

 

 

 // 입력값이 숫자,콤마(,)로 되어있는지 체크

 function isNumComma(input) {

     var chars = ",0123456789";

     return containsCharsOnly(input,chars);

 }

 

 

 

 // 입력값이 사용자가 정의한 포맷 형식인지 체크

 // 자세한 format 형식은 자바스크립트의 ''regular expression''을 참조

 function isValidFormat(input,format) {

     if (input.value.search(format) != -1) {

         return true; file://올바른 포맷 형식

     }

     return false;

 }

 

 

 

 /**

  * 입력값이 이메일 형식인지 체크

  * ex) if (!isValidEmail(form.email)) {

  *         alert("올바른 이메일 주소가 아닙니다.");

  *     }

  */

 function isValidEmail(input) {

 //    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;

     var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;

     return isValidFormat(input,format);

 }

 

 

 

 /**

  * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크

  */

 function isValidPhone(input) {

     var format = /^(\d+)-(\d+)-(\d+)$/;

     return isValidFormat(input,format);

 }

 

 

 

 // 콤마 없애기

 function removeComma(input) {

     return input.value.replace(/,/gi,"");

 }

 

 

 

 // 문자 변환 함수

    function alterString(str,before,after) {

     var returnStr = "";

     for(i = 0; i < str.length; i++) {

      value = str.charAt(i);

      index = before.indexOf(value);

      if(index >= 0) value = after.charAt(index);

      returnStr += value;

     }

     return returnStr;

    }

 

 

 

// --> 대문자 변환 함수

    function ToUpper(arg) {

     var str1 = "abcdefghijklmnopqrstuvwxyz";

     var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

     return alterString(arg,str1,str2);

    }

 

 

 

// --> 소문자 변환 함수

    function ToLower(arg){

     var str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

     var str2 = "abcdefghijklmnopqrstuvwxyz";

     return alterString(arg,str1,str2);

    }

 

 

 

// 반각 문자를 전각문자로

    function convert2ByteChar(x_char) {

        var x_2byteChar = ""; //컨버트된 문자

        var c = x_char.charCodeAt(0);

        if(32 <= c && c <= 126) { //전각으로 변환될수 있는 문자의 범위

            if(c == 32) { //스페이스인경우 ascii 코드 32

                x_2byteChar = unescape("%uFFFC");

            } else {

                x_2byteChar = unescape("%u"+gf_DecToHex(c+65248));

            }

        }

        return  x_2byteChar;

    }

 

 

 

// 10진수를 16진수로

    function gf_DecToHex(x_dec) {

        var x_Hex = new Array();

        var x_serial = 0;

        var x_over16 = x_dec;

        var x_tempNum = 0;

        while(x_dec > 15) {

            var x_h = x_dec % 16;          //나머지

            x_dec = parseInt(x_dec/16); //

            x_Hex[x_serial++] = (x_h > 9 ? String.fromCharCode(x_h + 55) : x_h); //16진수코드변환

        }

 

 

 

    //마지막은 몫의 값을 가짐

        x_Hex[x_serial++] = (x_dec > 9 ? String.fromCharCode(x_dec + 55) : x_dec); //16진수코드변환

  

    //,나머지,나머지,.....

        var retValue = "";

        for(var i=x_Hex.length ; i>0 ;i--) {

            retValue += x_Hex[i-1];

        }

        return retValue;

    }

 

 

 

// input box space, &nbsp;등 만으로 넣고 장난 칠때 이들 문자 뺀 길이를 통해 유효성 체크한다...

    function CheckStr(strOriginal, strFind, strChange){

        var position, strOri_Length;

        position = strOriginal.indexOf(strFind); 

        while (position != -1){

            strOriginal = strOriginal.replace(strFind, strChange);

            position = strOriginal.indexOf(strFind);

        }

        strOri_Length = strOriginal.length;

        return strOri_Length;

    }

 

 

 

// 체크 박스에 체크가 되어 있으면 true

 function checkValidator(str) {

  if(str.checked) return true;

  else return false;

 }

 

 

 

 // 비밀번호는 4자 등 최대 최소 길이를 파람으로 주고 처리...

    function checkLength(str,minLng,maxLng){

        var ckstr = str.value.length;

        if (parseInt(ckstr) < parseInt(minLng) || parseInt(ckstr) > parseInt(maxLng)) return false;

        return true;

    }

 

 

 

// 숫자만 받아서 아니면 메세지 보여 주는

    function onlyNumber(objEv) {

        if(!isNum(objEv)){

            alert("숫자만 입력가능합니다.");

            objEv.value = "";

            objEv.focus();

            return;

        }

    }

 

 

 

// 숫자를 체크하다가 6자 등 원하는 만큼 이동후 다음 input 박스로 이동 시키는...

    function goJump(fname, len, goname){

        onlyNumber(fname);

        if (document.all[fname].value.length == len) document.all[goname].focus();

    }

 

 

 

// 주민등록번호 체크 로직

    function check_ResidentNO(str_f_num,str_l_num){ 

        var i3=0

        for (var i=0;i<str_f_num.length;i++){

         var ch1 = str_f_num.substring(i,i+1);

            if (ch1<'0' || ch1>'9') i3=i3+1;

        }

        if ((str_f_num == '') || ( i3 != 0 )) return false;

        var i4=0;

        for (var i=0;i<str_l_num.length;i++){

            var ch1 = str_l_num.substring(i,i+1);

            if (ch1<'0' || ch1>'9') i4=i4+1;

        }

        if ((str_l_num == '') || ( i4 != 0 )) return false;

        if(str_f_num.substring(0,1) < 4) return false;

        if(str_l_num.substring(0,1) > 2) return false;

        if((str_f_num.length > 7) || (str_l_num.length > 8)) return false;

        if ((str_f_num == '72') || ( str_l_num == '18'))  return false;

               

        var f1=str_f_num.substring(0,1)

        var f2=str_f_num.substring(1,2)

        var f3=str_f_num.substring(2,3)

        var f4=str_f_num.substring(3,4)

        var f5=str_f_num.substring(4,5)

        var f6=str_f_num.substring(5,6)

        var hap=f1*2+f2*3+f3*4+f4*5+f5*6+f6*7

        var l1=str_l_num.substring(0,1)

        var l2=str_l_num.substring(1,2)

        var l3=str_l_num.substring(2,3)

        var l4=str_l_num.substring(3,4)

        var l5=str_l_num.substring(4,5)

        var l6=str_l_num.substring(5,6)

        var l7=str_l_num.substring(6,7)

        hap=hap+l1*8+l2*9+l3*2+l4*3+l5*4+l6*5

        hap=hap%11

        hap=11-hap

        hap=hap%10

        if (hap != l7) return false;

        return true;

    }

 

 

 

// 바이트 구하기

    function getByteLen(str){

        return(str.length+(escape(str)+"%u").match(/%u/g).length-1);

    }

 

 

 

 // url 가져오기

    function getUrlAddress(){

        var pageUrl = document.location;

     pageUrl  = new String(pageUrl);

      return pageUrl.substring(0,pageUrl.lastIndexOf("/"));

    }

 

 

 

// 오른마우스 금지, 나중에 해당 주석 풀고 사용

    function rightbutton(e){

        if (navigator.appName == 'Netscape' &&  (e.which == 3 || e.which == 2))

            return false;

        else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3))

        {

            alert("죄송합니다!! 정보무단복제를 막기 위하여 오른쪽 마우스 사용을 허용하지 않습니다.");

            return false;

        }

        return true;

    }

 

 

 

//document.onmousedown=rightbutton;

 

// 컨트롤 키 금지, 나중에 해당 주석 풀고 사용

    function checkCtl(){

        if (document.all){

            if(event.keyCode==17) {

                alert("죄송합니다!! 컨트롤키 사용을 허용하지 않습니다.");

                return false;

            }

        }

    }

 

 

 

//document.onkeydown = checkCtl;

 

 function setCookie(name,value) {

     document.cookie = name+"="+escape(value)+";path=/;domain=.kkaok.pe.kr;";

 }

 

 function setCookie(name,value, expires) {

     document.cookie = name + "=" + escape(value) +

     "; path=/; expires=" + expires.toGMTString();

 }

 

 function getCookie(Name) {

     var search = Name + "="

     if (document.cookie.length > 0) { // 쿠키가 설정되어 있다면

         offset = document.cookie.indexOf(search)

         if (offset != -1) { // 쿠키가 존재하면

             offset += search.length

         // set index of beginning of value

             end = document.cookie.indexOf(";", offset)

         // 쿠키 값의 마지막 위치 인덱스 번호 설정

             if (end == -1)

                 end = document.cookie.length

             return unescape(document.cookie.substring(offset, end));

         }

     }

 }

 

 

 

    String.prototype.trim = function(){

        return this.replace(/(^\s*)|(\s*$)/gi, "");

    }

 

//문자 바꾸기, 사용법 var str = 문자열.replaceAll("a", "1"); 

    String.prototype.replaceAll = function(str1, str2) {

        var temp_str = "";

        if (this.trim() != "" && str1 != str2) {

            temp_str = this.trim();

            while (temp_str.indexOf(str1) > -1){

                temp_str = temp_str.replace(str1, str2);

            }

        }

        return temp_str;

    }

 

//-->

 

 

Posted by 1010
반응형
script>

<!--

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

//                                StringUtil                                 //

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

 

/**----------------------------------------------------------------------------

 함수명 : removeWhiteSpace()

   : 문자열에 포함된 공백, 개행문자 제거

 인자값 : String strTarget - 문자열에 포함된

                             공백, 개행문자를 제거하고자하는 문자열

   : String - 좌우 공백이 제거된 문자열

 사용법 : var strResult = trim('  문 자 열  ');

          return '문자열'

-----------------------------------------------------------------------------*/

function removeWhiteSpace(strTarget)

{

    var strEliminate = /\s+/g;

 

    if(strTarget)

    {

        return strTarget.replace(strEliminate,"");

    }

    else

    {

        return strTarget;

    }

 }

 

 

/**----------------------------------------------------------------------------

 함수명 : trim()

   : 좌우 공백 제거

 인자값 : String strTarget - 좌우 공백을 없애고자하는 문자열

   : String - 좌우 공백이 제거된 문자열

 사용법 : var strResult = trim('  문 자 열  ');

          return '문 자 열'

-----------------------------------------------------------------------------*/

function trim(strTarget)

{

    var strEliminate = /(^\s*)|(\s*$)/gi;

   

    if(strTarget)

    {

        return strTarget.replace(strEliminate,"");

    }

    else

    {

        return strTarget;

    }

 }

 

 

/**----------------------------------------------------------------------------

 함수명 : ltrim()

   : 좌측 공백 제거

 인자값 : String strTarget - 좌측 공백을 없애고자하는 문자열

   : String - 좌측 공백이 제거된 문자열

 사용법 : var strResult = ltrim('  문 자 열  ');

          return '문 자 열 '

-----------------------------------------------------------------------------*/

 

function ltrim(strTarget)

{

    while(strTarget.substring(0,1)==" ")

    {

        strTarget = strTarget.substring(1);

    }

    return strTarget;

 }

 

 

/**----------------------------------------------------------------------------

 함수명 : rtrim()

   : 우측 공백 제거

 인자값 : String strTarget - 우측 공백을 없애고자하는 문자열

   : String - 우측 공백이 제거된 문자열

 사용법 : var strResult = rtrim('  문 자 열  ');

          return ' 문 자 열'

-----------------------------------------------------------------------------*/

function rtrim(strTarget)

{

    var len = strTarget.length;

   

    while(strTarget.substring(len-1,len)==" ")

    {

        strTarget = strTarget.substring(0,len-1);

        len = strTarget.length;

    }

    return strTarget;

 }

 

 

/**----------------------------------------------------------------------------

 함수명 : replaceAll()

   : 소스문자열에 포함된 문자를 원하는 문자로 변환

          공백 또는 '0'을 자리수만큼 채운 문자열

 인자값 : String strSrc - 소스 문자열

          String strOld - 총 자릿수

          String strNew - 숫자인가?             (옵션 default : false)

   : String - 소스 문자열을 포함해 원하는 위치에

                   공백 또는 '0'을 자리수만큼 채운 문자열

 사용법 : var strResult = packValue('1234', 8, true, true);

          return '00001234'

-----------------------------------------------------------------------------*/

function replaceAll(strSrc, strOld, strNew)

{

 

    var retValue = "";

 

    if(strOld == null)

    {

        return strSrc;

    }

    if (strSrc != "" && strOld != strNew)

    {

        retValue = strSrc;

 

        while (retValue.indexOf(strOld) > -1)

        {

            retValue = retValue.replace(strOld, strNew);

        }

    }

    return retValue;

}

 

 

// 문자 변환 함수 (=replaceAll() 함수와 동일)----------------------------------

function alterString(strSrc, strOld, strNew)

{

    var retValue = "";

 

    for(i = 0; i < strSrc.length; i++)

    {

        var value = strSrc.charAt(i);

        var index = strOld.indexOf(value);

 

        if(index >= 0)

        {

            value = strNew.charAt(index);

        }

        retValue += value;

    }

    return retValue;

}

 

 

/**----------------------------------------------------------------------------

 함수명 : formatString()

   : 포멧 문자열 변환

 인자값 : String strSrc    - 변환하고자 하는 문자열

          String strFormat - 포멧형식

          String strDelim  - 포멧 구분자 문자

   : String - 원하고자 하는 포멧으로 변환된 문자열

 사용법 : var strResult = formatString('20050512', '9999/99/99');

          return ' 문 자 열'

-----------------------------------------------------------------------------*/

function formatString(strSrc,strFormat)

{

    var retValue = "";

    var j = 0;

 

    var strSrc = strSrc.replace(/(\$|\^|\*|\(|\)|\+|\.|\?|\\|\{|\}|\||\[|\]|\-|\/|\:)/g, "");

 

    for (var i=0; i< strSrc.length; i++)

    {

        retValue += strSrc.charAt(i);

        j++;

 

        if ( (j < strSrc.length && j < strFormat.length)

              && (strFormat.charAt(j) != "9"

              && strFormat.charAt(j).toLower != "x"

              && strFormat.charAt(j) != "#")  )

        {

            retValue += strFormat.charAt(j++);

        }

    }

    return retValue;

}

 

 

/**----------------------------------------------------------------------------

 함수명 : packValue()

   : 소스 문자열을 포함해 원하는 위치에

          공백 또는 '0'을 자리수만큼 채운 문자열

 인자값 : String strSrc - 소스 문자열

          Int    nSize  - 총 자릿수

          bool   bNum   - 숫자인가?             (옵션 default : false)

          bool   bLeft  - 왼쪽에 위치할 것인지? (옵션 default : true )

   : String - 소스 문자열을 포함해 원하는 위치에

                   공백 또는 '0'을 자리수만큼 채운 문자열

 사용법 : var strResult = packValue('1234', 8, true, true);

          return '00001234'

-----------------------------------------------------------------------------*/

function packValue(strSrc, nSize, bNum, bLeft)

{

    var retValue = "";

    var preValue = "";

    var postValue = "";

    var nLen = 0;

    var i = 0;

 

    if(bNum == null)

    {

        bNum = false;

    }

    if(bLeft == null)

    {

        bLeft = true;

    }

 

    strSrc = "" + strSrc;

    nLen = strSrc.length;

    retValue = strSrc;

 

    if(bNum)

    {

        for(i = nLen; i < nSize; i++)

        {

            if(bLeft)

            {

                preValue += "0";

            }

            else

            {

                postValue += "0";

            }

        }

    }

    else

    {

        for(i = nLen; i < nSize; i++)

        {

            if(bLeft)

            {

                preValue += " ";

            }

            else

            {

                postValue += " ";

            }

        }

 

    }

    retValue = preValue + retValue + postValue;

 

    return retValue;

}

 

 

/**----------------------------------------------------------------------------

 함수명 : getByte()

   : 문자열의 바이트수 구하기

 인자값 : String strSrc - 소스 문자열

   : Int - 문자열 바이트수

 사용법 : var nResult = getByte('가나다1234');

          return 10

-----------------------------------------------------------------------------*/

function getByte(strSrc)

{  

//  var nByte = 0;

//  for(var i=0; i < strSrc.length; i++)

//  {

//      if(!((strSrc.charCodeAt(i) > 0x3130 && strSrc.charCodeAt(i) < 0x318F)

//          || (strSrc.charCodeAt(i) >= 0xAC00 && strSrc.charCodeAt(i) <= 0xD7A3)))

//      {

//          nByte += 1;

//      }

//      else

//      {

//          nByte += 2;

//      }

//  }

//  return nByte;

    return (strSrc.length+(escape(strSrc)+"%u").match(/%u/g).length - 1);

}

 

 

/**----------------------------------------------------------------------------

 함수명 : toUpper()

   : 소문자를 대문자로 변환

 인자값 : String strSrc - 소스 문자열

   : String - 대문자로 변환된 문자열

 사용법 : var strResult = toUpper('abc');

          return 'ABC'

-----------------------------------------------------------------------------*/

function toUpper(strSrc)

{

    var str1 = "abcdefghijklmnopqrstuvwxyz";

    var str2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

 

    return alterString(strSrc, str1, str2);

}

 

 

/**----------------------------------------------------------------------------

 함수명 : toLower()

   : 대문자를 소문자로 변환

 인자값 : String strSrc - 소스 문자열

   : String - 소문자로 변환된 문자열

 사용법 : var strResult = toLower('ABC');

          return 'abc'

-----------------------------------------------------------------------------*/

function toLower(strSrc)

{

    var str1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    var str2 = "abcdefghijklmnopqrstuvwxyz";

 

    return alterString(strSrc, str1, str2);

}

 

 

/**----------------------------------------------------------------------------

 함수명 : removeComma()

   : 문자열에 포함된 ','를 제거

 인자값 : String strSrc - 소스 문자열

   : String - ','가 제거된 문자열

 사용법 : var nResult = removeComma('123,456,789');

          return '123456789'

-----------------------------------------------------------------------------*/

function removeComma(strSrc)

{

    return strSrc.replace(/,/gi,"");

}

 

 

/**----------------------------------------------------------------------------

 함수명 : removeFormat()

   : 문자열에 포함된 포멧문자 ", . - / :"를 제거

 인자값 : String strSrc - 소스 문자열

   : String - ", . - / :"가 제거된 문자열

 사용법 : var nResult = removeComma('2005/03/12 12:24:00');

          return '20050312 122400'

-----------------------------------------------------------------------------*/

function removeFormat(strSrc)

{

    return strSrc.replace(/(\,|\.|\-|\/|\:)/g,"");

}

 

 

/**----------------------------------------------------------------------------

 함수명 : addComma()

   : 문자열에 포함된 ','를 제거

 인자값 : String strSrc - 소스 문자열

          bool   bSymbol - '+' 부호일때 보일것인가?

   : String - ','가 제거된 문자열

 사용법 : var nResult = addComma('1234567.12', true);

          return '+1,234,567.12'

-----------------------------------------------------------------------------*/

function addComma(strSrc, bSymbol)

{

    var strSymbol = '';

    var retValue  = '';

    var strTempSymbol = '';

    var strTempDotValue = '';

 

    var nLen      = 0;

 

    try

    {

        if(bSymbol == null)

        {

            bSymbol = false;

        }

 

        strSrc = strSrc.trim();

 

        if(strSrc.indexOf('.') != 0)

        {

            var nIndex = strSrc.indexOf('.');

            strTempDotValue = strSrc.substring(nIndex);

            strSrc = strSrc.substring(0, nIndex);

        }

   

        strTempSymbol = strSrc.substr(0,1);

        if(strTempSymbol == '+')

        {

            strSymbol = '+';

            strSrc = strSrc.substring(1);

        }

        if(strTempSymbol == '-')

        {

            strSymbol = '-';

            strSrc = strSrc.substring(1);

        }

 

        nLen = strSrc.length;

 

        for(var i=1; i <= nLen; i++)

        {

            retValue = strSrc.charAt(nLen - i) + retValue;

 

            if((i % 3 == 0) && ((nLen - i) != 0))

            {

                retValue = "," + retValue;

            }

        }

 

        if(bSymbol)

        {

            if(strSymbol == '')

            {

                strSymbol = '+';

            }

        }

        else

        {

            if(strSymbol == '+')

            {

                strSymbol = '';

            }

        }

        return strSymbol + retValue + strTempDotValue;

    }

    catch(e)

    {

    }

}

 

 

 

/**----------------------------------------------------------------------------

   윗 함수 사용법 : trim('aaa'); -> 변수.trim(); 또는 문자열.trim();

-----------------------------------------------------------------------------*/

String.prototype.removeWhiteSpace = function()

{

    return removeWhiteSpace(this);

}

 

String.prototype.trim = function()

{

    return trim(this);

}

 

String.prototype.ltrim = function()

{

    return ltrim(this);

}

 

String.prototype.rtrim = function()

{

    return rtrim(this);

}

 

String.prototype.replaceAll = function(strOld, strNew)

{

    return replaceAll(this, strOld, strNew);

}

 

String.prototype.formatString = function(strFormat)

{

    return formatString(this, strFormat);

}

 

String.prototype.packValue = function(nSize, bNum, bLeft)

{

    return packValue(this, nSize, bNum, bLeft);

}

 

String.prototype.getByte = function()

{

    return getByte(this);

}

 

String.prototype.toUpper = function()

{

    return toUpper(this);

}

 

String.prototype.toLower = function()

{

    return toLower(this);

}

 

String.prototype.removeComma = function()

{

    return removeComma(this);

}

 

String.prototype.removeFormat = function()

{

    return removeFormat(this);

}

 

String.prototype.addComma = function(bSymbol)

{

    return addComma(this, bSymbol);

}

 

-->

</script>

Posted by 1010
반응형

# 자바스크립트 라이브러리와 PHP함수 라이브러리를 같이 올립니다.
# 일부는 PHP스쿨에서 발췌하여 만든 소스입니다.



<!--

var n4 = (document.layers)?true:false;
var e4 = (document.all)?true:false;

//숫자만입력(onKeypress='return keyCheckdot(event)')
function keyCheck(e) {
if(n4) var keyValue = e.which
else if(e4) var keyValue = event.keyCode
if (((keyValue >= 48) && (keyValue <= 57)) || keyValue==13) return true;
else return false
}

//숫자및돗트입력(onKeypress='return keyCheckdot(event)')
function keyCheckDot(e) {
if(n4) var keyValue = e.which
else if(e4) var keyValue = event.keyCode
if (((keyValue >= 48) && (keyValue <= 57)) || keyValue==13 || keyValue==46) return true;
else return false
}

//공백제거
function Trim(string) {
for(;string.indexOf(" ")!= -1;){
string=string.replace(" ","")
}
return string;
}

//입력검사
function Exists(input,types) {
if(types) if(!Trim(input.value)) return false;
return true;
}

//영문검사+숫자검사(첫글자는 반드시영문)
function EngNum(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(i == 0) if(!((val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
else if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
}
return true;
}

//영문검사+숫자검사
function EngNumAll(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
}
return true;
}

//영문검사+숫자검사+'_'
function EngNumAll2(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(!((val>=0 && val<=9) || (val>='a' && val<='z') || (val>='A' && val<='Z') || val=='_')) return false;
}
return true;
}

//영문검사
function Eng(input,types) {
if(types) if(!Trim(input.value)) return false;
var error_c=0, i, val;
for(i=0;i<Byte(input.value);i++) {
val = input.value.charAt(i);
if(!((val>='a' && val<='z') || (val>='A' && val<='Z'))) return false;
}
return true;
}

//숫자만입력
/*
function numberonlyinput() {
var ob = event.srcElement;
ob.value = noSplitAndNumberOnly(ob);
return false;
}
*/

//돈(3단위마다 컴마를 붙인다.)
function checkNumber() {
var ob=event.srcElement;
ob.value = filterNum(ob.value);
ob.value = commaSplitAndNumberOnly(ob);
return false;
}

//한정액(일정금액 이상이 되면 올라기지 않게 한다.)
function chkhando(money) {
var ob=event.srcElement;
ob.value = noSplitAndNumberOnly(ob);
if(ob.value > money) ob.value = money;
return false;
}

//이자율(소수점 사용가능)
function checkNumberDot(llen,rlen) {
if(llen == "") llen = 8;
if(rlen == "") rlen = 2;
var ob=event.srcElement;
ob.value = filterNum(ob.value);

spnumber = ob.value.split('.');
if( spnumber.length >= llen && (spnumber[0].length >llen || spnumber[1].length >llen)) {
ob.value = spnumber[0].substring(0,llen) + "." + spnumber[1].substring(0,rlen);
ob.focus();
return false;
}
else if( spnumber[0].length > llen ) {
ob.value = spnumber[0].substring(0,llen) + ".";
ob.focus();
return false;
}
else if(ob.value && spnumber[0].length == 0) {
ob.value = 0 + "." + spnumber[1].substring(0,rlen);
ob.focus();
return false;
}
ob.value = commaSplitAndAllowDot(ob);
return false;
}

//참조함수
function filterNum(str) {
re = /^\$|,/g;
return str.replace(re, "");
}

//참조함수(컴마불가)
function commaSplitAndNumberOnly(ob) {

var txtNumber = '' + ob.value;
if (isNaN(txtNumber) || txtNumber.indexOf('.') != -1 ) {
ob.value = ob.value.substring(0, ob.value.length-1 );
ob.value = commaSplitAndNumberOnly(ob);
ob.focus();
return ob.value;
}
else {
var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
var arrNumber = txtNumber.split('.');
arrNumber[0] += '.';
do {
arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
}
while (rxSplit.test(arrNumber[0]));

if (arrNumber.length > 1) {
return arrNumber.join('');
}
else {
return arrNumber[0].split('.')[0];
}
}
}

//참조함수(컴마가능)
function commaSplitAndAllowDot(ob) {

var txtNumber = '' + ob.value;
if (isNaN(txtNumber) ) {
ob.value = ob.value.substring(0, ob.value.length-1 );
ob.focus();
return ob.value;
}
else {
var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
var arrNumber = txtNumber.split('.');
arrNumber[0] += '.';
do {
arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
}
while (rxSplit.test(arrNumber[0]));

if (arrNumber.length > 1) {
return arrNumber.join('');
}
else {
return arrNumber[0].split('.')[0];
}
}
}

//숫자만가능
function noSplitAndNumberOnly(ob) {
var txtNumber = '' + ob.value;
if (isNaN(txtNumber) || txtNumber.indexOf('.') != -1 ) {
ob.value = ob.value.substring(0, ob.value.length-1 );
ob.focus();
return ob.value;
}
else return ob.value;
}


//바이트검사
function Byte(input) {
var i, j=0;
for(i=0;i<input.length;i++) {
val=escape(input.charAt(i)).length;
if(val== 6) j++;
j++;
}
return j;
}

//팝업메뉴
function popupmenu_show(layername, thislayer, thislayer2) {
thislayerfield.value = thislayer;
thislayerfield2.value = thislayer2;
var obj = document.all[layername];
var _tmpx,_tmpy, marginx, marginy;
_tmpx = event.clientX + parseInt(obj.offsetWidth);
_tmpy = event.clientY + parseInt(obj.offsetHeight);
_marginx = document.body.clientWidth - _tmpx;
_marginy = document.body.clientHeight - _tmpy ;
if(_marginx < 0) _tmpx = event.clientX + document.body.scrollLeft + _marginx ;
else _tmpx = event.clientX + document.body.scrollLeft ;
if(_marginy < 0) _tmpy = event.clientY + document.body.scrollTop + _marginy + 20;
else _tmpy = event.clientY + document.body.scrollTop ;
obj.style.posLeft = _tmpx - 5;
obj.style.posTop = _tmpy;

layer_set_visible(obj, true);
layer_set_pos(obj, event.clientX, event.clientY);
}
function layer_set_visible(obj, flag) {
if (navigator.appName.indexOf('Netscape', 0) != -1) obj.visibility = flag ? 'show' : 'hide';
else obj.style.visibility = flag ? 'visible' : 'hidden';
}
function layer_set_pos(obj, x, y) {
if (navigator.appName.indexOf('Netscape', 0) != -1) {
obj.left = x;
obj.top = y;
} else {
obj.style.pixelLeft = x + document.body.scrollLeft;
obj.style.pixelTop = y + document.body.scrollTop;
}
}


//페이지이동
function move(url) {
location.href = url;
}

//닫기
function toclose() {
self.close();
}

//위치변경
function winsize(w,h,l,t) {
if(window.opener) resizeTo(w,h);
}

//포커스위치
function formfocus(form) {
var len = form.elements.length;
for(i=0;i<len;i++) {
if((form.elements[i].type == "text" || form.elements[i].type == "password") && Trim(form.elements[i].value) == "") {
form.elements[i].value = "";
form.elements[i].focus();
break;
}
}
}

// 날짜,시간 format 함수 = php의 date()
function date(arg_format, arg_date) {
if(!arg_date) arg_date = new Date();

var M = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var F = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var K = new Array("일","월","화","수","목","금","토");
var k = new Array("日","月","火","水","木","金","土");
var D = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var l = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var o = new Array("전","후");
var O = new Array("오전","오후");
var a = new Array("am","pm");
var A = new Array("AM","PM");

var org_year = arg_date.getFullYear();
var org_month = arg_date.getMonth();
var org_date = arg_date.getDate();
var org_wday = arg_date.getDay();
var org_hour = arg_date.getHours();
var org_minute = arg_date.getMinutes();
var org_second = arg_date.getSeconds();
var hour = org_hour % 12; hour = (hour) ? hour : 12;
var ampm = Math.floor(org_hour / 12);

var value = new Array();
value["Y"] = org_year;
value["y"] = String(org_year).substr(2,2);
value["m"] = String(org_month+1).replace(/^([0-9])$/,"0$1");
value["n"] = org_month+1;
value["d"] = String(org_date).replace(/^([0-9])$/,"0$1");
value["j"] = org_date;
value["w"] = org_wday;
value["H"] = String(org_hour).replace(/^([0-9])$/,"0$1");
value["G"] = org_hour;
value["h"] = String(hour).replace(/^([0-9])$/,"0$1");
value["g"] = hour;
value["i"] = String(org_minute).replace(/^([0-9])$/,"0$1");
value["s"] = String(org_second).replace(/^([0-9])$/,"0$1");
value["t"] = (new Date(org_year, org_month+1, 1) - new Date(org_year, org_month, 1)) / 86400000;
value["z"] = (new Date(org_year, org_month, org_date) - new Date(org_year, 0, 1)) / 86400000;
value["L"] = ((new Date(org_year, 2, 1) - new Date(org_year, 1, 1)) / 86400000) - 28;
value["M"] = M[org_month];
value["F"] = F[org_month];
value["K"] = K[org_wday];
value["k"] = k[org_wday];
value["D"] = D[org_wday];
value["l"] = l[org_wday];
value["o"] = o[ampm];
value["O"] = O[ampm];
value["a"] = a[ampm];
value["A"] = A[ampm];

var str = "";
var tag = 0;
for(i=0;i<arg_format.length;i++) {
var chr = arg_format.charAt(i);
switch(chr) {
case "<" : tag++; break;
case ">" : tag--; break;
}
if(tag || value[chr]==null) str += chr; else str += value[chr];
}

return str;
}

// 해상도에 맞는 크기 사용
function screensize() {
self.moveTo(0,0);
self.resizeTo(screen.availWidth,screen.availHeight);
}

// 주민등록번호체크( 입력폼 1개)
function check_jumin(jumin) {
var weight = "234567892345"; // 자리수 weight 지정
var val = jumin.replace("-",""); // "-"(하이픈) 제거
var sum = 0;

if(val.length != 13) { return false; }

for(i=0;i<12;i++) {
sum += parseInt(val.charAt(i)) * parseInt(weight.charAt(i));
}

var result = (11 - (sum % 11)) % 10;
var check_val = parseInt(val.charAt(12));

if(result != check_val) { return false; }
return true;
}

// 주민등록번호체크( 입력폼 2개)
function check_jumin2(input, input2) {
input.value=Trim(input.value);
input2.value=Trim(input2.value);
var left_j=input.value;
var right_j=input2.value;
if(input.value.length != 6) {
alert('주민등록번호를 정확히 입력하세요.');
input.focus();
return true;
}
if(right_j.length != 7) {
alert('주민등록번호를 정확히 입력하세요.');
input2.focus();
return true;
}
var i2=0;
for(var i=0;i<left_j.length;i++) {
var temp=left_j.substring(i,i+1);
if(temp<0 || temp>9) i2++;
}
if((left_j== '') || (i2 != 0)) {
alert('주민등록번호가 잘못 입력되었습니다.');
j_left.focus();
return true;
}
var i3=0;
for(var i=0;i<right_j.length;i++) {
var temp=right_j.substring(i,i+1);
if (temp<0 || temp>9) i3++;
}
if((right_j== '') || (i3 != 0)) {
alert('주민등록번호가 잘못 입력되었습니다.');
input2.focus();
return true;
}
var l1=left_j.substring(0,1);
var l2=left_j.substring(1,2);
var l3=left_j.substring(2,3);
var l4=left_j.substring(3,4);
var l5=left_j.substring(4,5);
var l6=left_j.substring(5,6);
var hap=l1*2+l2*3+l3*4+l4*5+l5*6+l6*7;
var r1=right_j.substring(0,1);
var r2=right_j.substring(1,2);
var r3=right_j.substring(2,3);
var r4=right_j.substring(3,4);
var r5=right_j.substring(4,5);
var r6=right_j.substring(5,6);
var r7=right_j.substring(6,7);
hap=hap+r1*8+r2*9+r3*2+r4*3+r5*4+r6*5;
hap=hap%11;
hap=11-hap;
hap=hap%10;
if(hap != r7) {
alert('주민등록번호가 잘못 입력되었습니다.');
input2.focus();
return true;
}
return false;
}

// 비밀번호 체크
function check_passwd(input, input2, min) {
if(!input.value) {
alert('비밀번호를 입력해 주십시오.');
input.focus();
return false;
}
else if(BYTE(input.value) < min) {
alert('비밀번호의 길이가 너무 짧습니다.');
input.focus();
input.value='';
input2.value='';
return false;
}
else if(!input2.value) {
alert('확인비밀번호를 입력해 주십시오.');
input2.focus();
return false;
}
else if(input.value != input2.value) {
alert('비밀번호가 서로 다르게 입력되었습니다.');
input2.value='';
input2.focus();
return false;
}
else return true;
}

//콤마 넣기(정수만 해당)
function comma(val) {
val = get_number(val);
if(val.length <= 3) return val;

var loop = Math.ceil(val.length / 3);
var offset = val.length % 3;

if(offset==0) offset = 3;
var ret = val.substring(0, offset);

for(i=1;i<loop;i++) {
ret += "," + val.substring(offset, offset+3);
offset += 3;
}
return ret;
}

//문자열에서 숫자만 가져가기
function get_number(str) {
var val = str;
var temp = "";
var num = "";

for(i=0; i<val.length; i++) {
temp = val.charAt(i);
if(temp >= "0" && temp <= "9") num += temp;
}
return num;
}

//주민등록번호를 나이로 변환
function agechange(lno,rno) {
var refArray = new Array(18,19,19,20,20,16,16,17,17,18);
var refyy = rno.substring(0,1);
var refno = lno.substring(0,2);
var biryear = refArray[refyy] * 100 + eval(refno);

var nowDate = new Date();
var nowyear = nowDate.getYear();
return nowyear - biryear + 1;
}

//레디오박스 체크검사
function radio_chk(input, msg) {
var len = input.length;
for(var i=0;i<len;i++) if(input[i].checked == true && input[i].value) return true;
alert(msg);
return false;
}

//셀렉트박스 체크검사
function select_chk(input, msg) {
if(input[0].selected == true) {
alert(msg);
return false;
}
return true;
}

//새창띄우기
function open_window(url, target, w, h, s) {
if(s) s = 'yes';
else s = 'no';
var its = window.open(url,target,'width='+w+',height='+h+',top=0,left=0,scrollbars='+s);
its.focus();
}
//-->





<?
//셀렉트
function optionlist($optionlist, $getvalue="", $keyfield="key", $valuefield="value") {
foreach($optionlist as $key => $value) {
if($getvalue && $getvalue == ${$keyfield}) $chk = "selected";
else $chk = "";
echo "<option value='{${$keyfield}}' {$chk}>{${$valuefield}}</option>";
}
echo "\n";
}

//셀렉티드
function selected($checkkey, $getvalue="") {
echo "value='$checkkey'";
if($getvalue && $checkkey == $getvalue) echo " selected";
}

//체크드
function checked($checkkey, $getvalue="") {
echo "value='$getvalue'";
if($getvalue && $checkkey == $getvalue) echo " checked";
}

//주민번호 검사
function RegiNum($reginum) {
$weight = '234567892345'; // 자리수 weight 지정
$len = strlen($reginum);
$sum = 0;

if ($len <> 13) { return false; }

for ($i = 0; $i < 12; $i++) {
$sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
}

$rst = $sum%11;
$result = 11 - $rst;

if ($result == 10) {$result = 0;}
else if ($result == 11) {$result = 1;}

$jumin = substr($reginum,12,1);

if ($result <> $jumin) {return false;}
return true;
}

//사업자번호 검사
function comRegiNum($reginum) {
$weight = '137137135'; // 자리수 weight 지정
$len = strlen($reginum);
$sum = 0;

if ($len <> 10) { return false; }

for ($i = 0; $i < 9; $i++) {
$sum = $sum + (substr($reginum,$i,1) * substr($weight,$i,1));
}
$sum = $sum + ((substr($reginum,8,1)*5)/10);
$rst = $sum%10;

if ($rst == 0) {$result = 0;}
else {$result = 10 - $rst;}

$saub = substr($reginum,9,1);

if ($result <> $saub) {return false;}
return true;
}


//글자르기
function cut_str($msg,$cut_size,$tail="...") {
if($cut_size <= 0) return $msg;
$msg = strip_tags($msg);
$msg = str_replace("&mp;quot;","\"",$msg);
if(strlen($msg) <= $cut_size) return $msg;

for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;
if($han%2) $han--;

$cut_size = $han + $eng;

$tmp = substr($msg,0,$cut_size);
$tmp .= $tail;
return $tmp;
}

// 모든한글의 글자를 출력
function hangul_code() {
$count = 0;
for($i = 0x81; $i <= 0xC8; $i++) {
for($j = 0x00; $j <= 0xFE; $j++) {
if(($j >= 0x00 && $j <= 0x40) || ($j >= 0x5B && $j <= 0x60) || ($j >= 0x7B && $j <= 0x80) || ($j >= 0x00 && $j <= 0x40) ||
(($i >= 0xA1 && $i <=0xAF) && ($j >= 0xA1 && $j <= 0xFE)) || ($i == 0xC6 && ($j >= 0x53 && $j <= 0xA0)) ||
($i >= 0xC7 && ($j >= 0x41 && $j <= 0xA0))) continue;
echo chr($i).chr($j)." ";
$count++;
}
}
echo $count;
}

// 한글검사
function is_han($str) {
if(strlen($str) != 2) return false;

$i = ord ($str[0]);
$j = ord ($str[1]);

if($i < 0x81 || $i > 0xC8 || $j > 0xFE || ($j >= 0x00 && $j <= 0x40) || ($j >= 0x5B && $j <= 0x60) || ($j >= 0x7B && $j <= 0x80) ||
($j >= 0x00 && $j <= 0x40) || (($i >= 0xA1 && $i <=0xAF) && ($j >= 0xA1 && $j <= 0xFE)) ||
($i == 0xC6 && ($j >= 0x53 && $j <= 0xA0)) || ($i >= 0xC7 && ($j >= 0x41 && $j <= 0xA0))) return false;
else return true;
}



// 랜덤값 생성
function random_string($length) {
$randomcode = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'A', 'B', 'C', 'd', 'E', 'F', 'G', 'H', 'x', 'J',
'K', 'b', 'M', 'N', 'y', 'P', 'r', 'R', 'S', 'T',
'u', 'V', 'W', 'X', 'Y', 'Z');
mt_srand((double)microtime()*1000000);
for($i=1;$i<=$length;$i++) $Rstring .= $randomcode[mt_rand(1, 36)];
return $Rstring;
}


// 디렉토리 리스트
function DirList($path="./") {
$path = opendir($path);
while($list = readdir($path)) if($list != "." && $list != "..") $Arraydir[] = $list;
closedir($path);
return $Arraydir;
}

// 15자리의 유일한 숫자값 만들기
function uniquenumber() {
$temparray = explode(" ", microtime());
$temparray2 = substr($temparray[0],2,5);
$number =$temparray[1].$temparray2;
return $number;
}

// 파일이름과 확장자 분리
function ExplodeFile($filename) {
$filename = strtolower($filename);
$elements = explode('.',$filename);
$elemcnt = count($elements)-1;
if(count($elements)==1) $ext = '';
else $ext = $elements[$elemcnt];
unset($elements[$elemcnt]);
$fname = implode($elements,'');

$fileinfo["name"] = $fname;
$fileinfo["ext"] = $ext;
return $fileinfo;
}

// 그림확장자
function ImageType($filename) {
$webimg = explodefile($filename);

$webext = $webimg["ext"];
$defineexp = array("gif","jpg","png");

$count = count($defineexp);

for($i=0;$i<$count;$i++) {
if($defineexp[$i] == $webext) return true;
}
return false;
}

// 유닉스날짜 포맷
function date_format($unixtime,$format="Y.m.d",$empty="&nbsp;") {
if($unixtime) return date($format, $unixtime);
else return $empty;
}

//YYYY-MM-DD 형식을 유닉스 타임으로
function unix_format($times, $operator="-", $type=true) {
if($type == true) {
$times = trim($times);
$arry = explode($operator,$times);
if(count($arry) != 3) return date_format(0);
$mktime = mktime(0,0,0,$arry[1],$arry[2],$arry[0]);
return date("U", $mktime);
} else {
$formats = "Y{$operator}m{$operator}d";
return date($formats, $times);
}
}

// 주민등록번호 포맷
function jumin_format($juminno, $cutno=3, $des="x", $empty="&nbsp;") {
$juminno = str_replace("-","",$juminno);
if(strlen($juminno) != 13) return $empty;
for($i=0;$i<$cutno;$i++) $x .= $des;
$juminno = substr($juminno,0,13-$cutno).$x;
$juminno = substr($juminno,0,6)."-".substr($juminno,6);
return $juminno;
}

// 홈페이지 포맷
function url_format($url, $ltype=false, $title=false, $other="", $htype="http://", $empty="&nbsp;") {
$url = eregi_replace("http://","",trim($url));
if($url) $url = $htype.$url;
else return $empty;

if($title) $turl = $title;
else $turl = $url;

if($ltype) return "<a href='{$url}' {$other}>{$turl}</a>";
else return $url;
}

// 전송값 초기화
function post_format($str, $type) {
switch($type) {
case "url":
$str = trim($str);
$str = eregi_replace("http://","",$str);
break;
case "num":
$str = trim($str);
$str = str_replace(",","",$str);
break;
}
return $str;
}

// 이메일 포맷
function mail_format($email, $ltype=false, $title=false, $empty="&nbsp;") {
$email = trim($email);
$title = trim($title);

if(!$email && !$title) return $empty;
else if(!$email) return $title;

if($title) $temail = $title;
else $temail = $email;

if($ltype) return "<a href='mailto:{$email}'>{$temail}</a>";
else return $email;
}

// 전화번호 포맷
function tel_format($num1, $num2, $num3, $format="-", $empty="&nbsp;") {
$num1 = trim($num1);
$num2 = trim($num2);
$num3 = trim($num3);

if(!$num1) $num1 = "02";

if($num2 && $num3) return $num1.$format.$num2.$format.$num3;
else return $empty;
}

// 문자 포맷
function text_format($str, $empty="&nbsp;") {
$str = trim($str);
if($str) return $str;
else return $empty;
}

// 새창띄우기
function win_format($title, $url, $target, $width, $height, $scrollbars=1, $empty) {
$title = text_format($title, $empty);
return "<a href='#' onclick=\"open_window('{$url}', '{$target}', {$width}, {$height}, {$scrollbars})\">{$title}</a>";
}

// 나이(주민등록번호를 이용)
function AGE_jumin($lno,$rno) {
$refArray = Array(18,19,19,20,20,16,16,17,17,18);
$refyy = substr($rno,0,1);

$biryear = $refArray[$refyy] * 100 + substr($lno,0,2);
$nowyear = date("Y");
return $nowyear - $biryear + 1;
}

// URL 존재확인
function URL_exists($url) {
$url = str_replace("http://", "", $url);
list($domain, $file) = explode("/", $url, 2); // 도메인부분과 주소부분으로 나눕니다.
$fid = fsockopen($domain, 80); // 도메인을 오픈합니다.
fputs($fid, "GET /$file HTTP/1.0\r\nHost: $domain\r\n\r\n"); // 파일 정보를 얻습니다.
$gets = fgets($fid, 128);
fclose($fid);

if(ereg("200 OK", $gets)) return TRUE;
else return FALSE;
}

// 조사 꾸미기
$array = "뵤 벼 뱌 배 베 보 버 바 비 뷰 부 브 뱨 볘 봐 봬 붜 붸 뵈 뷔 븨 뾰 뼈 뺘 빼 뻬 뽀 뻐 빠 삐 쀼 뿌 쁘 뺴 뼤 뽜 뽸 뿨 쀄 뾔 쀠 쁴 죠 져 쟈 재 제 조 저 자 지 쥬 주 즈 쟤 졔 좌 좨 줘 줴 죄 쥐 즤 쬬 쪄 쨔 째 쩨 쪼 쩌 짜 찌 쮸 쭈 쯔 쪠 쪠 쫘 쫴 쭤 쮀 쬐 쮜 쯰 됴 뎌 댜 대 데 도 더 다 디 듀 두 드 댸 뎨 돠 돼 둬 뒈 되 뒤 듸 뚀 뗘 땨 때 떼 또 떠 따 띠 뜌 뚜 뜨 떄 뗴 똬 뙈 뚸 뛔 뙤 뛰 띄 교 겨 갸 개 게 고 거 가 기 규 구 그 걔 계 과 괘 궈 궤 괴 귀 긔 꾜 껴 꺄 깨 께 꼬 꺼 까 끼 뀨 꾸 끄 꺠 꼐 꽈 꽤 꿔 꿰 꾀 뀌 끠 쇼 셔 샤 새 세 소 서 사 시 슈 수 스 섀 셰 솨 쇄 숴 쉐 쇠 쉬 싀 쑈 쎠 쌰 쌔 쎄 쏘 써 싸 씨 쓔 쑤 쓰 썌 쎼 쏴 쐐 쒀 쒜 쐬 쒸 씌 묘 며 먀 매 메 모 머 마 미 뮤 무 므 먜 몌 뫄 뫠 뭐 뭬 뫼 뮈 믜 뇨 녀 냐 내 네 노 너 나 니 뉴 누 느 냬 녜 놔 놰 눠 눼 뇌 뉘 늬 요 여 야 애 에 오 어 아 이 유 우 으 얘 예 와 왜 워 웨 외 위 의 료 려 랴 래 레 로 러 라 리 류 루 르 럐 례 롸 뢔 뤄 뤠 뢰 뤼 릐 효 혀 햐 해 헤 호 허 하 히 휴 후 흐 햬 혜 화 홰 훠 훼 회 휘 희 쿄 켜 캬 캐 케 코 커 카 키 큐 쿠 크 컈 켸 콰 쾌 쿼 퀘 쾨 퀴 킈 툐 텨 탸 태 테 토 터 타 티 튜 투 트 턔 톄 톼 퇘 퉈 퉤 퇴 튀 틔 쵸 쳐 챠 채 체 초 처 차 치 츄 추 츠 챼 쳬 촤 쵀 춰 췌 최 취 츼 표 펴 퍄 패 페 포 퍼 파 피 퓨 푸 프 퍠 폐 퐈 퐤 풔 풰 푀 퓌 픠";
function lastCon($str) {
global $array;
if(ord($str[strlen($str)-1]) < 128) return false;
$str = substr($str, strlen($str)-2);
if(strstr($array, $str)) return false;
return true;
}
function ul_rul($str) {
return $str.(lastCon($str) ? "을" : "를");
}
function gwa_wa($str) {
return $str.(lastCon($str) ? "과" : "와");
}
function un_num($str) {
return $str.(lastCon($str) ? "은" : "는");
}
function i_ga($str) {
return $str.(lastCon($str) ? "이" : "가");
}

// 도메인 또는 문서가 존재하는지 검사
function exists_url($url, $port="80") {
$fp = @fsockopen($url, $port);
if($fp) return true;
else return false;
}

// 숫자를 한글로 바꾸기
function numtokor($num) {
$text ='';
$d_symbol = array('4' => "만", '8' => "억", '12' => "조", '16' => "경", '20' => "해", '24' => "시", '28' => "양", '32' => "구", '36' => "간", '40' => "정", '44' => "재", '48' => "극", '52' => "항하사", '56' => "아승지", '60' => "나유타", '64' => "불가사의", '68' => "무량대수");
$p_symbol = array('0' => "", '1' => "십", '2' => "백", '3' => "천");
$t_symbol = array('0' => "", '1' => "일", '2' => "이", '3' => "삼", '4' => "사", '5' => "오", '6' => "육", '7' => "칠", '8' => "팔", '9' => "구");

if(substr($num,0,1) == '-') {
$num = substr($num ,1);
$text .= '마이너스';
}
$length_of_num = strlen($num);
if($length_of_num > 72) {
$text = "존재할 수 없는 수치 입니다.";
} else {
//실행
for ($k=0; $k< $length_of_num; $k++) {
$striped_value = substr($num, $k, 1);
$text .= $t_symbol[$striped_value];
$power_value = ($length_of_num - $k -1) % 4;
if ($striped_value <> 0) $text .= $p_symbol[$power_value];
if ($power_value == 0) $text .= $d_symbol[$length_of_num - $k -1];
}
}
return $text;
}

//검색쿼리작성
function querystring($query) {
if($query) {
$queryarray = explode("&", $query);
$count = count($queryarray);

foreach($queryarray as $key => $value) {
$array2st = explode("=", $value);
if($array2st[1]) {
if($querystring) $querystring .= "&".$value;
else $querystring = $value;
}
}

return $querystring;
}
else return "";
}

//페이징
function pagelist($tables, $nowpage, $primarykey , $chartline, $chartpage, $wheres="", $findquery="", $others="", $orders="", $urlquery="", $lastopt=true, $allopt=true, $firstbutton="[처음]", $prebutton="[이전]", $nextbutton="[다음]",$lastbutton="[끝]") {

if($wheres) $wheres = " where {$wheres} ";
if($others) $wheres .= " and {$others} ";

if(!$chartline) $chartline = 10;
if(!$chartpage) $chartpage = 10;

if(intval($nowpage) == 0) $nowpage = 1;
if(intval($nowstep) == 0) $nowstep = 1;

##마지막버튼 유무 체크
if($lastopt) {
$query = "select count(*) count from {$tables} {$wheres} {$others} {$findquery}";
$result = mysql_query($query);
$total = mysql_fetch_object($result);
#총카운트 $total->count;
}

##총검색수
if($allopt) {
$query = "select count(*) count from {$tables} {$wheres}";
$result = mysql_query($query);
$all = mysql_fetch_object($result);
#총검색수 $all->count;
}

##설정값계산
$nowstep = ceil($nowpage/$chartpage);
if($lastopt) {
$allstep = ceil($total->count/($chartpage*$chartline));
$allpage = ceil($total->count/$chartline);
}
$startpage = 1 + ($nowstep-1) * $chartpage;
$endpage = $startpage + $chartpage - 1;

if($lastopt && $endpage > $allpage) $endpage = $allpage;

##다음버튼 유무 체크
$nextline = $nowstep * $chartline * $chartpage;
$nextlimitquery = " limit {$nextline}, 1";
$query = "select {$primarykey} from {$tables} {$wheres} {$others} {$findquery} {$nextlimitquery}";
$result = mysql_query($query);
$nextok = mysql_affected_rows();

##처음버튼 및 이전버튼
if($nowstep > 1) {
$fir = " <a href='$PHP_SELF?$urlquery&nowpage=1'>{$firstbutton}</a> ";
$prepage = $startpage - $chartpage;
$pre = " <a href='$PHP_SELF?$urlquery&nowpage=$prepage'>{$prebutton}</a> ";
} else {
$fir = " <font color='#C0C0C0'>{$firstbutton}</font> ";
$pre = " <font color='#C0C0C0'>{$prebutton}</font> ";
}

##NEXT 버튼 활성화
if($nextok) {
$nextpage = $endpage + 1;
$next = " <a href='$PHP_SELF?$urlquery&nowpage=$nextpage'>{$nextbutton}</a> ";
} else {
$next = " <font color='#C0C0C0'>{$nextbutton}</font> ";
}

##중간페이지
for($i=$startpage;$i<=$endpage;$i++) {
if($i == $nowpage) $pagelist .= " <font color='#6600FF'><b>$i</b></font> ";
else $pagelist .= " <a href='$PHP_SELF?$urlquery&nowpage=$i'>$i</a> ";
}

##끝페이지
if($lastopt && $allstep > $nowstep) {
$lastpage = $allpage;
$last = " <a href='$PHP_SELF?$urlquery&nowpage=$nextpage'>{$lastbutton}</a> ";
} else {
$last = " <font color='#C0C0C0'>{$lastbutton}</font> ";
}


$firstlimit = 0 + ($nowpage-1) * $chartline;
$limitquery = " limit {$firstlimit}, {$chartline}";
$query = "select * from {$tables} {$wheres} {$others} {$findquery} {$orders} {$limitquery}";
$result = mysql_query($query);
while($fetch = mysql_fetch_array($result)) $get[] = $fetch;

$get[0]["count"] = count($get);
$get[0]["page"] = $fir.$pre." [ ".$pagelist." ] ".$next.$last;
if($lastopt) $get[0]["total"] = $total->count;
if($allopt) $get[0]["allto"] = $all->count;

return $get;

}

//업로드
function file_upload($upfile,$upfile_name,$upfile_size,$dir,$newfilename) {
if($upfile_size) {

$is_file = is_file("{$dir}/{$newfilename}");
if($is_file) unlink("{$dir}/{$newfilename}");

move_uploaded_file($upfile, "{$dir}/{$newfilename}");
chmod("{$dir}/{$newfilename}", 0644);

return true;

} else return false;
}

//현재디렉토리
function nowdir() {
global $DOCUMENT_ROOT;
global $PHP_SELF;
$getdir = pathinfo($DOCUMENT_ROOT.$PHP_SELF);
return $getdir["dirname"];
}


음..자바스크립트에서 333,333,333 을 333333333으로 만드려고 asp처럼 단순히 replace 하면 333333,333 이런값을 반환한다.

따라서 정규 표현식 사용해야함...

var re = /,/g;
var txt = "333,333,333";

txt = txt.replace(re,"");

요렇게 한후 alert(txt) 찍어보면 333333333 나옴




*)
i(대/소문자를 구분하지 않음)
g(발생할 모든 패턴에 대한 전역 검색)
gi(전역 검색, 대/소문자를 구분하지 않음) 

Posted by 1010