이번에 심심풀이로 모에적성검사(2008)을 해보았습니다. 예전에 해봤기 때문에 예전결과와 비슷할지 해보기 위해서였죠.
제가 주로 쓰는 웹브라우저는 Firefox이기 때문에 Firefox로 들어가서 TEST를 하려고 하는데, 날벼락을 맞았습니다.
IE전용입니다.

Firefox에서는 모에적성검사를 할수가 없다.

Firefox에서는 모에적성검사(2008)를 할수가 없다는 것입니다.
이것참 난감했습니다. 웹브라우저를 IE로 거의 쓰지 않는 사람보고 웹브라우저가 IE아니니 하지 말라는 식이였죠.
혹시나 Opera에서도 모에적성검사(2008)가 되는지를 확인을 해보았습니다.
IE전용입니다.

Opera에서는 모에적성검사를 할수가 없다.

Opera에서도 모에적성검사(2008)를 할수가 없다는 것입니다.

여러 브라우저로 TEST를 해보니 모에적성검사(2008)는 M$사의 Internet Explorer만 할수 있다는 것입니다.
여기서 이런 생각을 해볼수있습니다. 어떤 사람이 모에적성검사(2008)를 할려고 합시다. 그런데 MAC유저나 Linux유저입니다. MAC에서는 웹브라우저를 사파리나 Firefox를 써야할 겁니다. Linux유저라면 삽질해서 Wine를 깔고 Internet Explorer를 깔지 않는한 기본적으로 Firefox, Opera, 퀑커러 등등의 Linux기반의 웹브라우저를 쓸 것입니다.
이런 Linux유저나 MAC유저에게 모에적성검사(2008)는 절대 접근이 불가능 할 것입니다. M$사의 Internet Explorer가 없거든요. 그래서 이런 Linux유저나 MAC유저들은 모에적성검사(2008)를 포기할것입니다.
그런데 웹(Web)이라는 곳은 열려진 곳입니다. Windows를 쓰건, Linux쓰건, MAC을 쓰던 그건 자유이죠. 웹브라우저로 열러진 웹을 아무 플랫폼에서 보는 것은 문제가 없습니다.
언제 어디서든 컴퓨터로 웹을 접근하는 것만이 아닙니다. 휴대폰, PDA등등 여러가지 기기로도 웹이 접근 가능합니다.
그런데 모에적성검사(2008)같이 한 특정 OS(MicroSoft사의 Windows)에서 특정 웹브라우저(MicroSoft사의 Internet Explorer)로만 접근가능하게 하면 특정 OS와 특정 웹브라우저만 쓰는사람에게만 접근할수밖에 없습니다. 웹은 열려진 곳인에 특정 브라우저만 쓸수있도록하면 엄청난 폐해이죠.
다음부터는 모에적성검사(2008)이 특정 웹브라우저에서만 쓸수있는 짓을 안했으면 좋겠습니다.

저는 차니님이 2007년 12월 15일 한국모질라커뮤니티연말모임에서 하셨던 "Firefox에서 웹사이트 문제가 있으면 모질라 재단에 알려주세요. Firefox에 신고기능이 있습니다"라는 것을 갑자기 생각이 나서 신고를 했습니다.
아래는 Firefox에서 웹사이트 문제를 어떻게 보고하는지 보여주는 것입니다.
웹 사이트 문제 보고

Firefox에서 접근이 불가능한 것을 확인하고 웹사이트 문제 보고를 모질라재단측에 알렸습니다.

도움말(H)를 클릭한 다음 웹 사이트 문제 보고(R)를 클릭합니다.
클릭을 하면 아래 화면을 볼 수 있습니다.
웹 사이트 문제 보고 내용

모에적성검사가 IE전용으로만 접근하게 하여 Firefox유저에게는 원하던 모에테스트를 할수가 없어서 모질라재단에 신고를 하였습니다.

문제설명 작성은 알아서 하시면 되고, 위와같이 작성한 다음 보고서를 제출을 하면 신고가 끝납니다.

대한민국 인터넷 사이트들이 요즘은 나아졌다만 특정 웹브라우저인 Internet Explorer에서만 최적화가 되어서인지 Firefox에서는 웹서핑을 하기가 심히 힘듭니다. 웹표준을 위해서 아직도 많은 노력이 있어야 할 듯 합니다.
어떤 브라우저건간에 접근이 가능했으면 합니다.

ps. 오덕질도 IE로만 해야 되는 시대이군요 ㅠㅠ
Buy me a coffeeBuy me a coffee
위의 링크의 동영상을 보게 된 것은 우연히도 올블로그에서 올려진 글에서입니다.
NHK에서 다큐멘터리로 제작되었는데,  YouTube에서 올린 날짜를 보니 February 09, 2007즉 2007년 2월 9일이전에 제작된 다큐멘터리인것 같다.
정식 이름은 グーグル革命の衝撃(구글혁명의 충격)이며  일본어라서 알아듣질 못하겠다.
일본어 잘하시는 분, 번역 부탁드립니다. 무슨 내용인지는 화면보고 대충 알아듣는 걸로 보니까 답답하네요.
일본어라 못알아들으니까, 아래 내용이 뭐라고 하는지 제대로 알고 싶은 욕구가 팍팍 올라옵니다.
아래는 NHK에서 보도한 구글 혁명의 충격 1~6부를 Youtube에서 가져온 것입니다.
구글 혁명의 충격(グーグル革命の衝撃) 1/6

구글 혁명의 충격(グーグル革命の衝撃) 2/6

구글 혁명의 충격(グーグル革命の衝撃) 3/6

구글 혁명의 충격(グーグル革命の衝撃) 4/6

