본문 바로가기

전체 글594

keyboard hooking keyhook class public class KeyHook { [DllImport("user32.dll")] static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc callback, IntPtr hInstance, uint threadId); [DllImport("user32.dll")] static extern bool UnhookWindowsHookEx(IntPtr hInstance); [DllImport("user32.dll")] static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, int wParam, IntPtr lParam); [DllImport("kernel32.. 2023. 9. 19.
[PostgreSQL] c# 연동 / 이미지저장 새프로젝트를 만들고 그림1과 같이 Nuget패키지관리자를 실행하자. 그림2와 같이 npgsql 을 검색해서 패키지를 설치하자. ( 이때 필요한 DLL 들이 전부 추가된다.) 설치를 누르면 그림3과 같이 필요한 내용들이 표시되고 설치되고 참조가 추가되게 된다. UI는 그림4와 같이 만들어줬다. using Npgsql; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namesp.. 2023. 3. 2.
[ Unity ] UI버튼 추가하는법 위와같이 해주면 작업영역에 UI 영역이 겹쳐서 정상적인상태로 보이게 된다. 2022. 12. 30.
[c#] 현재값과 가장 작으면서 근접하는 5의 배수 가져오기 int tempint = 27; double result = 0; if (tempint % 5 != 0) { result = Math.Floor(double.Parse(tempint.ToString()) / 5) * 5; } MessageBox.Show(result.ToString()); 5로나눠서 소수점을 버리고 다시 5를 곱하면된다. 2022. 11. 11.
[MySQL / MariaDB ] 테스트용 데이터 입력 WHILE CREATE DEFINER=`root`@`desktop` PROCEDURE `tproc`() BEGIN declare i int default 1; #i값 생성 while(i 2022. 10. 27.
[Java] The server time zone value 'KST' is unrecognized or represents more than one time zone. MySQL Connector/J 8.0을 사용하면 아래와 같은 에러가 나고 JDBC connection 이 실패하는 경우가 있다. Connector 5.1 에서는 시스템 기본 timezone 을 사용하므로 발생하지 않고 8부터 발생하는데 명시적으로 어떤 time zone 을 사용하는지 지정해 주어서 해결할 수 있다. String url = "jdbc:mysql://localhost/testdb"; 커넥션 문자열을 String url = "jdbc:mysql://localhost/testdb?serverTimezone=Asia/Seoul"; 이나 String url = "jdbc:mysql://localhost/testdb?serverTimezone=UTC"; 로 변경하여 사용하면 해당 에러를 없앨수 있다. 2022. 10. 13.
[Java] Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 위와 같은 에러가 나면서 시작되지 않을때는 Class.forName("com.mysql.jdbc.Driver"); 구문을 Class.forName("Com.mysql.cj.jdbc.Driver"); 로 변경해주면 된다. 2022. 10. 13.
[MySQL/MariaDB] 내DB 설치경로 확인하기 , 버전확인하기 show variables like 'datadir'; 위 쿼리문을 통해 현재 내 DB가 설치된 경로를 확인할 수 있다. select version(); 위쿼리를 통해 현재 버전을 확인할 수 있다. 2022. 10. 12.
[Oracle] ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다 오라클 12c부터는 공통계정앞에 c##을 붙이도록 네이밍 규칙이 바뀌습니다. C## 키워드가 붙는 이유는 12c 버전부터 등장하는 CDB, PDB 개념 때문이라고 합니다. 위와 같이 c## 을 붙여서 생성하면 제대로 생성이 됩니다. 하지만 권한을 주거나 접속할때도 모두 c## 을 붙여야 되서 상당히 귀찬은데 세션을 변경해주면 c## 을 붙여주지 않아도 됩니다. alter session set "_ORACLE_SCRIPT"=true; 위와 같이 세션을 변경하고 다시 만들어보면 c## 을 붙이지 않아도 생성이 가능합니다. 2022. 10. 7.
[PostgreSQL] 데이터베이스, 스키마, 테이블 목록 조회 SELECT datname FROM pg_database -- 전체 데이터베이스 조회 SELECT datname FROM pg_database WHERE datistemplate = false -- 사용자가 생성한 데이터베이스만 조회 select nspname from pg_catalog.pg_namespace -- 현재 db의 전체 스키마 조회 select tablename from pg_tables -- 전체 테이블 조회 2022. 10. 5.
[PostgreSQL] 데이터 타입 숫자 smallint 작은 범위의 정수, 2 bytes(-32768 ~ +32767) integer 정수에 대한 일반적인 선택, 4 bytes(-2147483648 ~ +2147483647) bigint 큰 범위의 정수, 8 bytes(-9223372036854775808 ~ 9223372036854775807) decimal 사용자 지정 정밀도, variable, 정확(제한 없음) numeric 사용자 지정 정밀도, variable, 정확(제한 없음) real 가변 정밀도, 부정확, 4 bytes(6자리 소수점 정밀도) double precision 가변 정밀도, 부정확, 8 bytes(15자리 소수점 정밀도) serial 자동 증가 정수, 4 bytes(1 ~ 2147483647) bigserial .. 2022. 10. 4.
[PostgreSQL] 반복문 쿼리 실행기에서 반복문을 사용하는 방법을 살펴보자.( 디비버 기준) 위 그림처럼 DO $$ 으로 시작하고 $$; 로 끝나는 구문 사이에 BEGIN END 로 묶어서 사용할 수 있다. 1 2 3 4 5 6 7 DO $$ BEGIN for i in 1..10000000 loop insert into testtable (testcol1,testcol2) values ('testdata1','testdata2'); end loop; END; $$; Colored by Color Scripter cs 예제에서는 천만건을 인서트했는데 말도안되게 빠른속도로 데이터가 들어가는것을 확인할 수 있다. 2022. 9. 30.
[PostgreSQL] 설치 (window) PostgreSQL 에 대해 알고 싶다면 다음 경로를 살펴보자. https://d2.naver.com/helloworld/227936 아래 홈페이지에서 설치 파일을 다운받는다. https://www.postgresql.org/ PostgreSQL The world's most advanced open source database. www.postgresql.org 위와같이 다운 받은 후 실행한다. 설치가 완료 된후 접속 테스트를 해보자 검색창에서 sql shell 을 검색하자 위 프로그램을 실행하면 아래와 같은 창이 나오는데 일단 계속 엔터를 입력하자 엔터를 계속 입력하다보면 다음과 같이 비밀번호를 입력하는 상태가 되는데 개인이 지정한 비밀번호를 입력해주자. 비밀번호를 입력하면 다음과 같이 창이 바뀐다... 2022. 9. 30.
[c#] Nlog 사용법 c# 에서 nlog 사용법을 올린다. ( https://nlog-project.org/ ) nuget 에서 nlog 검색해서 설치하면 되는데 설치하기 귀찬은사람은 첨부 파일을 받아서 참조만 추가해주면된다. 현재 최신버전인 5.0.4 버전이다. 참조된후 아래 코드로 테스트 해보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 8.. 2022. 9. 23.
윈도우 실행파일 구조(PE파일) 출처 - https://rninche01.tistory.com/m/84 1. 윈도우 실행파일(PE파일) 개요 1.1 PE파일이란? PE(Portable Executable)파일은 윈도우 실행파일이라고 부르며 윈도우OS에서 사용되는 실행파일형식을 의미하며 UNIX의 COFF(Common Object File Format)을 기반으로 만들어졌다. windows 환경에 따라 다르게 부르는데 32bit환경에서는 PE32, 64bit환경에서는 PE+또는 PE32+라고 불린다. Linux나 Unix와 같은 계열의 환경에서는 PE파일과 비슷한 형식으로 ELF(Executable and Linkable Format)파일이 존재한다. PE파일을 통해서 프로그램이 사용하는 API 또는 DLL 등 다양한 정보와 어느 메모리.. 2022. 8. 26.
dll, exe 파일 비트 수 확인 하는 방법 https://www.extrabit.com/exeproperties/download 2022. 8. 22.
[Java] Java 자바 [예외 처리] - 예외 떠넘기기 throws 출처 - https://kephilab.tistory.com/83?category=395678 메소드 내부에서 예외가 발생할 수 있는 코드를 작성 시 try - catch 블록으로 예외를 처리하는 것이 기본이지만, 경우에 따라 메소드를 호출한 곳으로 예외를 떠넘길 수 있다. throws 키워드 : 메소드 선언부 끝에 작성, 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할을 한다. 형태 리턴타입 메소드명(매개변수선언1, . . . ) throws 예외클래스1, 예외클래스2, . . . { . . . } 발생할 수 있는 예외를 종류별로 throws 뒤에 나열하는 것이 일반적이지만, Exception (상위 예외 클래스) 만으로 모든 예외를 간단히 떠넘길 수 있다. 형태 리턴타입 메소드명(매개변수.. 2022. 8. 9.
Windows에서 프로그램별 네트워크 속도 조절하기 출처 - https://junhyeok.tistory.com/716 10년 가까이 Windows로 개인 서버를 운영해오면서 '이런게 있었어?'라고 새로운 개념을 알게 된 순간이 몇 번 있었다. DDNS나 포트포워딩, FTP, VPN, RDP 같은 네트워크의 기초적인 개념을 알게 되었던 순간, 서브소닉, 플렉스, KODI, Bubble UPNP 같은 스트리밍 프로그램을 알게 된 순간, 최근에는 실시간 방송을 볼 수 있게 해주는 TVHeadend나 무제한 용량의 구글 드라이브까지. 그 동안 서버 운영을 하면서 제일 신경쓰였던 부분 중 하나가 네트워크 대역폭이었다. 여러 사람이 동시에 스트리밍 정도만 이용한다면 큰 문제가 없지만 누군가 FTP를 이용한 파일 전송 같은 작업을 하게되면 대역폭을 혼자 다 써버려서.. 2022. 8. 8.
[Java] 서블릿과 JSP의 차이 출처 - https://steady-coding.tistory.com/463 서블릿과 JSP 사실 궁극적인 기능의 차이는 없습니다. 서블릿과 JSP 모두 Java를 이용하여 웹 페이지를 동적으로 생성하는 기능을 하기 때문이죠. 다만 역할의 차이가 있습니다. 이것은 글로 설명하기보다는 예시를 하나 들겠습니다. 회원 가입을 하고, 그 회원을 저장하고 조회하는 아주 작은 프로그램이 있다고 하겠습니다. 회원 가입 자체는 정적인 페이지가 대체하여도 무방하므로 회원 가입이후 생성된 유저의 정보를 보여주는 페이지를 만든다고 가정하겠습니다. 그렇다면, 서블릿으로 가입한 유저의 정보를 보여주는 코드를 아래처럼 작성할 수 있습니다. @WebServlet(name = "memberSaveServlet", urlPatter.. 2022. 7. 24.
[Java] Servlet :: 서블릿 매핑(mapping) @WebServlet("/")과 web.xml 출처 - https://blog.naver.com/PostView.nhn?blogId=smilennv&logNo=220454626217 프로젝트를 실행하게 되면 위 상단 URL 표시에 localhost:8080/프로젝트명/파일명 이렇게 나오는 것을 간단하게 localhost:8080/파일명 으로 나오게 할 수 있다.. 방법은 한줄만 작성하면 되는 어노테이션(annotation)으로 달거나 아니면 web.xml 에 직접 작성 해주거나 두가지가 있다. 매핑(mapping)을 하는 이유는 보안에 노출되어 있어서 그렇다. 기존 경로가 http://localhost:8080/프로젝트명/servlet/패키지명.클래스명 이라고 자세히 나와있는 부분을 URL 매핑을 통해 http://localhost:8080/프로젝트.. 2022. 7. 24.
[Java] 서블릿 맵핑url 대소문자 문제 자바공부하던중 서블릿 맵핑한 url 에 접속할때 대소문자 문제가 발생했다. 그림1과 같이 Second 라고 S 를 대문자로 맵핑하고 실제 접속을 소문자 s 로 http://localhost:8090/pro07/second 와 같이 접속하니 404 에러가 발생했다. 당연히 http://localhost:8090/pro07/Second 로 접속하면 접속이 됐다. 그래서 가만히 생각해보니 맵핑을 여러개 하면 해결되지 않을까 하는 생각이 들었다. 그래서 그림2와 같이 설정하니 http://localhost:8090/pro07/second 와 http://localhost:8090/pro07/Second 두가지 경로로 모두 접속할수 있었다. 물론 더좋은방법들도 있겠지만 한가지 해결방법으로 기록해둔다. 2022. 7. 23.
[Java] Servlet 오류날때 - HTTP 상태 404 – 찾을 수 없음 서블릿 공부하는중 아래 현상이 발생했다. HTTP 상태 404 – 찾을 수 없음 타입 상태 보고 메시지 요청된 리소스 [/pro07/First]은(는) 가용하지 않습니다. 설명 Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다. Apache Tomcat/10.0.22 여기저기 찾아보니 톰캣모듈패스를 / 로 바꿔주라는 글이 가장 많았지만 그글외에 다른 여러가지 방법을 해도 오류는 계속 발생하고 있었다. 그러던중 selvlet mapping 을 해주니 작동했다. 보안적으로 바로 자바 서블릿에 접근하지못하도록 설정되있는게 아닌가 추측해본다. 단, 이때 모듈패스가 변경되거나 다른설정이 변경된 상태는 그대로 작동을 안해서 설정변경한.. 2022. 7. 23.
[Eclipse] Ctrl+Space는 그만! 글자 입력하기만하면 Content Assist(자동완성기능)가 실행되는 방법! 출처 - https://devlimk1.tistory.com/9 eclipse가 아닌 intellij를 사용해본 사람이라면 글자를 입력하기만해도 메소드나 어노테이션 등의 자동완성기능이 실행되어 일일이 Ctrl+Space를 눌러서 자동완성 기능을 실행시키지 않아도 되는 것이 참 매력적이라 느꼈을 것이다. 그 편함을 잊지 못하기에, 찾던 중 eclipse에서도 똑같은 기능을 구현할 수 있는 방법을 찾게되어 포스팅한다. [설정 방법] ① eclipse -> window -> Preferences ② Java -> editor -> content Assist (위 과정으로 들어가는게 귀찮다면, type filter text 검색란에 content assist를 바로 검색하자) 그리고 큰 사각형 영역의 Auto .. 2022. 7. 23.
[Java] 자바(JDK) 버전 확인 방법 (cmd 명령어) 출처 - https://coding-factory.tistory.com/822 자바(Java) 언어로 하나의 프로젝트를 다수의 인원이 협업을 해야하는 상황이라면 Java jdk 버전을 맞춰주시는 것이 좋습니다. 개발자마다 jdk버전이 다르면 컴파일 과정에서 .class파일을 다르게 생성할 수 있고 이로 인해 같은 소스코드라도 동작이 상이할 수 있기 때문입니다. 자바의 버전을 맞추기 위해서는 먼저 내 PC에 설치되어 있는 자바의 버전을 아는 것이 첫 번째 순서입니다. 이번 포스팅에서는 내 PC에 설치되어있는 자바 버전을 확인하는 방법에 대해 알아보도록 하겠습니다. 윈도우에서 자바 버전 확인 방법 (간단한 cmd 명령어) 1. 윈도우 검색창에서 cmd를 입력 후 명령 프롬프트를 실행합니다. 2. 명령 프롬프.. 2022. 7. 19.
[Java] Java EE에서 Jakarta EE로의 전환 출처 - https://s-core.co.kr/insight/view/java-ee%EC%97%90%EC%84%9C-jakarta-ee%EB%A1%9C%EC%9D%98-%EC%A0%84%ED%99%98/ 자바 기술자라면 Java EE(Java Platform, Enterprise Edition) 또는 J2EE(Java 2 Platform, Enterprise Edition)를 들어봤을 것이다. 자바를 이용한 서버 개발 플랫폼으로 한 때 엔터프라이즈 자바 기술을 선도하며 막강한 영향력을 발휘했지만 기술 변화와 시장 요구에 제때 대응하지 못하면서 현재는 명맥만 유지하는 암울한 상황에 처해있다. 그럼에도 불구하고 자바EE는 가장 성공적인 상업용 표준 플랫폼의 하나이며 대부분의 웹 애플리케이션 서비스를 위한 미.. 2022. 7. 15.
[Tomcat]톰캣 서버 충돌 / 포트 충돌 해결하기 출처 - https://mjn5027.tistory.com/15 톰캣(TomCat) 서버를 비정상적으로 종료한다던지, 다른 포트를 동시에 열었다던지 등의 이유로 가끔 [ 'Starting Tomcat v8.5 Server at localhost' has encountered a problem. Serveral port..... ] 에러가 뜰 때가 있다. 이는 서버가 충돌나면서 뜨는 에러이니 아래의 과정을 따라해주면 해결이 된다. 1. 서버를 켰더니 아래와 같은 에러가 떴네요. 포트(서버)가 충돌났다고 합니다. 2. 이클립스 하단에 있는 Servers 탭의 충돌이 난 해당 톰캣 서버를 더블클릭합니다. 3. Ports 부분을 보면 이 톰캣 서버의 해당 Port Number를 알 수 있다. 이 Port Num.. 2022. 7. 14.
[Tomcat] The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports. 출처 - https://shinye0213.tistory.com/85 위 설정의 HTTP 포트와 서버에 설정된 포트가 동일해야한다. 위 이미지의 좌측상단의 server.xml 을 연다 xml로 열리면 개인적으로 불편해서 위와 같이 text editor 로 열자 위와 같이 server.xml 의 포트번호가 설정파일과 동일해야 한다. 만약 다르다면 동일하게 변경해주고 저장해주면 정상실행된다. 2022. 7. 14.
[Tomcat]Tomcat 서버 설정파일(server.xml) 출처 - https://blog.naver.com/baenamky/50033881799 ■ server.xml에 의한 Tomcat의 기본 설정 $CATALINA_HOME/conf/server.xml은 Tomcat의 메인 설정 파일로 Tomcat 기동시에 참조 된다. $CATALINA_HOME/conf/ 디렉토리에는 디폴트 server.xml 이외에 최소한의 설정만으로 구성된 server-minimal.xml이 준비되어 있다. 새로 서버를 설정하고자 할 경우에는 server-minimal,xml의 이름을 변경하여 사용하면 편리하다. ■ server.xml의 구조 Tomcat은 몇개의 구성요소로 이루어져 있으며, server.xml에서는 XML의 요소를 통해 구성요소를 정의하고 있다. server.xml의 .. 2022. 7. 13.
[Tomcat]톰캣 실행시 로그 한글깨짐현상 톰캣을 구동하다보면 심심치않게 마주하는 현상. Windows Console의 기본 인코딩과 Tomcat이 출력하는 인코딩이 서로 달라서 생긴다 이러한 현상이 일어나는 이유는 아래와 같은데, Windows Console: Windows OS 설정 언어의 기본 인코딩 (한국어는 EUC-KR) Tomcat Console: 설정파일의 인코딩 (기본 UTF-8) Tomcat Console의 인코딩을 변경한다. %TOMCAT_HOME%\conf\logging.properties을 연다. java.util.logging.ConsoleHandler.encoding의 값을 EUC-KR로 변경한다. 별다른 설정이 없었다면, UTF-8이 기본으로 설정되어 있다. 앞으로 실행되는 Tomcat은 해당 인코딩이 적용된다. Tom.. 2022. 7. 13.
[Tomcat] 프로젝트 실행중 오류_사이트에 연결할 수 없음 출처 - https://taeying.tistory.com/20 어제는 잘 쓰고 있는 톰캣을 7.0에서 9.0으로 바꾸고 싶은 월요일이였다. 생각없이 7.0을 삭제하고 9.0을 돌렸더니 잘 연결되던 사이트가 연결이 되지 않았다. 구글링을 해보니 1. 톰캣 프로젝트 확인 2. tomcat >> web modules 확인 3. tomcat >> properties >> General >> switch Location확인 4. server.xml >> port 번호 확인 5. server.xml >> host 확인 6. 프로젝트 application.properties 확인 다양한 방안들이 검색이 된다. 하지만 사이트는 연결이 계속해서 연결이 안되었고... 사수님께 도움을 요청했다... 해결방안은 간단했다. .. 2022. 7. 13.