전체 글
-
파이썬 제너레이터(Generator)Programming/python 2020. 6. 6. 22:26
제너레이터를 설명하기 앞서 이터레이터에 대한 이해가 살짝 필요하다. 제너레이터랑 이 이터레이터에 yield 구문을 추가해 호출될 때마다 이터레이터와는 다르게 모든 값을 포함한 배열을 리턴해주는게 아니라 하나의 값만을 리턴하기 때문이다. 이터레이터란? 이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)이다 파이썬에서는 이터레이터만 생성하고 값이 필요한 시점이 되었을 때 값을 만드는 방식을 사용함 데이터 생성을 뒤로 미루는 것인데 이런 방식을 지연 평가(lazy evaluation)라고 함 이터레이터는 반복자라고 부르기도 함 반복 가능한 객체(iterable)와 이터레이터(iterator)는 별개의 객체이므로 둘은 구분해야 한다. 이터레이터와 제너레이터의 차이점 이터레이터는 __n..
-
메모 어플 노션(Notion) 무제한 무료화 발표IT 2020. 5. 21. 12:10
노션에서는 블록 단위로 작업을 하게됩니다. 한 블럭에 이미지를 넣을 수 있고 문단을 넣을 수도 있죠. 기존의 무료 플랜에서는 이 블록이 1000블록까지만 무료로 지원하는 점 때문에 많은 분들이 노션을 사용해보고 싶다가도 이러한 제한들 때문에 쉽사리 다른 플랫폼에서 옮겨오거나 새롭게 시도하려는 사람들이 적었습니다. 저 역시도 다른 사람들에게 추천을 하려다가도 살짝 망설여지게 되는 점 중에 하나였습니다. 하지만 이제 그런 장애물도 사라졌고 이 기회를 빌어 적극적으로 여러분들에게 알려드리고 권장하고 싶습니다. 조만간 제가 어떻게 노션을 활용하고 있는지, 어떤 활용 방법들이 있는지 등에 대해서 자세하게 시리즈로 노션에 대해서 포스팅을 남기도록 하겠습니다. 새롭게 변경된 요금제는 위와 같습니다. 프로 버전과 거의..
-
REST의 정의와 RESTful API란 무엇인가?Programming 2020. 3. 15. 20:56
RESTful API란 무엇인가? 라는 질문을 받는다면 대충 REST한 구조로 서로 주고받는다라고 뭉퉁그려 알고있지만 제대로 된 정의가 무엇인지 한번에 대답하기는 힘들다. 정확히 REST한 구조란 무엇이고 이 구조를 사용한 RESTful한 API를 만든다는 것은 어떤 의미일까? REST API혹은 Restful API에 대한 설명을 하기 전에 우선 REST에 대한 이해가 선행되어야 한다. REST란 Representational State Transfer의 약자로써 풀어서 설명하자면 자원을 이름으로 구분해 해당 자원의 상태를 주고받는 것을 말한다. 어떤 프레임워크가 아니라 이런 방식을 가지고 주고받겠다는 약속이라는 의미에서 코딩 컨벤션과 궤를 같이한다. REST는 웹에 존재하는 자원(이미지, 동영상, D..
-
동기와 비동기방식의 차이점(콜백함수와 프로미스)Programming 2020. 3. 8. 23:02
오늘은 자바보다는 자바스크립트, 그중에서도 노드를 사용한 서버 프로그래밍을 다룰 때 처리하는 동기와 비동기 처리방식에 대해서 알아보려고 한다. 물론 동기와 비동기 자체의 개념은 모든 언어에서 공통적으로 사용되므로 동기와 비동기 방식의 차이점을 분명히 하고 그 개념에 대해서 알아두면 좋다. 우선적으로 동기와 비동기 처리 방식을 비유할 때 커피 주문을 예로 든다. 흔히 카페에서 커피를 주문하려고 하면 한줄로 서서 한번에 한명씩만 주문이 가능하다. 마치 큐처럼 선입선출의 과정의 코드실행의 처리 순서를 우리는 동기 방식이라고 부른다. 일단 주문이 들어가면 카페 내부의 점원들은 열심히 음료를 만들기 시작한다. 하지만 이때 한명의 점원이 있는 것이 아니라 여러명의 점원이 있다면 주문받은 순서대로 일을 처리하는 것이..
-
가비지 컬렉션, 컬렉터(Garbage Collection)란?Programming/java 2020. 3. 1. 16:37
Garbage Collection, 줄여서 약어로 GC라고도 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부른다. 메모리 관리 방법 중에 하나로, 시스템에서 더이상 사용하지 않는 동적 할당된 메로리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다. 가령 C언어는 프로그래머가 메모리를 할당한 뒤 수동으로 해제까지 직접 해 줘야 한다. 그래서 메모리를 할당해놓고 필요없어진 뒤에도 해제를 안하는 일 등이 생겨서 메모리 누수가 생기거나 거꾸로 해제했던 메모리를 다시 사용하거나 하는 실수 등에 버그가 양산된다. 이러한 문제들을 해결하기 위해서 제시된 것이 가비지 컬렉션이다. 이 가비지 컬레션 기능을 채택한 언어의 경우에는 이 가..
-
(python)'is None'과 '==None'의 차이점Programming/python 2020. 2. 27. 16:25
특정한 값이 있는지를 검사할 때 자주 사용하게 되는 문법인 is None과 ==None. 값이 넘어오고나 전처리 과정에서 이 값이 존재하는지를 확인하고 싶을 때 주로 사용하게 된다. http://jaredgrubb.blogspot.com/2009/04/python-is-none-vs-none.html 간단하게 요약해서 설명하자면 True로 받을지 그 자체를 받을지의 문제다. class Noo: def __eq__(self,other): return True Noo=Noo() print(Noo==None) # True print(Noo is None) # False Noo는 None 오브젝트를 상속받는다. 비교 연산자는 Noo를 None으로 받아서 True로 처리하지만 is None 은 오브젝트 그 자체로..
-
세션과 쿠키, 그리고 캐시의 차이점은?Programming 2020. 2. 24. 00:07
우선 가장 먼저 세션과 쿠키, 캐시에 대해서 말하기 전에 HTTP의 특징에 대해 우선적으로 알아야한다. HTTP(Hypertext Transfer Protocol)은 브라우저 같은 응용 프로그램을 통해 사용자와 서버 사이에 전송하는 프로토콜이다. 인터넷 주소 앞에 달려있는 HTTP가 바로 이 HTTP 프로토콜을 이용하고 있다는 뜻이기도 하다. HTTP는 연결 상태를 유지하지 않는 비연결적인 프로토콜이라는 특징을 가지고 있는데, 예를 들어 브라우저를 통해 사용자의 요청에 따라 서버에 접속하여 요청에 대한 응답의 데이터를 전송 한 뒤에 연결을 종료한다. 이런 간단한 과정 덕택에 전산 자원이 적게 든다는 장점이 있지만 연결이 지속적이지 않기 때문에 사용자와 연결을 종료한 뒤에 추가적으로 요청을 처리할 수 없다..
-
애자일 방법론과 TDD 그리고 BDDProgramming 2020. 2. 2. 16:30
개요 클린 코드나 리팩토링 관련된 서적을 읽으면서 자주 등장하는 개념이고 다른 개발 블로그를 둘러봐도 '애자일'한 작업 환경이라던지 TDD 또는 BDD 등의 용어는 자주 접하게 된다. 그중에서도 최근 가장 떠오르는 것은 단연 TDD인데, TDD에 대해서 알아보기 앞서서 애자일 소프트웨어 개발(Agile software development)은 무엇인지를 먼저 알아야한다. 애자일한 방법론이 무엇일까를 고민하면서 등장한 것이 바로 TDD이기 때문이다. 그 이외에 여러가지의 애자일을 실천할 수 있는 다양한 기법들이 존재한다. 이러한 기법들을 살펴보기 전에 애자일은 무엇일까, 애자일하게 작업한다는 것은 무엇을 의미할까?에 대해서 우선 알아보자. 애자일 방법론 애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발..