개발블로그
13 posts
Node.js & Module - PART2 (import/export .mjs file)

Node.js에서 모듈을 내보내고(export) 불러와서(import) 사용하는 방법을 다루는 글입니다. 네파트로 나뉘어있습니다. PART1 - module.exports (feat. CommonJS) PART2 - export/import with .mjs (feat. ES6) PART3 - { type: module } PART4 - export/import with babel (feat. prisma client) ES Modules - (import/export) PART1에서 사용했던 문법을 import/export 문법으로 변경해보자. 파일 구성은 아래와 같다. ex1_greetings.js : 인사말을 변수로 저장해둔 모듈 ex2_sayHello.js : 인사하는 함수를 선언하고 실행할 모듈 require 대신 import 문법으로 가져오기 모듈에 적용하고 싶은 ES 모듈 import 문법은 아래와 같다. 이대로 실행해보면, 다음과 같은 에러를 만난다. ES Modu…

September 22, 2021
개발블로그
Node.js & Module - PART1 (module.exports)

Node.js에서 모듈을 내보내고(export) 불러와서(import) 사용하는 방법을 다루는 글입니다. 네파트로 나뉘어있습니다. PART1 - module.exports (feat. CommonJS) PART2 - export/import with .mjs (feat. ES6) PART3 - { type: module } PART4 - export/import with babel (feat. prisma client) Common JS - (module.exports & require) 가장 처음 알아야 하는 방법이다. Node.js가 CommonJS 모듈 시스템을 사용하고 있기 때문이다. Node.js 모듈 시스템에서는, 파일 한 개를 모듈 한 개로 생각한다. 따라서, 파일 하나를 모듈로 불러도 무방하다. ‘모듈이 파일이구나’ 라고 생각하고 접근하도록 하자. 변수를 내보내고(export), 다른 모듈에서 불러오기(require) 테스트를 위해 이라는 디렉토리를 하나 생성했다.…

September 21, 2021
개발블로그
딸기를 한 번 팔아보겠습니다.

이번 겨울에 딸기를 한 번 팔아보겠습니다 이번 겨울에 딸기를 한 번 팔아보겠습니다

September 21, 2021
개발블로그
10개월차 코딩 부트캠프 멘토, 2020년 회고록

2020년은 누군가에게 멘토링을 하는 시간으로 가득 채웠다. 하루가 다르게 성장하는 스타트업에서, 매일이 순식간에 지나가는 부트캠프에서, 나는 어떻게 한 해를 보내었는가를 돌아본다. 누가 코딩 부트캠프에 오는걸까 그들은 진심이고, 그 옆에서 같이 일을 하고 있는 나 또한 어느 한 순간도 진심이지 않을 수 없다. 간혹 코딩 한 번 배워보고 싶어서 등록하려 합니다. 라고 말씀하시는 분도 있다. 정말 간혹. 그러나 수강생 분들 대부분은 그간 내가 해오던 것을 잠시 덮어두고 커리어를 바꾸고자 위코드의 문을 두드린다. 웃으면서 오는 분도 있고, 울지 못해 쓴 웃음 지으면서 오는 분도 있다. 현실이 답답해 잘 다니던 직장을 시원하게 그만두고 여행을 떠나는 것이 멋일 수도 있지만, 그런 결정은 현실의 모든 사람에게 주어지는 선택권은 아니다. 잘 다니던 직장을 그만두고, 다니던 학교에서 펜을 내려두고 부트캠프에 3개월이라는 시간을 투자한다는 것은 쉽게 내릴 수 있는 결정이 절대 아니다. 자신의 …

February 14, 2021
개발블로그
Django과 Reverse relation과 related_name

정참조와 역참조 객체 서로 호출하기 데이터베이스에서 두 테이블이 참조 관계에 있는 경우를 생각해보자. 예를 들어, 테이블과 사용자의 직업인 테이블이 있다. 두 테이블은 N:1 관계에 있으며, 객체가 객체를 참조하고 있다. 가 을 선택하여 입사 원서를 작성한다고 가정해보자. 객체는 객체를 정참조 하고 있으므로, 속성 이름으로 바로 접근 할 수 있다. User1을 선택하여, 그 사람의 job을 찾아보자. 그러나 객체는 객체를 역참조 하고 있으므로 바로 접근이 불가능하다. 이라는 을 가지고 있는 유저를 모두 찾아보자. ❌ 안 됨 ❌ 그렇다고 절대로 사용하지 못하는 것은 절대 아니니 걱정하지말자. 역참조 관계에 있을 때는 이라는 속성을 사용하여 접근해야한다. 이 때, 대신 사용할 수 있는 것이 이다. 역참조 대상인 객체를 부를 이름. 즉, 클래스를 정의할 때, 정참조 하고 있는 클래스의 인스턴스에서 어떤 명칭으로 거꾸로 호출당할 지 정해주는 이름인 것이다. W…

June 14, 2020
개발블로그
With as로 열 수 있는 파이썬 객체 생성하기

