전체 글 77

리눅스 - VirtualBox 가상 환경(VM)

가상환경에서 리눅스 사용하기 (Virtual Box 사용) 현재 Windows OS를 사용하고 있는데 가상환경(VM)에서 리눅스 OS를 사용해보려고 한다. 1. Virtual Box 설치 선택한 패키지 버전은 VirtualBox 6.1.16 이고 현재 Windows OS 를 사용하고 있기 때문에 Windows hosts로 다운로드 해주었다. 2. 리눅스 VM 설치 이제 설치된 VirtualBox 위에서 VM을 리눅스 운영체제를 설치해주어야 한다. '새로 만들기' > Linux, Ubuntu (64-bit) 옵션을 선택해주었다. 메모리 할당 새로 만드려는 리눅스 운영체제를 위해서 별도의 메모리를 할당해주어야하는데 추천 메모리 크기만큼 할당해주었다. 디스크 할당 가상 환경에 필요한 디스크도 할당해 주어야 한..

카테고리 없음 2021.01.07

[네트워크 - 윤성우의 열혈 TCP/IP] 주소체계와 데이터 정렬

IPv4와 IPv6 IPv4는 4바이트 주소체계이다. 그리고 ip주소가 고갈될 상황을 대비해서 만든 16바이트 주소체계가 IPv6이다. 아직은 IPv4가 주류다. IPv4 기준의 ip 주소는 네트워크 주소 + 호스트 주소 로 구성되어 있다. 그리고 네트워크 주소와 호스트 주소의 길이에 따라 클래스가 분류된다. ⁕ 네트워크 주소(ID) : 호스트 주소(ID) 비율로 따졌을 때 A클래스는 1byte : 3bytes, B클래스는 2bytes : 4bytes... 이런 식이다. 데이터 전송 과정 보통 회사나 학교 단위로 하나의 네트워크(라우터) 아래에 여러 대의 로컬 컴퓨터가 존재한다. 만약 A학교 소속의 a 컴퓨터에 데이터를 전송하게 된다면, 먼저 ip 주소 중 네트워크 주소를 먼저 참조하여 해당 라우터로 데..

네트워크 2020.12.31

[네트워크 - 윤성우의 열혈 TCP/IP] 소켓의 타입과 프로토콜의 설정

프로토콜 프로토콜은 컴퓨터 네트워킹에 필요한 통신 규약이다. 즉 컴퓨터 간에 데이터를 송수신할 때 쓰이는 약속과 같다. 소켓의 생성 int socket (int domain, int type, int protocol); 소켓을 생성하기 위해서는 3가지 파라미터가 필요한데, domain은 프로토콜 체계(Protocol Family) type은 소켓의 데이터 전송 방식 protocol은 프로토콜 방식 * 프로토콜 체계에는 PF_INET(IPv4 인터넷 프로토콜 체계), PF_INET6(IPv6 인터넷 프로토콜 체계) 등이 있다. 소켓의 타입 대부분 실무에서는 IPv4 인터넷 프로토콜 체계를 사용하는데 해당 프로토콜 체계 아래는 2가지의 데이터 전송 방식이 존재한다. 연결지향형 소켓(SOCK_STREAM), ..

네트워크 2020.12.28

[클린코드] 4장 주석

코드를 깔끔하게 정리해서 코드가 모든 것을 말해준다면 주석은 필요가 없다. 그리고 코드가 변화하고 합쳐지는 과정에서 주석도 그에 따라 유지 보수가 되어야하지만 사실상 쉽지가 않다(코드 유지보수도 힘들어 죽겠는데.. 주석까지..? 이런 느낌이 아닐까). 주석을 줄이고 되도록이면 코드로 의도를 표현하자. 주석은 나쁜 코드를 보완하지 못한다 주석을 쓰는 이유는 대개 코드의 품질이 나쁘기 때문이다. 코드가 어지럽고 복잡해서 주석을 쓰는거라면 차라리 그 시간에 코드를 더 깔끔히 만들어라. 코드로 의도를 표현하라 코드만으로 의도를 전달하기 힘든 경우가 있다. 그럴 때 주석이 필요하다고 말하지만, 주석 대신 함수로 설명해도 충분하다! 아래와 같이 주석 대신 함수명을 통해서 코드의 의도를 설명할 수도 있다. // 학생..

클린코드 2020.12.27

[네트워크 - 윤성우의 열혈 TCP/IP] 네트워크 프로그래밍과 소켓의 이해

소켓 네트워크 프로그래밍에서 소켓은 인터넷 혹은 네트워크로 연결된 두 개의 컴퓨터가 데이터를 송수신할 수 있도록 하는 역할을 담당한다. 소켓이라는 이름이 붙은 이유는 '연결'을 담당하기 때문이다. 소켓의 종류 소켓의 종류는 역할에 따라 두 가지로 나뉜다. 연결 요청을 기다리고 데이터를 전송하는 서버 소켓과 서버 소켓에게 연결을 요청하고 전송받은 데이터를 읽는 클라이언트 소켓이 있다. 소켓 생성 과정 서버 소켓 생성 과정은 아래와 같다. socket() - 서버 소켓 생성 bind() - IP 주소 + PORT 정보 할당 listen() - 클라이언트의 연결 요청을 대기 accept() - 클라이언트의 연결 요청 수락 클라이언트 소켓 생성 과정은 더 간단하다. socket() - 클라이언트 소켓 생성 co..

