프로그래밍 93

[Python] 파이썬 Socket.IO 오류 unexpected response code 400

0. 선 요약 - python-socket.io와 node.js socket.io간 버전 의존성이 있음. - python-socket.io v5, node.js socket.io v2로 낮춰서 통신 수행 - python과 node간 socket 통신은 가능하다. 1. 상황 (1) 서로 떨어진 Node.js와 Python간의 통신을 Socket.Io로 수행. (2) Node.js (서버) socket.io와 Python (client) socket.io 통신시 unexpected respnse code 400 또는 요청이 씹히는 경우가 발생. (3) Connection Refused-연결 거부(서버가 꺼져있는 등의 이유로)가 아님 (4) 기존 프로토타입 테스트때 Python-Node간 통신이 가능함을 확인..

삼성 SW 역량테스트 B형/Pro 대비 - 체이닝 Hash 테이블 만들기

1. Hash란? Hash 함수는 어떤 값의 범위를 다시금 0~X까지로 매핑하는 역할을 수행한다. 이러한 Hash 함수의 역할을 통해서 범위에 비하여 값이 너무 sparse했던 애들을 압축할 수 있다. 혹은 전체 범위 중 특정 값에 몰려 있던 것을 퍼트리는 역할도 수행하 수 있다. 예를 들면 어떤 값은 알파뉴메릭 최대 30자 문자열이 10만개 있다고 하자. 그러면 이 값의 범위는 a-zA-Z0-9이므로 62^30승 ~= (2^6)^30 ..... 그렇다고 이 값을 full scan하기에는 최악의 경우에는 10만 * 30자 총 300만번의 search cost가 발생한다. 그러나 해당 문자열 값을 hash 함수를 이용하여 5000개로 나누어 담을 수 있다면, 한 해쉬 값당 20개씩 문자열이 저장된다. 그렇..

삼성 SW 역량테스트 B형/Pro 대비 - 단방향 Linked list 만들기

1. 단방향 Linked list Linked list는 하나의 단위로 구성된 Node에 다음 혹은 이전의 Node에 대한 주소 값을 저장하여 연결하는 list를 뜻한다. 배열과 달리 서로 인접하지 않은 메모리 영역에 노드를 저장할 수 있다. 또한 다음 값을 저장하고 있기 때문에 추가나 삭제시에 해당 값만 변경하면 되는 잇점이 있다. 물론 장점만 있는 것은 아니다. 만약 정렬된 상태일 때 배열의 경우 binary search와 같은 기법으로 O(n)의 탐색 시간을 O(logn)까지 떨어트릴 수 있지만, linked list의 경우 full scan을 해야 한다. 물론 여기서도 역량테스트 (Certi) B형(Pro) 기준으로, malloc과 같은 동적 할당 없이 구현한다. (free도 없다.) 2. 기본 ..

[서버] 작지만 강력한 미니 PC "PN50" - Ryzen 3세대, NUC 대체

1. 미니 PC - 초소형 폼팩터 HTPC 미니PC란 일반 데스크톱보다 작으면서 책상위에 올려두고 사용할 수 있는 PC를 말한다. 지금까지 간단한 홈씨어터 서버나 많은 공간을 차지하고 선정리가 복잡한 데스크톱 PC를 대체하는 수준에서 소수의 매니아들만 사용했었다. 사실 미니 PC는 꽤나 예전부터 사용되던 폼팩터로, 다양한 제품이 있었다. 이러한 제품들은 m-ATX 메인보드와 낮은 TDP를 가지는 CPU를 조합한 제품들이 많았고, 사실 전문적으로 생산하는 업체가 없었기 때문에 마이너한 분야로 취급 받았을 뿐이다. 그러나 인텔에서 NUC를 발매하게 되면서, 이 미니 PC 시장에 판도를 바꿔놨다. NUC의 경우 Next Unit of Computing으로 인텔에서 개발한 소형 폼팩터 개인 컴퓨터로, 손바닥만한..

[블로그] 티스토리 글 하단 카카오(SNS) 공유 버튼 만들기

티스토리 글 하단 카카오 공유 버튼 만들기 1. 하단에 고정된 공유 버튼이 필요한 이유 위 그림과 같이 하단 공유 버튼을 만들면 사람들이 쉽고 간편하게 내 글을 공유할 수 있다. 페이지 스크롤링을 하더라도 하단에 부착되어 계속 따라다니는 공유 버튼을 만들어 본다. 2. 버튼 이미지 파일 구하기 버튼에 사용될 이미지를 구한다. 만약 자신이 추가적으로 더 많은 링크를 넣고 싶다면 해당 이미지를 준비하자. 내가 사용한 이미지는 아래와 같다. 3. 이미지 파일을 서버에 올리기 티스토리라면, 관리 페이지 -> 꾸미기 -> 스킨편집 -> html 편집으로 접근하면 되고, 만약 워드프레스와 같은 설치형이라면 이미지를 서버에 올리면 된다. 기타 블로그라면 각 블로그에서 제공하는 이미지 업로드 기능을 사용하자. 티스토리..

