MySQL 에서 ON DUPLICATE KEY UPDATE 사용시 last_insert_id 값 획득

Database
MySQL에서 Insert, Update를 동시에 할 수 있게 해주는 "ON DUPLICATE KEY UPDATE" 쿼리를 사용할 경우 last_insert_id 결과값을 정상적으로 가져오지 못할 경우가 생기기 마련이다. 이 문제를 해결 하기 위해서는 해당 Table의 컬럼중 "AUTO_INCREMENT" 지정된 컬럼을 가져오면 된다. 쿼리의 예를 들면 다음과 같다. INSERT INTO test(name, age) VALUES ('이름', '19') ON DUPLICATE KEY UPDATE name='이름', age='19', expr=last_insert_id(idx); Insert가 실행되고, last_insert_id()를 획득 할 수 있습니다.
Read More

Port번호 사용 영역

Linux, NAS, Windows
0 ~ 1023 : well-known port번호 영역입니다. 이 영역의 port번호는 UNIX/LINUX에서 root 권한으로만 port를 열 수 있습니다. 예약영역이라고 보면 됩니다. 1024 ~ 49151번: 등록된 포트 (registered port) 이 영역은 주로 서버 소켓으로 사용하는 영역입니다. 49152 ~ 65535번 : 동적 포트(dynamic port) 이 영역은 자동으로 할당되는 영역입니다.
Read More

VisualStudio C# Debug창에 출력하기

CSharp
using System.Diagnostics; static class Program { static void Main() { Debug.WriteLine("메세지 내용"); } } 항상 사용을 할 수 있다는것은 알지만 기억이 나지 않아서 간단히 정리합니다. 평소에는 그냥 평하게 Console 창에 이용하기 때문에 사용할 수 있지만, 속성을 변경해야 하는 불편함도 있고 하여서 기록을 합니다. 이곳에 기록을 해 놓아도 기록여부를 기억하지 않으면 나중에 또 기억이 나지 않겠지만 일단 기록 입니다.
Read More
Visual Studio Installer Project 사용하기

Visual Studio Installer Project 사용하기

CSharp
확장 > 확장관리 :: 검색어 "installer"를 입력하면 설치 할 수 있습니다. Installer프로젝트의 자세한 사용법은 검색을 통해서 알아 보시기 바라며, 제가 기록할 내용은 설치할 경로에 대한 정보 입니다. 제가 이 사진을 올린 이유는 속성창중에서 "Manufacturer" 이부분이 중요해서 입니다. 아래의 사진중에서 경로를 지정할수 있습니다. 하지만, 이 프로그램이 설치될 상위 디렉토리에 대해서 설정을 여기서 할 수 있습니다.보이시는 "Manufacturer" 의 값이 아래의 "Application Folder"의 이름이 되는것이라고 저는 보고 있습니다. 경로를 설정하실때 이름을 입력을 해 놓는것이 좋다는 생각입니다. 보통 새롭게 프로젝트를 만들고 "Application Folder" 속성에 "DefaultLocation" 정보가 보이게 됩니다. 이곳의 정보를 수정하면은 변경을 할수 있습니다. // [ProgramFilesFolder] :: 설치할 경로 // [Manufacturer] :: 필수 유지 위에서 설명함. // [ProductName] :: 설치할 폴더명(프로젝트 이름과 달리 할수 있음) [ProgramFilesFolder][Manufacturer]\[ProductName] 위에서 "[ProgramFilesFolder]" 이부분을 변경을 원합니다. 저는 C 드라이버에 사용되기를 원해서 "[WindowsVolume][Manufacturer]\MyPROGRAM"으로 변경해서 모두 설치를 하고 있습니다. 저 처름…
Read More

Dropbox를 통한 VSCode 환경설정 동기화

Tool
github를 사용하면은 쉽게 할  수 있는 방법은 검색만 해도 많지만은, github를 사용하지 않고 환경설정이나 확장 프로그램을 관리하기 위해서 고민을 하다가 기존에 사용하는 Dropbox를 이용해서 하는 방법을 강구했습니다. 기존에 환경설정이나 확장 프로그램을 미리 복사해서 백업을 해 놓고 사용하시기 바랍니다. Windows의 CMD(명령프롬프트) 를 통해서 아래의 명령어를 입력하면은 Dropbox에 복사해 놓은 환경 설정과 확장 프로그램을 사용합니다. mklink /d "%USERPROFILE%\.vscode\extensions" "D:\Dropbox\Backup\.vscode\extensions" mklink "%APPDATA%\Code\User\settings.json" "D:\Dropbox\Backup\.vscode\settings.json" 이 이후에 VSCode를 실행하고 다른곳에서도 동일한 작업을 하고 나서 하면은 동이한 환경 설정을 이용해서 사용할수 있습니다. 이 방법을 통해서 모든 코드, 문서를 관리하는 방법으로 인해서 전 어느 컴퓨터라도 동일한 환경에서 작업을 진행하고 동일한 작업을 진행 할 수 있어서 행복합니다. 물론 Github의 gist를 통해서도 가능하지만 그외에 방법으로 할 수 있다는 점을 글을 적어 봅니다.
Read More
MySQL DB Schema 관리 프로그램

