분류 전체보기
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은 변경..
GCP08 :: dataflow (작성중)(2)
GCP08 :: dataflow (작성중)(2)
2020.08.14csv 파일 양식이 다음과 같이 되어있다. category, language, year data1, data2, data3 Google Cloud Storage 에서 저장되어 있는 CSV 파일을 읽어서 category language year 순으로 되어 있는 데이터를 가공해서 처리할건데 첫번째) { category : { language : 횟수, language : 횟수 } } 저장할 생각입니다. 두번째) { category : { year : language, year : language } }, 단 여기서 language 상태에서 중복을 발생시키면 데이터 사이즈가 커지므로 포함 여부를 살펴보고 존재하지 않으면 넣지 않을 생각입니다. 첫번째 아이디어 구체화) IoT, 'c, c++, python',..
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 ..
GCP07 :: Dataflow(작성중)
GCP07 :: Dataflow(작성중)
2020.08.12기본적으로 Input -> PCollection -> PCollection -> Output (workflow) 를 가집니다. Google Cloud Platform Console에 들어가보면 Stream, Batch 각각에 대해 다양한 템플릿을 제공하고 있습니다. 프로젝트 방향에 맞게 데이터파이프라인을 구축하는데 많은 도움이 됩니다. 임시 위치는 구글 문서를 참고하면 스테이징된 파이프라인 작업 라고 나와있다. 실제 파이프라인 작업과 유사한 상태를 의미한다고 생각합니다. ㅡ. Custom Template 구글 문서를 참고해보면 런타임 매개변수를 사용해서 파이프라인 내에서 실행되는 함수(e.g, DoFn) 전달해서 템플릿 기반의 파이프라인을 실행 및 맞춤 설정할 수 있다고 소개 되어 있습니다. 즉, 런타임..
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하면 확인할 수 있습니다.
GCP04 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법[작성중]
GCP04 :: Google Cloud Pub/Sub Dataflow를 사용한 Stream 처리방법[작성중]
2020.08.12Cloud Storage에 포함되어 있는 csv로 bigQuery-table을 생성합니다. Google-Cloud-Platform 에서 Pub/Sub 부분에 topic을 생성합니다. BigQuery로 내보내기를 통해서 pub/sub에서 publisher 가 받은것을 Dataflow 를 통해서 bigQuery로 전달해 줄 것입니다. bigQuery로 내보내기 했을때 위와 같이 web 페이지가 로딩됩니다. 여기서 BigQuery output table 과 임시 위치를 각각 [project-id]:[schema-name].[table-name], gs://[bucket-name]/[foder-name] 으로 지정해줍니다. output table이 저장되는 위치이고 임시 위치(bucket)에서 publisher..
카프카01 :: 아파치 카프카 개요
카프카01 :: 아파치 카프카 개요
2020.08.12ㅡ. Apache Kafka Apache Kafka는 여러 대의 분산 Server에서 대량의 데이터를 처리하는 분산 메시징 시스템 입니다. 일종에 데이터를 받고 데이터를 다른 장치에 보내는데 사용됩니다. 즉, 카프카는 여러 시스템과 장치를 연결하는 역할을 수행합니다. 과연 데이터를 얼마나 많이 받을 수 있을까요? 카프카는 대량의 데이터에 대한 High-Throughput 과 Real-time을 취급하고 있습니다. 카프카는 여러 이벤트(Activity Event, Network Event etc) 에 대해 받고 이를 Datawarehouse 나 Hadoop 그리고 검색 엔진 등에 전달해주는 역할을 합니다. ㅡ. Apache Kafka History 카프카는 링크드인에서 처음 출발했습니다. 이전에는 메시지 ..
알고리즘 92 :: BOJ_내리막길(DFS, DP) [진행중]
알고리즘 92 :: BOJ_내리막길(DFS, DP) [진행중]
2020.08.121 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package backjun; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class backjun_1520_내리막길 { private static int column; private static int row; private static ..
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