오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

파이썬 9

[Python] WSGI란?

오늘은 늘 보지만 어색한 WSGI에 대해 알아보겠습니다. WSGI란? 먼저 WSGI를 한마디로 정리해보면 웹서버(Web Server)와 서버 어플리케이션 사이를 연결해주는 부분입니다. 물론 후려친 정의이지만 일단 이렇게 알아둡시다. 아직 웹서버와 웹 어플리케이션 차이를 모르신다면 아래 페이지를 통해 알아보세요! https://cocook.tistory.com/87 [Web] WAS와 Web Server 차이 3줄 정리 1. 웹서버는 정적페이지, WAS는 동적페이지 응답 2. 둘다 함께 배포하는 이유는 각자 잘하는 걸 하기 위함 3. 장고는 꼭 Webserver와 배포하자 장고 배포와 관련된 글을 보면 WS(Web Server, 웹 cocook.tistory.com 이를 조금 어렵게 말해보자면 웹서버와 웹..

Language/Python 2022.08.16

[Python] 파이썬 노답 삼형제(1) - 데코레이터

바야흐로 대개발자시대다. 많은 사람들이 다양한 이유로 IT업계로 모이고 있고 나도 그들 중 하나이다. 입문하는 사람들 대부분은 파이썬을 통해 이 곳에 발을 들인다. 파이썬이 상당히 배우기 쉬운 언어 중에 하나이기 때문이다. 일단 동적 타입 언어고 특별히 빌드과정 없이 스크립트상에서 바로 실행되기 때문에 입문 언어로 많이 선택한다. 하지만 파이썬이 마냥 쉬운 언어인가? 그렇지만은 않다. 파이썬을 학습하면서 몇몇 고비가 있는데 바로 데코레이터, 제너레이터, 디스크립터 형제들이다. 사실 문법 특별히 어려운 건 아니지만 도대체 어디에 써먹어야 할지 감이 안잡히는 그런 형제들이다. 오늘의 포스팅은 파이썬 노답 삼형제 중에서도 첫째인 데코레이터에 대해 알아보도록 하겠다. 데코레이터 바로 쓰기 데코레이터는 일종의 s..

Language/Python 2021.07.17

프로그래머스 동굴 탐험 python

https://programmers.co.kr/learn/courses/30/lessons/67260 코딩테스트 연습 - 동굴 탐험 9 [[0,1],[0,3],[0,7],[8,1],[3,6],[1,2],[4,7],[7,5]] [[8,5],[6,7],[4,1]] true 9 [[8,1],[0,1],[1,2],[0,7],[4,7],[0,3],[7,5],[3,6]] [[4,1],[5,2]] true 9 [[0,1],[0,3],[0,7],[8,1],[3,6],[1,2],[4,7],[7,5]] [[4,1],[8,7],[6,5]] false programmers.co.kr 1. 해결 방법 DFS에 방문순서가 정해져있는 경우가 합쳐져 있는 경우이다. 카카오 인턴쉽 해설을 보고 풀 수 있었다. tech.kakao.co..

[Python] Thread-safe 한 자료구조

멀티스레드 환경에서 스레드간 통신을 위해 자료구조를 사용한다고 한다. 하지만 동시에 여러 스레드에서 하나의 변수에 접근시 임계영역 문제가 발생하게 된다. 그렇기 때문에 자료구조 역시 Thread-safe 하게 만들 필요가 있다. 아래는 Thread-safe 구현한 set 클래스 이다.(파이썬 동시성 프로그래밍, 에이콘 출판사 에서 발췌) from threading import Lock class LockedSet(set): def __init__(self, *args, **kwargs): self._lock= Lock() super(LockedSet, self).__init__(*args, **kwargs) def add(self, elem): with self._lock: #with keyword는 자..

Language/Python 2021.04.29

[Python] @property 너 누구야? 후아유

