개발 61

SW 사관학교 정글 후기

8월2일부터 12월 13일까지 약 4개월 반 동안 대전 카이스트 문지캠퍼스에서 진행된 정글 과정이 끝났다. 계속 미루다가 더 늦기전에 그간 생각과 느꼈던 감정을 순서와 형식없이 적어본다. . 전혀 모르던 분야를 새롭게 공부하는 경험이 너무 소중했다. 일단 전산학이 기대보다 더 재밌었다. 화학보다는 좀 더 개념간의 연결성, 논리적 개연성, 상관관계가 높은 것 같다. 과거 수학을 공부할 때 처럼 배웠던 내용을 다시 복습하는 과정에서 처음봤을 때 이해를 못했거나, 이해했다고 착각했거나, 유기적으로 생각하지 못해서 얻지 못했던 지식이 떠오르곤 했다. 지식간의 연결관계가 생기면 기억이 잘 되는데 이런 부분이 마음에 들었다. 화학공학말고 전산학을 공부했다면 공부에 흥미를 느끼고 대학생활이 더 재밌었을까?? 하지만 ..

A 2022.01.12

JPEG 압축 알고리즘에 대하여 (Down sampling, DCT, Quantization, Huffman coding) -작성중

최근 본 면접에서 면접관님으로부터 들었던 질문이 있다. 긴장해서 정확히 기억이 나지는 않지만 대략 이런 질문이었다. "JPEG는 손실 압축 포맷인데, 어떤 방식으로 압축할까요?" JPEG는 손실, PNG는 비손실 압축이라는 상식 정도만 알고 있었어서 많이 당황했고 몇 가지 추측에 기반해서 답변할 수 밖에 없었다. 면접을 마치고 JPEG 손실 압축 방법을 찾아보았다. 생각했던 것 보다 훨씬 영리하고 신박해서 놀라웠다. JPEG 이미지 압축의 아이디어에는 몇 가지 핵심적인 아이디어가 내재되어 있었다. 0. 사진 특성상의 인접한 픽셀간의 데이터는 유사한 수치의 데이터인 경우가 많다. (Cosine transform시 low frequency 값이 많다.) 1. 사람의 눈으로 이미지를 인식할때 색차보다 밝기에 ..

카테고리 없음 2022.01.07

쿠키 / 세션 / JWT / 보안 이슈

인증과 보안에 많이 사용되는 상기 개념들을 정리하는 목적의 포스팅입니다. 포스팅내용 1. 쿠키 / 세션 2. JWT 3. 보안이슈 HTTP 쿠키 HTTP는 요청은 Stateless하다는 특징을 가지고 있다. 쉽게 말해 상태관리가 안된다는 말이다. 각각의 요청은 독립적이고 서버 입장에서는 클라이언트를 식별한다거나, 이전 요청에 대해 연관지어 응답하지 않는다. 이러한 특징을 보완해주는 것이 쿠키이다. 클라이언트 요청헤더에 쿠키가 담겨서 서버로 전송되고, 서버는 쿠키의 정보를 참고한다. 주로 3가지 용도로 사용된다. 세션 관리(Session management) - 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리 개인화(Personalization) - 사용자 선호, 테마 등의 세팅 트래킹..

카테고리 없음 2022.01.07

이미지 관련 (애니메이션의 왜 랙걸릴까 & 이미지 용량을 줄이는 방향 2가지)

canvas에서 생명체의 이미지를 활용해 60FPS로 애니매이션을 그리는 과정에서 렉이 심하게 걸리는 현상이 있었다. 처음에는 단순히 이미지 용량이 큰 것이 원인이라고 아닐까 싶어서 프론트 개발자 동료에게 이미지 축소를 요청했다. 하지만 용량이 절반 이하가 되었지만 문제가 전혀 개선이 되지 않았다. 인터넷에서 단서를 얻을 수 있었다. 과거에 게임할때 렉이 걸리며 프레임이 끊기는 경우 해상도를 낮춰 해결한 경험도 생각났다. 각 프레임을 형성하는 이미지 내의 픽셀수를 줄여야 했다. 처음 용량을 줄인 경우는 픽셀수를 줄인 것이 아니라 비트 심도를 낮추는 방향으로 용량을 줄였다는 것도 알게 되었다. 1. 새롭게 알게된 부분은 프레임으로 표현되는 화면에서 프레임을 구성하는 픽셀수의 성능영향이 생각보다 크다는점과 ..

카테고리 없음 2021.12.10

