워드프레스 Cloudflare 설정후 관리자 페이지 접속 오류

www
워드프레스 속도 및 보안을 위해서 설정을 하였지만, 조금 관리자 페이지에서 문제가 발생하여서, 설정을 변경을 진행 하게 되었습니다. 클라우드플레어에 접속 하여서 Page Rules를 작성하였습니다. 인터넷에 검색을 하면은 Page Rules 메뉴가 정확하지 않은데, 아마 CloudFlare에 변화에 따라서 다른것 같아서 정확한 메뉴 위치는 하시는 순간에 찾아야 정확하게 나올것 같습니다. 일단 저는 워드프레스 성능과, 보안, 캐쉬 모두 비활성화 화여서 관리자 페이지 만큼은 그대로 사용을 위해서 설정을 하였습니다.
Read More

Cloudflare 설정후 홈페이지 접속 문제

www
프록싱을 사용해서 보안이나 속도를 좀 올려 보기 위해서 설정을 하였더니 너무 많은 리다이렉트 기능으로 인해서 접속이 안되는 문제가 있었습니다.해당 문제를 해결하기 위해서 조금 검색을 하다 보니 설정이 있어서 일단은 기록을 합니다. 처음에는 가변형이 되어 있었는데, 자체 SSL 인증서를 사용하기도 하고 하여서 "전체"로 변경을 하고 나서는 접속이 되었습니다.
Read More

Apache Log에 실제 IP 주소가 나오도록하기

Linux
일단 cloudflare 의 글을 참조 하여서 작성되었습니다.참조 주소는 "https://developers.cloudflare.com/support/troubleshooting/restoring-visitor-ips/restoring-original-visitor-ips/" 입니다. 아파치 기능을 활성화 합니다. sudo a2enmod remoteip 비활성화시는 다음과 같은 명령어를 사용 하시면 됩니다. sudo a2dismod remoteip 단일 서버이면 apache 환경설정에 설정하시면 되고, 아닐 경우 각각의 virtualhost에 설정을 하시면 됩니다.아래 내용이 설정할 내용입니다. RemoteIPHeader CF-Connecting-IP 아래는 위 구분을 추가 할 경우에 예시일뿐이니 각자 설정에 맞춰서 설정해 주시기 바랍니다. RemoteIPHeader CF-Connecting-IP ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined 이후에 아파치 환경설정도 변경을 해주시면 됩니다./etc/apache2/apache2.conf 파일에서 LogFormat에서 "%h" 부분을 "%a"로 변경합니다. 아래는 변경하고 난 후의 예시 입니다. LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combinedLogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%a %l %u %t \"%r\" %>s %O" common 그리고 나서 이제 cloudflar의 IP를 허용을 해주어야 하기 때문에 아래의 파일을 수정 합니다.해당 파일이 있을수도 없을수 있으니…
Read More

Keithley TCP 통신

CSharp
장비에 따라서 1회성이 있고, 스트링으로 가져오는 장비가 있었음. 명령어는 전압 전류를 가져오도록 설정 측정 장비여서 설정값이 없음 일부 장비는 설정값이 있음
Read More

오랜만에 글을 작성합니다.

미분류
현재 저는 WIndows, Android 앱을 주로 개발을 하고 있습니다. 물론 웹도 어느정도 개발을 진행을 하고 있습니다. 그 사이에 많은 변화를 겪어 왔고, 블로그에 글을 작성할 내용은 넘쳐 나지만 공개를 하지 못하고 있는 상태입니다. 블로그에 글을 작성한다는것은 제 나름대로 정리를 하기 위한 공간이기도 하지만 제 나름의 표준을 만들기 위해서 인데, 어느것 하나 실제로 개발을 하여서 현장에서 테스트를 진행을 하였고 이상 없이 작동을 하는것을 알지만 정리를 하지 못하여서 지금은 머뭇 거리고 있는 상태입니다. 방문하신 블로그가 조금은 기술적인 문서만을 주로 작성을 하다 보니 이렇게 된것이 아닌가 많은 생각을 하게 되었지만 제 개인의 근황은 적을 수 있지만 제 나름의 기술에서 벗어나서 작성을 하지 않는것이 좋다는 생각을 하게 되었습니다. 이 블로그외에도 주제가 없이 적는 블로그는 존재하기도 하고 별도로 게시판 형식의 사이트도 존재 하지만 해당 블로그는 기술에 관한 문서만을 적는게 맞다는 생각에 글 작성 속도가 상당히…
Read More

웹 Context 메뉴