구글 혁명의 충격(グーグル革命の衝撃) 5/6

구글 혁명의 충격(グーグル革命の衝撃) 6/6

'컴퓨터 > Web' 카테고리의 다른 글

다음 첫화면의 변화  (0) 2008.02.04
Internet Explorer에서만 하라는 TEST  (4) 2008.02.02
나만의 도메인으로 gmail를 쓰게 되었음.  (0) 2008.02.01
IE7로 업그레이드하다.  (0) 2008.01.26
HTTP/1.1 Protocol이란?  (0) 2007.09.24
Buy me a coffeeBuy me a coffee

이번에 studioego.info란 도메인을 산 기념으로 Google Mail을 이용해서 studioego.info도메인으로 메일계정을 만들수 있게 되었습니다.

산 도메인으로 gmail접속하는 모습

이번에 산 studioego.info 도메인으로 메일계정을 만들어서 gmail접속하는 모습

제가 갖고 있는 도메인 주소인 studioego.info로 구글의 Gmail 서비스를 이용할 수 있는, "Gmail for your domain" 에 등록 성공했습니다.

DNSEver 를 이용하여 쉽게 메일 셋팅을 할수가 있었습니다. 블로그과 메일을 쓰게한 DNSever에 고마움을 느낍니다.
"Gmail for your domain"에서 가입 다했으면 아래와 같이 MX레코드를 설정하라고 나올것입니다.
아래와 같이 설정하면 쉽게 메일이 연결됩니다.
DNSever에서 설정한 MX레코드

DNSever에서 설정한 MX레코드

메일을 연결하면 구글에서 아래 주소로 접속하도록 해줍니다.
mail.google.com/a/(자기가 쓰는 도메인)
이건 위의 URI를 외우지 못하면 접근이 힘들겠죠?
접근이 편하도록 웹포워딩으로 Gmail접근이 쉽게 만들수 있게 합니다.
DNSever에서 웹포워딩으로 Gmail접근을 쉽게 할수 있습니다.

DNSever에서 웹포워딩으로 Gmail접근을 쉽게 할수 있습니다.



MX 레코드 수정만으로 간단히 메일 계정 서비스를 변경할 수 있습니다. 계정당 약 6GB의 용량, 도메인당 25개의 메일 계정을 제공하며, 사용자별로 닉네임에서 추가의 이메일 주소를 부여할 수 있으며, 메일링 리스트 또한 제공합니다. 관리자 정보, 로그인 화면의 박스, 로고도메인 세팅에서 설정할 수 있으며, Gmail 에 연동된 Google Talk 사용 여부, 등록되지 않은 이메일 주소로 메일이 왔을 경우 수신 여부, 시간대 또한 여기서 설정 가능합니다. Advanced tools 에서는 미리 만들어둔 CSV 파일을 토대로 계정을 일괄적으로 생성하는 기능을 제공합니다. 이상이 대략적인 관리자 화면의 내용이었습니다. Gmail 의 기능은 기본적으로 동일하며 POP3 등록시에는 계정명을 이메일 주소로 입력하면 됩니다.

이제는 호스팅회사에서 메일계정을 만드는 대신에 도메인 구입만으로 메일 계정을 무료로 사용할 수 있군요.

저의 메일은 이제 입니다. ㅎ MSN은 좀 그렇고 Google Talk는 이번에 만든 계정으로  쓸 계획입니다.

'컴퓨터 > Web' 카테고리의 다른 글

Internet Explorer에서만 하라는 TEST  (4) 2008.02.02
NHK보도- 구글 혁명의 충격 Youtube동영상 1~6부  (4) 2008.02.01
IE7로 업그레이드하다.  (0) 2008.01.26
HTTP/1.1 Protocol이란?  (0) 2007.09.24
sungdh86님의 노트  (1) 2007.09.01
Buy me a coffeeBuy me a coffee
제 노트북에 있던 IE6를 IE7로 업그레이드를 시켰습니다.
Firefox로 Google Mail을 쓰던중, M$사에서 자꾸 IE7로 업그레이드를 하라는 업데이트알림을 보는 것이 짜증났습니다. 그런데 Google Mail에서 "Google에 최적화된 Internet Explorer 7, 지금 업그레이드 하십시오." 라는 문구를 보고 'IE7로 업그레이드 하자!'를 결심하게 되었습니다.
아래는 제가 IE7을 다운로드 받기 전에 캡쳐한 화면입니다.
IE7설치 권장하는 Google사이트

IE7설치 권장하는 Google사이트


탭브라우징기능과 RSS구독기능 등등 IE6에서 없던 기능이 있으니까 써보고 싶었습니다. 노트북에서 IE6을 쓰다보니까 계속 불편하여서 IE7로 업그레이드 할까 말까를 고민하다 이번에 업그레이드를 했습니다.
그런데 M$사에서 직접 업그레이드 시켜주는 것은 Google검색이 없기 때문에 섭섭했습니다. 전 Google신을 좋아하니까요. (저한텐 M$사의 Live검색은 그닥 불편하게 느껴집니다.) 그래서 Google에 최적화된 Internet Explorer 7 로 업그레이드를 했습니다.
IE7로 업그레이드를 한 결과

Google에 최적화된 Internet Explorer 7로 업그레이드를 한 결과


