개발
-
테스트 코드의 필요성을 깨닫다개발/생각 2022. 5. 6. 16:53
개발자가 되어 일을 하다가 나름의 경험이 생기고 나서 생긴 일이다. 프로그램의 동작은 내가 생각한게 맞고, 내가 가정한 상황이 전부고, 내가 테스트한 환경이 전부라고 생각하는 오만방자한 순간이 오고, 그 어마무시한 자신감을 코드에 싣게되었다. 어느 순간 깨달았을까, 내가 코드를 작성하면 절대적으로 버그를 생산하고, 의도한 기능에 맞지도 않을때가 많다는것을 깨닫고 코드를 작성하는것이 공포스러운 순간이 왔다. 이를 극복하기 위해 코드를 조심히(?) 작성한다는 정말 말도안되는 생각을 했지만 그 공포감에 휩싸인 사람이 코드를 조심히 작성해도 버그는 멈추지 못하는것은 당연했고, 더 깊은 공포에 사로잡히는 계기가 되었을 뿐이다. 스스로의 오만방자했음을 깨닫고 공포감의 우물을 박차고 나가는데는 여러 글이 도움이 되었..
-
해시 테이블개발 2020. 3. 27. 17:46
배경 컴퓨터 공학에서 해시 테이블(혹은 해시 맵 또는 연관 배열)은 데이터를 해시한 결과를 키로 사용해서 값을 찾을 수 있는(Mapping 하는) key-value 자료구조 중 하나이다. 탐색을 수행할 때 평균적으로 O(1) 정도의 알고리즘 복잡도를 기대할 수 있다. 다만 구현 방법이나 데이터의 입력에 따라 최악의 수행속도가 O(N) 까지 늘어날 수 있는 만큼 구현 시 고려해야 할 사항을 조사하고 필요한 요구사항에 따라 실제 인터페이스만 노출하는 방식으로 개발하여 본다. 기반자료 여러 자료구조의 평균 기능 수행 속도 접근 탐색 삽입 삭제 배열 O(1) O(N) O(N) O(N) 스택 O(N) O(N) O(1) O(1) 큐 O(N) O(N) O(1) O(1) 양방향 링크드 리스트 O(N) O(N) O(1)..
-
소켓 프로그래밍 기초 용어개발/네트워크 프로그래밍 2020. 2. 27. 13:01
서버(Server) - 서비스를 제공(Serve) 하는 개체 (er) 클라이언트(Client) - 서비스를 이용하는 고객(Client) 소켓(Socket) - TCP/IP로 소통을 하기 위한 것 버퍼(Buffer) - 소켓을 통해 연결된 장치가 TCP/IP로 데이터를 보내고 받기 위한 메모리의 임시공간 (처리X) IP 주소 (IP Address) - 소켓을 가진 '컴퓨터'를 찾아가기 위한 번호 프로토콜 (Protocol) - 통신 규약. 즉, 장치가 소통을 하기위해 어떤 방식으로 소통할것인가 TCP (Transport Control Protocol) - 신뢰성을 가진 연결 프로토콜 UDP (User Datagram Protocol) - 신뢰성을 덜 가진 비연결 프로토콜 포트 번호 - IP주소를 찾아 컴퓨..
-
C환경을 위한 Jenkins 구축하기(Tomcat, MSBuild, Visual SVN)개발/환경 2020. 2. 5. 11:11
사용한 환경 정보 OS: Windows 10 Pro x64 1909 18363.592 JDK: jdk-13.0.2_windows-x64_bin JRE: jre-8u241-windows-x64ㅇ Jenkins: jenkins-2.204.2 (WAR) Tomcat: apache-tomcat-8.5.50 MSBuild: vs_buildtools__1238172960.1579594399 * IDE로 Visual Studio를 사용할 경우 MSBuild가 이미 있을 수 있다. VisualSVN-Server: VisualSVN-Server-4.2.1-x64 VisualSVN: VisualSVN-VS2019-7.2.0 IDE: Visual Studio 2019 Community 단순 구축을 위한 기록이다. 아무래도 ..