📒 Tech Note/웹 프로그래밍

    [Python] GIL, Global Interpreter Lock이란?

    [Python] GIL, Global Interpreter Lock이란?

    안녕하세요, 개발자 하댑입니다. 오늘은 파이썬 멀티스레드를 사용하려고 한다면 알아야하는 GIL에 대해 알아보겠습니다. 파이썬의 경우 단순히 멀티스레딩을 코드로 구현해서 테스팅을 해보면 멀티스레딩의 연산 속도가 성능이 나쁜 것을 확인할 수 있습니다. 이런 결과가 나오는 이유는 바로 CPython Global Interpreter Lock, 즉 GIL이 적용되기 때문입니다. Global Interpreter Lock, GIL이 뭔데? Python Wiki에서는 다음과 같이 설명합니다. CPython에서 GIL은 파이썬 코드(bytecode)를 실행할 때에 여러 스레드를 사용할 경우, 단 하나의 스레드만 파이썬 객체에 접근할 수 있도록 제한하는 mutex 이다. 그리고 이 lock이 필요한 이유는 CPytho..

    [JS] 메시지 큐와 이벤트 루프 (Message Queue and Event Loop)

    [JS] 메시지 큐와 이벤트 루프 (Message Queue and Event Loop)

    자바스크립트의 특징 자바스크립트는 기본적으로 싱글 쓰레드 기반 언어이기 때문에 호출 스택이 하나이고, 한번에 한 가지 일만 처리할 수 있습니다. 자바스크립트를 작동시키는 엔진은 메모리힙(Memory Heap)과 콜스택(CallStack)을 동작시킵니다. 하지만 자바스크립트로 AJAX처리나 setTimeOut, addEventListener 등 함수를 이용해 비동기적 작업 처리가 가능합니다. 이런 작업이 가능한 이유는 자바스크립트 런타임이 메모리힙과 스택으로만 이뤄진 것이 아니라 브라우저에서 제공하는 Web API와 Event Queue와 Event Loop라는 것이 존재하기 때문입니다. 메시지 큐 메시지 큐는 자료구조 큐(Queue) 기반으로 구서오디어 있습니다. LIFO(Last in First Out..

    [JS] 변수와 함수 정의

    [JS] 변수와 함수 정의

    변수 변수는 상황에 따라 변할 수 있는 값 let myname; // 선언 myname = 'Hazel'; // 할당 표현식에 변수를 사용할 수 있으며, 결과물을 다시 변수로 담을 수 있다. 타입 숫자, 문자열, Boolean, 배열, 객체, 함수, undefined 특정값의 타입을 확인할 때 typeof 값; 실습 예시 let string = '1'; console.log(typeof string) // --- string let number = 1; console.log(typeof number) // --- number 함수 함수 선언식 function getSquareArea(base, height) { let SquareArea = base * height; return SquareArea } ..

    [HTTP/3] HTTP3 등장! HTTP1부터 HTTP3까지 살펴보기

    [HTTP/3] HTTP3 등장! HTTP1부터 HTTP3까지 살펴보기

    이 포스팅은 Medium의 Anuradha Wickramarachchi의 HTTP 3 is Out and About!글을 번역한 글입니다. HTTP가 뭘까? HTTP는 Hypertext Transfer Protocol의 약자이다. 웹 서버에서 브라우저까지 웹 페이지 데이터들을 전송하기 위해 정한 규칙들이라고 할 수 있다. HTTPS는 간단히 말해서 더 나은 보안을 위해 동일한 프로토콜이 암호화 계층을 통해 사용된다는 것을 의미한다. HTTP and its layers (TCP/IP Stack). Source: Mozilla Dev OSI(Open Systems Interconnections) Interconnections of Internetworking/Communications 사양을 잘 알고 있는 ..

    [JS] 참고자료 모음

    [JS] 참고자료 모음

    요즘 freecodecamp에서 자바스크립트 파트를 계속 공부하고 있다. 정말 주옥같은 코딩 수업 자료다.. 복습용 강추. 빠르게 진도를 뽑고 싶기 때문에 일일히 노트를 정리해 올리긴 시간이 살짝 아깝고, 좋은 자료를 찾으면 여기에 조금씩 업데이트 해보려고 한다. 자바스크립트 공부하면서 어려웠던 부분만 쏙쏙 뽑아서 잘 정리해두신 블로그 글 - https://velog.io/@bathingape/series/JavaScript

    [JS] 정규식 패턴 [xyz]과 정규식 메소드 match

    [JS] 정규식 패턴 [xyz]과 정규식 메소드 match

    Javascript Regular Expression 정규식 패턴 [xyz] 문자셋(Character set) 이다. 이 패턴은 괄호 안의 문자(이스케이프 시퀀스 포함)를 모두 대응한다. 점(.)이나 별표(*)같은 특수 문자는 문자셋 내부에서는 특수 문자가 아니다. 따라서 따로 이스케이프시킬 필요가 없다. 하이픈을 이용해 문자 범위를 지정할 수도 있다. 예를 들어 [a-d]는 패턴 [abcd]와 똑같이 동작한다. 패턴 /[a-z.]+/ 와 /[\w.]+/ 는 "test.i.ng" 전체 문자열이 일치한다. + 앞의 표현식이 1회 이상 연속으로 반복되는 부분과 대응한다. {1,} 와 같은 의미. 예를 들어, /a+/ 는 "candy"의 'a'에 대응되고 "caaaaaaandy" 의 모든 'a'들에 대응되지만..

    OAuth 2.0 이해하기

    OAuth 2.0 이해하기

    OAuth 2.0 OAuth의 정의와 간단한 활용법을 알아보자. OAuth? OAuth는 인증을 위한 오픈 스탠더드 프로토콜이다. 이렇게 읽으면 사실 별로 와닿는 설명은 아닌 것 같다. 웹 상에서 Facebook, Twitter, Google 아이디와 비밀번호를 가지고 로그인하거나 회원가입하는 경우를 많이 봤죠? 흔히 가입되어 있는 인터넷 포탈 사이트의 서비스 기능을 다른 애플리케이션(데스크톱, 웹, 모바일 등)에서 사용할 수 있도록 한 것이다. OAuth 1.0은 2007년에 처음 등장했고, 보안 문제를 해결한 수정 버전이 2008년에 나왔다. 현재 주로 사용되고 있는 OAuth는 2.0 버전이다. OAuth의 핵심 기능 OAuth는 유저의 요청을 통해 아이디와 비밀번호를 통해 AccessToken 을..

    [Python] 파이썬으로 Json 인코더와 디코더 사용하기(읽고 쓰기)

    [Python] 파이썬으로 Json 인코더와 디코더 사용하기(읽고 쓰기)

    python으로 Json 데이터를 인코딩, 디코딩하는 방법을 알아보자. Json JSON은 Javascript Object Notation의 약자로 웹 브라우저와 웹 서버 사이에서 데이터 교환 시 널리 사용하고 있다. 가장 많이 사용되는 JSON 포맷은 key-value pair 컬렌션이다. 먼저, Json 데이터 타입에 대해 알아보면, json은 다음 중 하나 또는 여러개의 데이터 타입을 포함할 수 있다. string number object(JSON object) array boolean null 그리고 다음 데이터 타입은 포함하지 못 한다. function date undefined JSON 인코딩/디코딩 Python Object를 Json 문자열로 변경하는 과정을 Json 인코딩이라고 부르고, J..

    [CS] C언어의 기초 (1)

    [CS] C언어의 기초 (1)

    변수와 상수 1) 변수는 변할 수 있는 데이터, 상수는 변할 수 없는 데이터 2) 컴퓨터가 정수를 표현할 때는 2의 보수 방식(0과 1을 반대로 바꿔주고 마지막 1을 더해줌)을 사용한다. (실수 = 부호 + 지수 + 유효숫자) 기본 입출력 1) C언어에서 입력받거나 출력할 때는 형식 지정자를 따름 2) prinf()는 단순히 데이터 넘기기, scanf()는 입력받을 주소를 나타내기 위해 & 사용 연습) 실수형을 입력 받아서 소수점 셋째 자리까지 출력해보기 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { double a; scanf('%lf', &a); prinf('%.f\n', a); system("pause"); return 0; } 연산자 대입연..

    PyPI 패키지 업로드 해보기

    PyPI 패키지 업로드 해보기

    PyPI 패키지 업로드 해보기 파이썬 패키지 인덱스(PyPI)는 파이썬 프로젝트를 부품화해서 아카이빙할 수 있는 메타데이터 서비스이다. 최신 PyPI에 대한 문서는 Python Packaging 사용자 가이드에서 참고할 수 있다. Python은 다른 개발자가 오픈 소스 라이센스 조건에 따라 소프트웨어를 사용할 수 있도록하는 사용자 커뮤니티가 활발하게 지원된다. Udacity AWS ML Foundation 강의 내용을 참고해서 PyPI 패키지를 업로드해봤다. PyPi vs. Test PyPi pipy.org와 test.pypi.org는 다른 웹사이트다. 회원가입도 물론 각기 따로 해줘야한다. 패키지 이름은 반드시 유니크해야 한다. 커맨드 창에서 입력할 때는 언더데쉬(_)를 사용해도, repository에..