210204 Build a server using ExpressJS & Babel

본 포스팅 내용은 과거에 개인적으로 공부할때 정리했던 NodeJS의 내용을 복습의 목적으로 다시 정리하는 포스팅입니다.


Express 프레임워크를 사용해서 NodeJS 서버 작성

1
2
3
4
5
6
7
8
9
10
11
// express라는 이름의 파일을 찾아보고, 없으면 node_modules내부에서 찾아본다.
const express = require('express');
const app = express();

const PORT = 4000;

const handleListening = () => {
console.log(`Listening on: http://localhost:${PORT}`);
};

app.listen(PORT, handleListening);

package.json에 entry command 만들어주기

1
2
3
4
// package.json
"scripts":{
"start": "node index.js"
}

Read More

210204 Plotly + Pandas Practice

Pandas

1
2
import pandas as pd
df = pd.read_csv("data/time_confirmed.csv")

Table에서 Column 특정 Column 제거하기

  • 제거할 Column은 drop()을 사용해서 제거해준다.

    1
    2
    3
    4
    5
    # 제거할 column명을 column 속성을 명시해서 제거하거나
    df = df.drop(column=["Column1","Column2","Column3","Column4"]).sum().reset_index(name="total")
    # 명시하지 않고 axis=1를 추가해서 제거할 수 있다.
    df = df.drop(["Column1","Column2","Column3","Column4"], axis=1).sum().reset_index(name="total")
    # 제거된 column을 제외한 column을 기준으로 합계(sum)를 구하고 series를 data frame으로 바꿔준다. 바꾼 후에 새로 추가된 합계 column의 이름은 "total"로 지정해준다. (.reset_index("total"))

    Read More

210204 Python Regular Expression Assignment

HackerRank

원래 HackerRank 문제의 경우, 별도로 풀이를 정리하지는 않지만, 이번에 정규표현식의 경우, 헷갈리는 부분과 새롭게 공부하게 된 내용이 있어서 별도로 정리를 해본다.

문제 1

Problem1 Link(HackerRank)

이 문제는 앞 뒤로는 자음만 위치하고, 가운데에는 2개 이상의 모음으로만 구성되어 있는 문자를 정규표현식을 통해 출력하는 문제이다.

Task You are given a string . It consists of alphanumeric characters, spaces and symbols(+, -). Your task is to find all the substrings of that contains or more vowels. Also, these substrings must lie in between consonants and should contain vowels only.

우선 문제를 풀이하기에 앞서 다음 긍정/부정예측(positive/negative lookahead assertion), 긍정 후 읽기에 대한 개념에 대해서 알아보자.

긍정적인 예측

x?=y : 이 패턴은 직후에 y가 존재하는 문자열 x에 match한다.

1
2
foo(?=bar)
# 직후에 bar가 있는 foo에 일치한다.

부정적인 예측

x?!y : 이 패턴은 직후에 y가 없는 문자열 x에 match한다.

1
2
foo(?!bar)
# 직후에 bar가 없는 foo에 일치한다.

Read More

210204 Self Development TIL

Thought of the day

어떠한 위대한 일도 하루 아침에 이루어지지 않는다.
(No great thing is created suddenly.)


DAILY RECORD

오늘은 동네에 있는 BLACK DUCK 카페에서 AM 10시 40분에 하루를 시작했다.
오늘도 의미있는 하루가 되기 위해 노력하는 내가 되자.

TO DO LIST


Read More

210203 Git Stash Practice

Git stash

Git Stash Practice

branch를 끊어서 작업을 하는데, 일부 작업한 내용을 잠시 stage에 올려서 다른 branch에서 작업을 하고자 할때 stash를 활용할 수 있다.

아직 파일의 수정이 끝나지 않아서 commit 하기가 곤란하고, revert로 인해 다른 branch로 checkout을 하기도 곤란한 상황을 처리할 때 git stash를 사용한다.

git stash 명령은 git add를 통해서 트래킹 중인 파일에 대해서만 사용이 가능하다.


새로운 stash 생성

1
2
3
4
# saved to `refs/stash`
$ git stash
or
$ git stash save

생성된 stash 리스트 확인

1
$ git stash list

Read More

210203 Plotly + Pandas Practice

Plotly+Pandas

Pandas를 사용해서 csv파일을 읽어보는 간단한 실습을 해보았다.

1
2
3
4
# -*- coding: utf-8 -*-
import pandas as pd

read_csv = pd.read_csv("data/test.csv")