이제 제 노트북에는 IE7이 깔렸습니다. 이제 IE6과는 안타깝게도 이별입니다.
이제 M$사에서는 IE7로 강제 업그레이드를 시키려고 하기때문에 저도 대세를 따라 IE7로 업그레이드를 했습니다. 오랬동안 쓰던 IE6과 이별했습니다 :)
Buy me a coffeeBuy me a coffee
이번에 컴퓨터공학과 3학년 2학기에 새로 생긴 전공과목인 네트워크 프로그래밍이란 과목을 수강하다가 Process를 이용한 웹서버 구현하는 과제를 하였습니다. 생각보단 어렵지는 안더군요. 예전에 Thread를 이용한 간단한 웹서버 구현한 것이있어서 Process로 바꾸는 데에는 금방 했습니다. (참고로 열혈강의 TCP/IP 소켓 프로그래밍이란 책을 참고했습니다.)

열혈강의 TCP/IP 소켓 프로그래밍
윤성우 지음 / 이한디지털리(프리렉)
나의 점수 : ★★★★★

처음 본 TCP/IP 소켓프로그래밍 책입니다.
소켓프로그래밍 공부하는데 서점에서 무슨 책으로 공부할지 고민을 하다가 이 책이 초보자들에게 괜찮은 듯하고 거기에 무료강의까지 제공해서 선택했습니다.
이 책을 쓰신 윤성우님은 열혈강의 C, 열혈강의 C++란 책으로 아주 유명하신 분이죠. (전 열혈강의 C, 열혈강의 C++를 보질 않았습니다. 그렇게 유명한 책이고 동기들이 다 본 책인데 ㅡㅡ;)
이 책은 다른 책보다 Windows와 Linux 두군데에서 어떻게 소켓프로그래밍 할지 설명이 잘 되어있습니다. 다른 책들을 보면 Linux에서만 돌아가거나 등등.
OS를 가리지 않고 C언어에서 소켓프로그래밍을 설명한 책이라서 학과 커리큘럼상에서 Linux밖에 배우지 않는 것을 커버하는 것이 좋다고 생각한다.
그러나 단점은 JAVA에서의 소켓프로그래밍은 알아서 공부해야겠죠?
이 책을 일주일만에 소스 다 치면서 400페이지 이상 읽었습니다. 정말 책이 술술 읽힌 것 같네요. 윤성우님의 명서라 할수 있습니다. 그러니까 열혈강의 C와 열혈강의 C++도 잘 쓰여졌을것이라 보네요.



그래서 과제를 하다가 World Wide Web을 오랬동안 쓴 저 조차도, HTTP Protocol에 대해선 전혀 모르고 써왔구나를 느꼈습니다.
(저는 하이텔부터 쓴 사람이라서^^, 국민학교 3학년때 아부지 회사였던 테헤란로 K**란 회사에 가서 인터넷이라는 것을 알게 되었다지요. 그때 인터넷 접속할때에는 DOS에서 win를 쳐서 Windows 3.1를 실행시키고, Winsock이란 프로그램을 띄우고 나서 전화선 모뎀으로 접속해야했던 과거 ^^ - 오덕의 기운이 초등학교때부터 시작 ㅡㅡ;)

현재 우리나라에서는 HTTP Protocol가 어떻게 정의되었는지에 대한 책들을 찾기 힘들더군요, 그래서 학교 도서관에서 HTTP The Definitive Guide란 책을 빌려서 보고 있습니다 :D

책 내용이 2002년 9월달에 나왔지만, 변하는 내용은 아니니까. 책을 보면서 당연하게 느낀 것들도 어떻게 정의되었는지를 알게 되었을때 재미가 있네요. 공부가 재미있다는 것이 이런건가? -_-;;

Process를 이용한 웹서버 과제를 하고 나서 HTTP를 사용해서 서버 정보를 가져와 파일로 저장하는 프로그램도 짜봤습니다만, 자주 쓰는 웹서비스도 이해를 안하고 썼다는 것에 충격.


1. HTTP Protocol이란?
HTTP는 Hyper-Text Transfer Protocol의 약자로 WWW(World Wide Web)에서 사용되는 Protocol이다. HTTP/1.0은 RFC1945, HTTP/1.1은 RFC2068, RFC2616에 명시되어 있습니다.
일반적으로 포트번호는 80을 사용합니다.
실제로 쓰는 웹서버들은 포트번호를 명시해주어야 합니다. 예를 들어 네이버 주소는 원칙적으로 쓰면 http://www.naver.com:80/ 이렇게 포트번호 80를 명시해주면서 접속을 해야한다만 http://www.naver.com/ 이런식으로 표현하는 것도 포트번호가 80을 쓴다는 것을 암묵적으로 알기때문입니다.

자세한 내용은 RFC 문서를 읽으시는 것이 좋을 듯 합니다. 블로그에 포스팅하긴 엄청나게 방대한 양이라서요^^
HTTP/1.0 RFC1945 : rfc1945.txt.pdf
HTTP/1.1 RFC2068 : rfc2068.txt.pdf
HTTP/1.1 RFC2616 : rfc2616.txt.pdf

2. 웹서버를 이해하기
웹서버란? HTTP Protocol을 기반으로 해서 웹 페이지가 들어있는 파일을 클라이언트에게 전송해주는 프로그램이라고 보면 됩니다.
지금, 이 글을 보는 여러분들은 인터넷 브라우저인 FireFox나 Internet Explorer를 사용하고 계실 것입니다. 이 인터넷 브라우저는 클라이언트 소켓프로그램에 해당됩니다. 임의의 사이트에 접속을 하려고 할때, 브라우저도 내부적으로 TCP/IP소켓을 생성하기 때문입니다. 다만 인터넷 브라우저가 지니는 특징은, 서버가 전송해주는 HTML문으로 이루어진 문서를 그대로 보여주지 않고 HTML문법에 맞게 변환해 준다는 것이죠.

