/users
/posts
/slides
/apps
/books
mysetting
/users
/posts
/slides
/apps
/books
changhui lee
@devsisters
South Korea
Joined on 2021년 05월 07일
Profile
Post
Like
6:53 12/31
xo.dev
6:53
xo.dev
~/xo.dev
https://xo.dev
데브시스터즈에서 소프트웨어 엔지니어로 일하고 있습니다. 분야에 상관없이 소프트웨어를 개발하는 일을 사랑하며, 일을 제대로 잘하는 것에 관심이 많습니다.
저작도구: GatsbyJS
최종 피드 수집: 2024-12-20 07:16
전체 (35)
2y
HTML이 당신의 생각보다 더 중요한 이유
개요
프론트엔드 개발을 하다 보면 HTML, CSS 그리고 JavaScript 세 가지를 가장 많이 사용하게 됩니다. 세 가지 모두 중요하지만, 실질적인 비즈니스 로직이 JavaScript로 작성되고, 시각적인 부분은 CSS로 처
0
0
1
읽기모드
2y
4년간의 회고
0년
2016년 가을에 군대를 전역하고, 2017년에 복학을 했다. 항상 가지고 있던 별 볼 일 없는 지방대 학생이라는 자격지심을 바탕으로, 2년 만의 학교생활은 회의감만 남기고 한 학기 만에 다시 휴학하는 것으로 마무리가 되었다
2021_회고
+ 더보기
2
0
107
읽기모드
2y
JavaScript에서 날짜, 시간과 Temporal API
JavaScript와 시간, 날짜 그리고 Date
JavaScript에서 시간과 날짜에 대한 정보를 다룰 때 기본적으로 Date 객체를 사용합니다. 하지만 Date 객체를 쓰고 싶어 하는 사람은 별로 없습니다. 왜냐하면, 뭔가 이
0
0
7
읽기모드
3y
애플 실리콘(M1) 터미널 환경 설정하기
새 맥북 프로를 구입하고, 터미널 환경을 다시 설정했다. 다만 이전에 쓰던 x86 환경이 아니다 보니 다른 점이 조금 있었는데, 다른 사람들에게 도움이 될까 싶어 기록을 남겨본다.
Homebrew
가장 먼저 Homebrew를 설
0
0
4
읽기모드
3y
GitHub으로 협업하기: 클론부터 코드 리뷰까지
코드 리뷰
코드 리뷰는 다른 사람이 작성한 코드를 검토하며 궁금한 부분에 대해 질문을 하거나, 버그가 있는 부분을 알려주거나, 더 효율적으로 개선할 수 있는 부분을 찾아 피드백을 주며 서로의 코드를 개선해나가는 과정을 말합니다.
0
0
0
읽기모드
3y
GitHub Actions으로 Pull Request에 JIRA 이슈 뱃지 붙이기
지금 팀에서는 JIRA를 사용하여 이슈를 관리하고, 이슈를 해결하는 작업을 할 때 브랜치 이름을 ABC-123과 같이 이슈 ID로 만들어 작업한다.
작업이 끝나면 Pull Request를 통해 코드 리뷰를 하는데, 이 때 이슈와
0
0
23
읽기모드
3y
비슷한 명령어 추천은 어떻게 하는걸까?
터미널에서 여러 프로그램을 사용하다 보면 종종 명령어를 잘못 입력해 프로그램이 오류를 표시해줄 때가 있다. 그런데 Git이나 npm 같은 일부 프로그램들은 내가 잘못 입력한 명령어와 비슷한 명령어들을 추천해주거나 오히려 오타를 바
0
0
0
읽기모드
3y
Keybase로 Git 커밋 서명하기
GPG에 PGP 공개키-개인키 키페어 등록하기
먼저 Keybase CLI를 설치한다.
# 만약 gpg가 설치되어 있지 않다면 gpg를 먼저 설치하자.
brew install gpg
# Homebrew로 설치하는 keybase는 m
0
0
0
읽기모드
3y
Storybook과 Emotion 11 충돌 오류 해결하기
Emotion 11을 사용해서 컴포넌트 라이브러리를 개발하며 Storybook으로 문서화 및 테스트를 도입하려고 했는데, Storybook을 빌드하니 아래와 같은 오류가 발생했다.
ERROR in ./src/components/B
0
0
0
읽기모드
3y
WSL - Could not resolve hostname
WSL을 이용해서 git pull을 하니, github.com을 찾을 수 없다는 오류가 갑자기 발생했다.
$ git pull
ssh: Could not resolve hostname github.com: Temporary fail
0
0
0
읽기모드
3y
2020년 회고
모두가 혼란스럽던 한 해가 거의 끝나간다. 연말을 맞아 올해에 있었던 일들을 되돌아본다.
이직
이전 회사의 프론트엔드 개발 환경이 많이 좋지 않아 프론트엔드 개발자분들의 생산성이 크게 저하되는 모습을 계속 보다가 PHP + 여러
0
0
0
읽기모드
4y
예쁜 터미널 환경 설정하기
회사 개발자분의 터미널 환경 설정을 도와드리면서 내 dotfiles 레포지터리에 올려놓은 터미널 설정들을 공유드렸는데 이번 기회에 다른 사람들도 보고 따라 할 수 있도록 터미널 설정하는 과정을 글로 작성해본다.
macOS 기준으로
0
0
0
읽기모드
4y
죽음의 다이아몬드와 파이썬 메서드 결정 순서
죽음의 다이아몬드
프로그래밍을 하다 보면 우리는 상위 클래스의 멤버들을 하위 클래스에 물려받는 상속이라는 행위를 한다. 보통은 하나의 부모 클래스만 상속받지만 종종 아래 그림과 같이 여러 부모 클래스를 상속받는 경우가 있다. 만약
0
0
0
읽기모드
4y
질문에 서투른 사람을 위한 질문하는 방법
우리는 살면서 수없이 누군가에게 질문하고 답변을 합니다.
지인과 단순한 안부를 묻는 것으로 시작해, 회사에서 동료와 기술적인 부분에 대해 질문과 답변을 하기도 하고 혹은 온라인에서 처음 보는 누군가에게 질문을 받기도 하는데, 그중
0
0
0
읽기모드
4y
TypeScript의 unknown, any 그리고 never
TypeScript는 JavaScript에 없는 새로운 타입들이 있는데 최근에 TypeScript로 개발을 하며 unknown, any 그리고 never 세 가지 타입의 차이점을 제대로 이해하지 않고 있다는 생각이 들어 따로 정리
0
0
0
읽기모드
4y
실행 중인 Docker 컨테이너를 파일로 저장하고 다시 불러오기
이전 글에서는 Docker를 사용해 게스트 유저가 서버를 운영할 수 있는 가상 환경을 만드는 것을 했다. 그런데 이전 글을 잘 보면 Volume 설정을 하지 않아 컨테이너를 종료하면 컨테이너 내의 모든 작업 내역이 유실된다.
모든
0
0
0
읽기모드
4y
Docker로 한 서버를 여러 사람이 독립적으로 사용할 수 있는 환경 만들기
몇 달 전부터 같이 알고리즘 문제를 푸는 친구들과 panty.run이라는 알고리즘 블로그를 운영하고 있다. 블로그를 운영하는 친구 중 한 명이 간단한 웹 게임을 만들고 라즈베리 파이를 사용하여 배포했는데 이걸 보고 팀 블로그를 운
0
0
2
읽기모드
4y
Celery Task Pool을 Eventlet으로 사용할 때 Database에 접근하지 못하는 문제
먼저 간단한 Django 앱을 만들어보자.
가장 먼저 할 일은 celery 인스턴스를 만드는 것이다. 프로젝트에서 celery.py를 아래와 같이 작성한다.
# celery.py
import os
from celery import
0
0
3
읽기모드
4y
2019년 회고
2019년에 있었던 일을 되돌아보며
커뮤니티
2018년 연말에 있었던 파이썬 연말 미니 컨퍼런스를 시작으로 2019년에는 개발자 행사를 많이 가보려고 노력했다. 크게 NDC, DEVIEW, PyCon을 갔었는데 역시 가장 재밌는
0
0
0
읽기모드
5y
Python 3.8 업데이트 요약
파이썬 3.8에서 변경된 사항 중 개발자에게 직접적으로 체감될 몇 가지 변경 사항을 요약해보았다.
대입 표현식
파이썬의 =는 구분자로 취급되어 조건문에 섞어서 사용할 수 없었는데, 대입 표현식을 사용하면 같은 코드를 조금 더 짧게
0
0
0
읽기모드
5y
Python의 Global Interpreter Lock(GIL)
파이썬은 느립니다. 다른 언어들에 비하면 정말 많이 느립니다. 동적 타입 시스템을 사용하며 인터프리터 언어라는 것만으로도 충분히 설명이 가능하지만 파이썬은 느리게 만드는 원인이 하나 더 있습니다.
바로 Global Interpre
0
0
0
읽기모드
5y
Cron을 사용하여 리눅스 시스템 시작 시 명령어 실행하기
@reboot이라는 문자열을 명령어 앞에 붙이면 시스템 시작시 해당 명령어를 cron이 실행한다.
물론, cron 서비스가 시스템 시작시 실행되도록 설정되어 있어야 한다.
아래와 같은 식으로 작성하면 된다.
@reboot fore
0
0
0
읽기모드
5y
특정 Redis 데이터베이스의 모든 키 혹은 패턴과 일치하는 키를 삭제하는 방법
모든 키 삭제하기
모든 키를 삭제할 데이터베이스를 선택 후 FLUSHDB 명령어를 사용하면 된다.
redis-cli 밖에서 모든 키를 삭제하려고 한다면 아래 명령어를 사용하면 된다.
echo "FLUSHDB" | redis-cli
0
0
0
읽기모드
5y
간단하게 보는 웹 브라우저의 페이지 렌더링 방식
웹 개발을 할 때 프론트엔드 영역은 기본적으로 HTML, CSS, JavaScript를 사용하여 작성한다. 그런데, 우리가 작성한 코드들이 어떻게 웹 브라우저를 통해 보여지는걸까? 웹 브라우저는 어떤 흐름을 거쳐 우리가 작성한 코
0
0
0
읽기모드
5y
GitLab Runner에서 Docker in Docker 사용하기
GitLab Runner에서 Executor를 Docker로 설정해놓고, CI/CD 파이프라인에서 사용하는 Alpine Linux(혹은 다른 Linux 배포판 이미지) 내에서 Docker를 사용해야 하는 경우가 생겨서 단순하게 해
0
0
0
읽기모드
5y
Alpine Linux에 Docker와 AWS CLI 설치하기
Alpine Linux는 작고 가볍고 보안을 중시한 리눅스 배포판으로 Docker 이미지가 5MB 정도밖에 되지 않는 것으로 유명하다.
그래서 리눅스 위에서 간단한 작업을 해야할 때 자주 사용하는데, 이번에 CI/CD 파이프라인을
0
0
0
읽기모드
5y
Type Annotation, typing, mypy - 더 나은 Python 코드를 위해
Python은 변수의 타입이 언제든지 바뀔 수 있는 동적 타입 언어다.
동적 타입의 문제는 코드가 많아질수록 타입 체크가 힘들어진다는 것인데 Python은 그 문제를 해결하기 위해 Python 3.5에 Type Annotation
0
0
0
읽기모드
5y
Go 언어 스터디 - (5) if, switch, for
If Statement
가장 기본적인 if 문부터 살펴보자.
x := 2
if x < 3 {
fmt.Println("x is less than three <3")
}
// 출력: x is less than three <3
0
0
0
읽기모드
5y
Go 언어 스터디 - (4) 함수
이전 글에서 변수 선언를 선언할때 var [변수명] [타입]과 같은 형태로 선언 한다는 것이 가장 기본적인 형태라고 설명했는데 함수도 이와 크게 다르지 않다. 아래는 두 정수 x, y를 입력받아 합을 반환하는 간단한 함수다.
fu
0
0
0
읽기모드
5y
Go 언어 스터디 - (3) 데이터 타입, 변수
데이터 타입
정수형 타입은 정수 범위(크기)에 따라 여러 타입으로 나누어져 있다.
int, int8, int16, int32, rune(=int32), int64
uint, uint8, byte(=uint8), uint16, ui
0
0
0
읽기모드
5y
Go 언어 스터디 - (2) 패키지
Go는 Python처럼 프로그램을 하나의 패키지로 인식하는데 컴파일 할 때 “main”이라고 이름지은 패키지가 있다면 그 패키지를 컴파일한 결과물은 실행 파일이 되고, “main” 패키지의 main함수가 프로그램의 시작점이 된다.
0
0
1
읽기모드
5y
Go 언어 스터디 - (1) Go 설치, 개발 환경 설정하기
이 시리즈는 Go 언어를 공부하며 정리용으로 쓰는 글입니다. 틀린 부분이 있다면 알려주세요 :)
Go 1.12를 기준으로 합니다.
먼저 Go를 먼저 설치하자. https://golang.org/dl/에서 자신의 OS에 맞는 설치
0
0
1
읽기모드
5y
AWS Lambda에서 SQLAlchemy 사용하기
기존에 만들었던 서비스를 다시 새로 개발하며 기존 백엔드 코드를 조금 더 예쁘게 구조화하고 다시 작성할 필요성을 느껴서 어떻게 바꿀까 이리저리 고민을 하다가 데이터베이스에 데이터 삽입과 수정을 하는 로직은 AWS Lambda로,
0
0
0
읽기모드
5y
Python 3 비동기 프로그래밍
이 글은 Python 3.7을 기준으로 작성된 글입니다.
Generator, Coroutine에 대해 한번도 들어보지 못하셨다면 이전 글을 먼저 읽으시는 것을 추천드립니다.
Python 3는 Python 2에 비해 상당히 많은 부
0
0
0
읽기모드
5y
Python 3 Iterator와 Generator 그리고 Coroutine
이 글에서는 Python을 쓰며 한번쯤을 들어 보았을법한 Iterable, Iterator 그리고 Generator에 대해 알아봅니다.
Iterable
Iterable이란 객체가 가지고 있는 멤버들을 하나씩 반환할 수 있는, 쉽게
0
0
0
읽기모드
About
Badge
Contact
Activity
Terms of service
Privacy Policy