[PHP] 텍스트를 이미지로 변환하는 간단소스(한글지원)

PHP
[PHP] 텍스트를 이미지로 변환하는 간단소스(한글지원) 텍스트로 존재하는 문자를 이미지로 변환하는것인데, 간단한것으로 하기에는 좋지만은 복잡해지고 하면은 여러가지로 더 붙어야 할 것입니다.하지만 e-mail등을 그래픽으로 해서 인식을 저하 시키곳에 사용하는것은 괜찮을듯 합니다. <?php function textToImage($text, $fname, $fsize) { $text = iconv("EUC-KR", "UTF-8", $text); // 한글지원 $padding = 10; // 이미지여백 $ttf ="폰트가 있는 서버경로"; $size = imagettfbbox($fsize, 0, $ttf, $text); $xsize = abs($size[0]) + abs($size[2])+($padding*2); $ysize = abs($size[5]) + abs($size[1])+($padding*2); $image = imagecreate($xsize, $ysize); $bcolor = imagecolorallocate ($image, 255, 255, 255); $fcolor = imagecolorallocate ($image, 255, 0, 0); imagefilledrectangle($image, 0, 0, $xsize, $ysize, $bcolor); imagettftext($image, $fsize, 0, $padding, $fsize+$padding, $fcolor, $ttf, $text); imagejpeg($image,$fname, 85); imagepng($image); imagedestroy($image); } textToImage("한글 English 특수문자 ♥","title1.jpg","25"); echo "<img src='title1.jpg'>";
Read More

[PHP] 외부서버의 이미지를 받아서 임시로 보여주고 삭제하기

PHP
[PHP] 외부서버의 이미지를 받아서 임시로 보여주고 삭제하기 실서비스가 이뤄지는 서버가 있지만  서비스 사이트에서 회원중 한분이 자신도 도메인을 가지고 같이 컨텐트를 공유하자는 목적에서 만들어지게 되었다. 물론 실서버의 자료를 다른 방식으로 모두 중간서버에 전송을 해 주면 되지만 웹호스팅을 이용할 경우에 그 많은 자료를 넣을수 없을 경우가 생기게 된다. 그래서 실서버에서 필요한 자료를 중간서버에 요청하여서 다운로드 해 놓았다가 사용자에게 보여주는 방식이다. 실서버는 모든 중간서버를 알고 있기때문에 적절하게 중간서버에게 크론으로 명령을 날려서 지우도록 종용할수도 있고, 회원정보도 xml등을 이용하여서 체크 할 수 있다. 중간서버 프로그램은 절대 중간서버에 저장하는 방식을 지원하지 않는다. 실제 서버에게 모든것을 요청하고 임시로 캐쉬 형식으로 저장해 두기때문에 큰 저장 용량과 실서버의 패치에 따라서 모든 중간서버들이 일일이 대응할 중요성은 없다. 사용언어 : PHP필수 품 : Snoopy.class.php  ( 인터넷에서 검색해서 다운 받도록)목적 :   Server -> Server -> User 로 가는 방식의 서비스 방식을 위해…
Read More

[MySQL] my.conf 중 Bin log 와 slow-query 설정

Database
[MySQL] my.conf 중 Bin log 와 slow-query 설정 mysql bin log란 ? => mysql 쿼리를 수행 하면서 쌓는 로그, 추후 트렉젝션하여 시점 복구 등을 수행하는 등의 역할 # 바이너리 로그 관련 [mysqld] log-bin=/home/mysql_log/bin_log/bin # 빈로그 저장 설정 및 저장할 디렉토리 지정 binlog_cache_size = 2M # binlog cache 사이즈 max_binlog_size = 50M # bin로그 최대 파일 사이즈 expire_logs_days = 10 # 보관기간 # 5초 이상 슬로우쿼리 로그 남기기 [mysqld] log-slow-queries = /var/log/mysql/mysql-slow.log long_query_time = 5 # 시간 초단위
Read More

[C#] 내장 IE 랜더링 버전 변경하기

프로그램
[C#] 내장 IE 랜더링 버전 변경하기 #32bit [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] # 64bit [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION] 위에 해당 하는 레지스트리 위체어서 DWORD값을 추가 하면 됩니다. 예제 그림이 없어도 보시면은 아마 쉽게 하실수 있을 것입니다. 바로가기 : https://msdn.microsoft.com/ko-kr/library/ee330730(v=vs.85).aspx#browser_emulation Value Description 11001 (0x2AF9 Internet Explorer 11. Webpages are displayed in IE11 edge mode, regardless of the declared !DOCTYPE directive. Failing todeclare a !DOCTYPE directive causes the page to load in Quirks. 11000 (0x2AF8) IE11. Webpages containing standards-based !DOCTYPE directives are displayed in IE11 edge mode. Default value for IE11. 10001 (0x2711) Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive. 10000 (0x02710) Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode. Default value for Internet Explorer 10. 9999 (0x270F) Windows Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the declared !DOCTYPE directive. Failing…
Read More

[C#] webBrowser 에 HTML 또는 URL로 바로 가기

CSharp
[C#] webBrowser 에 HTML 또는 URL로 바로 가기 로컬 파일을 읽어 들여서 웹브라우저에 바로 표시 할 수 있습니다.알면 편하고 빠르게 할 수 있지만 모르면은 헤매일수 있기에 간단히 기록만 해 둡니다. # 소스파일로 표시하기webBrowser1.DocumentText = HTMLSource; #URL 로 가기webBrowser1.Navigate(URL);
Read More

[MySQL] 자동으로 날짜,시간 입력

Database
[MySQL] 자동으로 날짜,시간 자동으로 일단 기록입니다.제가 해보지 않아서 무엇이라고 말씀을 드리기 힘듭니다.단순하게 봐서 이렇게 된다고 싶어서 약간의 정리이기 때문에 많은 부분을 저에게 바라지 말아 주시기 바랍니다. ## 생성시 CREATE TABLE 테이블명 ( 컬럼명 TIMESTAMP DEFAULT NOW() ); CREATE TABLE 테이블명 ( 컬럼명 TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ); ## 변경시 #insert ALTER TABLE 테이블명 CHANGE `컬럼명` `컬럼명` TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL; ALTER TABLE 테이블명 CHANGE `컬럼명` `컬럼명` TIMESTAMP DEFAULT NOW(); # insert, UPdate ALTER TABLE 테이블명 CHANGE `컬럼명` `컬럼명` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL; ALTER TABLE 테이블명 CHANGE `컬럼명` `컬럼명` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOW(); 꼭 위에 내용을 믿지 마시고, 아래의 출처로 가셔서 확인해보시기 바랍니다.꼭꼭 입니다. * 출처http://nan1004au.tistory.com/entry/Mysql-날짜시간-자동입력 http://www.cikorea.net/tip/view/870/page/1
Read More

[PHP] 메모리 부족

Linux, PHP
[PHP] 메모리 부족 에러메세지 : Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) 메모리가 부족해서 일어나는 일입니다. 아래의 방법으로 해결이 가능 합니다.방법중에 하나인데 이 방법은 필요한 PHP 파일에서만 작동하기에 전체 메모리를 수정하지 않아도 된다는 점에 있습니다. #메모리 제한 늘리기 ini_set('memory_limit','192M'); #메모리 제한 풀기 ini_set('memory_limit','-1'); 또 다른 방법으로는 php.ini 을 직접 수정해서 웹서버를 재실행하는 것입니다.전체에 적용됩니다. ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 메모리사이즈(숫자)M
Read More

[JAVASCRIPT] 카카오링크 링크 공유 오류(init문제 기록)

JavaScript
[JAVASCRIPT] 카카오링크 링크 공유 오류(init문제 기록) 카카오톡 버튼을 클릭하면은 카카오톡이 실행되면서 메세지를 전송할 수 있게 하는 기능을 카카오에서는 제공을 하고 있습니다.설명을 보면은 간단하게 처리를 할 수 있지만 한번 로딩된 페이지에서 카카오톡 전송 버튼을 1회 누르고 다시 누를경우에 문제가 발생하는 경우가 있어서 기록을 남겨 둡니다. function sendKakalink() { Kakao.init('카카오톡API key'); Kakao.Link.sendTalkLink({ label: '메세지', image: { src: '이미지 주소', width: '이미지 넓이', height: '이미지 높이' }, webButton: { text: '제목', url: '웹페이지 URL' // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL이어야 합니다. } }); } 초기에는 위에 처럼 사용하여서 초기 전송에는 성공하였지만 한번 보낸후 다시 버튼을 누르면은 반응을 하지 않아서 수정 하게 되었습니다.카카오의 개발자 포럼에서 어렵게 찾았습니다. 애초에 이런 문제가 일어난것이 제가 코드를 잘못 작성한것도 있지만은 레퍼런스에서는 전혀 설명이 되어 있지 않기도 합니다. 포럼에서 코멘트를 달아 주신분이 kakao.init 한번만 호출 해야 한다고…
Read More
[PHP] 스크래핑 작업(nuskin)

[PHP] 스크래핑 작업(nuskin)

PHP
[PHP] 스크래핑 작업(nuskin) 개발환경 : PHP5 CLI, MySQL요구사항 : 각 분류에 대한 처리, 상세페이지에서 설명과 이미지 저장 해당 사이트를 어느 부분을 캡쳐한 부분 입니다.해당 사이트에서의 정보를 일정 부분 취득하기를 원하기에 해당 사이트의 정보를 가지고 작업을 하였습니다. 목록이 구성되어 있으며 해당 목록페이지에 묶음 상품도 있어서 해당 내역도 처리를 해야 합니다.일반 상품과 묶음상품을 구분해서 분류를 확장해야 하며, 일반 상품이 소속된 분류도 처리를 해야 합니다. 제품 상세 페이지 이며, 해당 페이지에서도 원하는 부분만을 가지와 와서 처리를  해야 하는 작업입니다.원하는 부분이 있고, 원하는 않은 부분이 있기에 잘 구분해서 원문을 이상없이 수집하는 규칙에 맞게 설정을 해서 수집을 해야 합니다. 위 사진은 수집한 부분에서 일정부분을 화면 캡쳐 한 사진 입니다.위에서 처럼 각 부분을 가지고 해서 처리를 해야 하는 일입니다. 이번에는 작업이 다른것은 이미지 파일 이름을 임의로 변경을 하지 않고, 그대로 유지한채로 가져서 local에 저장을 해서 처리를…
Read More
[PHP] bevmo 스크랩 작업

[PHP] bevmo 스크랩 작업

PHP
[PHP] bevmo 스크랩 작업 PHP로 CLI 모드에서 해당 사이트를 내용을 가지고 오는 작업입니다. 카테고리별로 분리를 하고 다시 해당 카테고리 내에서 제품의 정보와 이미지 개인이 저장 할 수 있도록 저장 하였습니다. 개발환경 : PHP + MySQL 해당 정보를 가져오는 사이트의 일부 캡쳐 화면 입니다. 와인을 전문적으로 판매 하는 사이트입니다. 해당 사이트의 다른 정보 보다는 와인과 그 상세 설명등을 DB화해서 개인이 원하는대로 정보를 가공하는 일이였습니다. 웹을 이용하지 않고 단순하게 Windows에서 PHP를 가동하여서 CLI 모드로 실행되면서 사이트를 접속해서 정보를 가져오는 일입니다. 아래는 전체는 아니며 해당 사이트를 가지와 와서 가공한 DB의 정보를 캡쳐한 화면 입니다. 단순하게 텍스만 가져오지 않고 해당 사이트가 제공하는 이미지 파일을 local에 저장하여서 활용도 할수 있습니다. 각 분류에 맞게 디렉토리를 설정하고 이미지를 이름을 저장하고 관리 할 수 있습니다.
Read More
[C#] herbalife 스크래핑

[C#] herbalife 스크래핑

CSharp
[C#] herbalife 스크래핑 로그인 처리가 힘들어서 C#으로 제작하게 되었습니다. 제작 : C# .NetFrameWork 4.5 사용 : Windows10(x86), Windows7(x86) 사용 라이브러리 : HtmlAgilityPack(https://htmlagilitypack.codeplex.com/) 1. 로그인 처리를 하고 원하는 페이지로 이동을 합니다. 이곳에서 현재 URL값과 요청한 URL 정보가 동일할 경우에만 작동을 하도록 하였습니다. 2. 카테고리를 가져와서 링크주소를 획득하고 List로 가지고 있습니다. 이때 카테고리 링크만 가지고 다시 한번더 페이지를 접속해서 각 상품의 URL 주소를 획득 합니다. 3. 각 페이지에 접속해서 원하는 정보를 추출하여서 가공후 DB에 저장을 합니다. 각 페이지 접속을 하기 때문에 숫자가 많을수로 대기 시작이 길어 집니다. 이 단계에서는 필요한 이미지 파일로 링크를 추출 하여서 저장을 합니다. 개인정보가 나오는 부분은 모두 캡쳐 하지 않았습니다. 해당 페이지의 제품을 검색하고 각 제품코드 및 설명 이미지를 가져와서 개인 DB화 시키는 작업을 한것에 대해서 간단히 캡쳐 해 놓은 것입니다.
Read More

[MySQL] 다수의 필드에 카운터 구하기

Database
정말 가끔 사용을 하다 보니깐 계속 까먹게 되어서 기록을 남기게 됩니다.동일 필드지만은 구분이 달라서 개별로 카운터를 구해야 하는 경우가 있어서 사용하는데, 정말 아주 가끔 사용을 합니다. SELECT COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT( if(필드명 LIKE '%검색어%', 필드명, null) ) as 결과시보여질필드명, COUNT(필드명) as 결과시보여질필드명 FROM 테이블명
Read More

[PHP] RSS item 항목 숫자 제한하기

PHP
필요하다기 보다는 놀면서 하나 만들어 본것입니다.가끔 가다가 들리는 뽐뿌에서 NAS 포럼에서 본 글인데 아직 답변이 없어서 한번 만들어 보았습니다. 뽐뿌 원문 링크 주소는 " http://www.ppomppu.co.kr/zboard/view.php?id=nas&page=1&divpage=4&no=18328 " 입니다.블로그 주소를 남겨 놓지 않았기 때문에 뽐뿌에도 기록을 남기고 제 블로그에도 기록을 남깁니다. <?php require_once('./Snoopy.class.php'); if($_GET["k"]) { $k=$_GET["k"]; } else { $k="720p-with"; } if($_GET["b"]) { $b=$_GET["b"]; } else { $b =""; } // 테스트용 $k = urlencode("with+720p+무한"); $b = "torrent_variety"; $snoopy = new snoopy; $snoopy->fetch("http://torrentdn.net/bbs/rss.php?k=".$k."&b=".$b.""); $txt = $snoopy->results; preg_match('/(.*?)<item>/i', $txt, $txtMatch ); // item 시작전의 정보를 취득 // item외에 영역은 모두 삭제 처리 $txt = str_replace($txtMatch[1], "", $txt); // item 태그 열기 전 태그 및 문자 삭제 $txt = str_replace("</channel></rss>", "", $txt); // item 태그 닫고 channel, rss 태그 삭제 // item을 배열로 처리 하기 위해서 배열 문자 삽입 $txt = str_replace("</item>", "</item>\r\n", $txt); $txt…
Read More