목록전체 글 (67)
사적인 개발자
자료 : 현실 세계에서 관찰/측정을 통해 수집된 값/사실 정보 : 자료를 처리해 얻어진 결과P(D) = I 추상화 : 공통적인 개념을 이용해 같은 종류의 다양한 객체를 정의함 - 공통적인 개념 : 차비, 노선도 ... - 같은 종류 : 버스 - 다양한 객체 : 시외버스, 시내버스 관광버스 ... 자료의 추상화 : 데이터의 공통 특징만 뽑아 그림그리듯 개념화시킴 자료구조 : 추상화를 통해 자료의 논리적 관계를 구조화함 - 자료의 논리적 관계 : 색연필 정리. 색깔별로? 제조사별로? - 입력 자료에 대한 추상화 상태 자료 ➡ (자료의 추상화) ➡ 자료구조 알고리즘 : 컴퓨터에게 시킬 일을 (추상화된) 명령어의 연속 덩어리로 만든 것 - 알고리즘은 자료구조를 사용하는 주체 - 명령의 추상화 상태 추상 자료형 ..

프레임워크 없이 쌩 Java로 socket 통신을 만들어보았다.하나하나 뜯어보면서 해봅시다,,, package com.gym.http;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class simpleHttpServer { public static void main(String[] args) throws IOException{ ServerSocket serverSocket = new ServerSocket(8080); // 서버 포트 열기 - 포트 바인드 System.out.println("서버 start! http://localhost:8080"); while (true..

리다이렉션 이슈발생 메인 플랫폼에서 게임별 세부 메인페이지로 이동되는 부분에서, 특정 게임에서 페이지 이동이 안되는 것을 발견했다.ERR_TOO_MANY_REDIRETS 에러 발생페이지가 나왔고, 이 에러는 무한 리다이렉션 루프에 빠졌다는 것을 보여준다. 우선 curl 명령어를 통해 리다이렉션 에러가 맞는지 확인해본다.curl 명령어는 아래 형태로 사용하고, URL 데이터를 가져오는데 여기서 -L 옵션을 추가하면 리다이렉션을 자동으로 따라가도록 한다. 기본적으로 curl 명령어는 리다이렉션을 따라가지 않기 때문에 해당 옵션을 붙여주면 된다.# 기본 형태curl [옵션] [URL]# url의 리다이렉션을 출력curl -L https://www.game.com/index 그러자 아래와 같은 에러가 확인되었다..

grails에 장착되어있는 Spock를 활용해 TDD 샘플코드를 테스트 해 보았다.grails의 경우에는 도메인을 만들면 테스트 파일을 스캐폴딩을 통해 같이 만들어주는데,아직 실무에서는 거의 쓰지 않고있어 성능 확인차, 그리고 TDD는 어떻게 진행되는건가 보고싶어 테스트를 진행했다.TDD TDD 실행 순서 1. Red: 실패하는 테스트를 먼저 작성한다 2. Green: 테스트를 통과시키기 위한 최소한의 코드를 작성3. Refactor: 코드를 리팩터링하며 구조를 개선 생성한 파일- Book.groovy- BookService.groovy- BookServiceSpec.groovy Book.groovypackage testclass Book { String title Date dueDate}..

1탄 : [Linux] Fluentd 로그파일 자동 모니터링 스크립트 crontab 적용기2탄 : [Linux] Fluentd 로그파일 자동 모니터링 스크립트 crontab 적용기 - 후기 지난이야기 요약1. fluentd 로그 자꾸 쌓이는거 귀찮음2. 자동 리셋 쉘 만듦3. crontab 적용시킴 (월수금 10:00)4. cron 안돌아서 원인파악함(경로명 문제) 2탄에서 끝내고 싶었는데, 후기의 후기까지 나와버렸다. 월/수/금 10:00 cron으로 적용해놓았기에, 오늘(금) 10시에 쉘이 잘 돌아가는지 모니터링을 하고있었는데.. 문제 발생 - fluentd.log가 삭제되지 않는다?! 로그는 성공으로 잘 찍히는데, 파일이 삭제되지 않은것이 아닌가!# fluentd_filesize_check.log..

1탄 : [Linux] Fluentd 로그파일 자동 모니터링 스크립트 crontab 적용기1탄 세 줄 요약1. fluentd 로그 자꾸 쌓이는거 귀찮음2. 자동 리셋 쉘 만듦3. crontab 적용시킴 (월수금 10:00) 정상 작동을 확인한 후, 첫 crontab이 돌아가는 날이 오늘 오전 10시였다. 로그 모니터링을 하려 준비를 다 하고있었는데 이게 왠걸, 10시 1분이 넘어가는데 로그가 조금도 쌓이지 않는 것이 아닌가! 실패했으면 실패했다고라도 떠야하는데, 전혀 쌓이지 않는 것으로 보아 crontab 자체가 쉘을 돌리지 못하는 것으로 보였다. 우선 생각해볼 수 있는 원인은 크게 2가지.1. 파일 실행권한이 부여되지 않았는지?2. 쉘 로직 중 cron으로 돌릴 수 없는 부분이 있는지? 일단 원인 1..

0. 개선의 이유우리는 로그 보관을 위해 fluentd를 사용하며 Azure로 로그를 전송하고있는데, 아~~~~주 가끔 이 fluentd.log의 chunk가 깨져서 에러가 날때가 있다. 이럴 경우 /var/log/fluentd/fluendtd.log 파일용량이 error 로그로 인해 기하급수적으로 커지면서, 서버의 용량이슈로 이어지게 될 수가 있다. 때문에 주기적인 모니터링을 통해서 수동으로 로그파일 삭제 및 fluent 서비스 재시작을 실행하고 있었다.이 fluent 서비스는 Live로 실제 운영되는 데이터를 위한 것이기에 Live 서버에만 적용되어있으면 되지만, 테스트를 위해 QA서버에도 설치가 되어있었다. 그런데 Live와 달리 QA환경에서는 이러저러한 실험과 잦은 배포로 인해 chunk가 자주 ..

0. 문제 설명SSH 실습을 위한 문제입니다. 문제 서버에 SSH로 접속하세요!플래그의 형식은 DH{...} 입니다.ssh withid: challpassword: dhbgssh# 서버정보Host: host8.dreamhack.gamesPort: 23846/tcp → 31337/tcp 1. 풀이일단 cmd로 ssh 접속을 붙어줬다. cmd에서 ssh 접속 방법은 아래와 같다ssh [사용자 ID]@[접속하려는 컴퓨터의 IP주소 또는 도메인]# 예시ssh userId@127.0.0.1 그런데 이 문제의 경우 port번호가 따로 설정되어 있기 때문에 해당 포트번호도 같이 작성해주어야하는데 이 경우 명령어에 -p가 추가된다.ssh -p 22 [사용자 ID]@[접속하려는 컴퓨터의 IP주소 또는 도메인]# 예시s..
1탄 : [CI/CD] tomcat 배포 후 자동 압축 시스템 (feat.Jenkins, linux)2탄 : [CI/CD] Jenkins + Bash로 Tomcat 배포 후 로그 자동 압축 파이프라인 구축기 (최종) 지난 화 줄거리 요약1. 배포할때마다 서버에서 지난 톰캣 로그 압축하는거 귀찮음2. Jenkins 에서 돌리는 로그 자동 압축 쉘 만듦3. QA 테스트 완료됨4. Live 테스트 및 적용 완료됨 0. 유지보수가 필요했던 이유 Jenkins에서 QA_front 의 자동압축 파이프라인을 돌리는 도중, 아래와 같은 에러를 뱉고 쉘이 끝나버렸다.Started by user Running as SYSTEMBuilding in workspace C:\Jenkins\workspace\QA_AUTO_CO..

0. 구조 개선의 이유현재 우리 회사는 게임퍼블리싱사 답게(?) 게임별 이벤트가 자주 열리는 편이다.여러가지 이벤트(사전가입, 시즌이벤트, 친구초대 이벤트 ...) 중에서 이번에 맡게된 것은 홈페이지 메인창에 있는 사이드 배너 팝업 이벤트인데, 사실 제일 처음 이벤트 기획이 나왔을때 구조를 짰던게 나였다. 그땐 일시적인 이벤트로 전달받았기에 이벤트 기간에 대한 설정만 Redis를 사용하고 나머지(모달팝업 html 코드, 기간설정 js 코드 등등) 코드를 js 페이지 내에 하드코딩으로 박아놓았었다. 그런데~ 해당 이벤트가 반응이 좋았는지 앵콜기획이 늘어나기 시작했고 이미 레거시가 되어버린 내 코드 위에 다른 개발자분들이 덧입히고, 덧입히는 상황이 되고 있었다. 그리고 다시 앵앵앵콜의 이벤트 기획이 나왔고 ..