2023. 11. 16. 13:21

http -> https 로 자동 전환하기(.htaccess 이용)

보통 웹서버 설정에서 변경했었는데,

호스팅 서비스에 따라 웹서버에 접근 불가능 한 경우 아래와 같은 .htaccess 를 이용하여 전환할 수 있습니다.

 

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://도메인이름/$1 [R,L]

 

2023. 9. 21. 17:44

MySQL Join걸어서 Update하기

꼭 까먹을만 하면 한번씩 쓰는 일이라...

나중에 찾아쓰기 좋게 여기에 적어놓음

 

UPDATE [TABLE_NAME] a INNER JOIN [TABLE_NAME_1] b ON A.[COL_NAME] = B.[COL_NAME]
SET [TARGET_COL_NAME] = (VALUE)
[WHERE ... ]

 

 

2023. 7. 10. 09:13

PHP에서 PDF 파일의 첫 페이지를 읽어 이미지로 저장하기

php의 imagick 라이브러리가 설치 되어 있어야 함

php의 imagick 라이브러리 설치 방법(windows xampp 기준)

(참고 URL : https://www.php.net/manual/en/imagick.installation.php )

1. https://windows.php.net/downloads/pecl/releases/imagick/ 사이트에서 버전에 맞는 dll 파일을 다운 받음

2. 다운 받은 압축파일의 php_imagick.dll 파일을 xampp\php\ext 폴더 안에 복사해 넣음

3. php.ini 파일에  extension=imagick 라인 추가

4. 1번에서 다운 받은 압축파일에 있는 IM_MOD_XXX.dll 파일과 CORE_RL_XXX.dll 파일을 xampp\apache\bin 경로에 넣어놓음

5. 아파치 재시작

6. phpinfo() 로 봤을 때 아래와 같은 내용이 나와야 함(특히 supported formats 중요!!)
7. 참고로 ghostscript windows버전이 설치가 되어 있고 path에 등록되어 있어야 함(내부적으로 사용하는 듯), path에 등록된 실행파일명을 gs.exe로 하여야 함!!! (이렇게 안하면 아래 함수가 동작하지 않음)

 

PHP로 PDF 파일을 읽어 첫 페이지를 jpeg로 만드는 함수

function saveFirstPDFPageAsImage($file_name)
{
	$img = new imagick();
    // 아래 설정은 readImage 이전에 설정해야 정상동작함
	$img->setResolution(180, 180);
	$img->setCompressionQuality(80);

    // PDF파일 경로가 안맞는 경우가 많으니 이 부분은 주의
    // 파일명 뒤에 [0] 을 붙이면 첫 페이지를 나타냄
	$img->readImage(realpath($file_name) . '[0]');

    // 확장자를 안 떼고 뒤에 .jpg만 붙여 넣음(편의를 위해서 이렇게 함)
    // 파일명이 test.pdf 인경우 결과 파일은 test.pdf.jpg임
	$img->setImageFormat('jpeg');
	$img->writeImage(realpath($file_name) . '.jpg');
	$img->destroy();
}

 

1. setResolution 과 setCompressionQuality는 적절히 조절(저 정도면 A4를 썸네일 이미지로 보여주는데 큰 문제는 없었음)

2. setImageFormat('png') 로 하면 png파일도 생성 가능, png로 생성하면 자동으로 배경이 투명화 처리 됨

3. 메모리 관리를 위해서 destory()를 호출하는 것을 잊으면 안됨

2023. 7. 6. 15:28

php를 이용한 간이 웹서버 만들기

php가 정상적으로 동작하고, path에 들어 있는 상태에서

아래와 같이 레지스트리를 등록하면,

탐색기에서 빈 공간에 마우스 오른쪽 버튼을 눌러 '웹서버만들기'를 누르면 해당 경로를 Root로 하는 웹서버가 만들어짐

 

포트번호는 localhost:8081 부분에서 8081를 수정하면 됨

 

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\웹서버만들기]

[HKEY_CLASSES_ROOT\Directory\Background\shell\웹서버만들기\command]
@="cmd.exe /c php.exe -S localhost:8081"

저 내용이 들어있는 reg파일도 같이 첨부함

웹서버만들기.reg
0.00MB

2023. 5. 18. 09:49

mysql 두 날짜 사이의 날짜 목록 가져오기

select * from 
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between '2012-02-10' and '2012-02-15';

1970-01-01 은 적당한 값으로 바꿔도 무방

2012-02-10 은 목록 출력 시작일

2012-02-15 는 목록 출력 종료일, 오늘 날짜로 하고 싶으면 DATE_FORMAT(CURDATE(),'%Y-%m-%d') 를 사용가능

 

출처 : https://stackoverflow.com/questions/9295616/how-to-get-list-of-dates-between-two-dates-in-mysql-select-query

 

How to get list of dates between two dates in mysql select query

I want list of dates lies between two dates by select query. For example: If i give '2012-02-10' and '2012-02-15' I need the result. date ---------- 2012-02-10 2012-02-11 2012-02-12 2012-0...

stackoverflow.com

 

2023. 3. 10. 11:08

php 문자열 제거 각종 정규식

1. 정규식을 통한 제거

1
$text = preg_replace('/\r\n|\r|\n/','',$text);


2. 문자열 함수사용으로 제거

1
2
3
$text = str_replace(array("\r\n","\r","\n"),'',$text);
또는
$text = strtr($text,array("\r\n"=>'',"\r"=>'',"\n"=>''));

 

html 태그 제거

1
$content = preg_replace("(\<(/?[^\>]+)\>)", "", $content);

 

textarea 제거

1
2
$content = preg_replace("!<textarea(.*?)>!is","[textarea]",$content);
$content = preg_replace("!</textarea(.*?)>!is","[/textarea]",$content);