이번 포스트에서는 파이썬 클래스에서 종종 보이는 @property에 대해 알아보겠다. 결론부터 이야기하자면 @property 데코레이터는 객체의 프로퍼티를 보호해주는 함수라고 할 수 있다. 먼저 본격적인 포스팅에 앞에서 꼭 집고가야할 것이 있다. 바로 접근제어자(Access Modifier)이다. 1. 접근 제어자(Access Modifier) 1.1 접근 제어자 정의와 필요성 접근제어자(Access Modifier)는 객체의 프로퍼티의 접근을 제한하는 명령어로 객체내에 선언되어 있는 프로퍼티를 접근할 수 있는 범위를 제한하는 것이다. 대표적인 객체 지향 언어인 자바에서는 public, private, protected 가 있다. 각 접근 제어자의 접근 가능 범위는 아래와 같다 1. public : 모든..

Language/Python 2021.03.28

[Python] 정적 메소드 staticmethod, classmethod

파이썬 클래스의 코드들을 보면 종종 메서드 위에 데코레이터로 다음과 같은 것들이 붙어있을 때가 있다. @staticmethod @classmethod 오늘은 파이썬의 정적 메서드를 만드는 방법인 staticmethod, classmethod에 대해서 알아보도록 하자 본격적인 글에 앞서서 정적메서드(static method)란 무엇일까? 정적 메서드는 클래스가 생성되지 않아도 즉 인스턴스 없이도 사용할 수 있는 함수로 인스턴스에서는 호출 할 수 없는 함수를 가리킨다. 1. staticmethod staticmethod는 메서드를 정적 메소드로 바꿔주는 것으로 데코레이터를 이용해 바꿔준다. 일반적으로 메서드에는 맨 앞의 argument로 self를 넣어주지만 staticmethod에는 넣어주지 않는다. cl..

Language/Python 2021.03.27

[Design Pattern] 싱글톤 패턴(파이썬)

1. 싱글톤 패턴(Singleton Pattern)이란? 전역적으로 접근 가능한 하나의 객체만을 허용하는 패턴 즉 프로세스(?)내에 하나밖에 존재하지 않는 것을 보장해주는 패턴을 의미한다. 그럼 어떤 때 유용하게 사용할까? 싱글톤 패턴은 하나의 리소스에 대한 동시 요청의 충돌을 막기 위해 많이 사용된다 예로는 로그나 데이터베이스와 관련된 작업에 많이 사용된다. 싱글톤 디자인 패턴의 목적은 다음과 같다. 1. 클래스에 대한 단일 객체 생성 2. 전역 객체 3.공유된 리소스에 대한 동시접근 제어 2. 싱글톤 패턴 구현(Implementation of Singleton Pattern) class Singleton(object): """ Definition of Singleton Pattern """ def _..

Paradigm/OOP-t 2021.03.25

Django - 사용자별 관리자 페이지 접근권한 수정

관리자 페이지는 다양한 사람들이 오갈 수 있다. 그렇다면 사용자 별로 관리자 페이지 접근권한을 제한할 수 없을까? user app을 하나 생성 후 Custom된 User 모델을 사용한다. from django.contrib.auth.models import AbstractBaseUser,BaseUserManager,PermissionsMixin from django.db import models class UserManager(BaseUserManager): use_in_migrations = True def create_user(self, email, nickname, password=None): if not email : raise ValueError('must have user email') use..

08/27 퇴사 BOJ 14501 파이썬

https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 두가지 방법으로 풀 수 있다. 1. 동적 계획법 2. DFS(깊이 우선 탐색법) 1. 동적 계획법 - 메모이제이션을 i번째 상담을 수행했을 때 받을 수 있는 최대 페이를 기준으로 수행한다. - i 번째 상담을 수행하면 T[i] ( i번째 상담의 상담기간 ) 동안 상담을 하지 못하기 때문에 i부터 i +T[i] 사이에 있는 상담은 뛰어넘는다. - i 번째 상담을 수행하려면 i번째 날부터 상담기간을 더한 날이 퇴사 날(i + T[i])을 넘지 않아야한다. - i 번째 상담을 수행했을 때 퇴사날을 지나친다면 전날 값(dp[i-1]) 로 업..