3. 간단한 HTTP 실행과정
HTTP는 클라이언트와 서버가 일정하고 예측 가능한 방식으로 정보를 교환하고 상호작용을 할수 있도록 허용하는 Method와 header의 집합을 정의하고 있습니다.
웹에서 볼수 있는 각 XHTML파일은 웹과 관련된 URL(Universal Resource Locator)을 가지고 있습니다. URL은 사용자가 접속하고자 하는 리소스(대부분 웹 페이지)에 브라이저가 접속할 수 있도록 하는 정보를 포함하고 있습니다.
예를 들면, http://www.dal.kr/data/index.html

http://는 웹 브라우저가 HTTP를 이용해 리소스를 요청해야한다는 것을 나타냅니다. 중간부분의 www.dal.kr은 서버 호스트 이름입니다. 호스트 이름은 리소스가 위치에 있는 컴퓨터의 이름인데, 이 컴퓨터가 보통 리소스를 간직하고 유지하기 때문에 호스트(Host)라고 합니다.
요청된 리소스 이름 /data/index.html (HTML문서)는 URL의 나머지 부분입니다. URL에서 이 부분은 리소스 이름(index.html)과 경로 (/data)를 확실해 구분해줍니다. 이 경로(path)는 웹 서버 파일 시스템에 있는 실제 Directory를 나타냅니다. 그렇지만 보안상의 이유로 경로는 대부분 가상 디렉토리(Virtual Directory)를 나타냅니다. 이 경우에, 서버는 해당 경로를 서버의 실제 위치로 해석하기 때문에 자원의 정확한 위치를 숨길수 있습니다. (Apache에서 VirtualHost인가 설정하면 해당 경로를 해석해서 표현합니다^^)

주어진 URL에 대해서 브라우저가 웹 페이지를 표현하기 위한 HTTP 트랜젝현을 어떻게 수행될까요?
아래 올려진 그림에서 잘 보여줍니다.
http://www.dal.kr/data/index.html를 접속한다고 생각합니다.
브라우저는 서버로 HTTP요청을 보냅니다. 그 요청은 이렇게 나타냅니다.
GET/data/index.html HTTP/1.1
host : www.dal.kr

GET이라는 단어는 리소스를 검색하고자 하는 클라이언트를 나타내는 HTTP Method입니다. 나머지 요청에서는 리소스의 이름 및 경로 그리고 프로토콜 이름과 버전 번호(HTTP/1.1)를 제공합니다.
(실험한 사이트들이 HTTP/1.0 을 써서 난감 ㅡㅡ;)

클라이언트가 서버에게 메시지를 주면 서버는 클라이언트에 요청 결과를 보내줍니다.
서버는 우선 한 줄로된 HTTP 버전과 그 뒤에 트랜잭션의 상태를 나타내는 숫자 코드와 구(phase)로 응답합니다.
HTTP/1.1 200 OK는 성공, HTTP/1.1 501 Method Not Implemented 는 요청을 처리하는데 필요한 기능이 구현되지 않았음, HTTP/1.1 404 Not found 는 특정한 위치에서 서버 자원을 찾을 수 없다는 응답을 알려줍니다.

아래는 제가 HTTP정보를 얻는 프로그램을 작성해서 돌려본 결과입니다. 제가 가는 사이트 마다 HTTP/1.1 지원하는 사이트가 없군요 ㅡㅡ; 다만 제가 일하고 싶은 오픈마루스튜디오는 HTTP/1.1를 지원하고 있었습니다 ㅠㅠ
host : www.dal.kr, path : /data/index.html
Get /data/index.html HTTP/1.0

HTTP/1.1 501 Method Not Implemented
Date: Sun, 23 Sep 2007 15:01:44 GMT
Server: Apache
Allow: GET, HEAD, OPTIONS, TRACE
Connection: close
Content-Type: text/html; charset=iso-8859-1

host : www.http-guide.com, path : /index.html
Get /index.html HTTP/1.0

HTTP/1.1 501 Method Not Implemented
Date: Sun, 23 Sep 2007 15:10:04 GMT
Server: Apache/1.3.37 Ben-SSL/1.57 (Unix) PHP/4.4.2 FrontPage/5.0.2.2624 DAV/1.0.3
Allow: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, TRACE
Connection: close
Content-Type: text/html; charset=iso-8859-1

host : www.openmaru.com, path : /index.php
Get /index.php HTTP/1.0

HTTP/1.1 200 OK
Date: Sun, 23 Sep 2007 15:24:31 GMT
Server: Apache/2.2.3 (Unix) PHP/5.1.6 mod_python/3.2.10 Python/2.4.3 DAV/2
X-Powered-By: PHP/5.1.6
Set-Cookie: TSSESSION=2039b9c23de52f6d7b8713126cf3b9b4; path=/; domain=openid.or.kr
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=utf-8
서버는 클라이언트에게 보내는 데이터에 관한 정보를 제공하는 하나 또는 그 이상의 HTTP헤더를 보냅니다. 위에 제가 HTTP정보를 얻는 프로그램을 작성해서 돌려본 결과를 보면 그 예를 볼수 있습니다.
Content-Type: text/html; charset=iso-8859-1
Content-Type: text/html; charset=utf-8
Content-Type헤더의 정보는 MIME(Multipurpose Internet Mail Extension) 타입의 컨텐츠를 확인합니다. 서버에서 보내진 각 데이터 타입은 MIME타입을 가지며 이 MINE타입을 통해 브라우저는 받은 데이터를 어떻게 처리할 것인지를 결정합니다.

