메뉴 건너뛰기

박영식 홈페이지

[팁] 영어 스팸 안 받기

suritam92013.11.10 10:17조회 수 602댓글 0

    • 글자 크기
modules/ spamfilter/ spamfilter.model.php 에 80라인 정도에 function isDeniedWord($text)
함수 안에 추가해 봤다.
되어야 할텐데.

영어 스팸 때문에 쩝.. 한글을 섞으면 된다. 그것도 제거하기 위해, % 적용은 좀 더 복잡하겠지만, 뭐, 나중에 찾으면 나오겠지. 일단 오늘을 자자.

$eng_check = preg_match("/[xA1-xFE][xA1-xFE]/", $text);
                if(!$eng_check) {
                    return new Object(-1,iconv("euc-kr","utf-8","영어 댓글 금지"));
                }

http://kais.tistory.com/46 를 참고해 %로 얼마나 각 언어가 포함되어 있는지 계산하는 코드를 짜봤다.

Array
(
    [eng] => 10
    [kor] => 31
    [han] => 12
    [jap] => 8
)
eng: 16%
kor: 51%
han: 20%
jap: 13%
결과는 이렇다. 영어를 완전 차단하는 걸로 안 된다면 각 스팸 유형을 분석해 일정 비율에 따라 처리하도록 해보자.

<?php
$content = "test content☆漢字〓韓國外交部對外稱, 應美方要求,韓國貿易部長金宗塤和美國貿易代表施瓦布本週一下午還舉行了一個「非正式磋商」。end◆ 日語〓慰謝料としてフルハウス(Full House)をあげるというィヨンジェの言葉に,ジウンは寝ても寝る事ができないで悩む。end◆ 한글〓해쉬(Hash)값 필터링 시스템(Filtering system)은 디지털 파일에 고유의 키 값을 매겨서 등록, 관리하는 것으로 저작권 침해 신고가 접수됐을 경우 이 키 값을 기준으로 검색, 침해 여부를 판단할 수 있는 방식이다. end★";
echo '<pre>';// PRE
preg_match_all('!['
.'x{0061}-x{007a}|x{0041}-x{005a}'
.']+!u', $content, $match);
$arr['eng']=count($match[0]);
//  한글
preg_match_all('!['
    .'x{1100}-x{11FF}x{3130}-x{318F}x{AC00}-x{D7AF}'
    .']+!u', $content, $match);
$arr['kor']=count($match[0]);
  
//  한자
preg_match_all('!['
    .'x{2E80}-x{2EFF}'// 한,중,일 부수 보충
    .'x{31C0}-x{31EF}x{3200}-x{32FF}'
    .'x{3400}-x{4DBF}x{4E00}-x{9FBF}x{F900}-x{FAFF}'
    .'x{20000}-x{2A6DF}x{2F800}-x{2FA1F}'// 한,중,일 호환한자
    .']+!u', $content, $match);
$arr['han']=count($match[0]);
  
//  일어
preg_match_all('!['
    .'x{3040}-x{309F}'// 히라가나
    .'x{30A0}-x{30FF}'// 가타카나
    .'x{31F0}-x{31FF}'// 가타카나 음성 확장
    .']+!u', $content, $match);
$arr['jap']=count($match[0]);
print_r($arr);
$sum=array_sum($arr);
foreach ($arr as $key => $value) {
    echo $key.": ".(100*round($value/$sum, 2))."%n";
}
echo '</pre>';
?>
suritam9 (비회원)
    • 글자 크기

댓글 달기

[전시] 부산 IT EXPO

