본문 바로가기

전체 글62

백준 14551 Card Game Contest Java 술먹고 브론즈2 입출력 문제를 풀었는데 계속 틀렸다후에 그 기억이 떠올라 바로 풀어버리려고했다하지만 또 틀렸다사나이 기백으로 풀었고 그 정리를 남긴다 N은 0, M은 1이 최소값으로 올수 있다Ai는 0이 올수 있다 카드 세트가 없다면 하나를 빌려주기때문에입력에 0이 오면 1로 바꿔준다 질문게시판에 작성된아무것도 안하는 방법을하나의 방법으로 생각한다는것은 잘못 되었다  틀린 이유:경우의 수를 구할때 값이 커지는 상황에 대응하지 않았다 package org.problem.solving.BOJ.Java14551;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Strin.. 2024. 10. 15.
서버 해킹 대응 5월 28일 개발을 위해 데이터베이스 필드를 자주 확인해야하기 때문에ufw의 3306포트를 열고 외부의3306과 포트를 연결해두었다포트를 오픈한지 2일만에 3306으로 지속적인 접근시도가 있었고2일만에 로그를 통해 확인했다sudo journalctl -u mariadb //DB로그 확인무수한 악수요청... 몇가지 인상적인로그를 분석해봤다시도된 명령(root) CMD ([ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ];then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi)시도된 접근2024-06-01 8:01:37 1116 [Warning]Aborted connection 1116 to db: 'u.. 2024. 6. 1.
서버에서 정렬 vs DB에서 정렬 서버에서 데이터셋을 정렬하는 방법과데이터베이스에 데이터를 요청할때 정렬하여 반환 하도록 하는 방법이 두가지 방법중 더 효율적인 방법이라하는 글은 많다상황 마다 다르지만 대부분 데이터베이스에서 정렬된 데이터를 요청하는것이적은 리소스를 사용하여 처리할수 있기때문에 후자가 적절하다고 한다 그 이유로는데이터베이스는 데이터 처리에 효율적으로 설계되어(인덱스 같은거) 있다잘만들어진 최적화된 기능을 사용하여 코드개선의 책임을 일부 덜어낼수 있다정렬되면서 정제된 데이터를 반환받을경우 네트워크 사용량을 줄일수 있다 하지만 이번 정렬의 경우 인덱싱이 걸려있지 않으며사이트의 페이징처리 등이 되어 있지않아 온전한 리스트 전부가 사용되어야 하기때문에정렬된다 한들 데이터의양이 줄어들지 않는다 서버의 서비스 레이어 에서 반환 된 .. 2024. 5. 15.
admin page를 위한 차트 구현의 잿빛로드 구현 하고싶은 관리자 페이지의 기능에는 이벤트 카운트, 문제 유저, 시스템 자원을 모니터링, 관리 하는것 이다 SML 서비스에는 실행 횟수에 따라 의미를 유추할수 있는 특정 메서드들의 로그를 DB에 기록하도록 했다 해당 로그를 열람할수 있는 관리자 페이지에서 악성 유저를 모니터링하거나 서비스의 오류 등을 확인 할수 있고 로그를 매시,매일,매달 별로 카운트해서 일정 기간마다 특정 기능의 사용량을 모니터링 할수도 있다 앞서말한 관리자 페이지를 구현 하면서 있었던 문제, 해결 방법, 이유를 이 글에 기록하고 갱신하는 중이다 최대한 쉽게 구현할수는 없을까? 기존 페이지를 위한 컨트롤러에서는 api 요청을 받았을때 관련 메서드를 실행하고 데이터, 페이지를 반환하는 방식으로 웹서버가 동작한다 하지만 매시, 매일, .. 2024. 3. 31.
not-null property references a null or transient value springboot3.1.4 java17 JPA 환경의 서버 프로그램SML은 mariaDB 를 사용하고 있다 이 데이터베이스는 boolean 형의 컬럼을 tinyint(1) 로 참,거짓을 관리 한다 SML의 Entity클래스의 변수 playlistStatus는 데이터베이스의 playlist_status 컬럼을 의미하며 어노테이션으로 속성을 명시하고 있다 @Column(name = "playlist_status", nullable = false, columnDefinition = "TINYINT(1) DEFAULT 1") private Boolean playlistStatus; 하지만 실제 데이터베이스와 Entity클래스의 차이로 인해 오류가 발생한다 에러발생시점은 해당 컬럼에 null값이 포함 되어 수정.. 2024. 3. 12.
OCI 리눅스 장애(비정상 정지) 원인 기록,결론 얼마전 https 접속을 지원하는 서비스 배포후서비스가 약 4일만에 웹브라우저로 접근불가 상태임을 확인했다로그를 확인하기 위해 ssh 접속을 시도 했지만 kex_exchange_identification: read: Connection reset by peerConnection reset by xxx.xx.xxx.xx port xx서버에서 응답이 없었다브라우저에서 http/s 접근이 불가하다는것은 서비스가 정지 되었다는것이고ssh 접속이 불가능 하다는것은리눅스 서버의 서비스 하나가 문제가 있는것이 아니라서버로 사용중인 인스턴스 자체에 장에가 있었을것이라고 추측했다 오라클클라우드에서는 특별한 알람은 없었고트라이얼 계정의 인스턴스 자원 대비 과한 처리량 때문에 커널패닉같은것이 온것이라 추측했다사용된 리소스 .. 2024. 3. 5.
https 지원(ssl) https 접속을 위한 ssl 공인인증 적용 http 접속으로 발생하는 보안 경고는 사용자에게 불편함을 느끼게 한다 또한 최근 유저정보의 비밀번호 해싱작업중 클라이언트에서 해싱하는것이아닌 서버에서 해싱하는것이 보안에 더욱 안전하며 클라이언트에서 서버로 전송되는 유저정보중 비밀번호가 노출 될수있다는 고민은 https를 지원하는 서비스에서 해당사항이 없다는것을 알게 되었다 즉 https 를 지원하면서 해싱을 서버에서 처리하면 해사방법을 노출시키지도, 유저정보를 노출시키지노 않는 안전한 방법이라는 결론을 내렸다 그리하여 내 사이트에 https 접속을 지원하도록 했다 작업시간은 3일 소요되었고 zeroSSL 공인인증 과 kro.kr 도메인으로 지출은 없으면서 https 인증을 성공 하였다 개발환경 로컬 - 맥 .. 2024. 2. 25.
html snippet include 보호되어 있는 글 입니다. 2023. 12. 23.
HttpSession 와 HttpServletRequest 보호되어 있는 글 입니다. 2023. 12. 20.