헤더 다음의 빈줄은 서버가 HTTP 헤더 전공을 끝냈다는 것을 클라이언트에게 알려주는 것입니다. 그리고 나서 서버는 요청된 리소스의 내용들을 보냅니다. 리소스 전송이 완료되면 연결이 종료됩니다. 클라이언트 측 브라우저는 받은 문서를 해석하고 결과를 화면에 출력또는 전달해줍니다.
아래 그림은 웹 서버랑 브라우저랑 어떻게 연결하는지 보여주는 그림입니다 :D
책내용은 HOW TO C++ PROGRAMMING Forth Edition - Deitel 형제가 쓴 책 내용의 일부분 참조했습니다.

아 생각보다 방대한 양들이군요. HTTP/1.1로 구현한 웹서버는 기능을 많이 뺀 것이라 간단하게 프로그래밍 했다만, 제대로 구현하려면 몇줄을 작성해야할까 걱정이 되군요 ㅡㅡㅋ
이왕에 MFC로 윈도우즈에도 써볼까? -_-;;(그러다 밤샐래!)

자세한 내용은 위에 있는 RFC문서를 참조하시기 바랍니다. 영어 해석이 어렵다면 네이버 지식즐을 참조하시길 :D

'컴퓨터 > Web' 카테고리의 다른 글

나만의 도메인으로 gmail를 쓰게 되었음.  (0) 2008.02.01
IE7로 업그레이드하다.  (0) 2008.01.26
sungdh86님의 노트  (1) 2007.09.01
여태까지 이런 기능이 없었다니  (6) 2007.08.01
PHP 이메일 체크 함수  (2) 2007.01.22
Buy me a coffeeBuy me a coffee

스프링노트의 주요 기능들을 살펴볼까요?


screen.jpg


 



  1. 새 페이지를 만들 수 있습니다.


  2. 데스크탑의 문서(*.doc, *.hwp, *.htm, *.txt)를 가져올 수 있습니다.

  3. 페이지끼리 링크를 엮을 수 있습니다. 글을 쓰면서  Ctrl  +  Space  를 누르면 더욱 편리합니다.

  4. 물음표 버튼이나,  F2  키를 눌러, 편집기에서 사용할 수 있는 모든 단축키들을 살펴보세요.


  5. 페이지를 함께 쓸 친구들을 초대할 수 있습니다.

  6. 자주 찾는 페이지에 책갈피를 끼워보세요!

  7. 글이 많이 쌓이면 하위페이지로 관리해보세요.


 


 


스프링노트는 어떤 서비스인가요?




스프링노트는 무엇인가요?


스프링노트라는 이름이 탄생하게된 배경은?


주요기능이나 특징들은 어떤 것이 있나요?


스프링노트는 누구를 위한, 무엇을 하는데 쓰는 물건인가요?


서비스가 중간에 망하면 어떻게 하나요?



 


 


스프링노트를 어떻게 이용하나요?




마우스 쓰기 귀찮은 유저입니다. 뭐든 키보드로 다 된다는 단축키, 그것이 궁금합니다.


페이지간의 링크는 어떻게 걸 수 있나요?


자동으로 번호가 매겨집니다! 1. 2. 3. 자동 서식 사용하기 / 기본 서식으로 돌아가기


HWP, DOC, TXT, HTML, 브라우저 북마크를 가져올 수 있습니다


자주 찾는 페이지에 책갈피를 끼워보세요- 책갈피 활용법!


빨리 페이지를 찾으려면? 페이지 바로가기


백업 - 페이지 통째로 내려받기


브라우저 북마크를 스프링노트에 담으려면?



함께 쓸 수 있다면서요? - 페이지 권한설정 (함께 쓰기/공유하기)



 


이 글은 스프링노트에서 작성되었습니다.

'컴퓨터 > Web' 카테고리의 다른 글

IE7로 업그레이드하다.  (0) 2008.01.26
HTTP/1.1 Protocol이란?  (0) 2007.09.24
여태까지 이런 기능이 없었다니  (6) 2007.08.01
PHP 이메일 체크 함수  (2) 2007.01.22
인증코드 부분을 다시 만들어야 할까?  (6) 2007.01.16
Buy me a coffeeBuy me a coffee
이번에 학과 홈페이지 서버 변경으로 인해 학과 홈페이지 PHP소스코드를 처음으로 보고 있습니다.
만든 사람이 대충 어떤 분이신줄 알듯 P.C.R.C. 13기~14기 선배님들 코딩 스타일이 물씬 풍기더군요 ㅎㅎ

근데 소스 코드가 시간이 흘러감에 따라 스타게티 코드가 되었다는 것이 쫌 -_-;;

보면에 왜 이런 코드가 나왔는지도 의문시 되고, 그리고 여태까지 이런 기능이 없었다는 것에 또 경악하고 ㅠㅠ
이거원, 내가 봐도 뜯어고칠 소스 코드들이 산더미ㅠㅠ
보면 볼수록 계속 추가하는 내용들이 계속 생기더군요.

방학 내내 영어에 매진할려고 했거늘 이거 학과 홈페이지 첫 대문까지 다 바꿔버릴까? ㅠㅠ
정말 홈페이지에 투자를 많이 해야할것 같군요 ㅠㅠ
이제 소스코드 고치기 & 주석달기 Project를 시작해야 할듯 하군요. 나가토처럼 안경을 정비하고 쉼없이 열혈코딩을 할 예정 :D
(안경 소녀는 모에합니다!!!!!!!)

근데 소스코드를 쳐다보면 쳐다볼수록 왜이리 컴공과 다니는 나 조차 외계어같다는 생각만 무지드는지? ㅠㅠ
소스코드가 내가 봐도 스파게티처럼 꼬였어. @.@, 이런 일 한다고 해서 실력 늘어날 일도 없을듯(소프트웨어 공학쪽 지식만 늘어날까?-_-;)
이 소스는 일부분에 불과합니다. 간단하게 보여주는 소스 조차도 1000줄 넘을듯 -ㅅ-

