목록전체 글 (281)
내 잡다한 노트
내 노트북에서 virtualbox로 리눅스 서버를 접속하곤 했는데 윈도우 터미널에서 리눅스 서버에 접속하고 싶다는 생각이 수업듣다가 해보고싶어서 바로 해보게됐음. 먼저, Windows Terminal을 마이크로소프트 store에서 다운 받아야함. 다 깔았으면 아래 명령어를 입력해 openssh를 활성화시킨다. $ Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 그 다음 ssh [user]@[IP주소] -p [port] ssh니까 나는 그냥 22번 포트를 사용했다. 그런데 연결이 거부됐다고 떴다. 왜그런지 구글링을 해보니 1. ubuntu에 ssh가 설치가 안되어 있거나 2. 방화벽에 막히는 경우라고 한다. 먼저 1번으로 문제해결을 해보기로 결..
# stdlib.h stdlib.h는 C 표준 라이브러리의 일부로, 프로그램의 메모리 관리, 난수 생성, 문자열 변환, 동적 메모리 할당, 프로그램 종료 등과 같은 일반적인 유틸리티 함수를 포함하고 있습니다. 여기에는 malloc(), free(), realloc()과 같은 동적 메모리 할당 함수, rand()와 srand()와 같은 난수 생성 함수, atoi()와 atof()와 같은 문자열 변환 함수, exit()와 같은 프로그램 종료 함수, 그리고 system()과 같은 명령어 실행 함수가 포함됩니다. 이러한 함수들은 C 프로그래밍에서 자주 사용되며, 특히 메모리 관리와 관련된 함수들은 동적 메모리 할당이 필요한 프로그램에서 필수적으로 사용됩니다. # stdio.h stdio.h는 C언어에서 표준 입..
배열 포인터는 배열의 첫번째 요소를 가리키는 포인터이며, 이걸 사용하면 배열을 간단하고 효율적으로 다룰 수 있다. 다차원 배열을 표현하는데 편하다. 사용하는 이유는 다양하다. 예를 들어, 함수에서 배열을 인수로 전달해야 할 때 포인터를 사용하여 배열을 전달할 수 있다. 또한, 다차원 배열의 경우에는 배열 포인터를 사용하여 배열의 요소에 빠르게 접근할 수 있다. int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; 이 2차원 배열을... int (*pArr)[4] = arr; 이렇게 선언할 수 있음. pArr은 각 행의 첫번째 원소의 주소값을 가리키다보니 [4]라는 열의 크기만 같이 선언하면 2차원 배열에 다 접근할 수 있게된다.
클래스의 attribute __init__ 생성자 안에서 self.attribute = value 의 형식을 작성해 독립적인 객체들만의 고유한 변수를 만들 수 있다. 밑의 클래스 변수와 구별해야한다. 다른 방법으로는 인스턴스를 만든 뒤 속성을 추가하는 방식이 있다. 그러면 해당 인스턴스에만 추가한 속성이 생긴다. 상속 상속은 말 그대로 어떤 클래스에 다른 클래스의 기능을 물려받을 수 있도록 할 수 있는 기능이다. 용도))) 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용. 문법)) class child(parent): pass 상속 관계를 영어로 is-a 관계라고 부른다. 다중상속도 가능해서 클래스 이름 옆 괄호안에 상속할 부모클래스를 여러개 넣을 수 있다. 메소드 탐색..
Server.py from socket import * serverSock = socket(AF_INET, SOCK_STREAM) # 소켓 객체를 생성. param1: Address Family(=IPv4를 의미함), param2: socket type # serverSock.bind(('', 8080)) # bind는 서버에서 반드시 필요하다고 함. 생성된 소켓의 번호와 AF를 연결해주는 것. # 8080번 포트에서 모든 인터페이스에게 연결되도록 한다라는 의미 ''는 모든 인터페이스와 연결 # 즉 브로드캐스트. serverSock.listen(1) # 상대방의 접속을 기다리는 단계 # 인자로 1을 준 것은 소켓이 총 몇개의 동시접속을 허용할 것인지에 대한 이야기. 하나만 동시접속 가능 # 입력하지 않으..
https://engineering.linecorp.com/ko/blog/things-i-prepared-to-be-a-line-server-developer
스케일링 어떤 값의 범위를 다른 값의 범위로 변환하는 것을 의미한다. 스케일링을 하면 값의 범위가 변경되어 이미지나 데이터의 특성을 분석하거나 처리하는데 용이해진다. 영상처리를 공부하면서 의문점이 들었다. 왜 굳이 0부터 1까지의 값으로 스케일링을 진행하는가? Answer) 일반적으로 픽셀 값의 범위가 0부터 255까지로 정규화된다. 이는 8비트로 표현되는데, 이걸 컴퓨터에서 계산하기에는 큰 값을 가지기 때문에, 연산량을 줄이고 속도를 향상시키기 위해 작은 값으로 변환하는 것이 좋다.
# fork( ) : 기존 프로세스를 복사하여 새 프로세스를 만드는 시스템 함수 부모 프로세스의 fork 리턴 값은 자식 프로세스의 pid 자식 프로세스의 fork 리턴 값은 0 부모 프로세스와 자식 프로세스는 독립적으로 실행된다. 그래서 멀티프로세싱이라고 부를 수도 있다. 부모에서 fork가 호출되면 부모의 복사본인 새로운 자식이 생성되고, 둘 다 fork 호출이 발생한 지점부터 계속 실행된다. 즉, 부모에서 이미 실행된 코드는 하위에서 실행되지 않는다. fork 호출 후, 메모리의 code, stack, data 부분에서 자식은 read only 상태로만 부모 메모리에 있는 변수 등을 보다가 활용을 해야하는 순간이 오면 그 변수를 새롭게 만들어서 부모 메모리의 변수와는 독립적으로 움직인다. 이렇게 하..