로드 밸런싱 관련 읽을 거리

https://techblog.woowahan.com/2547/ 실시간 서비스 경험기(배달운영시스템) | 우아한형제들 기술블로그 {{item.name}} 경험기 들어가기 앞서 이 글은 신기술 사용기 또는 소개가 아닌 실시간 서비스 즉 배민라이더스 BROS 1.0 을 개발 하면서 겪어왔던 다소 특별한 개발 및 운영 경험기 입니다. BROS 2.0이 나 techblog.woowahan.com http://www.incodom.kr/Load_Balancing Load Balancing - 인코덤, 생물정보 전문위키 #Load Balancing의 정의 www.incodom.kr https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.h..

프로젝트 2021.12.09

node js (artillery)

**이 글에는 node.js artillery 부하테스트와 관련은 있지만 얻을만한 지식이 전혀 없습니다. **artillery 부하테스트를 위한 지식이 필요해서 검색을 통해 들어오신분이라면 뒤로가기를 눌러주세요. 현재 진행중인 프로젝트에서 Express기반 API 서버(5000포트)와 Socket.io 기반 소켓 서버(5001포트)로 돌아가는 서비스를 운영중이다. 채팅, 방, 검색, 이미지 업로드 그리고 이미지 리스트 뷰 등이 구현이 되어 있고 로컬환경은 물론이고 AWS환경에서도 구현한 기능에 한해서는 작동하는데 무리가 없는 상태이다. 소수의 사람들이 이용하면 문제는 없지만, 실제 서비스라면 다수의 사람들을 수용할 수 있어야한다. 이러한 부분이 대비가 되려면 트래픽이 존재하는 환경에서 서버가 어떻게 반응..

프로젝트 2021.11.29

나만의 무기만들기 중간회의

시간이 많이 남지 않았는데 해야할 일이 많았다. 오늘도 미팅을 했다. 서비스를 위해 꼭 구현되어야하는부분 / 인지하고 있는 버그 / 추가적으로 하면 좋을 것 같은 부분 3가지로 분류했고 모두 의견을 나눴다. 결론 validation check는 정말 중요하다 버그는 계속 생긴다. 인지하고 있는 버그를 먼저 해결해야한다. 인지하지 못하고 잇는 버그도 챙겨야한다. 구현해야 할 것은 많지만, 우선 버그를 잡고 필수적인 것을 구현하는게 우선이다. 그리고 하고 싶은 것을 한다. 구현 하고 싶은 것을 하기 위해 빨리 선행작업을 해야한다.

프로젝트 2021.11.26

간단한 채팅구현 Socket.io (Node js)

Socket.io를 이용해서 간단한 채팅을 구현했다. 우선 기본적인 로직으로 잘 동작하는 채팅을 구현하고 다양한 방법으로 부하 테스트해보고 문제가 생기면 개선하면 좋을 것 같다. 우선 Socket.io와 Websocket은 다르기 때문에 동일시하면 안된다. Socket.io는 기본적으로 아래와 같이 동작한다. 1. 우선 소켓서버와 연결이 먼저 맺어진다. 2. 연결 주체간의 소통한다. 3. 연결이 끊어지면 다시 연결한다. 2번에대해 부연을 해보겠다 socket함수는 보내는 형식, 받는 형식 쌍으로 이루어져 있다. 보내는 형식은 emit이라는 함수다. socket.emit( "XX", data) 받는 형식은 on이라는 함수이고 받은 데이터를 인자로 받는 콜백함수 실행이 가능하다. socket.emit("XX..

프로젝트 2021.11.22

MYSQL TRIGER

팀원이 DB 쿼리에 대해 오랜시간 고민하여 방법을 찾다가 발견한 기능.. DB에서 일정한 시간에 맞춰서 특정 DATA를 삭제하고 해당 DATA가 속하는 Category 스키마에서 관리하는 칼럼인 Cnt를 줄여주는 방법을 찾다가 발견했다. 지금 우리에게는 유용한 기능인데 현업에서는 잘안쓰이는 것 같다.. MYSQL에서도 자체적으로 조건문과 비슷한 기능이 있는 것을 알게되어 잘 사용했다. https://jeong-pro.tistory.com/118 Destructuring(디스트럭쳐링) - 배열과 객체의 값을 변수로 받는 방법 Destructuring? : 기존에 구조를 가지고 있던 객체(Array or Object)를 파괴(Destructure)하여 별도의 변수에 값을 할당하는 것이다. => 배열이나 객체..

프로젝트 2021.11.18