파이썬으로 다양한 객체들을 다루다보면 종종 을 사용한다. 특히 파일을 열 때 유용하게 사용하는데, 텍스트(.txt) 파일을 활용하여 작업할 때는 물론이며 음악 파일을 다룰 때에도 어김없이 등장한다. Django로 음악 스트리밍하기 PART1 Django로 음악 스트리밍하기 PART2 현재 진행중인 프로젝트에서는 database 로 연결되는 connection을 열고 닫을 때도 사용하고 있다. 그렇다면 이 기능의 정체는 무엇일까? 나만의 데이터도 with open으로 열 수 있을까? Python ‘with’ ? 파이썬을 사용하는 사람이라면, 아래 구문이 꽤나 익숙할 것이다. with은 쉽게 말해 아래 구문을 한 단어로 합쳐놓은 것이다. 여기서 구문은 파일을 여는 등의 명령인데, 열고 나서 을 하고, 그 명령이 끝나고 나면, 결과 여부에 상관없이 (suceeded or not) 하라는 구문이다. 예를 들어, python에서 mysql.connector 라는 커넥터를 이용하여 데…

April 05, 2020
개발블로그
Django로 스트리밍 하기 part2 - 중간 재생과 Unit test

중간부터 스트리밍 이전에 작성했던 스트리밍 코드는 아래와 같다. views.py 프론트에 fetch url 을 주고, 그 URL이 호출될 때 위 클래스가 실행되면 노래가 저절로 재생되었다. 그러나 지금 코드로는 노래를 오로지 처음부터만 재생할 수 있다. 중간부터 재생하려고 재생막대 그 어딘가를 누르게되면, 다시 fetch url을 호출하는 과정이 되기 때문에 다시 노래가 처음부터 시작된다. 행복하지 않다. 첫번째 시도, 파일을 읽어오는 부분인 부분에 어디서 읽을지 시작부분을 넣어주는 방법이다. 의 형태이다. 여기서 sample rate란 음악 파일에서 초당 읽어오는 데이터의 양이다. 따라서 시작하고자 하는 위치를 초(second)의 형태로 곱해주면, 파일에서 내가 시작하고자 하는 부분부터 읽어올 수 있기 때문이다. sample rate는 음악별로 다르지만, jamendo 홈페이지에서 다운받은 무료 음원의 sample rate은 거의 모두 22050이었다. 결과 1 반만 성공함.…

March 15, 2020
개발블로그
Django로 스트리밍 하기 part1 - binary streaming

사전 연습 - text streaming 음악 스트리밍 웹인 TIDAL을 클론하기 위해서는 음악 스트리밍 기능을 구현하는 것이 가장 중요하다. 음악 스트리밍을 위해서 사전 연습으로 우선 텍스트 스트리밍을 먼저 해보려고 한다. 과정은 아래와 같다. 파일 이름을 path parameter로 받기 해당하는 파일을 불러내기 그 파일 속에 문구를 streaming으로 보내기 파일 준비 내가 준비한 파일은 text_sample이라는 단순 텍스트 파일이다. 파일 내부에는 볼빨간 사춘기 - 별 보러 갈래 의 가사가 담겨있다. views.py 내부 로직 1 HttpResponse, JsonResponse 외에도 StreamingHttpResponse 를 import 한다. 2 query string 으로 받은 in_file에서 내부 내용을 가져오는 과정을 처리한다. 3 처리해서 받은 내부 내용을 response에 담아 return 2의 과정을 좀 더 자세히 보자. iteration이라는 함수는 4…

March 15, 2020
개발블로그
프로그램 추가 설치 없는 alias로 터미널 살의 질 개선하기

alias? 리눅스의 기본명령어와 긴 명령어를 간단히 줄여서 사용할 수 있게 해주는 쉘내부명령어 즉, 복잡한 명렁어나 여러 옵션을 한 번에 사용하고자 할 때 간단한 이름으로 사용할 수 있도록 하는 명령어다. 중요한 점은 쉘 내부 명령어 라는 것이다. 순수 쉘을 강박적으로 좋아하는 나같은 사람한테 딱이지 ^___^ 의미는 단축키와 비슷할 수 있지만, 활용도는 단순 단축키 그 이상이다. 형식 alias = 이 모양이면 끝난다. 참고해야할 점은 equal 기호 양쪽에 띄어쓰기 노노! 이미 우리 쉘들은 기본적인 alias를 사용하고 있을 수도 있다. 이정도? 뜻은 ll 이란 명령어를 치면, ls -al 을 실행시켜라 라는 뜻이 된다. 사용 방법 .bashrc 또는 .zshrc , 자기가 사용하고 있는 쉘rc 파일을 연다. 파일에서 alias라는 단어를 검색해보자 (명령모드에서 ‘/alias’를 치고 엔터) 이미 몇 개가 있다면 그 아래에 추가한다. 저장하고 빠져나와 혹은 로 적용해주기 …

March 14, 2020
개발블로그
Django로 query string 받기