[원문보기]
왜 부산까지 가게 되었는지는 아직도 모르겠다. 처음 결정하게 된 것은 내가 여유가 있었던 한 달 전이어서, 계획상 가게되었다. 상당한 교통비를 지불하고, 간 터라 서울 캐릭터 페어 만큼 볼 것이 있는지를 걱정해야만 했다. 다행히 입구쪽에 사람들이 꽤나 있었고, 안에는 둘러볼 것 들이 있었다. 하지만 역시 가장 재미있었던 것은 E-SPORTS. 피파 온라인 이었다. 승부차기 까지 가는 접전끝에 어떤 팀이 승리했다. 소니와 마소(마이크로 소프트)가 좋은 자리를 위치하고, 윈도우 비스타까지 설명하면서 조기에 손님들에게 선전하려는 의지를 보였다. 그리고 소니사의 무료 사진 인화는 돈 많은 기업의 면모를 보여주었다. 소니사에서느 별도로 차량이 있어서 그 안에서 최신제품이라며 소개를 했는데, 그냥 일반 가전으로 밖에는 생각이 안 되었다. 나머지 기업들도 그러했다. 사실 볼게 없었던 것이다. 예전에 생각했던 기술이 나와 있을 뿐이었다. 그 중에서 그나마 실용적 이었던 것이, 명함 스캔 기기 였는데, 명함을 스캔하면, 주소록 프로그램에 자동 입력되고, 편집이 가능한 상태로 되면, 주소를 클릭하며 지도까지 보여주는 하드웨어/소프트웨어 였다. 그런 실용적인 기술을 개발하는 것이 나의 목표인데, 그다지 영감이 떠오르지 않아, 뭐를 할 지 모르겠다. 부산 BEXCO까지 갔는데, 이득이 적어서 아쉬웠다. * 박영식님에 의해서 게시물 복사되었습니다 (2007-06-09 01:29)"

[web2.0] 오픈아이디(OPENID)

[원문보기]
 여러 사이트 (특히 블로그 형)에 별도 가입 없이 사용자로 인증처리 하는 기술이다. 이를테면, 통합 id라고 볼 수 있다.

 국내 포탈에서는 DAUM이 최초로 도입 예정이라고 한다. 입력 필드에 이름, E-MAIL, 비밀번호 등을 쓰게 되있는데, OPENID를 사용하면, 그것들이 필요없다. 그리고 한번 등록된 사이트는 DB화 되기 때문에 나중에 별다른 인증없이 그 사이트에 그대로 재사용이 가능해진다.

 음 일단 만들었으니 써본다."

[수료] 정보통신벤처창업경진대회 1차 선발자 교육

[원문보기]
2008년 한국음향학회 춘계학술발표대회

[홍보] 제3회 Lisp 세미나 안내

[원문보기]

http://onoffmix.com/event/19718


그동안 스터디한 결과를 짧게 나마 발표하게 됩니다.


관심있으신 분들의 참여 기대합니다.

[github] 도메인 설정 및 SSL 적용

[원문보기]

github page로 구입한 도메인과 id.github.io 와 연결시키는 것은 많이 설명되어 있지만, SSL 옵션을 사용하는 것은 설명이 충분하지 않다.


https://thisiswk.com/posts/%EC%A7%80%ED%82%AC-%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90-%EC%83%88%EB%A1%9C%EC%9A%B4-%EB%8F%84%EB%A9%94%EC%9D%B8%EA%B3%BC-https-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0


위 사이트에는 cloudflare라는 사이트에서 제공하는 dns 도메인 네임 서버를 이용해 SSL 관련 설정을 강화할 수 있는 방법을 소개한다.


해당 사이트에는 추가 옵션이 생략되어 있지만, cloudflare는 무료에 대가 HTTP Strict Transport Security (HSTS) 옵션도 제공하고, Minimum TLS Version 도 tls 1.0 이며, tls 1.3 까지 제공하고 있어 보안 서버 DNS로는 매우 훌륭하다.


가장 더 좋은 것은 1개 URL은 무료라는 것이다.


기존에 사용하는 도메인 발급 업체에서 제공하는 A레코드 MX, CNAME 모두 다 적용 가능하므로, 서버 없이 간단한 홍보용 홈페이지를 운영한다면 github + 도메인 + cloudflare 가 훌륭하고 경제적인 해법이다.


