본문 바로가기
반응형

개발관련46

하루만에 그누보드를 Cafe24에 배포하기 챌린지 오늘은 php를 단시간에 습득하고 실제 운영까지 해볼 수 있도록 셋팅하는 것이 목표입니다. 이를 수행하기 위한 계획과 과정들을 상세히 정리해보고자 합니다. 프로젝트 시작 전 알고가기 php를 사용하는 이유 https://www.elancer.co.kr/blog/view?seq=162 php는 인터프리터 언어로 tomcat 같은 WAS가 굳이 필요하지 않다. cafe24 배포시 /www/폴더 하위에 index.html파일 및 별도의 파일들을 셋팅하면 호스팅 끝 Cafe24에 설치하기 https://sir.kr/so_phpframework/106?sfl=wr_subject%7C%7Cwr_content&stx=cafe24 cafe24는 PHP 7.4, 7.3, 7.0, 5.5 버전을 지원한다. 이 중 가장 최.. 2023. 11. 16.
JAVA) 메모리 누수 OutOfMemory: MetaSpace Cafe24 Jsp Tomcat을 사용하던 중 OutOfMemory오류가 발생하였는데, [톰캣이 설치된 경로]/tomcat/bin/catalina.sh 파일에 아래와 같은 옵션을 추가해 주었더니 해결되었다. JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC" Reference 메타스페이스에 대한 설명 https://obv-cloud.com/41 Java - Metaspace란? Metaspace란? Metaspace는 Java .. 2023. 9. 5.
JAVA) Apache Poi 엑셀다운로드 - 페이지 레이아웃 설정하기 안녕하세요 오놀은 엑셀다운로드시 페이지 레이아웃을 설정하는 방법에 대해 알아보겠습니다. /* * 엑셀파일을 읽어서 workbook생성 * 신규파일을 생성하고싶다면 워크북 생성자에 파일객체를 넣지 않아도 됩니다. */ File file = new File("[엑셀파일의 경로를 입력해주세요.]"); XSSFWorkbook workbook = new XSSFWorkbook(file); Sheet sheet = workbook.createSheet(); //용지 여백설정 sheet.setMargin(PageMargin.TOP, 1.9); sheet.setMargin(PageMargin.BOTTOM, 1.9); sheet.setMargin(PageMargin.LEFT, 1.2); sheet.setMargin(Pa.. 2023. 8. 3.
개인정보 마스킹 처리 금융감독원 개인정보 마스킹 가이드 https://m.blog.naver.com/0718e/221565600919 개인정보 마스킹 홈페이지 가이드, 기준 홈페이지에서 개인정보를 식별하지 못하게 하기 위해서 마스킹 처리를 해야하는데요, 마스킹 처리의 기준과... m.blog.naver.com 2023. 2. 27.
[Spring Security] SSL인증서 설치 후 세션보안 설정하기 (Spring5 servlet 3.1) http에서 https로 변경했다고 해서 모든 보안문제가 해결된 것은 아닙니다. 클라이언트와 서버가 데이터를 주고 받을 때 암호화가 적용되어 내용을 보호할 수 있지만, Session 탈취문제를 완벽하게 보호하지 못합니다. 그래서 조금이나마 보안을 강화하기 위한 설정들을 해보았습니다. 1. HTTP에서 HTTPS로 리다이렉트 처리 ... ... 위 코드는 Spring Security의 Security-context.xml에 설정한 일부 코드입니다. Security를 이용하여 https연결설정을 해볼까요? 서버의 설정파일인 server.xml에서 Connector 설정을 확인하시거나, 어플리케이션에서 정의한 포트번호를 확인하여, http포트와 https포트를 지정해줍니다. requires-channel을 h.. 2023. 2. 13.
Cafe24 JSP tomcat 상품, 도메인 구매 및 외부 SSL인증서 등록 Cafe24는 국내 최대 호스팅 서비스로, 서버대여, 도메인구매, SSL인증서 구매 및 설치 지원을 해주고 있습니다. Cafe24에서 무료 도메인을 지원해주었지만, https는 지원하지 않아서 보안에 취약하다는 단점이 있었습니다. https를 통해서 보안을 강화하고자 했는데요, 그 방법에 대해 공유드립니다. 1. 도메인 구매 Cafe24에서는 도메인 구매서비스를 지원하고 있었습니다. 가비아, 후이즈와 같은 다른 기업들도 있지만 cafe24를 선택한건 다름아닌 가격때문이었습니다. .cafe24에서 2023년내에는 *.shop 도메인에 대해서는 550원으로 할인혜택을 적용하고 있었습니다. 개인적으로 사용할 목적의 도메인이므로 의미는 상관이 없어서 .shop으로 구매 진행했습니다. 도메인 구매시에 이 정보들을.. 2023. 2. 8.
[MariaDB] Window에서 테이블 생성시 대소문자 구분하기 MariaDB version : 10.10.2-MariaDB, for Win64 안녕하세요. 오늘은 테이블명 대소문자 구분하는 법을 포스팅해보겠습니다. 설정하기 MariaDB의 설정파일(기본경로 : C:\Program Files\MariaDB 10.10\data\my.ini)에 들어가셔서 lower_case_table_names설정을 추가해주면 됩니다. lower_case_table_names = 0 : 테이블 생성 및 조회 시 대·소문자 구분한다.(리눅스 기본값) lower_case_table_names = 1 : 입력 값이 대·소문자든 소문자로 인식 소문자 인식 파일 생성 (윈도우 기본값) lower_case_table_names = 2 : 윈도우에서 대·소문자를 구분해서 테이블생성 (맥킨토시 기본값.. 2023. 2. 4.
Cafe24, DBeaver (데이터베이스 접속툴)에서 MariaDB 접속하기 Cafe24 서비스명 : Tomcat JSP호스팅 일반형 (개발 언어별 호스팅, Tomcat jsp) 데이터 베이스를 손쉽게 설정하기 위해서는 데이터베이스 툴을 사용하는 것이 편리합니다. 특히 여러 데이터베이스에 접속할 수 있는 DBeaver를 자주 사용하는데, 이번 개발에서도 동일하게 사용해보려고합니다. Cafe24 > 나의서비스관리 > 호스팅 관리 > 기본관리 > 서비스사용현황 Cafe24 초기화면으로 진입했을 때 초기화면에서 하단으로 내려보시면 MySQL 외부 IP접근 설정을해주어야 합니다. 아무데서나 데이터베이스에 접근할 수 있다면, 해커에게 아주 좋은 먹잇감이 됩니다. 이때문에 특정 아이피만 데이터베이스에 직접 접속할 수 있도록 설정하는것입니다. 사용유무가 사용중이 아니거나, 아이피가 등록되어 .. 2023. 1. 15.
Cafe24 Tomcat JSP 호스팅 상품의 MariaDB 이용 시 주의사항 Cafe24에서 제공된 MariaDB 10.0.x와 제가 사용하는 MariaDB 버전이 다르기도 했고, 여러가지 설정들이 달라서 고군분투 했던 내용을 정리해보았습니다. 상품명 : Tomcat JSP 호스팅 일반형 1. 새로운 사용자 생성 불가 / 권한 수정 불가 데이터 베이스가 설치된 채로 제공되며, 사용할 계정 및 스키마도 지정되어 나옵니다. cafe24 사용자가 계정관련하여 설정할 수 있는 것은 접속 패스워드라고 생각하시면 됩니다. 2. 프로시저/함수 사용 가능 일부 상품에서는 사용이 불가능한데, Tomcat JSP 상품에서는 사용가능합니다. 하지만, 테스트용 디비에서 붙여넣을 때, 주의사항이 필요합니다. /* 톄스트 DB에서 생성시 사용한 쿼리 */ CREATE DEFINER=`[사용자명]`@`[데.. 2023. 1. 14.
SpringBoot 프로젝트 호스팅.. 고군분투기(1) / Cafe24? AWS? 업무용으로 필요한 프로그램이 있어서 만들었지만, 서버를 어디에 둘지 참 많은 고민을 했습니다. 쓰지 않는 컴퓨터에 서버를 구축해놓고 사용하려고 했으나, 일반적인 인터넷은 아이피가 유동적이기 때문에, 고정아이피를 사용해야했습니다. 고정아이피는 얼마인고 하니, 구글에서 최상위에 검색되는 하이아이피는 월 9,000원! 다음에 설명할 Cafe24보다 훨씬 비쌌습니다. 도메인을 사용하거나 https를 사용할 경우에는 추가금액이 또 들텐데... 걱정스럽더라구요.. 다음으로 알아본 곳은 Cafe24입니다.. 처음에 혹했던것은 광아우토반이었습니다. 업무용으로 사용해야 했기에, 넉넉한 트래픽 용량과 무료 서비스가 무척이나 마음에 들어서 결제까지 하려 했으나, PHP만 지원한다는 점! j워드프레스나 그누보드를 사용하는 경.. 2023. 1. 13.
mysql engine, innoDB와 MyISAM차이점 MariaDB또는 MySql을 사용할 때 고려해봐야 할 사항이다. 나는 innoDB에서 primary Key를 두개의 컬럼을 지정하려고 했고, 그 중 하나에 auto Increment를 지정하려고 했다. 하지만, innoDB에서는 auto Increment를 지정한 컬럼만 primary Key로 지정할 수 있다고 한다. 그런데 엔진을 MyISAM으로 바꾸기만 해도 이것이 가능하다고 하는데, 왜 그럴까? innoDB는 대용량 데이터의 수정이 잦은 곳에서 사용하기 좋은 엔진이고, MyISAM은 데이터를 자주 읽는 경우에 사용하는 것이 좋다고 한다. 내가 변경하고자 했던 테이블은 다행히도, 읽기를 자주하는 테이블이라서 원하는대로 설정할 수 있었다. https://stackoverflow.com/question.. 2023. 1. 4.
[springBoot] mybatis 상수 사용하기 (application.properties) 개발환경 springboot 3.0.0 (spring boot starter를 사용하였습니다.) SpringBoot로 웹사이트를 개발중인데, 날짜를 조회하는 모든 곳에서, 동일한 형태로 조회하고 조회된 날짜를 javascript로 변환하여 사용하고 싶었습니다. 그러기 위해서는, 날짜 형식을 한 곳에다가 설정해두면 좋겠다고 생각했습니다. SELECT REG_DATE, DATE_FORMAT(REG_DATE, '%Y-%m-%d %H:%i:%s') FROM STUDENT; 예를들어보자면, 위와같은 쿼리가 있는데, REG_DATE를 조회하는 부분에서 '%Y-%m-%d %H:%i:%s'를 매번 적어주어야 했습니다. 그런데 만약에 이 형식을 수정하고 싶으면, 모든 쿼리를 다 수정해 주어야 하기 때문에, 하나의 변수로.. 2023. 1. 1.
Chrome 개발자도구, 이벤트 발생 내역 확인하기 크롬개발자도구에서 간단하게 이벤트 발생 내역을 확인하는 방법을 알아보자. Console에다가 특정명령어를 입력하면, 현재 페이지에서 발생하는 모든 이벤트가 콘솔에 찍힌다. 아래에서 자세히 확인해보자. 콘솔에 이벤트 내용 찍기 monitorEvents($0) 콘솔에서 이벤트 내용 찍는 것 중지 unmonitorEvents($0) 특정이벤트만, 콘솔에 찍게하고 싶은경우 두번째 파라미터에 특정 이벤트를 입력한다. monitorEvents(document.body, 'mouse') https://stackoverflow.com/questions/10213703/how-do-i-view-events-fired-on-an-element-in-chrome-devtools How do I view events fire.. 2022. 12. 28.
mariaDB 한국어 설정 mariaDB에서는 utf8을 사용하려는 경우, utf8mb4을 추천하는 것 같다. 아래처럼 설정해주자 [mysqld] ... collation-server=utf8mb4_general_ci character-set-server=utf8mb4 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 2022. 12. 18.
SpringBoot / mybatis log출력 spring boot에서 실행되는 쿼리 로그를 확인하고 싶어서 아래와 같은 설정들을 추가하였더니 쿼리 로그가 정상적으로 출력이 되었습니다. logging.level.org.springframework.web=debug logging.level.org.springframework=WARN logging.level.com.spring.ibatis.UserMapper=DEBUG logging.pattern.console=%d{YYYY-MM-dd HH:mm:ss} - %msg%n mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl 출력결과 ==> Preparing: SELECT COL1, COL2, COL3 FROM COMMON_.. 2022. 12. 17.
[윈도우&리눅스] 서버 연결 확인 명령어 ping ping [아이피 주소] IP 네트워크를 통해 특정한 호스트가 도달할 수 있는지의 여부를 테스트하는 데 쓰이는 명령어입니다. ping 요청이 정상적으로 도달하는 경우 C:\Users\#####>ping www.naver.com Ping e6030.a.akamaiedge.net [23.201.36.188] 32바이트 데이터 사용: 23.201.36.188의 응답: 바이트=32 시간=3ms TTL=52 23.201.36.188의 응답: 바이트=32 시간=4ms TTL=52 23.201.36.188의 응답: 바이트=32 시간=3ms TTL=52 23.201.36.188의 응답: 바이트=32 시간=4ms TTL=52 23.201.36.188에 대한 Ping 통계: 패킷: 보냄 = 4, 받음 = 4, 손.. 2022. 1. 25.
JAVA) 프록시 & HTTPS 언어 : java 안녕하세요. 얼마전, WAS서버에서 프록시를 태워, 타사의 API서버로 연결하는데 있어 많은 어려움을 겪었었는데요, 딱 맞는 해답을 찾을 수 없어서 많은 고생을 했던 기억이 납니다.(불과 몇일전) 그 과정에서 제가 알게된 내용에 대해 말씀을 드리려고 합니다. 먼저 HTTPS의 기초, 프록시란 무엇인지에 대해 설명을 드리고, 문제 상황과 해결방법에 대해 말씀드리겠습니다. HTTPS와 HTTP는 무엇이 다를까요? HTTP는 HyperText Transfer Protocol의 약어입니다. HTML문서를 주고받는 통신 방식이라는 의미입니다. HTTPS는 Secure가 붙은것으로, 보안이 적용된 통신방식이라고 할 수 있겠네요. 보안을 유지하기 위해서 HTTPS는 추가적인 설정이 필요합니다. 가장.. 2021. 11. 15.
JAVA) apache poi - SXSSF NullPointer Exception 오류 해결방법 환경 AWS (리눅스, 도커) SPRING BOOT JAVA 1.8 문제상황 apache poi를 사용하던 중, 대용량 엑셀 다운로드를 구현할 필요가 있어, XSSF에서 SXSSF로 변경하였다. 그런데, 갑자기 발생하는 NullPointerException때문에 고생했다.. Workbook workbook = new SXSSFWorkbook(SXSSFWorkbook.DEFAULT_WINDOW_SIZE); sheet = workbook.createSheet("시트이름"); 두번째라인을 실행하면서 에러가 발생했다. 개발할 때는 윈도우에서 개발했기 때문에 별문제 없이 돌아갔지만, AWS에서 사용하고 있는 docker에서는 폰트 파일이 없어서 발생했다. XSSF를 사용했을 때는 문제가 발생하지 않았지만, SXS.. 2021. 8. 2.
JAVA) apache poi, 엑셀 파일 생성 및 다운로드 하기 안녕하세요. 이번 프로젝트에서는 유난히도 엑셀관련한 작업을 많이 하게 되었습니다. 그래서 준비한 포스팅! 이번에는 엑셀로 데이터를 출력하거나 엑셀 데이터를 읽을 때 사용할 수 있는 라이브러리인 poi에 대해 포스팅 하는 시간을 가져보겠습니다! 자세한 사항은 apache poi 공식사이트를 확인해주세요. Apache POI - the Java API for Microsoft Documents Apache POI - the Java API for Microsoft Documents Project News 20 January 2021 - POI 5.0.0 available The Apache POI team is pleased to announce the release of 5.0.0. This release.. 2021. 6. 26.
Spring에 의해 관리되지 않는 객체, Property 값 주입하기 지금 하려는 작업에서, properties에 정의된 값을 Vo에 정의해주면 매우 작업이 쉽지 않을까? 라는 고민에서부터 이 포스팅은 시작되었다. 똑같은 값을 Dao에 주입할 때는 잘 되는데, Vo에는 적용되지 않았다. 왜그럴까 고민을 하다가 Vo는 Spring에서 관리하지 않는 객체라는 결론을 내게 되었다. 그래서 포기하고 있던 찰나! 동료가 열심히 찾아보다가 해결을 해주었는데, 그 방법이 지금 소개하려는 이 방법이다. PropertiesLoader는 spring을 활용하지 않고 properties를 읽는 방법이다. public class PropertiesLoader { public static Properties loadProperties(String resourceFileName) throws IO.. 2021. 3. 29.
javascript URL객체 총정리 오늘은 URL객체에 대해 알아볼 것이다. Javascript에는 url을 간편하게 다룰 수 있도록 URL객체가 마련되어 있다. 이것을 사용하면 프로토콜, 파라미터, 호스트 네임 변경과 같은 작업을 편하게 할 수 있다. 먼저 아래의 코드를 보자. var url = new URL("http://testurl.co.kr:8080/path/main.html?param1=1¶m2=3"); hash: "" host: "testurl.co.kr:8080" hostname: "testurl.co.kr" href: "http://testurl.co.kr:8080/path/main.html?param1=1¶m2=3" origin: "http://testurl.co.kr:8080" password: "" pa.. 2020. 12. 18.
java 개발을 더 간편하게 / lombok spring boot나 spring framework를 사용해봤다면 어느정도 어노테이션에 익숙해졌을 것이다. lombok은 어노테이션을 사용하여 코드를 간결화 해주는 라이브러리다. VO나 DTO에는 꼭 필요한 getter와 setter, 그리고 생성자, toString 메소드 등등을 간편하게 설정할 수 있다. 이외에도 부가적인 기능이 있는데 하나씩 확인해보자. 1. Project lombok이란 무엇인가? 공식 홈페이지에서는 롬북을 아래와 같이 설명하고 있다. (번역) 프로젝트 롬북은 편집기에 자동적으로 연결되고 당신의 Java를 빠르게 만들어주는 Java라이브러리입니다. getter, setter, equals와 같은 메소드를 사용하지 마세요, 클래스에 완전한 기능을 갖춘 빌더가 있는 하나의 어노테이션.. 2020. 7. 8.
JAVA) 배포란 무엇이고 어떻게 할까? jar? war? java를 사용하여 구현한 프로그램을 알맞은 형태로 변환하여 환경에 맞게 설정해야 만든 프로젝트를 실행시킬 수 있는데, 이 일을 배포라고 한다. 이 배포를 통해서 소중한 프로그램을 세상에 알릴 수 있다. 그렇다면 배포는어떻게 하는 것일까? 1. 프로젝트 추출 방법(Export) jar는 java archive의 줄임말이며, war는 web Application archive의 줄임말이다. archive는 압축일을 의미하므로 jar는 자바 압축파일, war는 웹 어플리케이션 압축파일이라고 할 수 있다. 자바 어플리케이션 추출 자바 어플리케이션은 java만 설치되어 있다면 실행할 수 있는 프로그램이다. 독립적으로 실행될 수 있으며, 데몬(백그라운드에서 자동 수행되는 작업을 수행하는 프로그램)이 이에 해당한다.. 2020. 7. 2.
spring boot(스프링 부트) - 프로젝트 구조 및 사용 방법 공식페이지의 내용을 정리하였습니다. 3.2. Structuring Your Code - spring boot의 일반적인 구조 이 구조의 루트 패키지는 com.example.myapplication이다. 루트 패키지 하위에 Application자바파일과 customer, order같은 패키지가 있다. Application.java파일은 루트 패키지에 존재한다고 할 수 있는데, 왜 이렇게 설정했는지 알아보자. Application파일은 구조가 매우 간단한데, @SpringBootApplication 어노테이션과 main 메소드가 있다. main메소드를 가지고 있어서 이 프로젝트의 진입점으로 이용가능하다. 일반적인 MVC 웹 프로젝트에서도 이러한 main메소드를 이용하는데, 그 이유는 tomcat을 내장하고 .. 2020. 6. 18.
반응형