Excel sheet의 head(Column title)만 추출하기

1
print(read_csv.head())

특정 Column name에 해당하는 데이터를 출력

1
print(read_csv["Column name"])

Column name(1), Column name(2), Column name(3)에 해당하는 데이터를 출력

1
2
3
4
read_csv = read_csv[["Column name(1)", "Column name(2)", "Column name(3)"]]

# Column이름과 함께 지정한 특정 Column들의 데이터들이 출력된다.
print(read_csv)

Read More

210203 [SyntaxError] Non-ASCII Character

Resolve error

Python과 Pandas를 활용하여 csv파일을 읽는 간단한 처리를 하던 중에 Non-ASCII Character 에러가 발생했다.

1
SyntaxError: Non-ASCII character '\xec' in file /Users/hyungilee/Documents/dev/side-projects/corona-dashboard/pandas_practice.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Python의 경우, 기본적인 설정 상태에서 코드내에 한글이 있는 경우 코드 내의 한글을 Python 코드를 읽어들이지 못해서 위의 에러가 발생한다.

해결방법은 아래와 같이 파이썬 코드 맨 위 첫번째 혹은 두번째 줄에 한글 인코딩을 하도록 명령해주면 된다.

1
2
# -*- coding: utf-8 -*-
# -*- coding: euc-kr -*-

Read More

210203 Python Assignment

Python

공공데이터포털의 csv파일을 json으로 converting하기

경기도 성남시_인구및세대_현황

1
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
import csv
import json

population = {'sungnam_population': []}

# csv 파일을 csv module로 읽어오기
with open('20210201_sungnam.csv', 'r', encoding='euc-kr') as f:
sungnam_population = csv.reader(f)
# list -> dictionary
sungnam_population_list = list(sungnam_population)

for row in sungnam_population_list[1:]:
population_dict_row = dict()
# 0번째 열에 있는 key값과 index를 이용해서 dictionary 데이터 만들기
for index, key in enumerate(sungnam_population_list[0]):
population_dict_row[key.replace(
" ", "")] = row[index].replace(" ", "")
population['sungnam_population'].append(population_dict_row)

# json.dump()를 활용해서 dictionary type의 데이터를 json 파일로 추출하기
with open('sungnam_population.json', 'w', encoding='euc-kr') as f:
json.dump(population, f)

# 추출된 json 파일을 읽고 출력하기
with open('sungnam_population.json', 'r', encoding='euc-kr') as f:
des_data = json.load(f)

print(des_data)

Read More

210203 Self Development TIL

Thought of the day

끝까지 해보기 전까지는 늘 불가능해 보입니다.
(it always seems impossible until it’s done)


DAILY RECORD

오늘은 동네에 있는 BLACK DUCK 카페에서 AM 9시 20분에 하루를 시작했다.

오늘도 의미있는 하루가 되기 위해 노력하는 내가 되자.

TO DO LIST

  • Python + Pandas, Plotly Library project (Personal Side Project) (진행중)
  • Git PR template관련 블로그 글 작성하고 프로젝트에 적용시켜보기 (완료)
  • 이전 블로그 개발내용 관련 글 내용 이전 작업하기 (JavaScript, ReactJS, NodeJS) (진행중)
  • Python 과제 - 공공데이터포털의 csv파일을 json으로 converting하기 (완료)

Read More

210203 Git PR template

Pull request

다양한 사람들과 협업을 할 때 중요한 것은 문서작성 능력커뮤니케이션 능력이다.

Github 프로젝트를 다른 사람들과 같이 진행을 할때, pull request나 commit 메시지를 작성하는데,

적절한 format과 convention을 따라 작성을 하는 것은 매우 중요하다. 실제로 업무를 할때에도 이 convention을 따라 적절한 format으로 작성을 하게 되면, 해당 pull request나 commit 메시지를 확인하는 사람에게 업무처리에 대한 깔끔한 인상과 명확하게 처리한 업무에 대한 내용 전달을 할 수 있다.


따라서 이번 포스팅에서는 Github project에서 어떻게 문서를 관리하는지와 PR Template을 어떻게 자동으로 generate하는지에 대해서 살펴보고, 잘 formatting된 Template의 sample을 살펴보며 어떻게 하면 좀 더 전달력있는 Pull Requst message를 작성할 수 있는지에 대해서 배워보도록 하겠다.

PR Template 생성하기

Github 프로젝트를 위한 PR Template를 만들어보도록 하겠다.

Read More