profile
Quit talking, Begin doing
태그 목록
전체보기 (81)django(10)위코드(7)WeCode(7)Crawling(7)scraping(6)python(5)Database(5)Spring(4)Java(4)web(4)ORM(4)OneToOne(3)mysql(3)csv(3)git(3)Proxy(3)JWT(3)modeling(3)decorator(3)뮤텍스(3)ManyToMany(3)C(3)Flask(3)sql(2)세마포어(2)service(2)fp(2)http(2)linux(2)Design Pattern(2)Web Scraping(2)functional programming(2)Token(2)프록시 패턴(2)함수형 프로그래밍(2)logging(2)로깅(2)node.js(2)Monad(2)project(2)stack(2)model(2)Sequelize(2)log-in(2)데코레이터 패턴(2)redis(2)로그아웃(2)알고리즘(2)relation(2)nosql(2)mutex(2)promise(2)OneToMany(2)mac(2)sign-in(2)agile(1)scrum(1)호이스팅(1)order(1)S3(1)Linker(1)process(1)해시(1)Functor(1)heap(1)정적(1)Request(1)Response(1)동적 프록시(1)Mutual Exclusive(1)nodejs(1)tig(1)path(1)(1)initial setting(1)free(1)peterson's solution(1)boto3(1)stdin(1)Module(1)freeze(1)pillow(1)MVC(1)객체지향 프로그래밍(1)development(1)역페이지 테이블(1)structure(1)재귀호출(1)http통신(1)단일 책임 원치(1)JOIN(1)콜백 패턴(1)함수표현식(1)pyjwt(1)View(1)bash(1)비크립트(1)class(1)network(1)branch(1)printf(1)JavaScript(1)pagination(1)cart(1)동적(1)dictionary(1)함수포인터(1)socket(1)BeanPostProcessor(1)method(1)Backend(1)offset(1)쇠막대기(1)프록시(1)query(1)reculsive(1)molloc(1)IO(1)hoisting(1)url parameter(1)Hashing(1)ec2(1)feature(1)https(1)Node(1)systemctl(1)가비지콜렉터(1)size_t(1)Paging(1)msa(1)aop(1)loop(1)relational(1)bcrypt(1)social(1)bulk_create(1)context(1)이분검색(1)장바구니(1)virtual env(1)재귀함수(1)Spin Lock(1)authorization(1)Demand Paging(1)architecture(1)synchronized(1)self(1)pointer(1)Preprocessor(1)monitor(1)update(1)CSS(1)함수선언(1)Strategy(1)html(1)single responsbility(1)스핀락(1)주문(1)bin(1)conditional variable(1)추상 내부 클래스(1)logger(1)log(1)--force(1)프래임(1)memory(1)컴파일(1)모나드(1)페이지 테이블(1)v8(1)페이지 폴트(1)조건변수(1)data(1)상호배제(1)Table(1)암호화(1)management(1)스택(1)master(1)algorithmn(1)gunicorn(1)sign-up(1)aws(1)template method pattern(1)github(1)app(1)객체지향(1)함수선언식(1)전략 패턴(1)subquery(1)모니터(1)hot fix(1)collector(1)LIMIT(1)2진수(1)systemd(1)binary(1)변수선언(1)garbage(1)virtual memory(1)재귀(1)Critical Section(1)race condition(1)깃허브(1)선분이력(1)피터슨의 해결안(1)pandas(1)(1)optional(1)data structure(1)해싱(1)save(1)이력관리(1)임계영역(1)google(1)static(1)underflow(1)로그(1)Auth(1)binary hacks(1)release(1)translation unit(1)요구 페이징(1)로그인(1)임계구역(1)프록시 팩토리(1)함수형(1)path parameter(1)JDK 동적 프록시(1)asynchronous(1)key-value(1)prefetch_related(1)non-relational(1)unit test(1)referencing(1)test.py(1)terminal(1)TCP/IP(1)mysqldump(1)cglib(1)caching(1)GET(1)assembly(1)compile(1)프로그래머스(1)scala(1)페이지(1)develop(1)OOP(1)rebase(1)queryset(1)rds(1)복호화(1)점이력(1)동기화(1)

[함수형 프로그래밍] 함수 체인

우리가 일반적으로 사용하는 list.map((a) ⇒ a + 1) 과 같은 것들은 모나드가 적용된 예이다. 여기서 list가 위에서 알아본 Monad 이다. Array 객체안에는 실제 heap 메모리의 시작주소(배열)를 가리키고 있는 포인터변수가 멤버변수로 있을 것이