네트워크 2020.12.27

[프로그래머스/python] 전화번호 목록

programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 해시... 문제였지만 해시로 풀진 않았다. 로직 1. phone_book을 소팅해준다. 2. length == 1일 경우는 명백히 True 케이스이므로 바로 리턴해준다. (⁕ 매우 쵸큼이지만 효율성을 높여줘서 그냥 넣었다.) 3. prefix를 하나 설정하고, prefix 이후 ~ prefix와 맨 앞자리가 달라지기 전까지를 target으로 삼고 find()로 prefix..

코테 준비 2020.12.21

[백준 2887번 / python] 행성 터널 - 실패

2887번: 행성 터널 멋모르고 도전했던 행성 터널문제.. 테스트 케이스는 통과가 되는데, 제출 결과는 '틀렸습니다'..😂 백준 문제를 오랜만에 풀어봤는데.. 개인적으로는 프로그래머스가 해당 문제에 대해 서로 공유할 수 있는 커뮤니티 형성이 더 잘 되어 있어서 문제가 막힐 때 힌트를 얻어가기 더 쉬워서 좋다. 물론 물어볼 곳이 따로 있다면 상관없지만, 혼자 공부하는 사람들에게는 가끔 벅차😅ㅠㅠ 로직 0. 문제에서 주어진 input으로 예시를 들어보겠다 5 11 -15 -15 14 -5 -15 -1 -1 -5 10 -4 -1 19 -4 19 1. 먼저 x, y, z에 대해서 각각 (value, index)를 원소로 한 minHeap을 만든다. 예를 들면 minheap에는 아래와 같은 순서로 정보가 저장되어..

코테 준비 2020.12.21

코드스쿼드 1차 테스트 후기

github.com/jihye-woo/code_squad_test/tree/step-3 일단 스스로에게 가장 아쉬웠던 부분은 추가적으로 구현하라고 했던 걸 제시간 안해 해내지 못했던 것...ㅠ 2차 면접 전까지 좀 더 리펙토링을 하면서 추가해나가야겠다. 커밋 메세지 그리고 커밋 메세지를 작성하다보니 기능단위가 아니게 되어버렸다. 좀 더 유의미한 커밋 메세지를 작성하기 위해서는 프로젝트에 본격적으로 임하기 전에 좀 더 구체적인 체크포인트를 만들어두고 최대한 그 체크포인트가 커밋 지점이 될 수 있도록 해야겠다. 그리고 체크포인트를 구체적으로 만드는 방법은 코드레벨로 들어가기전에 좀 더 구체적으로 머릿 속에 내가 설계한 프로젝트들이 그려지도록 연습이 필요할 것같다. 이건 그냥 프로젝트를 많이 해보는 수밖에....

카테고리 없음 2020.12.15

[OOP] 클래스의 의존성 - 우아한 객체 지향 참고하여 수정

디자인 패턴을 공부하기 위해서는 클래스와의 관계를 파악하는 것이 중요하다. 그리고 클래스와의 관계를 파악할 때는 개인적으로 UML을 그려보는 것이 가장 좋다고 생각한다. 그리고 UML을 공부하다보면 항상 relationship의 개념이 모호할 때가 많다. 오늘은 그 모호한 개념들을 좀 더 확실하게 정리해보고자 UML의 대표적인 relationship에 대해 포스팅해보려 한다. 우아한 객체 지향 중 클래스 의존성 종류에 대한 조영호 님의 설명 👍 우아한 객체 지향 영상에서 조영호님이 쉽고 명확하게 설명해주셔서 감명받고 기존에 클래스간의 관계에 대해 정리해놓은 이 글을 수정하기로 했다. Association (A "has a" B) : 연관관계 보통 Association 관계에서 B는 A의 field에서 a..

카테고리 없음 2020.11.29

[클린코드] 3장 함수

작게 만들어라! 물론 사람마다 '작다'는 기준은 다르다고 생각한다. 책에 나와있는 조금 더 명료한 기준을 들자면 함수의 들여쓰기 수준은 1단 혹은 2단을 넘어가면 안된다. 그리고 if/else/while statement에 들어가는 블록은 한 줄이어야.. 한다고 나와있지만 현업(경험이 없는 지혜이지만)에서 그게 가능할까라는 의문이 든다. 과도한 캡슐화, 추상화는 오히려 독이 되지 않을까 싶어서 이 부분은 참고만 하고 넘어가야겠다. 어쨌든 책에서 말하고자 하는 바는 함수를 장황하게 쓰지 말라는 거니까. 한 가지만 해라! 함수는 한 가지만 잘하면 된다. 그리고 그것만 해야한다. 사실 OOP를 접하다보면 항상 듣는 말이다. 그리고 책에서 함수를 만드는 이유를 '큰 개념을 다음 추상화 수준에서 여러 단계로 나눠..

클린코드 2020.11.29