JavaScript, WWW
// Context Menu List 렌더링 function renderContextMenuList( list ){ // List Element 생성 const ctxMenuList = document.createElement('ul'); // List Item 생성 list.forEach(function( item ){ // Item Element 생성 const ctxMenuItem = document.createElement('li'); const ctxMenuItem_a = document.createElement('a'); const ctxMenuItem_a_text = document.createTextNode(item.label); // 클릭 이벤트 설정 if( item.onClick ){ ctxMenuItem.addEventListener( 'click', item.onClick, false ); } // Item 추가 ctxMenuItem_a.appendChild( ctxMenuItem_a_text ); ctxMenuItem.appendChild( ctxMenuItem_a ); ctxMenuList.appendChild( ctxMenuItem ); }); // List Element 반환 return ctxMenuList; } // Context Menu 생성 function handleCreateContextMenu(event){ // 기본 Context Menu가 나오지 않게 차단 event.preventDefault(); // Context Menu Element 생성 const ctxMenuId = 'dochi_context_menu'; const ctxMenu = document.createElement('div'); // Context Menu Element 옵션 설정 ctxMenu.id = ctxMenuId; ctxMenu.className = 'custom-context-menu'; // 위치 설정 ctxMenu.style.top = event.pageY+'px'; ctxMenu.style.left = event.pageX+'px'; // 메뉴 목록 생성 ctxMenu.appendChild(renderContextMenuList([ { label: "메뉴1", onClick:…
Read More

회사 동일 다수 DB 관리

CSharp, Windows, 프로그램
DB 가 분리되어 있지만 모두 동일한 DB 일 경우에 컬럼을 동일하게 변경하기 위해서 필요함.먼저 대상이 되는 DB를 수집후 테이블 명을 보고 컬럼을 변경을 할수 있습니다. 각 DB에서 테이블 정보를 수집도 가능합니다. 테이블을 추가 할 경우 다수의 DB에서 동일한 작업이 필요할 경우에 추가를 진행하면은 동시에 다수를 작업을 합니다. 테이블을 한곳에 만들어 두거나 혹은 특정 DB에서 필요한 테이블을 복사 혹은 삭제 처리 할수 있습니다. 테이블 내의 컬럼을 추가 하거나 삭제 변경 할수 있습니다. 컬럼의 형식이나 값을 변경할 경우에 나오는 화면입니다. 테이블에 컬럼을 추가 할 경우에 입력 하는 화면 입니다. 데이터를 볼때 정렬이 필요하면은 정렬 기능을 이용해서 정렬을 해서 전체 테이블에 동일 컬럼이나 값이 일치 하지 않는 것을 확인할때 필요합니다. DB 명세서를 만들때 엑셀 파일로 출력이 가능 합니다. 실제 엑셀로 출력 할 때 테스트나 불필요한 테이블을 제외 하고 저장 할 수 있도록 설정을…
Read More

Windows WSL2 자동 시작 설정

Windows
파워쉘 프로그램 코드 If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } $remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '" $found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'; if ( $found ) { $remoteport = $matches[0]; } else { Write-Output "The Script Exited, the ip address of WSL 2 cannot be found"; exit; } $ports = @(22, 80, 443, 3306); Invoke-Expression "netsh interface portproxy reset"; for ( $i = 0; $i -lt $ports.length; $i++ ) { $port = $ports[$i]; Invoke-Expression "netsh interface portproxy add v4tov4 listenport=$port connectport=$port connectaddress=$remoteport"; } Invoke-Expression "netsh interface portproxy show v4tov4"; 파워쉘 파일을 작업 스케줄러에 등록을 합니다. 저는 c:\wsl_config 폴더 아래에 "wsl_port_forwarding.ps1" 로 만들어서 사용을 합니다. 동작 속성을 다음과 같이 설정을 하시면 됩니다. 프로그램 스크립트…
Read More

Groupby 에 대해서 Count 하기

Database
MySQL에서 Count를 하다 보니 SELECT에서 GroupBy 를 하면은 정확한 Count가 나오지 않는 문제가 있어서 찾아 보니 찾은 SQL 입니다. SELECT IFNULL(COUNT(S.컬럼), ' ') AS cnt FROM ( SELECT 컬럼 FROM 테이블 WHERE 컬럼='1' GROUP BY 컬럼) AS S; 별다른 형태가 없이 보통 사용하는 SELECT에서 한번 더 SELECT 를 감싸니 쉽게 해결이 되었습니다. 기록을 하지 않으면은 잊어 버릴것 같아서 작성해 둡니다. 결과 화면은 별도로 없습니다.
Read More

폰터 어썸 유료를 내 서버에서 서비스하자

Linux, WWW
※ 자기 서버가 있어야 가능한 기능 입니다. (트래픽주의) 홈페이지를 만들다 보면 사용자에게 주기가 애매한 소스들이 있습니다. 웹이라는 한계성 때문에 어떻게는 사용자가 내용을 알수가 있지만 최대한 주기 싫은 소스에 대해서 내 서버에서 운영을 할 수 있도록 만들어야 하는데 CrossDomain 위반으로 URL Domain이 다를경우에 문제가 생길때가 있습니다. AddType application/font-woff2 .woff2 일단 폰터어썸이 woff2 확장자를 처리를 해야 합니다. 위에 처럼 MIME 을 추가를 해서 처리가 가능하도록 해줘야지만 WEB 서버가 작동을 하게 됩니다. <FilesMatch "\.(ttf|otf|eot|woff|woff2)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> 위에 처럼 처리를 해줘서 어디서든 불러가서 사용할수 있도록 해주면 일단은 마무리 입니다. 일단 이렇게 사용을 하면은 자기 서버에서 서비스를 할 수 있는것으로 판단은 되지만 잘 작동하지 않을 수도 있지만 저의 입장에서는 현재 그대로 사용을 할 수 있습니다. 이 뿐만 아니라... Javascript를 고객 사이트에 두지 않아도 작동하도록 하는 기능도 작동을 합니다. 원래 이렇게 사용을 하면…
Read More