삼성 SW 역량테스트 B형/Pro 대비 - C, C++ 큐 만들기

삼성 SW 역량테스트 B형/Pro 대비 - C, C++ 큐 만들기 1. 큐 큐는 First In, First Out 자료 구조로, 입력된 순서대로 출력되는 자료구조이다. 역량테스트 (Certi) B형(Pro)에서는 STL 사용이 불가능하고 최적화하는 단계가 필요하기 때문에 동적 할당 없이 전역으로 처리해야한다. 2. 기본 구조 함수 동작 Push 큐에 넣기(push back) Pop 큐에서 빼기 (pop front) Size 크기 반환 Empty 비어있는지 여부 반환 일반적으로 Pro(B형)에서는 속도에 따른 제한을 많이 두기 때문에 활용할 수 있는 최대한의 크기를 잡고, 큐가 오버플로우 되지 않음을 가정하고 작성한다. 3. 소스코드 #include #define Q_SIZE 5 int st, en; t..

[서버] NginX에서 Certbot 인증서 자동 갱신하기

NginX에서 Certbot 인증서 자동 갱신하기 1. certbot + NginX plugin 설치한 경우 아래와 같이 nginx 플러그인으로 설치한 경우 자동으로 Site conf에 SSL 인증서와 Redirection 옵션(선택시)이 들어간다. sudo apt-get install software-properties-common sudo apt-get update sudo apt-get install certbot sudo apt-get install python-certbot-nginx sudo certbot --nginx 이 경우에는 인증서 갱신시에 NginX를 켰다 끌 필요 없이 아래의 명령어를 사용하면 된다. sudo certbot renew --nginx 이제 이 내용을 crontab에 넣..

[서버] NginX에서 Certbot을 통해 간단하게 SSL 발급하기

NginX에서 Certbot을 통해 간단하게 SSL 발급하기 1. Certbot이란 말 그대로 SSL certificates를 발급해주는 프로그램으로, 기존에는 https를 위하여 SSL 인증서를 구매하여야 했지만 개인용에서는 쉽고 간편하게 무료로 SSL을 발급할 수 있게 해준다. Certbot 공식 홈페이지는 certbot.eff.org이며, 이곳에서 자신의 OS와 HTTPd 프로그램 명을 선택하면 설치법부터 사용 방법까지 확인해 볼 수 있다. 2. 도메인 서버 IP에 연결하기 당연한 얘기겠지만, 서버 IP에 도메인을 연결하여 80번 포트로 http 통신이 가능한 상태이어야 한다. 각 도메인 제공 홈페이지에서 A Record에 서버 IP를 설정하여 정상적으로 접근 가능한 상태로 만들어 두자. 3. ce..

[서버] 도메인으로 NginX에서 Reverse Proxy 설정하기

도메인으로 NginX에서 Reverse Proxy 설정하기 1. site conf 만들기 /etc/nginx/site-available 내부에 있는 default configuration을 site 도메인 이름으로 카피해보자. sudo cp /etc/nginx/site-available/default /etc/nginx/site-available/play.it-trip.com 2. site conf 수정하기 자신이 사용하는 편집기를 이용하여, play.it-trip.com의 conf 파일을 수정하자. server { listen 80; listen [::]:80; root /var/www/html; # 서버 도메인을 작성하면 된다. # 만약 여러개라면 공백을 두고 작성하자 # ex) server_name..

[깃] 초보자를 위한 - git 개념 및 명령어 한장 정리

초보자를 위한 - git 개념 및 명령어 한장 정리 내가 보려고 저장하는 한장 정리. 사용 편리를 위한 옵션들은 공부하는대로 추가할 예정.. 1. 깃 원리 깃은 버전 관리를 위한 툴으로, 소스 코드를 포함한 다양한 파일을 수정한 후 저장하게 되면 변경된 내용만 정리하여 버전으로 만들어 준다. 깃은 기본적으로 디렉터리를 작업 공간으로 한정하기 때문에, 원격 깃을 연결하여 push하지 않는 이상 로컬으로 동작한다. 리눅스의 경우 최신 버전은 git이 기본적으로 설치되어 있다. 만약 윈도우즈를 사용하거나 리눅스상에 설치되어 있지 않다면, 아래의 프로그램을 설치하여 사용할 수 있다. 윈도우즈 : https://git-scm.com/ 리눅스 : sudo apt-get install git 2. 깃 초기화 깃을 사..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사