전체 글
-
TDD(Test-Driven Development) 공부 정리프로그래밍 2022. 9. 7. 22:15
TDD(Test-Drivent Development)란? 테스트 주도 개발, 테스트로부터 시작하는 개발 방식을 의미한다. 실패하는 테스트 코드를 작성하고, 테스트를 통과시킬 만큼 구현한 후, 리팩토링하는 작업을 반복한다. TDD의 장점 테스트 코드가 있으면 문제 범위를 좁혀서 디버깅하는게 수월하다. 리팩토링 등 코드를 수정할 때 실패하는 테스트 코드가 발생하면 문제를 빨리 찾아낼 수 있다. 테스트가 가능하려면 의존 대상을 대역(Mock)으로 교체할 수 있어야 하는데, 대역으로 교체할 수 있는 구조는 역할별로 잘 분리되어 있는 설계 구조를 가졌다고 볼 수 있다. 예제 코드 1 /** * 암호화 검사기 TDD 예제 * * 사용하는 규칙 * - 길이가 8글자 이상 * - 0 ~ 9 사이 숫자 포함 * - 대문..
-
[Java] 다형성을 이용하여 null 처리하기프로그래밍/JAVA 2022. 8. 30. 00:05
개요 자바를 이용하여 개발하면 NPE(NullPointerException)을 방지하기 위해 null 체크를 하여 예외 로직을 작성하는 일이 잦다. 자바 8부터는 Optional API를 통해 좀 더 편리하고 깔끔하게 null 처리를 할 수 있지만, 현재 나의 팀에서는 자바 8을 사용하고 있지 않기 때문에 이를 활용할 수 없었다. 이러한 문제점을 해결하기 위해 다형성을 이용한 null 처리를 적용하였고, 다형성을 이용해서 어떻게 null 처리가 가능한 지 공유하려고 한다. 일반적인 null 처리 실습의 내용은 고객이 신한/하나/현대/삼성 카드 중 유효한 카드를 체크하여 결제를 진행한다고 가정한다. public interface Card { void pay(); } public class ShinhanCa..
-
해결하려 하지말고 공감해주자.일상/사색의 공간 2022. 8. 28. 23:19
나의 성격을 돌아봤을 때 누군가가 나에게 고민이나 우울했던 일상에 대해 털어놓으면 과몰입하여 이를 해결해주려고 하는 성향이 강하다는 것을 알게됐다. 나 스스로는 그것이 힘들다고 생각하지 않았는데, 어쩌면 내가 모르는 사이에 이에 몰입하여 스트레스를 받고, 나의 몸이 병들어 가고 있을지도 모른다는 것을 오늘 깨달았다. 앞으로는 이런 상황이 나에게 발생했을 때 해당 문제를 해결하려 하지말고 적당히, 나에게 영향이 가지 않을 정도로 공감해주는 선에서 끝내야겠다. 나 스스로를 책임지기도 어려운 촉박한 세상에서 내가 그 사람의 인생을 책임져줄게 아니라면 말이다.
-
[WEB] 쿠키(Cookie)와 세션(Session)의 개념 및 차이점WEB 2022. 8. 23. 18:11
개요 웹을 공부하는 사람이라면 쿠키(Cookie)와 세션(Session)에 대해 들어봤을 것이라고 확신한다. 이는 웹에서 굉장히 중요한 개념 중 하나이므로, 각각의 개념이 무엇인지, 차이점은 무엇인지 이해해보자. HTTP 통신의 탄생 쿠키와 세션에 대해 알아보기전에 간단하게 HTTP 통신이 왜 나오게 됐는지, 이러한 HTTP의 어떠한 특성에 의해 쿠키와 세션이라는 개념이 나오게 됐는지 알아볼 필요가 있다. 소켓(Socket)이란 네트워크상에서 서버와 클라이언트 두개의 프로그램이 특정 포트를 통해 양방향 통신이 가능하도록 만들어주는 소프트웨어 장치를 의미한다. 위의 그림에서 A와 C, B와 C가 서로 통신하기 위해서는 OS에서 제공하는 소켓이 필요하다. 예를들어 A가 5000번 포트로 연결 용도로 열린 C..
-
반년차 신입의 회사 생활 후기 (feat. 짧음, no성의)회사생활 2022. 7. 21. 01:32
※ 의식의 흐름대로 적어가는 후기글이기에 두서가 없다는 점 양해드립니다. 2022년 1월 10일에 신입 개발자로 첫 입사를 하고나서 벌써 반년이라는 시간이 지났다. 시간 짱 빠르네;;; 내일 모레면 곧 서른이다 ㅠ,ㅠ 어른이 하고싶다. 아무튼 나는 현재 회사 생활에 나름... 만족하고 있다. 각자 생각하는 좋은 회사의 기준이 다르겠지만, 내 기준에서 좋은 회사란 다음과 같다. 정해진 규칙 안에서 자유로운 의사결정을 할 수 있는 회사 야근이 잦지 않아 나의 자기계발 시간을 보장 받을 수 있는 회사 팀원들끼리 서로 존중하고 으쌰으쌰 하는 회사 급여 및 복지가 좋은 회사 ... 고맙게도 현재 내가 다니고 있는 회사는 위의 조건을 대부분 만족하여(?) 만족스러운 회사 생활을 하고있다. 제일 큰 흠이 있다면 통근..
-
[백준/BOJ] 14620번 꽃길알고리즘 문제풀이/백준 2022. 6. 21. 00:35
https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net 쉬운 DFS 문제였다. 씨앗을 3개 심을 수 있는 모든 경우의 수를 구한 후, 해당 케이스가 꽃이 피어날 수 있는지를 확인하면 된다. 배열을 여러 개 두면 쉽게 구현할 수 있다. (코드 참고) #include #define f first #define s second #define lp1(i, x, n) for(int i = x; i = answer) return false; } sum = tm..
-
[백준/BOJ] 9934번 완전 이진 트리알고리즘 문제풀이/백준 2022. 6. 9. 17:18
https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net 중위 탐색의 결과를 완전 이진 트리로 바꿔야 하는 문제다. 특정 depth까지 left와 right을 설정해 루트 노드를 탐색하는 방법을 반복하면서 문제를 해결하는데, 이분 탐색을 재귀로 구현하는 것과 비슷하다. #include #define f first #define s second #define lp1(i, x, n) for(int i = x; i = n) retur..
-
[백준/BOJ] 2529번 부등호알고리즘 문제풀이/백준 2022. 5. 29. 21:55
https://www.acmicpc.net/problem/2529 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 시간복잡도가 9! 이므로 완전탐색으로 충분히 해결할 수 있다. 따라서 모든 순열을 구한 후, 조건에 만족하는 처음 값(최소값)과 마지막 값(최대값)을 출력하였다. #include #define f first #define s second #define lp1(i, x, n) for(int i = x; i selected[i + 1]) { flag = false; break; } } else if..