본문 바로가기

분류 전체보기

(54)
20201228_메인스크립트 - 데이터 수집 및 저장 메인 스크립트를 통해 크게 2가지 작업을 한다. 1. 각 플랫폼 데이터 수집 -> 데이터베이스 저장 2. 데이터베이스에서 데이터 취득 -> 구글 스프레드시트에 자동 입력 이번 포스트에선 1. 각 플랫폼 데이터 수집에 대해 설명해보고자 한다. 먼저, 각 플랫폼에서 데이터를 수집하는 방법은 크롤링 혹은 API를 통해서이다. 이렇게 수집한 데이터를 DB에 저장하며 1번 작업이 끝나게 된다. 아래와 같은 흐름으로 코드를 작성했다. 각 플랫폼 코드 객체화 및 초기화 -> 데이터 수집 -> 데이터 저장 1) 각 플랫폼 코드 객체화/초기화 및 데이터 수집 # main.rb def retrieve_dtoc_data(date) begin puts "start retrieve #{date} d2c data" sixpack..
20201228_시스템 구조 - 메인스크립트 구조 및 환경설정 시스템의 작동원리는 단순하다. ruby main.rb 위의 커맨드를 통해 매시간 main.rb라는 루비 스크립트를 실행시키는 것이다. main.rb의 대략적인 구조를 살펴보자면 아래와 같다. # main.rb require 'capybara' require 'active_record' require 'selenium-webdriver' require 'google_drive' ... project_root = File.dirname(File.absolute_path(__FILE__)) config_database_yml_file = File.join(project_root, 'config', 'database.yml') config_database_yml = YAML::load(ERB.new(File.r..
Section2-33~37 Function "A function is a piece of code that we can reuse over and over again in our code" Function declarations vs. expressions // function declarations function calcAge1(birthYear) { return 2021-birthYear; } const age1 = calcAge1(2000); // function expressions const calcAge2 = function(birthYear){ return 2021-birthYear; } const age2 = calcAge2(2000); function expressions부분에서 익명함수 부분은 statement가 아니라 (당연..
Section2-20 Type Conversion and Coercion "type conversion is when we manually convert from one type to another. On the other hand type coercion is when Javscript automatically converts type behind the scenes for us" type conversion 직접 타입을 바꿔주는 것을 뜻한다. const inputYear = '2020'; console.log(inputYear + 10); // 202010 console.log(Number(inputYear) + 10); // 2030 console.log(Number('hoho')); // NaN console.log(typeof NaN); // number 위에서 Nu..
Section2-13 let, const, var let 값이 변경될 가능성이 있는 경우, let을 통해 변수 선언을 한다. 예를 들어 'age'변수의 경우 고정값이 아닌 변동될 가능성이 있으므로 이 경우에는 let으로 선언하는 것이 타당하다. "we use the let keyword to declare variables that can change later so basically during the execution of our program" 변경 가능하므로 아래와 같이 값을 재할당할 수 있다. let age = 30; ... age = 31; 이를 reassigning 혹은 mutate라고 한다. 즉 mutate할 필요가 있는 변수는 let으로 선언한다. "when we need to mutate a variable, that's the per..
Section2-12 Data Type data type primitive data type in js 1. Number: Floating point numbers → Used for decimals and integers 소수, 정수 모두 사용된다. 즉 소수, 정수 모두 number 데이터 타입이다. 2. String: Sequence of characters → Used for text 3. Boolean: Logical type that can only be true or false → Used for taking decisions 4. Undefined: Value taken by a variable that is not yet defined (‘empty value’) 선언했지만 밸류 할당하지 않은 데이터 타입 ex) let chil..
2020년 회고 2020년, 다들 그렇겠지만 나에게도 쉽지 않은 한 해였다. 정말 많은 일들이 있었고, 대부분 좋지 않게 다가왔다. 버티는 삶이 싫어 이 길을 택한 건데, 새로운 인생의 시작이었던 2020년부터 원치 않은, 어쩔 수 없는 버팀을 많이 해버린 것 같다. 내게 있었던 많은 일들 중 몇 가지만 적어보자면, 먼저 일본에서 일을 시작하게 되었다. 하지만... 코로나 탓에 집에만 처박혀 있었고, 덕분에 여기가 일본인지 한국인지 분간 안되는 하루들을 자주 보냈다.난생처음 구설수에도 휘말렸다. 구설수란 말은 운세풀이에서나 보는 단어 아니었던가.. 그 단어를 직접 입 밖으로 꺼내는 날이 올 줄은 정말 상상도 못했다. 인간관계에도 흠이 갔다. 워낙 원만하게, 둥글둥글하게 살자는 마인드라 인간관계에 흠이 간 적도 처음이었다..
20201219_시스템 구조 - 데이터베이스 드디어 코드에 대해 적어볼 예정이다. 이번엔 최대한 루비를 루비답게 써보려했다. 그 전 코드들은 정말이지 엉성했다. 효율성 생각 없이, 대충 돌아가는 대로, 누가 보면 루비인지 아닌지도 모를 정도로 '일단 그냥' 짰다. 최근에 많이 느끼는건데, 그냥 코드를 짠다고 다가 아닌 것 같다. 시스템은 그냥 짜도 어떻게든 돌아는 간다(삐걱삐걱..). 하지만 만약 자신이 루비 개발자라면 루비의 정수를 최대한 누려가며 코드를 작성해야 하며, 간단한 코드라도 항상 질문을 해봐야 한다. 그 안에서 가장 효율적인 코드를 적용해야 하며 그 이유도 충분히 갖춰야 한다. 지금까진 그러지 못했다. 지금까지라 해도 고작 반년 좀 지난거지만, 여하튼, 반성해야 한다. 목표는 간단하다. 크론잡으로 메인 스크립트를 매시간 실행시키기. ..
20201219_뒤죽박죽 엉망진창 -> 얼렁뚱땅 월요일 아침에 들려온 룸메의 갑작스런 이직 소식. 홋카이도로 간단다. 1월부터 근무라하니 나도 당장 대책을 세워야만 했다. 이사를 하든, 새로운 룸메를 구하든. 여튼 그러다보니 이번주는 너무 정신이 없었다. 대책세우랴, 이런 저런 걱정하랴. 일이 손에 잡히질 않았다. 뒤죽박죽이 되어버린 일상탓에 일도 얼렁뚱땅 해버렸다. 조금 더 고민해보고 마케팅 팀과 회의해가며 방향을 잡아보려 했으나 회의는 커녕 채팅조차 하지 못했다. 간신히 대책을 마련해두고 정신차리니 벌써 금요일이다. 양심에 찔려 야근신청을 했다. 일단 저번주 정리해둔 각 플랫폼과 성과측정 사이트의 관계를 토대로 내린 내 나름의 결론은, 플랫폼 -> ec force의 구조가 아닌 ec force -> 플랫폼의 구조로 개편해야 한다는 것이었다. 플랫폼..
24.1 객체와 클래스 어째서 첫글이 24.1 부터냐고? 책이 너무 두꺼워서이다. 두꺼운 책은 첫 장 펼치기가 너무 부담스럽다. 그래서 궁금한 게 생길때만 찾아보는, 게릴라 전략을 택했다. 양심은 있어서 블로그 글로 정리하기로 했다. 그러니 내 44,000원아 너무 서운해 하지마.. 객체와 클래스는 항상 헷갈린다. 알것같다 싶으면 내가 몰랐던 개념이 툭 튀어나오고, 알고 쓴다 생각하다가도 알고보면 전혀 모르고 있었고. 그래서 책을 뒤적거려봤다. self와 메서드 호출 루비에는 현재 객체라는 개념이 있다. 현재 객체는 self를 통해 참조할 수 있다. 이 self는 루비에서 두 가지 중요한 역할을 하는데, 아래와 같다. 1. 인스턴스 변수에 접근하고자 시도하면 루비는 self를 통해 인스턴스 변수를 찾는다. 2. 메서드를 호출할..