WebServer에서 사용률 체크하기

CSharp, Database
홈페이지를 만들고 나서 사용률이 저조하면은 상당히 힘이 빠지는 일입니다. 더욱이 정부에서 사용을 하라고 하는데 제작을 할때는 사람들이 요구사항이 상당히 많이 발생하고 좀 더 자기에게 유리하게 만들기 위해서 시간과 노력을 투자 하지만 일단 정부에서 대금이 지급되고 나서는 시들해지기 마련입니다. 하지만 정부도 바보가 아닌 이상 몇년간 사용을 해야 하는데 사람들이 일이 늘어나서 사용하지 않는다는것을 알고 있어서 조금은 강제로 사용 현황을 수집하고 있습니다. 정부 사이트에 현황을 볼 수 있는 사이트가 있지만 매일 들어가서 보기 힘들고 어차피 우리가 만들어준 시스템에서 자료를 가지고 통계를 전송하기에 해당 부분에 착안해서 먼저 우리가 시스템에서 데이터를 통계를 내서 메일을 발송하기로 하였습니다. 상태 표시 화면 이렇게 매일 실행을 해서 상태를 확인 후 우리가 정한 상한선 보다 낮을 경우에 메일을 발송을 해서 경각심을 가지고 해야 합니다. 정부는 몇달간 모았다가 갑자기 감사를 나오기 때문에 미리 미리 해 놓아야 합니다. 메일 발송 내역…
Read More

HTML를 PDF로 만들기

WWW
웹브라우저에서 HTML를 그대로 PDF로 만들기 위해서 찾아 보게 되었습니다. 위 사진은 웹페이지 그대로 화면은 캡쳐한 부분입니다. 해당 화면을 가지고 그대로 PDF로 만들어야 하는 상태 입니다. background로 제작을 하면 되지만 고객이 일단 화면에 먼저 보여지기를 원해서 View를 만들고 그다음에 PDF로 제작을 해야 되는 조건이 붙었습니다. 이렇게 VIew 에서 PDF로 다운 받아서 그대로 확인을 할 수 있도록 만들기 위해서 html2pdf 라이브러리를 사용을 하여서 제작을 하게 되었습니다. 일단든 보여지는 그대로 나오기 때문에 그다지 어렵지는 않았습니다. // Get the element. var element = document.getElementById('PDFROOT'); // Generate the PDF. // orientation는 출력 방항 ( 가로 세로 ), // scale 는 확대 html2pdf().from(element).set({ filename: '<?=$mainResData['reportNo'];?>', html2canvas: { scale: 1 }, jsPDF: {orientation: 'portrait', unit: 'mm', format: 'A4', compressPDF: true} }).save(); Javascript 코드는 위와 같이 처리를 하면은 됩니다. 좀 더 자세한 사항은 html2pdf 옵션을 찾아 보면은 자세하게…
Read More

1년동안 주차와 전년도 주차와 비교하기

PHP
고객이 검색한 년도의 1년동안의 매월 주를 계산을 하고 나서 기간에 따른 Row 갯수를 그래프에 표현을 하고 싶어 하기에 작성하게 된 것입니다. 조금은 난해하게 보이지만은 조건 검사가 많은 편이지 그다지 복잡한 코드는 아닙니다. $end_yearmonthday = date("Y-m-d", strtotime($_GET['end_year'].'-'.$_GET['end_month'].'-'.$_GET['end_day'])); // 이전년도 $agoTime = date('Y-m-d', strtotime(date('Y-01-01', strtotime($end_yearmonthday)).' -1 years')); $agoMaxWeek = date('W', strtotime(date('Y-12-31', strtotime($end_yearmonthday)).' -1 years')); $monthCnt = 0; $historyMonth = 0; for($w = 0; $w <= $agoMaxWeek; $w++) { $thisWeek = date('W', strtotime( $agoTime .' +'.$w.' week') ); $thisYear = date('Y', strtotime( $agoTime .' +'.$w.' week') ); $thisMonth = date('m', strtotime( $agoTime .' +'.$w.' week') ); $thisDay = date('d', strtotime( $agoTime .' +'.$w.' week') ); $dayOfTheWeek = date('w',mktime(0,0,0,$thisMonth,$thisDay,$thisYear)); // 해당주차의 시작 날짜 $today_week_sday1 = mktime(0,0,0,$thisMonth,$thisDay-$dayOfTheWeek,$thisYear); $today_week_sday2 = date("Y-m-d",$today_week_sday1); // 해당주차의 종료 날짜 $today_week_eday1 = mktime(23,59,59,$thisMonth,$thisDay+(6-$dayOfTheWeek),$thisYear); $today_week_eday2 = date("Y-m-d",$today_week_eday1); // if( $historyMonth == $thisMonth)…
Read More