게다가 GoDaddy 에서 도메인을 2000원 정도에 산다고 하면 거의 기적인 셈이다.

[프로그램] svn - 버전관리 프로그램

[원문보기]

버전 관리 시스템의 용어들

저장소 : 리포지토리(Repository)라고도 하며 모든 프로젝트의 프로그램 소스들은 이 저장소 안에 저장이 됩니다. 그리고 소스뿐만이 아니라 소스의 변경 사항도 모두 저장됩니다. 네트워크를 통해서 여러 사람이 접근 할 수 있습니다. 버전 관리 시스템 마다 각각 다른 파일 시스템을 가지고 있으며 Subversion은 Berkeley DB를 사용합니다. 한 프로젝트 마다 하나의 저장소가 필요합니다.

체크아웃 : 저장소에서 소스를 받아오는 것입니다. 체크아웃을 한 소스를 보면 프로그램 소스가 아닌 다른 디렉토리와 파일들이 섞여 있는 것을 볼 수 있습니다. 이 디렉토리와 파일들은 버전 관리를 위한 파일들입니다. 임의로 지우거나 변경하면 저장소와 연결이 되지 않습니다. 체크아웃에도 권한을 줄 수 있습니다. 오픈 소스 프로젝트들에서는 대부분 익명 체크아웃을 허용하고 있습니다.

커밋(Commit) : 체크아웃 한 소스를 수정, 파일 추가, 삭제 등을 한 뒤 저장소에 저장하여 갱신 하는 것입니다. 커밋을 하면 CVS의 경우 수정한 파일의 리비전이 증가하고 Subversion의 경우 전체 리비전이 1 증가하게 됩니다.

업데이트(Update) : 체크아웃을 해서 소스를 가져 왔더라도 다른 사람이 커밋을 하여 소스가 달라졌을 것입니다. 이럴 경우 업데이트를 하여 저장소에 있는 최신 버전의 소스를 가져옵니다. 물론 바뀐 부분만 가져옵니다.

리비전(Revision) : 소스 파일등을 수정하여 커밋하게 되면 일정한 규칙에 의해 숫자가 증가 합니다. 저장소에 저장된 각각의 파일 버전이라 할 수 있습니다. Subversion의 경우 파일별로 리비전이 매겨지지 않고 한번 커밋 한 것으로 전체 리비전이 매겨 집니다. 리비전을 보고 프로젝트 진행 상황을 알 수 있습니다.

임포트(Import) : 아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업입니다.

익스포트(Export) : 체크아웃과는 달리 버전 관리 파일들을 뺀 순수한 소스 파일을 받아올 수 있습니다. 소스를 압축하여 릴리즈 할 때 사용합니다.
"

[도서] 누가 아인슈타인의 연구실을 차지했을까?

[원문보기]
제목을 보면, 잘 알려진 과학자들이 나올 줄 알았는데, 내가 과학에 관심이 없었던 탓인지는 몰라도, 잘 모르는 사람들이 대부분이었다. 한가지 재미있었던 점은, 아인슈타인이 표현한 원자폭탄 실험과 리차드 파인만이 묘사한 원자폭탄 실험이 너무도 대조적 이었다는 것이다. 아래의 책 "파인만 씨...."와 지금 소개하는 책에 공통된 것이 이 부분이고, 두 책다 서로의 이름(아인슈타인과 파인만)이 언급되어 있다. 아인슈타인과 파인만은 둘다 천재이다. 물론 이론 물리학이라는 굉장히 생각하기 힘든 분야의 인물들 이지만, 존경하고 그들의 이론을 이해하고 싶은 욕망에 사로잡히곤 한다. * 박영식님에 의해서 게시물 복사되었습니다 (2007-06-09 01:29)"
이전 1 ... 39 40 41 42 43 44 45 46 47 48... 78다음
첨부 (0)
위로