'컴퓨터 > Web' 카테고리의 다른 글

HTTP/1.1 Protocol이란?  (0) 2007.09.24
sungdh86님의 노트  (1) 2007.09.01
PHP 이메일 체크 함수  (2) 2007.01.22
인증코드 부분을 다시 만들어야 할까?  (6) 2007.01.16
효율적으로 PHP 코드 짜기  (5) 2007.01.15
Buy me a coffeeBuy me a coffee
모 게시판에 글쓰는란에...이메일 을 홈페이지 링크로 걸어도 올라가는 까닭에 -_-;;
스팸들이 이메일 란에 홈페이지 링크로 마구마구 올렸군요.

그래서 함수로 만들어서 체크하게 되었습니다.
PHP의 정규 표현식 함수를 이용해서 이메일 주소의 타당성 검사하는 함수를 만들었습니다.
(근데 인터넷에 뒤지면 다 나오는 함수)
function email_check($email)
{
if(eregi("(^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$)", $email, $regs))
return true;
else
return false;

}


이메일들은 xxxxxx@xxx.com 이런 형식으로 되어 있다. 그렇기 때문에 @ 사이를 두고 패턴을 체크해서 @ 패턴이 아니면 잘못된 주소 입력으로 받아들이고 게시물들을 올라가지 못하게 합니다.
이 함수쓰니까 게시판 쓸때 메일 안적으면 게시물이 절대 안올라가더군요 -_-;; 7년 지나서야 제가 개선을 하다니...

※ 요즘 느낀점은... 프로그램을 어떻게 만드는 것도 중요하지만... 유지보수도 중요하다는 것입니다 !!!
(7년전에 만든 PHP를 지금 뜯어 고친 Ego君의 한탄 ㅠㅠ)

'컴퓨터 > Web' 카테고리의 다른 글

sungdh86님의 노트  (1) 2007.09.01
여태까지 이런 기능이 없었다니  (6) 2007.08.01
인증코드 부분을 다시 만들어야 할까?  (6) 2007.01.16
효율적으로 PHP 코드 짜기  (5) 2007.01.15
스팸처리를 함  (6) 2007.01.10
Buy me a coffeeBuy me a coffee
이번에 제가 운영하는 서버의 모 게시판에 스팸들이 마구마구 들어오는 까닭에 -_-;; 어떻게 막을지 밤을 새면고 고민을 하고 있습니다.
python이라는 선배께서는 인증코드를 만들어서 비회원이 게시판에 글쓸때 인증코드를 넣지 않으면 스팸을 처리를 했더군요.(python이라는 분이 누군지도 모릅니다. 선배라는 것만 알지)
이 숫자를 입력하세요. (<?= date("z") + 3000 ?>)

$quizresult1 = date("z") + 3000;
$quizresult2 = date("z") + 2999;

if ( $quizresult != $quizresult1 && $quizresult != $quizresult2) {
?>
<script language="javascript">
alert("인증코드가 틀립니다.");
history.back();
</script>
<?
exit;
}

여기서 문제점이 있었습니다. 인증코드를 PHP에서 날짜,시간 format 함수인 date()를 써서 그런지 허점이 있더군요.

인증코드가 Text로 노출이 되어서 매크로 돌린 스팸이 그것을 알아차려서 Text를 입력해서 계속 스팸글들을 올릴수가 있습니다.
그리고 인증코드가 rand()함수가 아닌 date()함수를 써서 날짜가 그 날이면 계속 그날에만 지정된 인증코드만 생성됩니다. 같은 날짜에 각각 실행 시간이 달라도 다른 인증코드가 생성되지 않고 똑같은 인증코드가 생성되니 -_-;; 인증코드는 있으나 마나입니다.
(PHP에서 C언어의 rand() 함수가 있는지 레퍼런스를 찾아봐야겠군요)

서버에서 돌아가는 게시판 PHP 소스를 보니까 뜯어고쳐야할 것들이 많군요...ㅠㅠ
방학때라서 뜯어 고칠수 있지.. 학기중이였다면 안고쳤을 듯 합니다.

인증코드 소스부분이 뚫리게 작성되어 있으니 어떻게 고칠까 고민되군요.

GD를 이용해서 인증코드를 이미지로 만들어서 프로그래밍해야 하나? 먼산... 뜯어 고칠것이 한두곳이 아니네 -_-+

'컴퓨터 > Web' 카테고리의 다른 글

여태까지 이런 기능이 없었다니  (6) 2007.08.01
PHP 이메일 체크 함수  (2) 2007.01.22
효율적으로 PHP 코드 짜기  (5) 2007.01.15
스팸처리를 함  (6) 2007.01.10
홈페이지 디자인이 비슷하다~  (3) 2007.01.09
Buy me a coffeeBuy me a coffee
스팸처리에서 저번에 내가 하드코어적으로 코딩을 했었다. -_-;;
PHP 함수가 뭐있는지 그리고 어떻게 쓰인지 모르고 빨리 막 코딩을 해서 나도 어이없게 짜버렸다. 비효율적인 코딩을 ㅠㅠ
컴퓨터공학과 2년 씩이나 공부한 사람이 이렇게 어의없는 코드를 짤줄이야 -_-;;
내가 홍익대학교 컴퓨터공학과 다닌다는 것이 한심해지기 시작하였다.


