반응형

프로그래밍 105

[디자인 패턴] 팩토리 메서드 패턴

안녕하세요 Dibrary입니다. 이번에는 디자인 패턴 중에 '팩토리 메서드 패턴'을 정리해보겠습니다. 단어에 '팩토리'라는 뜻은 말 그대로 factory 즉, '공장'이죠. 공장은 뭐하는 곳이지 아시죠? 주로 물건을 생산하죠. 이름을 보면 생산의 대상이 메서드인 것처럼 보입니다. 팩토리 메서드 패턴은 인터페이스는 부모클래스에서 정하지만 구체적인 객체 생성은 자식클래스에서 생성하는 것입니다. 즉, 객체 생성 처리를 서브클래스로 분리해서 처리하게 하는 것이죠. 제가 느낀 바로는 결국 초반 인터페이스는 코드가 여러 개로 쓰이지 않고, 하나로 작성한 후에 실질적으로 다형성이 필요한 부분에서 자식 클래스를 어떤 것을 선택하느냐에 따라 다른 결과를 내보이는 것으로 생각했습니다. 많이 드는 피자집 예시를 보겠습니다...

파이썬으로 정규표현식 다뤄보기 - 1

안녕하세요 Dibrary입니다. 알고리즘이나 데이터 로그를 확인할 때 가장 많이 접하는 것이 '문자열' 자료형인데요 이 문자열을 일일이 슬라이싱가지고 하면 생각보다 코드가 지저분해지거나 길어지는 경우가 많습니다. 이럴 때, 정규표현식을 써서 간단하게 할 수가 있는데 문제는 정규표현식은 '공부'를 좀 해야 한다는 것이죠.. (물론 해도 좀 까먹....) 암튼, 제가 간단하게 써먹기 편하다고 느낀것을 정리해보겠습니다. 1. match('패턴', '대상문자열') match는 패턴으로 대상문자열을 비교해봅니다. 다만, 반드시 첫 번째부터 확인합니다. 이게 왜 중요하냐면, 곧 설명할 search와 굉장히 다른 결과를 내기 때문입니다. 첫 번째는 a가 hello에 있는지 맨 앞부터 비교하는데, a와 h는 다르기 때..

[혼공머신러닝] 7장 인공신경망 기본 정리

안녕하세요 Dibrary입니다. 이번에는 신경망 코드를 정리해보겠습니다. keras는 저도 안써봤었는데, 이번에 알고 꽤나 쉬울 수도 있겠다는 생각이 드는 좋은 라이브러리입니다. 해당 코드는 fashion_mnist 데이터를 사용했습니다. 데이터를 불러오는 코드는 아래와 같습니다. 정말 심플하죠? 핵심은 keras.datasets.fashion_mnist.load_data( ) 입니다. 꼭 fashion_mnist로 하지 않아도 되긴 합니다. 살펴보면, boston_housing 데이터도 있고, cifar10 등등 하나만 있는 것은 아닙니다. 데이터 크기를 확인해보면 아래와 같습니다. (60000, 28, 28) 에 의미는 28*28 크기로 구성된 데이터가 6만개 있다는 의미입니다. 즉, 하나의 데이터는..

Python을 이용해서 HDFS의 파일 읽어오기

안녕하세요 Dibrary입니다. 이번에는 제가 하둡 클러스터에 올린 파일을 파이썬으로 읽어보겠습니다. 참고로 사용하실 파이썬에는 미리 hdfs 라이브러리가 있어야 하므로 pip install hdfs 를 해 주세요. 제가 사용한 hdfs 버전은 2.7.0 이네요. 해당 라이브러리를 더 상세하게 익히고 사용하고자 하는 분들은 아래 사이트를 참고해주세요. API reference — HdfsCLI 2.5.8 documentation Parameters: url – Hostname or IP address of HDFS namenode, prefixed with protocol, followed by WebHDFS port on namenode. mutual_auth – Whether to enforce mu..

[혼공머신러닝] 6장 k평균 알고리즘 정리

안녕하세요 Dibrary입니다. 이번에는 혼자공부하는 머신러닝의 6장 내용인 'k평균 알고리즘'에 대해 정리해보겠습니다. k평균 알고리즘은 아래와 같이 동작합니다. 무작위로 k개 클러스터의 중심을 정합니다. 각 샘플에서 가장 가까운 클러스터의 중심을 정합니다. 그게 곧 해당 클러스터의 샘플이 됩니다. 클러스터에 속함 샘플의 평균값으로 클러스터의 중심을 변경합니다. 클러스터 중심에 변화가 없을 때 까지 2번으로 돌아가서 반복합니다. 즉, 한 마디로 '인접 요소를 가장 잘 대변하는 점 하나를 찍고, 그게 맞으면 평균점이 되는데, 그게 아니라면 평균점이 될 때까지 이걸 반복한다' 는 것이죠. 파이썬은 굉장히 편리하다고 느끼는 게, 이 k평균 군집 역시 파이썬 sklearn 모듈을 사용해서 할 수 있습니다. 먼..

