오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Language 41

[Javascript] 실행시간 측정 방법

파이썬에서는 그냥 현재 시간에서 실행후 시간 빼주는 방법으로 구현했는데 JS는 이런 것도 된다. console.time('test') somethingFunction() console.timeEnd('test') 아래 처럼도 가능하다. console.time('test') const value1 = somethingFunction1() console.timeLog('test', value1) // somethingFunction1의 실행시간 반환 const value2= somethingFunction2() console.timeLog('test', value2) // somethingFunction2의 실행 시간 반환 console.timeEnd('test')

Typescript에서 Enum을 사용하지 않는게 좋은 이유

https://engineering.linecorp.com/ko/blog/typescript-enum-tree-shaking/ 위 문서를 정리한 내용입니다. 한줄 정리 : Tree-shaking 측면에서 좋지않으니 Enum 대신 UnionType을 사용하도록 하자! 타입 스크립트 Enum 타입스크립트에서 enum은 아래와 같이 사용가능함 enum Color ( RED="red", GREEN="greee", BLUE="blue" ) console.log(Color.Red) // "red" 위 코드는 자바스크립트로 트랜스파일 될 때 아래와 같은 형식으로 변경된다. export var Color; (function (Color){ Color["RED"] = "red"; Color["Blue"] = "blue"..

[node] nvm 사용하기