맨 처음에 짠 PHP 코드는 이러하다.
// 스팸 처리 시작
$ahref = '<a href=';
$spamword00 = 'viagra';
$spamword01 = 'sex';
$spamword02 = 'porn';
$spamword03 = 'lesbian';
$spamword04 = '[url=';
$spamword05 = 'hardcore';
$spamword06 = 'buspar';
$spamword07 = 'alprazolam';
$spamword08 = 'anal';
$spamword09 = 'buy';
$spamword10 = 'fuck';
$spamword11 = 'hentai';
$spamword12 = 'gay';
$spamword13 = 'xxx';
$spamword14 = 'adult';
$spamword15 = 'dildo';
$spamword16 = 'bikini';
$spamword17 = 'winx';
$spamword18 = 'ringtones';
$spanword19 = 'female';
$spamword20 = 'male';
$spamword21 = 'hot';
$spamword22 = 'teen';
$spamword23 = 'nude';
$spamword24 = 'blonde';
$spamword25 = 'vibrator';
$spamword26 = 'amateur';
$spamword27 = 'investment';
$spamword28 = 'Fetish';
$spamword29 = 'chanel';
$spamword30 = 'payday';
$spamword31 = 'Mortgage';
$spamword32 = 'Refinance';
$spamword33 = 'cialis';
$spamword34 = 'tramadol';
$spamword35 = 'xanax';
$spamword36 = 'phentermine';
$spamword37 = 'pharmacy';
if(stristr($title, $ahref) ||
// 제목에 spam이 등록되는 것 방지(금칙어 설정)
stristr($title, $spamword00) || stristr($title, $spamword01) || stristr($title, $spamword02) || stristr($title, $spamword03) || stristr($title, $spamword04) || stristr($title, $spamword05) || stristr($title, $spamword06) || stristr($title, $spamword07) || stristr($title, $spamword08) || stristr($title, $spamword09) || stristr($title, $spamword10) || stristr($title, $spamword11) || stristr($title, $spamword12) || stristr($title, $spamword13) || stristr($title, $spamword14) || stristr($title, $spamword15) || stristr($title, $spamword16) || stristr($title, $spamword17) || stristr($title, $spamword18) || stristr($title, $spamword19) || stristr($title, $spamword20) || stristr($title, $spamword21) || stristr($title, $spamword22) || stristr($title, $spamword23) || stristr($title, $spamword24) || stristr($title, $spamword25) || stristr($title, $spamword26) || stristr($title, $spamword27) || stristr($title, $spamword28) || stristr($title, $spamword29) || stristr($title, $spamword30) || stristr($title, $spamword31) || stristr($title, $spamword32) || stristr($title, $spamword33) || stristr($title, $spamword34) || stristr($title, $spamword35) || stristr($title, $spamword36) || stristr($title, $spamword37)
// 이름에 spam이 등록되는 것 방지(금칙어 설정)
|| stristr($name, $spamword00) || stristr($name, $spamword01) || stristr($name, $spamword02) || stristr($name, $spamword03) || stristr($name, $spamword04) || stristr($name, $spamword05) || stristr($name, $spamword06) || stristr($name, $spamword07) || stristr($name, $spamword08) || stristr($name, $spamword09) || stristr($name, $spamword10) || stristr($name, $spamword11) || stristr($name, $spamword12) || stristr($name, $spamword13) || stristr($name, $spamword14) || stristr($name, $spamword15) || stristr($name, $spamword16) || stristr($name, $spamword17) || stristr($name, $spamword18) || stristr($name, $spamword19) || stristr($name, $spamword20) || stristr($name, $spamword21) || stristr($name, $spamword22) || stristr($name, $spamword23) || stristr($name, $spamword24) || stristr($name, $spamword25) || stristr($name, $spamword26) || stristr($name, $spamword27) || stristr($name, $spamword28) || stristr($name, $spamword29) || stristr($name, $spamword30) || stristr($name, $spamword31) || stristr($name, $spamword32) || stristr($name, $spamword33) || stristr($name, $spamword34) || stristr($name, $spamword35) || stristr($name, $spamword36) || stristr($name, $spamword37)
// 내용에 spam이 등록되는 것 방지(금칙어 설정)
|| stristr($content, $spamword00) || stristr($content, $spamword01) || stristr($content, $spamword02) || stristr($content, $spamword03) || stristr($content, $spamword04) || stristr($content, $spamword05) || stristr($content, $spamword06) || stristr($content, $spamword07) || stristr($content, $spamword08) || stristr($content, $spamword09) || stristr($content, $spamword10) || stristr($content, $spamword11) || stristr($content, $spamword12) || stristr($content, $spamword13) || stristr($content, $spamword14) || stristr($content, $spamword15) || stristr($content, $spamword16) || stristr($content, $spamword17) || stristr($content, $spamword18) || stristr($content, $spamword19) || stristr($content, $spamword20) || stristr($content, $spamword21) || stristr($content, $spamword22) || stristr($content, $spamword23) || stristr($content, $spamword24) || stristr($content, $spamword25) || stristr($content, $spamword26) || stristr($content, $spamword27) || stristr($content, $spanword28) || stristr($content, $spamword29) || stristr($content, $spamword30) || stristr($content, $spamword31) || stristr($content, $spamword32) || stristr($content, $spamword33) || stristr($content, $spamword34) || stristr($content, $spamword35) || stristr($content, $spamword36) || stristr($content, $spamword37) != NULL) {

?>
<script language="javascript">
alert("죄송합니다만 등록이 안됩니다^^ Spam때문에 이렇게 금칙어를 넣었습니다. 불편을 끼쳐 죄송합니다. -서버관리자\n금칙어 : viagra, sex, porn, lesbian, hardcore, buspar, alprazolam, anal, buy, fuck, hentai, gay, gay, dildo, bikini, winx, ringtones, female, male, hot, teen, nude, blonde, vibrator, amateur, investment");
history.back();
</script>
<?
exit;
}
// 스팸처리 끝