쿼리스트링 프론트엔드에서 요청을 받을 때, 우리 백엔드는 end point 주소를 받는다. 엔드포인트를 보고, ‘아, 이런 정보를 얻고싶구나’ 하고 알 수 있다. 하지만 거의 같은 자료인데 조금씩 다른 자료에게 모두 각자 다른 url을 부여할 필요는 없다. 쿼리스트링을 사용하여 url의 정보를 parameter로 받으면 같은 url, 같은 view 만으로도 입력한 parameter의 정보에 따라 필요한 자료만 제공하면 되는 것이다. 어떻게 생겼나? 유투브 채널에 접속해보았다. BTS의 뮤직비디오다. https://www.youtube.com/watch?v=mPVDGOVjRQ0 www.youtube.com/watch라는 url 뒤에 ?v=mPVDGOVjRQ0 라는 부분이 보인다. 이렇게 물음표 뒷부분을 Query String 이라고 부른다. 라는 변수에 라는 값을 담는 것이다. 사용하기 설명 그대로 물음표 뒤에 변수와 값을 담는다. 여러개를 담고 싶을 때는 를 사용한다. view…

February 29, 2020
개발블로그
Jupyter notebook과 pandas 사용하기, CSV파일 MySQL DB에 저장하기

1. Jupyter notebook과 Pandas 사용하기 파이썬 라이브러리를 활용해서 웹 페이지 크롤링을 할 때에는, 불러온 자료들을 그때 그때, 한 줄 한 줄 확인하는 것이 더 편하다고 생각한다. 그래서 블럭 단위로 코드를 실행시킬 수 있는 jupyter notebook을 활용하기로 했다. jupyter notebook 설치 웹 크롤링을 위한 설정이 구축된 가상환경을 하나 실행시키고, 그 환경에 jupyternotebook을 설치한다. 나는 를 사용하였다. 셸에서 바로 실행시키면 된다. 블럭씩 실행시키는 방법 -> 오랜만에 쓰는 주피터 노트북 반가워 ㅎ.ㅎ jupyter notebook을 활용하면! 결과를 바로바로 볼 수 있어서 너무 좋다. 아래는 참고로 기입해놓은 베스킨 라빈스 메뉴페이지를 크롤링 할 때 사용한 코드 Pandas 활용하기 크롤링 한 자료를 라는 변수에 저장하였다. 이를 바로 Django에 연결한 MySQL에 저장해도 좋지만, 그리 추천할 수 있는 방법은 …

February 23, 2020
개발블로그
Django에 MySQL 연결하여 데이터 저장하기

Django에서는 기본 데이터 베이스로 sqlite3를 제공해준다. setting.py 파일을 보면 sqlite3에 대한 설정을 확인할 수 있다. 아래와 같다. 나는 앞으로 MySQL을 사용할 것이기 때문에, 이 기본 정보를 바꾸고 Django-MySQL 조합을 완성하려 한다. 우분투 MySQL 설치 환경 구성 django가 설치되어 있는 가상환경을 활성화한 뒤, 를 설치한다. 이 라이브러리를 활용하여 연동할 것이다. 우분투에서 mysqlclient 설치시 오류가 발생한다면, 이런 에러. 또는, 이런 에러. 이때, 다시 MySQL에 데이터베이스 생성 현재 프로젝트에서 이용할 데이터베이스를 MySQL 내부에 만들어주자. starbucks 라는 데이터 베이스를 생성한다. character set utf8mb4 - 한글 사용 활성화 지금은 아무 테이블도 없지만, 앞으로 이것 저것 넣으면 된다. ❔ 데이터베이스 삭제하려면 Django-MySQL 연동 여태 settings.py에 모든 정보…

February 17, 2020
개발블로그
파이썬으로 웹 스크랩핑 쉽게 하기

파이썬 라이브러리를 활용해서 간단한 웹 페이지 스크래핑을 해보자. 0. 웹 스크래핑 먼저, 웹 스크래핑이 무엇인지 간단히 짚고 넘어가자. 크롤링과는 어떻게 다른가? 웹 스크래핑은 신문이나 잡지 스크랩처럼 웹 사이트에서 원하는 정보를 따로 추출하여 저장해두는 것을 말한다. 엄청난 분량의 웹 문서를 사람이 일일이 모으는 일이 거의 불가능하기에 이를 자동으로 해주는 작업이다. 모든 순간 모든 자료를 모두 업데이트하지는 않고, 그 순간의 데이터를 저장할 수 있다. 이 외에도 데이터가 업데이트될 때마다 혹은 주기적으로 특정 시간마다 데이터를 수집하는 과정을 반복하여 업데이트 된 정보를 추출해올 수도 있다. 이런 프로그램을 웹 크롤러 라고 한다. Billboard chart 200 Netflix FAQ list 두 페이지에서 웹 스크래핑을 실습해보려한다. 다시 말해, 두 페이지에서 원하는 정보를 가져오려고 한다. 1. 라이브러리 설치 & 간단 소개 와 , 세 라이브러리가 필요하다. 혹시 모…

February 11, 2020
개발블로그