본문 바로가기

CS117

[python3] Lambda (람다) 함수 개념과 활용법, 장단점 - 쉽고빠른파이썬 오늘은 파이썬에서 사용하는 람다 함수에 대해 간단히 알아볼까 합니다. 경우에 따라 자주 쓰는 분들도 있고 아닌 분들도 있을 것입니다만.. 프로그래밍 언어도 나름 언어이다 보니 다양한 표현을 알아두면 최소한 이해하는 데에는 큰 도움이 됩니다. 사설은 이만 줄이고 람다를 어떻게 쓰는지 알아봅시다. 정의 람다 함수는 하나의 임의 함수입니다. 여러 Argument를 받아 수행하지만 하나의 표현으로만 가질 수 있습니다. 장점 함수를 간편하게 작성할 수 있다는 점이 람다 함수의 장점입니다. 다른 함수의 인수로 함수를 넣을 때, 람다를 주로 사용합니다. C++ 에서의 함수 포인터와 비슷할 수 있겠네요. 인수로 넘긴다는 점에서 함수 포인터와 유사할 수는 있지만 차이점은 분명히 있습니다. 단점 굳이.. 단점이 있을까요?.. 2022. 11. 5.
[python3] 파이썬에서 이터레이터 (Iterator) 란? Iterator 우선 이터레이터라는 단어는 디자인 패턴에서 많이 듣는다. Iterator pattern Single Responsible Principle 을 준수하기 위해 데이터의 저장과 방문의 책임을 분리하여 방문의 책임만을 갖게 하는 패턴을 의미한다. 일반적으로 이 의미와 어느정도 유사한 느낌은 있지만 언어적인 측면에서는 여러개의 값들을 가지고 있는 객체를 의미하는 경우가 대부분이다. 단순하게 생각해서, 모든 값들을 순회(Traverse)할 수 있는 객체를 Iterator로 이해하면 되겠다. Python에서의 Iterator는 __iter__(), __next__() 메서드를 포함하는 객체를 의미한다. Iterable objects Python 에서 iterable한 자료형인 List, tuple,.. 2022. 11. 3.
[디자인패턴] 방문자 패턴 (Visitor pattern) 의 개념 및 구조 요약정리 2022.08.11 - [CS] - [디자인패턴] GoF Pattern 요약정리와 패턴 별 활용 알아보기 [디자인패턴] GoF Pattern 요약정리와 패턴 별 활용 알아보기 요즘 디자인 패턴을 전체적으로 훑어보는 공부를 하고있습니다. 너무나 급변하는 세상이라 쫓아갈 것들이 많지만.. 디자인 패턴은 개발자에게는 거의 근본 그 자체라고 생각하기에 가끔 씩 돌 armin.tistory.com 오늘은 방문자 패턴, visitor pattern 를 정리해 보려고 합니다. 디자인 패턴이라는게 제 부족함 때문인지는 몰라도 볼 때 이해하고 안 쓰면 잊어버리는 묘한 성질을 가지고 있습니다. 안 쓴다는 것 자체가 제 게으름을 반증하는 것이 될까요? 사담은 이 정도로 하고.. 내용으로 넘어가 봅니다. 목적 - Visito.. 2022. 10. 30.
[디자인패턴] 중재자 패턴 (Mediator pattern) 의 개념, 구조 및 예시 요약정리 [디자인패턴] GoF Pattern 요약정리와 패턴 별 활용 알아보기 요즘 디자인 패턴을 전체적으로 훑어보는 공부를 하고있습니다. 너무나 급변하는 세상이라 쫓아갈 것들이 많지만.. 디자인 패턴은 개발자에게는 거의 근본 그 자체라고 생각하기에 가끔 씩 돌 armin.tistory.com 목적 개별 오브젝트 그룹의 상호작용과 통신 방식을 캡슐화하여 coupling을 낮추기 위해 사용하는 패턴 Use when - 여러 객체 간 정의된 통신이 복잡하게 이루어 져 있을 때 - 제어 또는 통신관점에서의 관계들이 복잡한 경우 구조도 및 상세설명 - Mediator : Colleague 들의 중재자 역할을 수행하는 추상화 객체 - Concrete Mediator : ConcreateColleague 의 기능을 호출하여.. 2022. 8. 19.
[디자인패턴] 반복자 (Iterator) 패턴의 개념 및 구조 요약정리 목적 - 객체들의 집합에 저장되어 있는 자료형과 관계없이 동일한 인터페이스를 이용한 접근 - 외부에 타입을 노출하지 않으면서 내부 요소에 접근이 필요한 경우, 자료구조 변경에 영향 없이 Item에 접근 가능 Use when - 객체 내용을 알지 못하더라도 각 요소에 접근이 필요할 때 - 개체에 대한 순회가 필요한 경우 - 개체 순방을 위한 정형화된 인터페이스가 필요한 경우 구조 및 구성요소 - Client : Aggregate 객체를 생성하고 생성 된 ConcreateAggregate 객체로 부터 Iterator 를 받는다. - Aggregate : Client에서 사용되는 인터페이스로 ConcreateAggregate 의 인터페이스 입니다. - ConcreteAggreate : 실제 Client에서 접.. 2022. 8. 18.
[디자인패턴] 상태 패턴 (State pattern) 의 개념 및 구조 요약정리 의도 객체 자신의 내부 상태에 따라 행위를 변경하도록 한다. 객체가 클래스를 바꾸는 것 처럼 보일 수 있다. Use When - 객체의 행위가 상태에 영향을 받는 경우 - 객체의 행위가 상태에 따라 변경되며 이 상태가 런타임에 바뀌는 경우 - 복잡한 조건이 객체의 행위와 상태에 얽혀 있는 경우 - 상태 간 전이 동작이 분리되어야 하는 경우 구조도 및 구조설명 - State : 여러가지 세부 상태를 대표하는 추상 클래스 - Context : 상태에 따른 행위를 실행하는 객체 - ConcreteState : 세부 행위를 정의하는 상태객체 상태 패턴 구조도는 위 그림과 같습니다. 상태라는 개념은 하나의 클래스로 추상화 되어 있으며, 자식클래스로 세부 상태를 구현하게 됩니다. ConcreateState 에서는 .. 2022. 8. 17.
[디자인패턴] GoF Pattern 요약정리와 패턴 별 활용 알아보기 요즘 디자인 패턴을 전체적으로 훑어보는 공부를 하고있습니다. 너무나 급변하는 세상이라 쫓아갈 것들이 많지만.. 디자인 패턴은 개발자에게는 거의 근본 그 자체라고 생각하기에 가끔 씩 돌아볼 수 밖에 없습니다. 사실 개발 좀 한다고는 하지만 라이브러리나 전반적인 설계가 어떻게 돌아가는지 모르는 사람들도 너무나 많은데요. 이런 부분을 신경쓰지 않아도 될 정도로 세상이 좋아졌고 시민개발자라는 말이 나올 정도로 소프트웨어 개발의 접근성이 높아졌지만 그래도 업에 종사하는 사람이라면 이 정도는 소양으로 알아둬야 될 것 같다는 느낌을 지울수가 없습니다. 아직 공부할 것들이 천지지만.. 하나 씩 포스팅으로 정리해 보려고 합니다. 우선 디자인 패턴은 크게 생성, 구조, 행위 패턴으로 나뉘며 각 패턴은 목적을 클래스 범위 .. 2022. 8. 11.
[bash] 리눅스 쉘 스크립트(shell script) 문자열 바꾸는 방법 오늘은 script(bash) 에서 문자열을 치환즉, 문자열을 원하는 문자열로 바꾸는 방법을 알아보려고 한다. 자주 사용하는 방법인데이상하게 자꾸만 까먹는다... 아마 예전에 포스팅 한 내용이 있을지도 모르겠지만그래도 한번 더 연습삼아 내용을 정리해 본다.   Shell Parameter Expansion 활용  우선, 가장 쉬운 방법은 echo 를 활용하는 방법이다.shell script 에 변수를 선언하고 echo 출력 시 아래 패턴을 이용하여 문자열 변경이 가능하다. ${parameter/pattern/string}  아래처럼 예제 스크립트를 한번 작성해 보았다. #!/bin/bashoutput="Hello my world"name="Kim"echo "${output/my/"$name"}" 기대하는.. 2022. 8. 8.
Python3 print 함수 출력 글자 색 바꿔서 출력하는 방법 안녕하세요 warehouse입니다. 오늘은 파이썬으로 인터페이스를 만들면서 사용한 간단한 팁을 공유하고자 합니다. git 우선 일반적인(?) 프로그래머들이 많이 사용하는 git을 먼저 보고 가려고합니다. 파이썬 색상 얘기하다가 갑자기 왠 git? 하시겠죠? 우리는 git 명령어를 사용하면서 이런 유형의 색상 출력을 보게 될텐데요 그냥 추가된 파일은 초록색이고, 아닌 것들은 빨강이구나.. 그리고 git diff 출력에서도 변경 사항을 빨강 초록으로 표시해 주는구나.. 정도로만 자연스럽게 받아들이고 있을 겁니다. 그런데, 저는 솔직히 말하면 .. 이런 색상은 어떻게 출력해 주는지 고민해 본 적이 없습니다. 최근 까지만 해도요. python print 그런데 어쩌다 보니 업무상 출력 색상을 변경해야 하는 상황.. 2022. 8. 5.
[파이썬 배우기] python 출력 새로고침, 갱신하면서 출력 하는 방법 안녕하세요 warehouse입니다. 오늘은 파이썬을 구현하면서 출력할 때, 화면을 새로고침 하면서 출력을 업데이트 하는 방법을 알아보려고 합니다. 사실 이 부분은 엄청날 스킬은 아니고 개발하면서 한번 쯤 검색해 볼만 한 팁 인것 같아요. 저도 파이썬을 이용한 사용자 인터페이스 구현을 하다가 출력이 갱신되었으면 하는 마음에 찾아보고 정리해 둔 내용이니 저와 같은 처지(?) 에 놓이신 분들도 참고 하셨으면 좋겠습니다. 언제 필요한가? 제가 필요한 경우는 아래와 같은 상황이었어요. 1. 사용자에게 지금까지 대기 한 시간을 표현해야 한다. 2. 줄줄이 소세지로 터미널 스크롤이 생기지 않았으면 좋겠다. 일단 1. 을 먼저 구현해 보면 아래 예시처럼 만들어질거에요. 10초를 대기했다고 생각하면.. 10번 수준의 루.. 2022. 8. 1.
Docker for Mac 에서 쿠버네티스(Kubernetes / k8s) 사용하는 방법 Hands-on Kubernetes 현업에서 쿠버네티스를 사용할 기회가 전혀 없지만 그래도 요즘 세상이 어떻게 돌아가는지는 알아야 겠다는 생각에 최소한의 hands-one을 해 보려고 하고 있습니다. 우선 로컬에서 쿠버네티스 사용을 위해서는 Docker Desktop 이 설치 된 환경이어야 합니다. AWS 나 구글 클라우드 에서 제대로 써 보는 것도 의미가 있겠지만 저는 아직 개념 자체가 정리가 되지 않아 Desktop에서 시작을 해 보는 상황입니다. 설정 버튼을 누르면 General (일반) 항목들이 나옵니다. 왼쪽을 보시면 Kubernetes 버튼이 보입니다. Kubernetes 활성화 (Enable Kubernetes) Kubernetes 탭으로 이동하면 Enable Kubernetes 체크박스가 .. 2022. 7. 18.
[docker] 도커 엔트리포인트(entry point) 의 이해와 IBM LSF Job starter 기능 Docker entry point 컨테이너가 시작될 때 CMD 값을 인자로 받아 수행이 가능한 명령어 CMD? 기본적으로 도커는 CMD를 이용하여 컨테이너가 시작될 때 실행할 명령어를 설정합니다. 이 점에서는 ENTRYPOINT와 크게 다른바가 없으나, 서로 역할이 조금 상이합니다. 그 차이는 바로 ENTRYPOINT는 CMD를 인자로 받는다는 점 입니다. 아래처럼 entrypoint 와 cmd가 설정 된 상태에서 docker를 실행하면 결과는 어떨까요? entrypoint: echo cmd: python3 결과는 다음과 같습니다. python3 즉, 아래와 같은 명령어가 실행되었다고 보시면 됩니다. echo python3 ENTRYPOINT 활용하기 이걸 어떻게 이용해야 할까요? 제가 생각하는 예시가 .. 2022. 7. 17.
[docker] 도커 데몬을 실행하는 방법, MacOS 에서의 dockerd 도커 데몬 우선 지금까지 실행해온 도커가 어디에 위치하고 있는지를 확인합니다. % which docker /usr/local/bin/docker 도커의 실행은 /usr/local/bin/docker 를 통해 실행이 됨을 확인할 수 있는데, docker 프로세스도 이와 같은지 확인해 봅니다. $ ps -ef | grep Docker 501 99769 1 0 9 322 ?? 2:30.78 /Applications/Docker.app/Contents/MacOS/Docker 501 99786 99769 0 9 322 ?? 9:30.29 /Applications/Docker.app/Contents/MacOS/com.docker.backend -watchdog -native-api 501 99787 99769 0 .. 2022. 7. 11.
문서 지향 데이터베이스(Document oriented database) 란 무엇인가? feat. CouchDB 정의 문서 정보를 기반으로 원하는 데이터를 저장하고 조회하도록 설계 된 NoSQL 데이터베이스 유형 MongoDB, CouchDB, Elasticsearch, CouchBase 등 특징 Key-Value 형태로 저장 No schema, 유연한 스키마 JSON / XML 등의 문서로 저장 분산 하드웨어 클러스터 기반 확장 CouchDB Scalable architecture 를 쉽게 접할 수 있도록 만들어진 오픈소스 데이터베이스. Document-oriented NoSQL Database이며, erlang 으로 구현되어 있다. ( 왜 erlang 일까.. ) 데이터 저장은 JSON을 사용하며, Javascript를 쿼리로 사용하는 게 특징이다. HTTP를 이용한 API도 제공해 준다. Couch Repli.. 2022. 7. 7.
[파이썬 개발자 로드맵] Functions - 함수 만들어서 사용하는 방법 2022.04.27 - [CS/Python] - python 개발자 로드맵 ( developer roadmap ) 에 따라서 개발공부하기 python 개발자 로드맵 ( developer roadmap ) 에 따라서 개발공부하기 예전에 DevOps 업무를 수행하기 위해서 어떤 능력이 필요한지 roadmap.sh 에서 확인해 본 적이 있다. 파이썬을 현업에서 적극적으로 사용하고 있지만 가끔 기본적인 내용에 대해 엦어버릴 때가 있는 armin.tistory.com 파이썬에서 함수를 만들어 쓰는 것은 너무나 단순하기에 가볍게 예제 코드만 작성하고 넘어가 보려고 한다. 클래스 안에 선언되는지, 모듈에서 바로 사용되는지 위치에 따라 조금씩의 차이는 있겠지만, 기본적인 function의 선언과 사용은 큰 틀을 벗어나.. 2022. 7. 4.