이런 코드를 알아볼수 있을까? 알아볼수 있다. 삽질을 하면서다. 그리고 코드가 효율적일까? 절대 효율적이지도 않다.
이런 가독성도 없는 코드나 짜고 있으니 얼마나 내가 한심한지 ㅠㅠ

위 코드를 보면 변수들을 남발하며 선언 했다. 변수들을 이렇게 많이 설정하면 spam 처리할시 금칙어들이 늘어나면 변수명을 어떻게 넣었는지도 구분도 안갈 것이고 금칙어 관리가 힘들어질 것이다. 금칙어들을 그때 그때 반영을 못해버린다.
이렇게 변수들을 남발할 바에는 Array란 것을 쓰면 편하다. (편한 것 찾아야 프로그램을 효율적으로 만들지 -_-;;)

그리고 변수들을 남발하고 if 문장안에 stristr($x,$x)를 선언하였다. 이것은 변수를 array로 저장하고 for문으로 돌리면 줄수는 휠씬 줄어든다. 그리고 금칙어가 늘어날때 그때그때 추가하면 프로그램이 아주 간편해진다. for문을 돌리면 간편해질것을 이렇게 막코딩을 해버리면 프로그램의 효율성도 줄어들것이고 미래의 금칙어가 추가될때의 코드 치기의 불편함과 확장성이 힘듦, 가독성도 떨어진다. 이런 코드를 짠 내 자신이 컴퓨터공학을 한다는것이 한심할 따름이다.

윗 코드를 개선한 코드이다. 내 딴에는 효율적으로 작성했다고 생각한다. (더 효율적으로 코드를 짤수 있을 방법도 있겠지?)
// 스팸처리 시작
$spam_word = array('<a href=','viagra','sex','porn','lesbian','[url=',
'hardcore','buspar','alprazolam','anal','buy','fuck','hentai','gay',
'xxx','adult','dildo','bikini','winx','ringtones',
'female','male','hot','teen','nude','blonde','vibrator','amateur',
'investment','Fetish','chanel','payday','Mortgage','Refinance','
cialis','tramadol','xanax','phentermine', 'pharmacy');

for($i = 0;$i < count($spam_word);$i++)
{
if(stristr($title, $spam_word[$i]) || stristr($name, $spam_word[$i]) || stristr($content, $spam_word[$i]) != NULL)
{
?>
<script language="javascript">
alert("죄송합니다만 등록이 안됩니다^^ Spam때문에 이렇게 금칙어를 넣었습니다. 불편을 끼쳐 죄송합니다.\n - 서버관리자\n금칙어 : viagra, sex, porn, lesbian, hardcore, buspar, alprazolam, anal, buy, fuck, hentai, gay, gay, dildo, bikini, winx, ringtones, female, male, hot, teen, nude, blonde, vibrator, amateur, investment");
history.back();
</script>
<?
exit;
}
}

// 스팸처리 끝

얼마나 간편한가? 윗 코드보다 줄수도 줄이면서 금칙어 추가때 빨리 추가도 되고 코드 읽기도 편해졌다.


경영학과와 경제학과에서의 기초 과목은 경제학원론이라 하면 컴퓨터공학과의 기초 과목은 자료구조이다.
왜 자료구조를 배우나? 아까전과 같은 막코딩을 방지하고 효율적인 프로그래밍을 하기 위해서이다.
자료구조에서 어떻게 하면 프로그램을 효율적으로 짤수 있을지 , 코드를 어떻게 하면 줄이면서, 프로그램 실행시 공간자원과 프로그램 실행시 시간자원을 어떻게 쓰면서 프로그래밍 할지를 공부한다.
PHP에서 조차 첫번째 처럼 막코딩을 하면 컴퓨터공학도도 아닌 전자공학도, 아니지 컴퓨터를 조금 다룬다는 사람도 할수 있는 코드일것이다.
첫번째 코드와 두번째 코드는 동일한 기능을 하는 함수이다. 다만 프로그램 실행시 읽히는 속도가 첫번째는 느리고 두번째는 빠르게 읽히고, 소스 코드가 읽기 어렵나 읽기 쉽냐 차이이다.
그리나 돌아가는것이 같은 코드라도 첫번째는 서버에서 처리하는 것이 부담스러울 것이다. 그리고 금칙어들이 늘어났을때 어떻게 추가해야할지도 힘들것이고 등등 두번째에는 for문을 돌리리는 것도 부담스러울 것이나 금칙어가 늘어났을때 금방 빨리 확장 시켜서 스팸을 방지 할수 있다.


프로그램 코드 짤때에는 어떻게 효율적으로 짜야할지 고민하면서 짜야한다는 것을 알게 되었다.

이번에 스팸방지를 위해 여러가지 코드를 짜면서 느낀 점은 .. 난 아직도 연습이 필요하구나!
자료구조를 배웠다는 컴퓨터공학도가 이런 한심한 삽질을 했다는 것이 걱정이다.
이글루스 가든 - 무적의 공대생이 되자!

'컴퓨터 > Web' 카테고리의 다른 글

PHP 이메일 체크 함수  (2) 2007.01.22
인증코드 부분을 다시 만들어야 할까?  (6) 2007.01.16
스팸처리를 함  (6) 2007.01.10
홈페이지 디자인이 비슷하다~  (3) 2007.01.09
웹 데이터 분석 용어 정의  (2) 2007.01.01
Buy me a coffeeBuy me a coffee

+ Recent posts