오히려 좋아..

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

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

분류 전체보기 210

[NestJS] NestJS에서 MongoDB 연결하기

2020.12.12 - [Language/Javascript] - [Node.js] MongoDB Mac에서 brew로 다운받고 Node.js로 연결하기 [Node.js] MongoDB Mac에서 brew로 다운받고 Node.js로 연결하기 Node.js + Mongodb 조합을 많이 사용한다고 하지만 python 만큼 자료는 많지 않은 듯하다. 이번 글에서는 Mac에서 brew를 통해 mongodb를 다운받고 node.js를 이용해서 연동하는 방법에 대해 알아보겠다. 일단 cocook.tistory.com MongoDB 다운로드 방법은 위 포스트에서 확인하길 바란다. 이 글은 NestJS에서 어떤식으로 Mongo DB를 사용하는지 정리한 글이다. NestJS에서 mongoose를 활용한 세팅과 Sche..

[🐕🐾일기] 프로그래밍을 잘한다라는 것에 대하여.. 라는 말이 있듯이..

요즘은 프로그램을 잘하는 것은 무엇일까에 대한 고민을 많이한다. 주니어로서 좋은 지향점이 될 수 있기 때문이다. 나름대로 내린/ 결론을 짧게 적어보자면 "가독성과 유지보수성을 유지하는 복잡한 구현을 할 줄 아는 프로그래머" 정도가 될 것이다. 물론 여기에는 커뮤니케이션 스킬과 아키텍쳐나 다른 기술들이 전제가 되어야하지만 이 이야기는 좀더 더 넓은 범주에서 다루고 싶다. 여기서 이야기 할 것은 프로그래밍 오직 그 자체이다. 위에서 적은 문장을 두 부분으로 나눌 수 있다. "가독성과 유지보수성" 그리고 "'복잡한 구현" 이다. "가독성과 유지보수성" 어디서 많이 들어보지 않았는가? 바로 클린한 코드를 작성하는 능력을 말한다. 코드를 클린하게 작성하는 것을 축구 선수의 역량에 비유하자면 선수의 개인기가 좋은 ..

글/🐕🐾 일기 2021.11.25

[Django] Django MySQL Fulltext Index 설정

오늘은 Django-mysql로 구성되어 있는 어플리케이션에서 Full text index를 설정하는 방법에 대해 알아보겠다. 먼저 현재 장고에서는 Fulltext 인덱스를 ORM으로 지원하지 않기 때문에 실제 쿼리를 데이터 베이스에 날려 동작해줘야한다. 아래 명령어를 통해 FullText를 설정하는 쿼리를 마이그레이션 파일로 만들어주자. app_name에 마이그레이션 파일을 생성하고자하는 app 이름을 작성해주면 된다. python manage.py makemigrations app_name --empty --settings=app.settings.local 생성된 마이그레이션 파일은 아래와 같다. 이제 operations안에 Fulltext를 생성하는 쿼리를 작성해주자. from django.db i..

[pytest] Trouble Shooting

1. 여러개의 데이터베이스를 사용할 때 프로덕트에서 부하 부담의 이유로 replica 데이터베이스를 사용하고 있고 테스트 데이터 베이스를 따로 사용하고 있다면 제대로 테스트가 돌아가지 않을 수 있다. 데이터가 작성되는 곳은 마스터 데이터베이스이고 읽어올때는 replica 데이터 베이스에서 읽어오기 때문이다. 물론 테스트 데이터베이스도 동일하게 구성 할 수 있지만 온갖 설정을 피하고 싶을때 아래처럼 사용하면 된다. @pytest.fixture(autouse=True) def mock_BaseManager(mocker): mocker.patch( "companies.models.Company.objects.using", return_value=Company.objects.using("default"), ) ..

[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

[git] 취소하기 치트 시트

1. Rebase 취소 하기 이전에 어떤 명령어를 작성했는지 그리고 해당 커밋의 해시값이 출력 >>> git reflog a23fve3 HEAD@{1}: ADD: commit 1 bh323gb HEAD@{2}: Delete: commit 2 19dfg4b HEAD@{3}: Modify: commit 3 e324b34 HEAD@{4}: Revert: commit 4 원하는 커밋의 해시값(6자리 숫자와 영어로 이루어져있는 값)을 이용해 아래 명령어를 작성해준다. 참고로 --hard는 기존 작업해놓은 내역이 지워지면서 해당 커밋으로 돌아가는 옵션이므로 잘 고민해서 사용하길 바란다. 이런 결과를 원하지 않는다면 그냥 옵션없이 사용하면 된다. git reset --hard 19dfg4b

Web Programming/Git 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에 아래처럼 적혀있는 건 아닌지 한번..

[DRF] Serializer Validation

Serializer는 입력값을 검증하는 역할을 할 수 있다. 이 글에서는 Serializer의 Validation 기능에 대해 알아보도록 하겠다. 가령 request 내부에 포함된 데이터를 이용해 유저를 만드는 경우를 생각해보자. UserCreateSerializer는 아래와 같이 작성 할 수 있다. 물론 ModelSerializer를 이용해 검증하는 방법도 있지만 동작을 확인하기 위해 Serializer를 사용하도록 하자. class UserCreateSerializer(serializers.Serializer): username = serializers.CharField() # ID password = serializers.CharField() # 비밀번호 password2 = serializers...