전체 글 871

생활코딩 php, codeigniter 강의 - 1. php 기본, codeigniter MVC(w/ Docker, MacOS)

1. php 문법자바와 비교해서 유의해야할 점이나 중요한 부분만 작성해놓는다. 공통자바와 똑같이 세미콜론으로 표현을 끝낸다. echo 또는 print 명령어로 출력한다. . 으로 string concatenation을 할 수 있다. 여러 줄 주석은 자바처럼 /* */ 로 처리할 수 있다. $로 변수를 초기화할 수 있다. 변수 사용도 $로 불러와서 사용한다. 함수들 var_dump: 타입 및 값 출력 isset: 변수의 null 확인 array("원소들", ...) 로 배열을 선언한다. scandir(): 특정 경로의 파일 목록을 배열로 불러온다. basename(): 디렉토리 중 파일의 이름만 따온다. 보안상 공격자가 디렉토리 탐색을 못하도록 막아줄 수 있다. 함수 함수는 코드의 복잡도를 낮추고 의미를 ..

네트워크 이론 기초 - 4. L4 Layer - TCP, UDP

1. TCP TCP 개요 다시 한번 OSI 7 Layer의 전체적인 개념을 짚고 넘어간다. L4 레이어에서의 식별자는 Port 번호이다. Port 번호 단위가 나오면 L4 Layer 수준 이상으로 넘어가는 것이라고 생각하면 된다. TCP에는 연결(Connection, Session) 개념이 있다. TCP는 Client와 Sever로 구성된다. Server에서는 Socket을 열고 대기하고 있다(Listen). Client에서는 OS에서 3000번을 열었고, Server에서는 Web인 경우 보통 80번을 열기 때문에 위 그림처럼 트래픽이 전달되는 구조이다. 연결 대기 중이 아닌데 연결 요청이 오면 Kernel mode 수준에서 연결을 못받아준다는 응답을 보낸다. TCP 연결 과정: 3-way handsha..

Django로 프로젝트 세팅 with DRF, mysql, viewSet, pyTest

1. 프로젝트 생성, DB 연결 python 3.12.2, pyCharm을 통해서 프로젝트 생성 pip install poetry poetry init poetry add djangorestframework poetry add django-environ .env 파일을 만든다. SECRET_KEY와 DB 정보 등을 .env에 숨긴다. SECRET_KEY=.. DB_NAME=. DB_PORT=. DB_USER=. DB_PASSWORD=. DB_HOST=. settings.py에 아래처럼 설정한다. __file__은 코드가 작성된 현재 파일을 의미한다. os.path.abspath로 절대경로를 가져온 뒤, os.path.dirname으로 상위 경로의 디렉토리 이름을 BASE_DIR로 잡는다. BASE_DIR..

네트워크 이론 기초 -3. L3 Layer

1. L3 Packet Packet은 어떤 단위 데이터를 의미한다. L3의 Packet이 가장 대표적이며 L3 IP Packet이라고 부르면 좀 더 정확하다. Header와 Payload로 나뉘며 최대크기(MTU, Maximum Transmission Unit)은 1500 byte가 표준적이다. 강의를 따라 Wireshark를 통해 어떤 패킷의 16진수로 표현된 부분의 맨 앞부분을 클릭해봤다. 각각 Destination, Source 부분을 가르키며 이 부분이 (Ethernet) Header 부분이라고 한다. Encapsulation, Decapsulation 패킷은 인캡슐레이션화 되어있다. 아래 그림처럼 L2 레벨에서부터 Header - Payload 구조로 되어있고, 그 Payload 내부에는 다음..

파이썬 itertools.groupby 주의사항. 키가 연속으로 붙어있어야함

조회해온 객체를 같은 키값을 가진 것끼리 묶어서 그루핑하고 로직을 처리할려고 파이썬의 itertools.groupby를 사용 grouped_students = groupby(students, key=lambda x: (x.school, x.grade)) 학생들을 학교, 학년별로 묶음 그런데 잘 작동하지 않아 확인해보니, itertools의 groupby는 순회하면서 하나씩 비교하기 때문에 key값이 같은 요소들끼리 연속적으로 붙어있어야 정상 동작함 sorted(students, key=lambda x: (x.school, x.grade)) 로 먼저 정렬 후 groupby를 적용해야함

네트워크 이론 기초 -2. L2 Layer - NIC, Access, Distribution Switch, LAN/WAN

1. NIC(Network Interface Card) 흔히 랜카드(Local Area Network Card)라고 부르는 장비이다. 전문 영역에서는 '닉' 또는 '네트워크 인터페이스 카드'라고 한다. H/W 이므로 MAC 주소를 갖는다. 그리고 네트워크 도식상에서는 아래처럼 점으로 찍어서 표현된다. 네트워크 영역 단위 WAN(Wide), MAN(Metropolitan), LAN(Local) 순으로 네트워크를 구분한다. 랜카드 속도 1 Gbps 로 표시되는데, b가 소문자임에 유의해야한다. bit이지 Byte가 아니기 때문에 흔히 사용하는 1GB 대비 1/8 수준임을 인지하고 있어야한다. 참고로 10 Gbps급도 있는데, 이런 경우 케이블이 광통신 케이블(Optical fiber)로 되어있다. 2. L2..