IT
Python06 :: Python Project 구성하기
Python06 :: Python Project 구성하기
2020.08.14Python 코드를 작성하다가 프로젝트 구조를 어떻게 잡아야 할지 의문이 들어 포스팅 하게 되었습니다. ㅡ. 모듈 실질적으로 비즈니스를 수행하는 코드를 모듈 폴더에 두어 관리합니다. ㅡ. 라이선스 라이선스 문서 전문, 저작권이 포함되어야 하는 부분 입니다. ㅡ. requirements.txt 프로젝트 수행에 필요한 의존성을 명시하고 설치할 수 있도록 requirements.txt 에 명시합니다. ㅡ. docs 문서들을 명시합니다. ㅡ. 테스트 도구 테스트 수행에 필요한 Script 를 포함합니다. 모듈과 의존성이 있는것이 아니라 독립적으로 설정되어 실행될 수 있도록 해야 합니다. ㅡ. makeFile 프로젝트 관리하는데 유용한 작업들을 명시합니다. init : pip install -r requireme..
ISSUE09 :: Python ‘str’ object does not support item assignment solution
ISSUE09 :: Python ‘str’ object does not support item assignment solution
2020.08.14Python ‘str’ object does not support item assignment solution String immutable 하기 때문에 변경할 수 없습니다. An Example Scenario string = "aaaa" string[0] = "b" 이런 상황에서 발생하게 됩니다. 따라서, replace_string = "" 을 생성하고 The Solution string = "aaaa" replace_string = "" for i in range(len(string)) : if i==0 : replace_string+="b" else : replace_string+=string[i] print(replace_string) 이런식으로 사용합니다. Conclusion String은 변경..
Python05 :: python nested dictionary
Python05 :: python nested dictionary
2020.08.13ㅡ. Python nested dictionary 우리가 일반적으로 알고 있는 dictionary 는 python에서 dictionary = { 'key1' : 'value', 'key2' : 'value' } 형태가 있습니다. 여기에서 nested_dict = { 'dictA' : { 'nested_key1' : 'nested_value'}, 'dictB' : {'nested_key2' : 'nested_value2'} } nested dictionary에 접근할 때는 다음과 같이 접근하게 됩니다. print(dictionary['dictA']['nested_key1']) => 'nested_value' nested dictionary에 추가할 때는 다음과 같습니다. dictionary['dictC']..
Python04 :: python class
Python04 :: python class
2020.08.13ㅡ. class 의 정의 추상화를 구체화합니다. ㅡ. class 정의하기 (구조) class ClassName 내용 e.g) class Cat: def meow(self): print("야용") cat1 = Cat() //객체 생성 cat1.meow() ㅡ. 인스턴스 변수 생성 class Cat: def info(self) : self.name = "돼지" self.color ="pink" print("컴퓨터 이름은", self.name, "색깔은", self.color) cat = Cat() #인스턴스 생성 cat.info() #인스턴스 메소드 실행 ㅡ. self 클래스의 인스턴스를 지칭한다. self 를 통해 메소드와 속성을 접근한다. 모든 메소드의 첫 번째 매개변수는 자기 자신을 가리키는 self ..
GCP06 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법
GCP06 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법
2020.08.12템플릿에서 작업 만들기를 진행하였습니다. `Cloud Dataflow template` 부분에서 PubSub to BigQuery를 선택합니다. Pub/Sub Topic to BigQuery 선택 하였습니다. (수정) 그 다음에 pub/sub 으로 가서 주제를 생성해줍니다. 이름은 pubsubdemo 로 설정하였습니다. 주제 이름을 복사해서 dataflow의 Input Pub/Sub Topic에 넣어줍니다. bigQuery로 이동해서 데이터세트를 생성하였습니다. demo 그리고 테이블도 생성하였습니다. 다시 dataflow로 가서 BigQuery output table에 [project-id]:[dataset-name].[table-name] 으로 입력합니다. storage위치는 gs://[project..
GCP05 :: Google Cloud Pub/Sub example
GCP05 :: Google Cloud Pub/Sub example
2020.08.12google cloud pub/sub 동작 원리를 알기 위해 간단한 예제를 수행해 보겠습니다. test라는 주제를 만들고 전송 유형(pull), 구독 만료(31일), 확인 기간(10초), 메시지 보관 기간(7일) 로 구독을 만들었습니다. 다시 구독 탭으로 돌아오면 구독이름과 주제이름으로 만들어진것을 확인할 수 있습니다. 메시지를 게시하기 위해서 cloud shell 을 이용해 추가하였습니다. 혹은 console 에서 직접 추가할 수 있습니다. 위 CLI를 통해서 게시된 메시지를 pull할 수 있습니다. 위에는 메시지를 게시 하지 않았습니다. Hello-World 를 게시하고 CLI에서 메시지를 pull하면 확인할 수 있습니다.
카프카01 :: 아파치 카프카 개요
카프카01 :: 아파치 카프카 개요
2020.08.12ㅡ. Apache Kafka Apache Kafka는 여러 대의 분산 Server에서 대량의 데이터를 처리하는 분산 메시징 시스템 입니다. 일종에 데이터를 받고 데이터를 다른 장치에 보내는데 사용됩니다. 즉, 카프카는 여러 시스템과 장치를 연결하는 역할을 수행합니다. 과연 데이터를 얼마나 많이 받을 수 있을까요? 카프카는 대량의 데이터에 대한 High-Throughput 과 Real-time을 취급하고 있습니다. 카프카는 여러 이벤트(Activity Event, Network Event etc) 에 대해 받고 이를 Datawarehouse 나 Hadoop 그리고 검색 엔진 등에 전달해주는 역할을 합니다. ㅡ. Apache Kafka History 카프카는 링크드인에서 처음 출발했습니다. 이전에는 메시지 ..
ISSUE09 :: Cannot access field name on a value with type ARRAY<STRUCT<name STRING, bytes INT64>> at [1:17]
ISSUE09 :: Cannot access field name on a value with type ARRAY<STRUCT<name STRING, bytes INT64>> at [1:17]
2020.08.11google public-data-set 에서 github의 languages 에 접근하려고 했을때 Cannot access field name on a value with type ARRAY at [1:17] 와 같은 이슈가 발생했습니다. table에서 해당 컬럼이 array 형태이기 때문에 이를 Flatten 하기 위해서 UNNEST 함수를 사용해야 합니다. select count(distinct language.name) from table -> select count(distinct n.name) from table, UNNEST(language) as n
IT05 :: 정보처리기사 문제 정리 - 9급 전산직 컴퓨터일반
IT05 :: 정보처리기사 문제 정리 - 9급 전산직 컴퓨터일반
2020.08.11ㅡ. 아날로그 신호를 디지털 신호로 변조하기 위한 펄스부호변조(PCM) 과정으로 옳지 않은 것은? *펄스부호변조 과정 : (송신측) 표본화-> 양자화 -> 부호화 -> (수신측) 복호화 -> 여파화 표양부복여 ㅡ. DBMS를 사용하는 이점으로 옳지 않은 것은? 데이터의 중복을 허용하여 데이터의 일관성을 유지한다. 데이터의 중복을 허용하지 않는다. (Atomicity) ㅡ. CPU 내의 레지스터에 대한 설명으로 옳지 않은 것은? Memory Address Register(MAR) : 데이터의 주소를 기억하는 레지스터 *Accumulator(AC) : 연산 과정의 데이터를 일시적으로 저장하는 레지스터 Program Counter(PC) : 다음에 인출될 명령어의 주소를 보관하는 레지스터 Memory Buff..
ISSUE08 :: python3 equivalent for auto tuple unpacking in lambda 이슈 발생 시
ISSUE08 :: python3 equivalent for auto tuple unpacking in lambda 이슈 발생 시
2020.08.10python 으로 dataflow ETL 코드를 구성하다가 lambda 로 작성되는 코드에 발생되는 이슈였습니다. lambda(x,y) : x+y 의 python3에서 auto tuple unpacking 을 lambda에서 지원해주지 않으므로 lambda x_y : x_y[0] + x_y[1] 로 작성하시면 됩니다. *ref : https://stackoverflow.com/questions/21892989/what-is-the-good-python3-equivalent-for-auto-tuple-unpacking-in-lambda
알고리즘91 :: 응용 알고리즘(선택정렬, 버블정렬, 삽입정렬)
알고리즘91 :: 응용 알고리즘(선택정렬, 버블정렬, 삽입정렬)
2020.08.09ㅡ. 선택정렬 나열되어 있는 숫자를 차례대로 비교해보면서 가장 작은 수를 맨 앞에 두는 정렬 방법입니다. e.g) 8, 5, 6, 2, 4 첫번째 정렬 5, 8, 6, 2, 4 (첫번째 자리와 두번째 자리를 swap, 더 작은 쪽이 앞으로) => 그 다음에 5와 6을 비교합니다. 5, 8, 6, 2, 4 (5가 더 작으므로 현 상태 유지) => 그 다음에 5와 2를 비교 합니다. 2, 8, 6, 5, 4 (2가 더 작은 수 이므로 5, 2 swap) => 그 다음에 2와 4를 비교합니다. 2, 8, 6, 5, 4 (2, 4 중 2가 더 작으므로 변화 없음) 두번째 정렬 2, 8, 6, 5, 4 상태에서 8을 기준으로 (첫번째 정렬에서 첫번째 위치를 봤으므로 다음위치를 보게 됩니다.) => 8과 6을 비교..
Spring01 :: Spring
Spring01 :: Spring
2020.08.08ㅡ. Spring 이란? Application을 자바로 개발하는데 유용하고 편리한 기능을 제공하는 프레임워크 ㅡ. IoC 의존 관계 주입 이라고 합니다. 의존 객체를 만들어서 쓰는것이 아니라, 생성자 만들어서 주입받아서 사용합니다. 사용하는 이유는 컨테이너 안에 빈들이 존재하는데 이것들을 사용한다고 생각하시면 될것 같습니다. Spring 초기에는 XML 작성되었지만, 지금은 annotation 기반의 dependency injection을 제공하게 됩니다. 최상위 root 클래스 BeanFactory이 존재합니다. bean 설정 파일이 있어야 한다. (xml) History. 1. *ref:다른 bean을 참조해야 합니다.(다른 bean의 id가 와야 합니다.) => service는 repository와..