script 제거

1
$str=preg_replace("!<script(.*?)<\/script>!is","",$str);


iframe 제거

1
$str=preg_replace("!<iframe(.*?)<\/iframe>!is","",$str);


meta 제거

1
$str=preg_replace("!<meta(.*?)>!is","",$str);


style 태그 제거

1
$str=preg_replace("!<style(.*?)<\/style>!is","",$str);


&nbsp;를 공백으로 변환

1
$str=str_replace("&nbsp;"," ",$str);


연속된 공백 1개로

1
$str=preg_replace("/\s{2,}/"," ",$str);


태그안에 style= 속성 제거

1
2
$str=preg_replace("/ zzstyle=([^\"\']+) /"," ",$str); // style=border:0 따옴표가 없을때
$str=preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/","",$str); // style="border:0" 따옴표 있을때

 
태그안의 width=, height= 속성 제거

1
2
$str=preg_replace("/ width=(\"|\')?\d+(\"|\')?/","",$str);
$str=preg_replace("/ height=(\"|\')?\d+(\"|\')?/","",$str);


img 태그 추출 src 추출

1
2
preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$str,$result);
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$str,$result);

 

특수문자 제거

1
$string = preg_replace("/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i", "", $string);


공백제거

1
2
$string = preg_replace('/ /', '', $string);
$string = preg_replace("/\s+/", "", $string);


반복 입력된 단어 제거

1
$string = preg_replace("/s(w+s)1/i", "$1", $string);


반복 입력된 부호 제거

1
$string = preg_replace("/.+/i", ".", $string);


영문자를 제외한 모든 문자 제거

1
$string = preg_replace("/[^A-Za-z]/", "", $string);


영문자와 공백문자(Space)를 제외한 모든 문자를 제거

1
$string = preg_replace("/[^A-Za-z|\x20]/", "", $string);


ASCII 범주 코드 영문+특수문자를 제외한 모든 문자를 제거

1
$string = preg_replace("/[^\x20-\x7e]/", "", $string);


img 태그 추출

1
2
preg_match_all("/<img[^>]*src=[\'\"]?([^>\'\"]+)[\'\"]?[^>]*>/", $img, $matchs);
print_r($matchs);


자주 쓰는 내용들이라 제가 두고두고 참고하려고 가져왔습니다

 

출처 : http://chongmoa.com/php/97908

 

C.m.A API 이야기(Mokulsha!)

1. 정규식을 통한 제거 $text = preg_replace('/||/','',$text); 2. 문자열 함수사용으로 제거 $text = str_replace(array("","",&quo..

chongmoa.com

 

2023. 1. 31. 16:55

python 한글 반영해서 byte단위로 문자열 잘라주는 함수

버그나 문제점이 좀 있긴 하겠지만,

일단 전체적인 틀은 아래와 같음

실 적용에는 좀더 제대로 고민해서 만들 필요는 있을 것임

 

import re

# 문자열을 바이트 단위로 슬라이스 해주는 함수
# iByteStart = 시작위치, iByteEnd = 종료위치, strTarget = 자를 문자열, iHangulSize = 한글을 몇바이트로 계산할지 여부(기본값2)
def getSliceByte(iByteStart, iByteEnd, strTarget, iHangulSize = 2):
    strReturn = ""
    iCurrPos = 0
    lstTarget = list(strTarget)
    for char in lstTarget:
        if(iByteStart <= iCurrPos and iByteEnd > iCurrPos):
            strReturn = strReturn + char
            # print(f"strReturn = {strReturn}")
        elif (iByteEnd < iCurrPos):
            break
        if(len(re.findall(u'[\u3130-\u318F\uAC00-\uD7A3]+',char)) > 0):
            # 한글임
            iCurrPos = iCurrPos + iHangulSize
        else:
            iCurrPos = iCurrPos + 1
        # print(f"iCurrPos = {iCurrPos}")
    return strReturn

 

추가 : chat GPT가 한글을 파악하는 다른 방법을 알려줌... 이게 정규식보다 빠르고 좋을것 같음 아래 함수 응용해서 위의 소스 수정하면 될듯

def is_korean(char):
    # Check if the character is a Korean character
    return ord(char) >= ord('가') and ord(char) <= ord('힣')
2022. 6. 7. 16:30

소스 중간에 /* */ 주석 찾는 정규식

아래처럼 검색하면 대강 찾아짐...;;

\/\*[\x00-\xFFㄱ-ㅎ가-힣\s]*?\*\/

 

2021. 1. 15. 16:08

vscode 에서 emmet으로 html 기본 골격 만들기

vscode에서 emmet을 이용해서 html의 골격을 간단하게 만들 수 있습니다.

 

! 입력 후 Tab(emmet 기본 단축키)를 누르면 아래와 같은 기본 골격이 생성됩니다.

맨날 까먹고 타이핑 하다가 까먹지 않으려고 올립니다

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    

</body>

</html>

 

2021. 1. 5. 09:37

자바스크립트로 &nbsp; 넣을 때 공백으로 표시되지 않는 경우

자바스크립트로 &nbsp; 를 넣었는데 공백으로 표시되지 않는 경우 유니코드 문자열로 넣어야 한다고 합니다.

해당 유니코드 문자열은 '\u00A0' 입니다.

 

왠지 그냥 ' ' 정도로 넣어도 될 듯 하지만, 이상하게 그렇게 할 경우 글자로 취급되지 않아서 레이아웃이 깨지는 경우가 발생하더군요, 그럴때는 위의 문자열을 넣어서 강제로 공백으로 설정해 주면 됩니다.

 

예)

$('#txt').text('\u00A0');