로컬에 있는 노드 버전과 프로젝트 노드 버전이 달라 고생할 때가 있다. 이를 해결하면서 찾은 정보들을 정리해둔다. 이 문제는 nvm으로 해결할 수 있다. 1. NVM 설치 맥에서는 아래 명령어로 다운받을 수 있다. brew install nvm 다운로드 받은 후 환경변수를 설정해줘야한다. vi ~/.bash_profile 위 명령어를 작성하면 아래와 같은 창이 나온다. 맨 아래줄에 다음과 같이 적어준다. export NVM_DIR="$HOME/.nvm" [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh" [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt..

[FactoryBoy] Trouble Shooting

테스트를 작성하면서 특정모델 A에 역참조인 모델을 A가 생성되면서 같이 생성해야하는 일이 있었는데 구현하면서 꽤 고생했다. 이 과정을 정리해둔다. 아래의 간단한 예시를 사용했다. class Company(models.Model): name = models.CharField('회사명', max_length=100) created_at = models.DateTimeField('생성 일자', auto_now_add=True) updated_at = models.DateTimeField('업데이트 일자', auto_now=True) class Product(models.Model): company = models.ForeignKey(Company, related_name='products', on_delete..

Language/Python 2021.11.06

[JS] Error: Failed to lookup view "home" in views director

1. Error: Failed to lookup view "home" in views directory "/Users/user/Project/zoom-clone/views" app.set("views", __dirname + "/views") 2. ReferenceError: __dirname is not defined 위 두 에러가 반복적으로 나타났다. 분명히 해당 경로에 파일이 있는데 이왜않.. __dirname 에러를 해결하기 위해 아래처럼 적어주면 1번 에러가 발생하고 2번을 해결하면 1번 에러가 나타나는 에러였다. import path from "path" __dirname = const __dirname = path.resolve(); package.json에 아래처럼 적혀있는 건 아닌지 한번..

[Python] 파이썬 노답 삼형제(1) - 데코레이터

바야흐로 대개발자시대다. 많은 사람들이 다양한 이유로 IT업계로 모이고 있고 나도 그들 중 하나이다. 입문하는 사람들 대부분은 파이썬을 통해 이 곳에 발을 들인다. 파이썬이 상당히 배우기 쉬운 언어 중에 하나이기 때문이다. 일단 동적 타입 언어고 특별히 빌드과정 없이 스크립트상에서 바로 실행되기 때문에 입문 언어로 많이 선택한다. 하지만 파이썬이 마냥 쉬운 언어인가? 그렇지만은 않다. 파이썬을 학습하면서 몇몇 고비가 있는데 바로 데코레이터, 제너레이터, 디스크립터 형제들이다. 사실 문법 특별히 어려운 건 아니지만 도대체 어디에 써먹어야 할지 감이 안잡히는 그런 형제들이다. 오늘의 포스팅은 파이썬 노답 삼형제 중에서도 첫째인 데코레이터에 대해 알아보도록 하겠다. 데코레이터 바로 쓰기 데코레이터는 일종의 s..

Language/Python 2021.07.17

[css] 화면 사이즈 변경시에도 이미지 중앙을 보여주는 방법 (반응형)

헤더의 경우, 반응형으로 디자인 할 때 화면 사이즈 변경시 이미지 높이 변화없이 이미지의 중앙만 보여줘야 할 때가 있다. 본래의 경우 화면크기가 줄어들면서 이미지 크기가 비율에 맞게 줄어들거나 아래와 같은 조건을 주면 img{ display:block; margin: 0 auto; } 하지만 이렇게 해준다면 오른쪽부터 사라지도록 되어 있다. 하지만 헤더의 특정 영역에 화면에 크기에 관계없이 반드시 노출되어야할 이미지나 로고 있다면 위와 같은 방식으로는 조금 어려울 것이다. 오늘은 화면 사이즈 변경시에도 이미지의 중앙을 보여주는 css를 알아 보겠다. body 태그 내의 코드는 다음과 같다. 이 상태에서 css는 다음과 같다. .img-container-size{ position: relative; wid..

[Javascript] 이벤트 진행 막기 or 다시 시작

이벤트를 다룰 때 종종 이벤트의 본래 행동은 막은 후 다른 것을 진행한 다음 다시 그 이벤트를 진행해야 할 때가 있다. 오늘은 이러한 상황에서 사용하는 명령어를 간단하게 알아보겠다. 예제 코드는 아래와 같다. 먼저 JQuery를 사용했기 때문에 CDN으로부터 가져와준다. 여기서 핵심은 이벤트는 아래 코드로 막아줬다는 점이다. event.preventDefault(); 그리고 마지막 줄의 코드로 다시 해당 이벤트를 할당해줬다. unbind('event')는 JQuery에 의해 등록된 이벤트인 event를 제거해준다는 의미이다. 작성한 이벤트를 제거해주고 다시 클릭을 해주면 원래 태그가 해야하는 역할을 하게 된다. event.preventDefault() 반대라고 생각하면 된다. $(this).unbind(..

[Javascript] Client에서 cookie 접근

종종 서버에서 보낸 쿠키가 제대로 존재하는지 확인 하기 위해서 웹 브라우저에서 쿠키에 접근해볼 때가 있다. 오늘은 위와 같은 상황에서 console에서 쿠키를 다루는 간단한 명령어에 대해 알아보자. 아래 명령어를 사용하면 쿠키가 문자열 형태로 반환된다. document.cookie 클라이언트에서 쿠키를 추가하고 싶다면 아래와 같이 써준다. document.cookie = "key=value"; 그렇다면 쿠키는 어떻게 제거할까? 쿠키를 제거하는 방법이 딱히 존재하지는 않고 expires를 아래와 같이 설정해 해당 쿠키를 사용기한이 지난 쿠키로 바꿔서 브라우저에서 제거 하도록 한다. var deleteCookie = function(name) { document.cookie = name + '=; expir..

[Python] Thread-safe 한 자료구조

멀티스레드 환경에서 스레드간 통신을 위해 자료구조를 사용한다고 한다. 하지만 동시에 여러 스레드에서 하나의 변수에 접근시 임계영역 문제가 발생하게 된다. 그렇기 때문에 자료구조 역시 Thread-safe 하게 만들 필요가 있다. 아래는 Thread-safe 구현한 set 클래스 이다.(파이썬 동시성 프로그래밍, 에이콘 출판사 에서 발췌) from threading import Lock class LockedSet(set): def __init__(self, *args, **kwargs): self._lock= Lock() super(LockedSet, self).__init__(*args, **kwargs) def add(self, elem): with self._lock: #with keyword는 자..

Language/Python 2021.04.29