파이썬으로 구현해 확인하는 MODBUS통신 - Client 편

안녕하세요 Dibrary입니다. 파이썬으로 온갖걸 다 할 수 있다는건 많이들 알고 계실겁니다. 그 중에 Plant 산업 현장에 많이 쓰이는 Modbus도 파이썬으로 가능한거 알고 계세요? 만능이죠 만능. 간단하게 Modbus 통신을 이용해서 Client로 값을 쓰고 읽는 것을 해 보겠습니다. 저는 Jupyter를 사용해서 결과를 보여드릴거고, Device는 modSim이라는 시뮬레이터로 확인해 보았습니다. (물론, 실제 PLC, MCU보드, 인버터 등등을 제어하는 것도 했습니다.) 시뮬레이터는 아래에서 받으실 수 있습니다. Modbus simulator Download Modbus simulator for free. Modbus RTU and TCP/IP slave simulator. For Testin..

REST 테스트를 하기 위한 json-server 실행하기

안녕하세요 Dibrary입니다. RESTful API를 테스트 할 때, json 꼴로 반환해 주는 서버가 있으면 편리한데 대부분 아래 사이트를 많이 사용하곤 합니다. JSONPlaceholder - Free Fake REST API {JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. As of Oct 2021, serving ~1.7 billion requests each month. jsonplaceholder.typicode.com 이 사이트도 편리하지만, 데이터 넣고, 수정 작업을 하려면 직접 서버를 하나 돌리고 해당 서버를 이용해서 테스트 하는 것이 더 ..

Flume으로 Hadoop에 데이터 보내기

안녕하세요 Dibrary입니다. 이번에는 Flume을 이용해서 Hadoop에 데이터를 보내보겠습니다. 참고로 Flume은 아래와 같이 설치하실 수 있습니다. [Flume] 데이터 로그 수집기 플룸, 설치하기 안녕하세요 Dibrary입니다. 이번에는 Apache Flume을 설치해보겠습니다. Flume은 로그 같은 데이터를 수집할 때 사용하기 좋은 툴 입니다. 아주 간단하게 주요 컴포넌트를 소개하자면 Source / Channel / Sink dibrary.tistory.com 데이터를 보내기 위해서는 당연하게도, Hadoop cluster는 실행 중이어야 합니다. 먼저, 제가 사용한 Flume 버전은 1.9.0이고, Hadoop 버전은 2.7.2 입니다. Hadoop cluster에서 namenode가 ..

[혼공머신러닝] 5장 트리 알고리즘 정리

안녕하세요 Dibrary입니다. 이번에는 트리 알고리즘을 정리해보겠습니다. 먼저 트리라는 자료구조는 하나의 루트로부터 시작해서 계속 가지를 쳐 나가는 것입니다. 이렇게 말이죠. 다만 2개씩만 하는 경우에 한해서 이진트리라고 특별히 이름 짓습니다. (이는 데이터를 빠르게 찾는데 굉장히 유용하기 때문에 알고리즘에서 주로 사용됩니다.) 이 트리형태로 해답을 찾아 나가는데, 각 트리의 노드가 해답을 찾아나가는 '질문'으로 된 것이 결정트리 입니다. 이런 것이죠. 질문이 꼭 하나로만 구성될 필요도 없습니다. 파이썬은 sklearn 모듈을 사용해서 결정트리를 사용할 수 있습니다. 먼저 임의의 데이터를 가져와보겠습니다. 이 데이터 중에 class를 target으로 잡고, 나머지 3가지 항목을 해당 target을 구하..

구글 트렌드로 IT기술 검색량 비교해보기

안녕하세요 Dibrary입니다. 구글에서 검색량을 살펴보고자 할 때, Trends 라는 것을 사용할 수 있습니다. Google 트렌드 trends.google.co.kr 들어가면 아래와 같은 화면이 나올겁니다. 우선 그냥 한국에 국한해서 확인해보고자 하면 검색어에 곧바로 입력하시면 됩니다. 전 빅데이터 기술 중에 어떤게 많이 쓰이는지 궁금해서 하나씩 차례대로 입력해보았습니다. 평균 검색량을 보면 Spark가 가장 많은 것을 알 수 있습니다. 그 뒤로 kafka, airflow가 있네요. 오른쪽 차트를 보면 최근에 kafka 검색량이 늘어난 것도 같이 볼 수 있습니다. 근데 과연 Spark 라고 검색한게 제가 '머리속에서 떠올린' 그 빅데이터 분석도구 Spark 가 맞을까요?? 밑으로 내려가보니 관련 검색..

반응형