2022년 8월 15일
·
0개의 댓글
·

[함수형 프로그래밍] 모나드

학문적으로 모나드를 이해해보려 했지만 짧은 시간에 모나드를 이해하기는 쉽지 않았다. 그래서 모나드가 주는 가치에 대해서 실제로 모나드가 어떻게 사용되는지에 대해서 알아보면 이해가 좀 더 쉬울 수 있다.함수형 프로그래밍은 함수의 합성을 통해서 프로그램을 이어나가는 패러다

2022년 8월 15일
·
0개의 댓글
·

[함수형 프로그래밍] 함수형 프로그래밍

함수는 input을 받으면 일정한 output을 뱉는 코드 묶음외부 변수가 없으면 일정한 input을 넣으면 “반드시” 일정한 output이 나온다외부 변수를 사용하지 않는다반드시 함수 스코프 범위 안에 있는 변수만 사용한다상태를 변경하지 않는다매개변수로 배열이나 객체

2022년 8월 12일
·
0개의 댓글
·

[비트 연산] 2진수를 활용한 여러가지 꼼수

이번 포스팅에서는 2진수의 특성과 비트연산을 활용해서 할수 있는 여러가지 프로그래밍적인 기법을 알아보겠다.성능을 위해서 실제로 우리가 작성한 코드를 컴파일러 수준에서 앞으로 배울 연산들로 바꿔주는 경우도 있다. 이렇게 2진수를 활용한 여러가지 꼼수(?)들을 사용해서 컴

2022년 7월 5일
·
0개의 댓글
·

[메모리 관리] 가상 메모리

이번에는 운영체제의 메모리 관리의 핵심인 가상메모리에 대해서 알아보겠다.다음과 같은 상황을 상상해보자8GB 메모리에 실행파일 하나의 크기가 1GB인 파일이 20개가 실행중1GB크기의 프로세스가 20개면 20GB인데 어떻게 8GB메모리에서 실행가능할까?운영체제에서는 8G

2022년 6월 28일
·
0개의 댓글
·

[프로세스 동기화] 모니터

세마포어와 뮤텍스를 통해서 임계구역에 대해 상호배제를 통한 동기화를 알아보았다. 두개의 동기화 방법의 단점이라면 임계구역으로 들어가기전 wait(), 임계구역을 빠져나올때 signal 혹은 release를 해주는 등의 코드를 프로그래머가 직접 넣어주어야 하는것이다. 프

2022년 6월 25일
·
0개의 댓글
·

[프로세스 동기화] 세마포어