MySQL DB Schema 관리 프로그램

CSharp, 프로그램
MySQL DB Schema 에 대해서 DBTool을 이용하지 않고 보고 보고서를 Excel로 출력하기 위해서 만들었습니다. 분명히 좋은 프로그램도 많고 하지만 특정 사용인에 맞춰서 출력을 조절하고 DB Schema를 관리 하기 위해서 만들게 되었습니다. 컬럼마다 코멘트와 형식으로 모두 설정이 가능하도록 되어 있어서 여러사람이 이 프로그램을 사용하면은 볼수가 있습니다.
Read More

ACTS의 서비스 유지에 대한 검토중….

ACTS/SFCA
ACTS 서비스를 몇년간 유지 하였지만 이제는 그만 놓아줄까 생각을 하고 있습니다. 특별히 유지비가 문제가 되지는 않지만 서버단에서 처리해야 되는 일이 계속 늘어나면서 이제는 그만 놓아 줘야 되지 않나 생각을 합니다. 한편으로는 기존에 제공하는 정보를 축소하여서 계속 틀을 유지를 해야 되는가에 대해서도 고민을 하는 중입니다. 하루 아침에 서비스를 내리지는 않지만 천천히 축소가 되거나 아니면은 기간을 두고 서비스를 멈추는 방향이 될것 같습니다. 제게 특별히 시간이 여유로워지면서 더 좋은 서비스로 업그레이드 작업을 할 수도 있지만 현재로서는 삶에 여유가 생기기 않을것이라고 생각이 됩니다.그래서 서비스를 유지를 하는것에 대해서 현재 진지하게 고민중에 있습니다. 지금도 제 눈에는 문제가 보이지만 현재 손을 될 수 없는 상항에 처하면서 겨우 시간을 내서 급한부분부터 수정을 하는데 이런 사태가 언제까지 갈 수 있을지 모르겠습니다. 자연스러운것은 현재 사용하시는분들이 점점 줄어들면서 자연적으로 도퇴해가는 절차가 가장 자연스럽지 않을까 싶습니다. 제 자신이 현재 고민중이라는 내용을 글을…
Read More
Local MSSQL 데이터를 MySQL Server로 전송

Local MSSQL 데이터를 MySQL Server로 전송

CSharp, 프로그램
요구사항1. 컴퓨터의 MSSQL 특정 DB table을 MySQL 서버로 전송2. 특정컬럼의 구분자를 구분해서 MySQL로 전송3. 컴퓨터의 MSSQL 데이터를 일정기간 지난후 삭제 하도록 처리4. 프로그램의 실행 시간을 일정시간 간격으로 실행하다록 처리 매번 프로그램을 만들어주는게 간단한것도 있지만 막상 작업을 하다 보면은 손이 많이 가야 하는것이 있습니다. 이번 프로그램도 보기에는 간단한데, 내부적으로 돌아가야 하는 부분은 신경써야 할 곳이 한두곳이 아닙니다. Web API를 만들어서 전송하면은 WebServer에서 담당하면 되지만, 이건 IP가 지정되어서 MySQL 서버가 열러 있어서 해당 프로그램에서 자체적으로 MSSQL, MySQL를 동시에 처리해서 귀찮은 부분이 많았습니다. 일단 일정시간마다 읽어서 모든 Data를 전송하지만, 중복이 되지 않도록 제가 가능한 부분에서 최대한 노력을 하였으며, 현재 한달가 가동현황에서 보면은 문제는 없어 보입니다. 아울러 MSSQL의 데이터를 일정 기간만 유지하도록 Query 문을 사입해서 지우기도 하지 사용하시는분이 이제 편하다는 입장이며 저도 기분이 좋고 사용하시는 분도 좋으니 모든게 잘 풀린 케이스 인듯 합니다.
Read More
Local SQLite의 Table의 내용을 WebServer로 전송

Local SQLite의 Table의 내용을 WebServer로 전송

