프로그래머스 Level 1 푸드 파이트 JAVA 풀이 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위..
데이터를 산출해야하는 건이 있었는데 요청건수가 너무 많아서 일반 SQL 문만으로는 불가능했었습니다. COUNT로 대략 건수를 확인해봤을때 14594519 건정도....? 1차로 실행계획을 확인 후에 조인으로 연결된 FROM 절이 PK를 타고 있지 않아서 해당 부분 PK 탈수 있도록 서브쿼리로 변경했습니다 두번 TABLE FULL SCAN하는것을 그나마 한번으로 변경....ㅜ.ㅜ 2차로 힌트절을 이용해보기 위해 관련된 힌트절을 찾다가 PARALLEL 힌트를 알게 되어 공유하고자 합니다. 페러럴 힌트는 병렬 처리 작업을 지원해줍니다. 기본적으로는 한개의 프로세스를 통해서 실행하는데 페러럴 힌트를 이용하면 여러개의 쓰레드에 분산하여 N개의 프로세스로 작업을 수행하기때문에 빠른 속도를 확인해볼 수 있습니다. 하..
1. 운영중인 서버로 웹셀 업로드 공격이 탐지 됨. 2. 모니터링 강화 도중 이상 탐지 서버 발견 3. 해당 서버를 통해 DMZ존에 있는 다른 서버에게 IP/포트스캐닝 공격 실행 4. DMZ존 웹쉘 추가 확인 5. DMZ존 서버 DB 긴급 강제 종료 및 내부망 전환 6. DMZ존 대신 사용 가능한 네트워크 구성 방안 제안 7. DMZ 전체 서버 대상 점검 실시, 피해 서버의 이미지, 로그 백업 수 정밀 분석 실시 웹쉘 관련 참고 블로그 https://blog.naver.com/nms200299/221727086492 웹해킹 이론 : 파일 업로드 취약점 (웹쉘) 취약점 개요 웹 사이트에서 파일을 업로드할 때, 서버 측의 부주의로(확장자 체크, 바이너리 체크 미흡) 발... blog.naver.com htt..
프로그래머스 Level 1 가장 가까운 같은 글자 JAVA 풀이 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표..
스택(Stack) 은 영어사전 단어 의미로 쌓다라는 의미를 뜻합니다. 쌓아서 최 상단에 있는 부분을 먼저 빼는 형식으로 선출후입(LIFO) 이라고 표현합니다. 자바의 Stack클래스는 기본적으로 아래에 보이는 5가지의 함수를 제공해주고 있습니다. 자바에서 제공해주는 Stack 클래스를 사용해 살펴보도록 하겠습니다. public Element push(Element item); //stack 최 상단에 데이터 insert public Element pop(); //stack 최 상단 데이터를 제거 public Element peek(); //stack 최 상단 데이터를 출력 public boolean empty(); //tack이 비어있으면 true, 비어있지 않으면 false 로 반환 public int..
자주쓰이는 명령어 중 하나인 Nohup 명령어에 대해 알아보도록 하겠습니다~ 일반적으로 SSH를 통해 프로그램을 실행할 때 연결이 끊기거나 로그아웃하면 세션이 종료되면 터미널은 실행한 프로세스들에게 HUP Signal을 전달 하여 모든 프로세스를 중지 시킵니다 중지 시그널 HUP Signal을 무시하고, 프로세스를 실행한 터미널의 세션 연결이 끊어지더라도 지속적으로 동작 할 수 있게 해주는 명령어가 nohup 명령어 입니다. no(=Ignore) hup , 즉 HUP Signal을 무시하라는 뜻의 명령어입니다 nohup 명령 사용법 1. 포그라운드 nohup명령어 수행 nohup 명령어는 아래와 같습니다. 프로세스 및 실행 명령어 부분에 실행하고자하는 스크립트나 프로세스를 기입해주면 됩니다 이러한 com..
오늘은 오랜만에 제 개인 github을 접속했습니다 저는 github 관리를 제대로 하지 않고 있었기때문에 로컬에 소스들도 많구... 동기화 안되어있는 소스들이 꽤 됩니다ㅠㅠ 그동안 관리가 전혀 안되고 있었죠.....T.T 이제라도 제대로 관리하고자 이상하게 만들었던 레파지토리를 삭제하려고 겸사겸사 포스팅을 올립니다 개인 github을 로그인 후 접속해주세요. Repository 탭을 눌러 삭제하고 싶은 레파지토리로 접속 해주세요~ 상단의 Settings 버튼을 클릭해주세요~ 기본적으로 General 이 선택되어 있는데 스크롤을 쭉~~~ 내려서 하단의 Danger Zone 영역까지 내려주세요 Danger Zone영역 안에 있는 Delete this repository 버튼을 클릭해주세요 한번더 삭제할 건..
리눅스에는 수 많은 명령어들이 존재합니다 이러한 명령어들을 조합해서 나만의 명령어를 만들 수 있다면 좋지 않을까요? 명령어를 사용하다보면 오타가 종종 발생하기도 하고, 조합해서 긴 명령어를 여러 라인으로 치기도 불편하니 나만의 명령어 = 별칭 을 생성 해 사용합니다 바로 alias 라는 별칭을 설정하여 나만의 명령어를 만들 수가 있습니다 1. 별칭(Alias) 생성 및 삭제하기 예를 들어 현재 프로세스 중 docker 프로세스가 작동하는지 확인 하고 싶을 경우에는 아래의 명령어를 사용합니다. ps -ef | grep docker 현재 도커 프로세스가 실행 중인 것을 위의 명령어로 확인 할 수 있네요~~ 근데 해당 명령어가 너무 길다고 느껴서 간단하게 바꾸고 싶을 수도 있지 않을까요? 이제 위의 명령어를 ..
DB툴은 PL/SQL Developer 툴을 사용했습니다 SELECT * FROM 테이블명 FOR UPDATE; 상단의 자물쇠 모양을 클릭해주세요 자물쇠 모양이 풀리면서 수정이 가능한 상태로 변경됩니다. 원하는 값을 입력해주세요~ TEST 로 수정했더니 초록색 체크 모양 버튼이 활성화 되었습니다. 변경 내용을 입력 완료 했으면 초록색 체크 모양 버튼을 클릭해주세요 마지막으로 자물쇠 모양 버튼을 다시한번 클릭하면 자물쇠가 잠기면서 수정이 불가능한 상태로 바뀝니다 이제 변경 내용을 커밋만 해주면 수정사항이 반영됩니다~ 저는 PL/SQL Developer 툴에서 제공하는 커밋 버튼을 이용해서 커밋을 진행했습니다 만약에 아래와 같이 기록되어있는 몇천건의 데이터를 INSERT 혹은 UPDATE 해야할때도 사용 가..
https://devnoong.tistory.com/40 [MiniKube 실습] 쿠버네티스 어플리케이션 배포 minikube 를 사용해 쿠버네티스 어플리케이션을 배포하는 작업을 진행해보겠습니다. 우선 배포를 진행하기 전 간략하게 쿠버네티스에 대해 정리하는 시간을 가져보도록 하겠습니다. 쿠버네티스 devnoong.tistory.com 이전 포스팅에서는 쿠버네티스가 제공해주는 echoserver 를 Node로 활용해 배포를 진행했다면 요번 포스팅에서는 AWS ECR과 yaml파일을 이용해 배포를 진행해보도록 하겠습니다 1. Cloud9 ECR 로그인 (새 유저 권한으로 진행) ECR에 업로드 된 이미지를 Minikube에서 사용하기 위해서는 ECR 로그인이 필요합니다 초반에 AWS Configure를 통해..