분류 전체보기 474

내가 생각하는 클린코드란?

내가 생각하는 클린코드란? 간결해야하고 잘 읽혀야한다. 즉, 각 객체가 자신이 맡은 일'만' 충실해야하고 이 일 저 일 뒤죽박죽 하면 안된다. 하나의 클래스는 하나의 업무를 하나의 메소드는 하나의 작업만을 해야한다. 변수명, 클래스명 작명에 힘을 써야한다. 비즈니스 예외를 잘 처리해야한다. 테스트하기 쉬워야한다. 클린한 코드는 하는일이 명확해야하고 한가지일에 집중해야하고 부수효과가 없을수록 좋다. 부수효과가 없을수록 좋다는건 맡은일에 관한 일만 처리하고 그 외에 다른부분에 영향이 없다는 것이다. 부수효과가 없으면 테스트하기도 덩달아 쉬워진다. 간결하게 잘 분리된 클래스, 메서드는 읽기가 쉽다. 복잡하지 않다. 복잡하지 않으면 실수가 발생할 확률이 줄어든다. 코드가 간결하면 논리적인 파악이 잘되고 코드를 ..

이번직장에서 서버개발자로써 남긴 업적

1. 통합검색 기능 개발 회사에서 통합검색 솔루션을 2억안팎의 비용에 구입하려 하여 직접 개발한다고 설득. 좋았던 점: 검색결과 원하는대로 직접 빠르게 튜닝가능. 통합검색(Elasticsearch) 기능 개발 노하우. 통합검색 구매비용 2억 세이브. 나빴던 점: 없음. 결론: 회사와 개인 모두에게 만족스러운 결과. 2. AWS 내 서버 인프라 구성 회사 서비스를 AWS 에 구성. 좋았던 점: SA 인건비 절감 데이터베이스 서비스(RDS)가 무척 안정적. 별도 설정없이 되는 자동백업. 나빴던 점: EC2 인스턴스 해커들의 끝없는 해킹시도. SES 서비스 해커들의 끝없는 해킹시도로 대량의 스팸 발송. (AWS 인스턴스 생성 권한을 잘 관리하지 않은 경우)무분별한 인스턴스 생성으로 인해 과다한 비용이 발생 규..

ALB HTTP2 삽질기

ELB 에서 ALB 로 변경하면서 HTTP2 를 적용하는 중 이유를 알기 어려운 문제가 발생하여 기록하낟. 문제가 발생한 설정 내용: ALB HTTP2 활성화 켬 대상그룹 프로토콜 버전 HTTP2 로 설정 NGINX listen http2 설정 증상: 대부분 잘되지만 일부 PC 에서 HTTP STATUS 464 오류가 발생함 일부 피씨에서만 발생하니 문제원인을 알기가 굉장히 까다로웠다. 해결을 위한 문제파악: 우선 ALB 엑세스 로그를 활성화한 후 로그를 확인해보았다. 액세스 로그를 확인해보니 대부분의 요청은 h2 HTTP/2.0 으로 호출이 되었으나, 464 오류가 발생한 요청은 https HTTP/1.1 로 요청을 하고 있었다. AWS Forum 을 뒤져보다가 아래와 같은 글을 발견하였고 아래와 같은..

프로그래밍/AWS 2022.03.10

프로그래머스 괄호 회전하기

https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 이 문제는 보자마자 떠오르는대로 풀면 간단히 풀릴거라 예상했고 실제로 떠오른대로 푸니 간단했다. 하지만 이 문제는 얼마든지 더 간단한 규칙을 찾을 수 있을 것 같다는 생각이 든다.. 내가 푼 풀이는 그저 주어진 문자열의 길이만큼 문자를 한칸씩 이동하며 올바른 괄호 문자열인가 검사하고 맞다면 정답에 +1 을 해주는것이다. 다른사람의 풀이에 훨씬 간단한 규칙을 찾아서 푼 고수분들이 계실거라 기대하며 봤지만 내가 푼 풀이와 동일했다. from collections import deque def solution(s): answer = 0 if l..

이코테 떡볶이 떡 만들기 파이썬

문제설명 동빈이네 떡볶이 떡은 길이가 일정하지 않다. 대신에 한 봉지 안에 들어가는 떡의 총 길이는 절단기로 잘라서 맞춰준다. 절단기에 높이(H)를 지정하면 줄지어진 떡을 한 번에 절단한다. 높이가 H보다 긴 떡은 H위의 부분이 잘릴 것이고, 낮은 떡은 잘리지 않는다. 예를 들어, 높이가 19, 14, 10, 17 cm인 떡이 있고 절단기 높이를 15cm로 지정하면 자른 뒤 떡의 높이는 15, 14, 10, 15cm가 될 것이다. 그리고 잘린 떡의 길이는 차례대로 4, 0, 0, 2cm가 된다. 이 때 손님은 잘린 떡의 길이의 총 합인 6cm의 길이를 가져간다. 손님이 왔을 때 요청한 총 길이가 M일 때 적어도 M만큼의 떡을 얻기 위해 절단기에 설정할 수 있는 높이의 최댓값을 구하는 프로그램을 작성하시오..

이코테 게임개발

알고리즘 문제를 잘 풀려면 일단은 피지컬이 좋아야겠다고 생각이 들었다. 여기서 말하는 피지컬이란 내 생각을 코드로 구현할 수 있는 능력이다. 일단 기본이 되는 피지컬을 좀 키우고 여러가지 기법들에 대해 배워 나가야 겠다는 생각이 들어, 이코테의 구현문제를 하나 풀어봤다. 알고리즘 피지컬을 키우는건 기본체력을 키우는것과 비슷하지 않을까... 문제 현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 X 1 크기의 정사각형으로 이뤄진 N X M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다. 맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는..

유퀴즈를 보다가 너무 공감가는 말이 나왔다

무신사에 일하는 MD 가 출현했는데 이런말을 하더라 '내 인생의 3분의 2를 직장에서 보내는데, 직장에서 내가 쓸모가 없으면 나는 뭔가?' 나는 이 말이 너무 공감간다. 내가 직장생활을 지속할 수 있는 힘의 원천이 직장에서 내가 얼마나 도움이 되는 사람인가이기 때문이다. 인생의 3분의 2가 직장생활인데 직장은 그저 인생의 3분의 1을 충족시키기 위한 수단(밥벌이수단) 으로만 생각하는 사람들이 의외로 많다.

일기 2022.01.18

프로그래머스 메뉴리뉴얼

https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 약간헤매기도 했고, 재미도 있었던 문제다. 잠깐 생각해보고 길은 제대로 봤는데 구현이 생각보다 좀 오래 걸린듯하다. 풀면서도 이렇게 푸는게 맞는가 싶고, 다 풀고나서도 뭔가 어거지로 푼 느낌이 강한데, 다른 사람의 풀이보기 로 보니 코드가 좀 더 세련됐냐 안세련됐냐의 차이뿐.. 방법은 대동소이했다. 이 문제를 풀면서 바로 떠올린게 combinations 고 두번째..