CSharp, 프로그램
필요사항1. 주기적으로 WebServer로 전송해야함.(단 WebServer에 중복은 방지)2. 각 컴퓨터마다 SQLite 경로가 다르기 때문에 설정이 가능하도록함.3. 각 컴퓨터 구분을 할 수 있도록 함.4. 각 컴퓨터에 일정시간적으로 DB를 읽을수 있도록함.5. 각 컴퓨터 SQLite DB가 Lock이 걸리니 복사해서 사용하도록함. 이상이 5가지 사항을 가지고 만든것이며, 약 일주일 정도 지났지만 문제없이 사용을 하고 있다고 합니다. 생각보다 적은 양의 코딩을 해서 만들었지만 알차게 만든듯 합니다.
Read More
JQuery Autocompliet 기능에 AJax 기능 추가하기

JQuery Autocompliet 기능에 AJax 기능 추가하기

JavaScript
jquery 를 제작할 경우에 자동완성처럼 편한기능이 있다. InputBox에 단어를 입력하면은 자동적으로 처리를 해주는 부분인데 DB와 연동하다 보면은 보여지는 Label의 문자와 실제 입력되어야 하는 Value가 다를 경우에 처리하는 기능까지 함게 붙여서 만들게 된 기능입니다. 위 그림 처럼 InputBox에 단어 한자만 입력하면은 Ajax를 이용해서 DB상에서 이미 조회후에 해당 결과값을 가지고 Label에 표시되는 기능을 최대한 표현하고 실제 DB에 입력될 Input은 Value에 지정해서 저장하면은 사용자도 보기 편하고, 관리자 입장에서도 편할것이라고 생각되어서 조합해서 사용하게된 기능입니다. $('#ID').autocomplete({ source: function(request, response){ // searchObjStandard = $('#headObjStandard').val(); // $.ajax({ type: "GET", url: "/worksorder/worksorderFormSearchHead", data: {objStandard: searchObjStandard}, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { if( data.length == 0 ) { response(data); } else { response( $.map( data, function( item ) { return { label: item.objNumber + ' | ' + item.objName + ' | ' + item.objStandard, value:…
Read More
C# SQLite 설치해서 사용하기

C# SQLite 설치해서 사용하기

Database
메뉴 -> 도구 -> Nuget패키지 관리자 > 패키지 관리자 콘솔 "install -Package System.Data.SQLite SQLite 기능을 쓰기 위해서 추가적으로 설치해야 되는 사항입니다. 해당 사항을 설치하고 나면서 빌드할 경우에 x86, x64 폴더가 포함되며, 해당 기능도 같이 있어 다른 컴퓨터에서 사용할 수 있을 것이라고 사료 됩니다.
Read More

Dnsmasq

Linux
#apt install resolvconf이것을 설정하면은 좀 더 세팅에 편해집니다. #vi /etc/resolvconf/resolv.conf.d/tail # IPv4 nameserversnameserver 1.1.1.1nameserver 8.8.8.8nameserver 1.0.0.1nameserver 8.8.4.4 # IPv6 nameserverosnameserver 2606:4700:4700::1111nameserver 2001:4860:4860::8888nameserver 2606:4700:4700::1001nameserver 2001:4860:4860::8844 #sudo service resolvconf restart #apt-get install dnsmasq # cat /etc/hosts # cat /etc/resolv.confnameserver 172.31.0.2search ap-northeast-2.compute.internal # Google IPv4 nameserversnameserver 8.8.8.8nameserver 8.8.4.4 # Google IPv6 nameserversnameserver 2001:4860:4860::8888nameserver 2001:4860:4860::8844
Read More

Web Script 백업

WWW
<script> $(document).ready(function() { var selectCustIdx; // 거래처 선택값 var selectUnitStandard; var RowDisplayVal; var rawUnitQuantity = new Array(); var rawCustIdx = new Array(); var rawObjNumber = new Array(); var rawObjstandard = new Array(); // 계산 함수 호출 checkCal(); // 거래처 선택 $("#rowCustIdx").change(function() { selectCustIdx = $(this).val(); // SelectUnitStandardReload(); }); // 규격 선택 $("#rowUnitStandard").change(function() { selectUnitStandard = $(this).val(); // RowDisplayCheck(); }); // 거래처 선택시 규격 제어하기 function SelectUnitStandardReload() { var custUnitStandardData = new Array(); var option; // if( typeof selectCustIdx == "undefined") { selectCustIdx = "0"; }; if( typeof selectUnitStandard == "undefined") { selectUnitStandard = "0"; }; // <?php foreach( $custUnitStandardList as $row) { echo 'custUnitStandardData.push("'.$row.'"); '.chr(10); }; ?> // 초기화 추가 $("#rowUnitStandard option").remove(); // if( selectCustIdx == "0" && selectUnitStandard == "0") { option = $("<option value=\"0\" selected=\"selected\" style=\"font-weight:bold;color:#C00000\">규격 :: 전체</option>");…
Read More