뮤텍스를 통한 프로세스 동기화에서 멀티코어 cpu인 경우 스핀락을 통해서 문맥교환 없이 스레드들은 뮤텍스 락을 얻기 위해 경합하고 임계구역에 접근하는 방법을 알아보았다. 하지만 cpu를 획득 하기 위해서 끊임없이 반복문을 실행하고 있는 바쁜대기(busy waiting

2022년 6월 24일
·
0개의 댓글
·

[프로세스 동기화] 뮤텍스

피터슨의 해결안은 이론적으로는 프로세스 동기화를 위한 3가지 조건을 만족하지만 연산의 하드웨어 구현상의 문제로 인해서 스레드들이 임계구역으로 접근하기 위한 권한을 얻는 과정에서 경합상황이 발생하게 되었다.이런 구현상의 한계는 운영체제를 디자인 할 때 부터 "임계구역으로

2022년 6월 24일
·
0개의 댓글
·

[프로세스 동기화] Peterson's Solution

프로세스의 동기화 이슈는 프로그래밍을 하면서 만나는 중요한 이슈다. 운영체제가 사용하는 프로세스 번호를 관리하는 전역변수 next_available_pid가 있다. 프로그램 실행 도중 프로세스A와 프로세스B가 생성되었다.두 프로세스는 우연히 비슷한 시기에 프로세스를 생

2022년 6월 23일
·
0개의 댓글
·

[AOP] 로그 기능 적용 : 빈 후처리기

동적프록시 적용 포스팅에서 config를 따로 만들어서 타겟에 동적프록시가 적용되도록하고 연관된 빈을 일일이 연결해줬다. 이렇게 동적 프록시를 적용하면 컨테이너의 컴포넌트 스캔 대상에 들어갈 수 없기 때문에 불편한 점이 있었다. 컴포넌트 스캔을 도중 빈이 컨테이너에 등

2022년 6월 12일
·
0개의 댓글
·

[AOP] 로그 기능 적용 : 동적 프록시

문제 인터페이스를 사용한 프록시 패턴을 사용하면서 프록시를 적용하고자 하는 클래스 개수 n개 만큼 로깅 코드를 계속 생성해야하는 문제가 있었다. 프록시를 적용하고자 하는 클래스마다 인터페이스와 프록시 구체클래스를 만들어줘야 했기 때문이다. 이 문제를 해결하기 위해 JD

2022년 6월 6일
·
0개의 댓글
·

[디자인 패턴, AOP] 로그 기능 적용 : 프록시 패턴

전략패턴을 통해서 로깅을 적용해서 비지니스 로직을 담당하는 클래스와 로깅(부가기능)을 담당하는 클래스를 분리할 수 있었지만 여전히 메인 기능에 해당하는 코드를 변경해야 하는 단점이 있었다. 이 문제를 해결하기 위해서 프록시 패턴을 사용해서 메인 기능의 수정 없이 요청

2022년 6월 6일
·
0개의 댓글
·

[디자인 패턴] 로그 기능 적용 : 전략 패턴

이전 포스팅에서 템플릿 메서드 패턴을 통해서 비지니스로직과 부가기능인 로깅을 분리했었다. 하지만 상속을 사용해서 결합도가 증가하고, 추상 내포클래스를 사용해서 가독성이 떨어지는 등의 문제가 있었다.이런 문제들을 해결하기 위해 콜백을 사용한 전략패턴을 통해서 로깅부분을

2022년 6월 5일
·
0개의 댓글
·

[디자인 패턴] 로그 기능 적용 : 템플릿 메서드 패턴

WAS서버에 요청이 들어왔다가 http response로 나가기까지 몇분이 걸리는지 측정해야하는 상황을 가정해보자.이런식으로 표시할 수 있다.단점이 있다면, 모든 기능의 비지니스 로직 전과 후에 시간을 찍어주는 기능을 넣어야 한다. 결국 이런식의 설계는 유지보수를 힘들

2022년 6월 4일
·
0개의 댓글
·

[알고리즘] 정수를 문자열로 출력하기

문자열 출력 함수에서 어떻게 매개변수로 넣은 정수형을 곧바로 문자열로 포매팅해서 출력할까?문자열 출력함수와 가변 매개변수에 대해서는 다른 포스팅에서 알아보도록 하고, 이번에는 어떻게 정수형의 데이터를 문자열로 출력하는지에 대해서 알아보겠다.우선 매개변수로 들어온 정수가

2022년 4월 9일
·
0개의 댓글
·

[포인터] 함수포인터 동작 원리

함수포인터의 작동원리를 이해하기 위해서는 컴파일의 과정을 먼저 이해해야 한다.clang 컴파일러는 4가지 단계를 거쳐 소스코드를 실행파일로 만든다. "컴파일"은 넓은 의미에서 이 과정을 포괄하는 말이다. 하지만 좁은 의미의 컴파일은 전처리 다음단계인 translatio

2022년 2월 21일
·
0개의 댓글
·

Why you get wrong with size_t negative loop?

This is my personal experience when I code a small game with C. What I thought for size_t is a simple and ideal type to break negative loop as it can

2022년 1월 14일
·
0개의 댓글
·

Algorithm : length of the shortest string

This posting is about the better way to solve the algorithmn problem in Leetcode there is a set of string as input > input : abcdabc and output wou

2021년 7월 25일
·
0개의 댓글
·

Node js 메모리 관리

node js 는 어떻게 메모리 관리를 하는지 알아보자V8엔진은 Javascript를 크롬브라우저에서 돌려주는 엔진이다. V8엔진은 Javascript를 assembly code로 컴파일해준다. node js는 V8엔진을 C++로 wrapping(?)해서 Operati

2021년 4월 23일
·
0개의 댓글
·

Static method VS Class method

정적 매서드와 클래스 매서드의 차이점에 대해서 알아보자. 우선 리눅스에서 어플리케이션이 빌드되고 프로세스가 어떻게 생겼는지 알아보자. 리눅스에서 하나의 프로세스는 4개의 영역을가진다 > DATA HEAP STACK TEXT DATA 빌드가 되고나면 가장 먼저 ST

2021년 4월 21일
·
0개의 댓글
·