애플 로그인
첫 번째 강의: 오리엔테이션
Ch 2. AWS 회원가입 1. 비밀번호 최대한 어렵게 한다. 기본적으로 기업용 서비스이기 때문에 그렇기도 하지만, 계정이 해킹됐을때, 사용 요금 폭탄 혹은 중요한 정보가 유출될 수 있기 때문이다. 2. 전화번호, 이메일 추후에 AWS로부터 기술 지원을 받을 수 있기 때문에 자주 사용하는 이메일을 사용한다. 3. 과금이 발생했을 때 미사용 EC2 ...
`투스콥스오브 장고` 라는 책에서는 시그널의 사용을 금기시하다시피 했지만, 차용하게 됐다. 해당 시그널이 작동되는 플로우는 다음과 같다. 사용자가 수거신청을 한다. consignment 객체가 생성된다. 생성된 직후(post_save) -> 슬랙, 카카오 메시지 발송 유닛테스트에서 매번 signal을 active할 순 없다. 단위(Unit)테스트의 ...
임의의 제품의 가격 변동을 추적하는 테이블을 어드민에 배치해야 했다. 어드민에서는 해당 제품의 가격을 변경한다. ex) 4500000 --> 4250000 변경 사항을 `저장`하면, 자동으로 price_history테이블에도 가격, 할인율, 할인금액, 수수료, 수익금 등의 정보가 생성되게 했다. 특히, 어드민에서 해당 정보를 볼 수 있게 배치하는...
아래와 같이 settings.py가 작성됐다고 해보자. 아래의 명령어를 통해 쉘에 접속 후, 다시 아래의 명령어를 입력해보자. 1. 문제점 쉘에서 위와 같이 타이핑 시 에러 발생. `AttributeError: 'Settings' object has no attribute 'kakao_userid'` 2. 해결 settings.py의 Constan...
이미지 워터마크 1) 텍스트 방식 2) 이미지 방식
1. 상황 master 브랜치를 삭제하고 `main` 브랜치를 origin으로 설정하고 싶다. 2. 디폴트 origin 브랜치 바꾸기 깃 레포지토리에 접속 후, settings 클릭 -> branch 클릭 디폴트 브랜치를 main으로 바꿔준다. 아래 사진을 그 결과 값이다. 3. 마스터 브랜치 삭제하기 vim에서 아래와 같은 명령어를 입력한다...
1. 에러 내용 raise TransactionManagementError( django.db.transaction.TransactionManagementError: An error occurred in the current transaction. You can't execute queries until the end of the 'atomic' block...
1. 디렉토리 생성(feat.S3) AWS S3에서 워터마크 이미지 파일을 업로드 한다. 디렉토리 경로는 `/watermark/product/`로 하였다. 2. 이미지 불러오기 워터마크 부착 기준은 다음과 같다. 썸네일 이미지가 아닌 판매 제품 이미지들 제품 이미지 크기(width, h
이미지의 width, height를 확인해보자. `결과` 제품 이미지의 사이즈를 판별해주는 함수를 구현한 후, 사이즈별 적절한 워터마크 이미지를 선택해주는 부분을 구현 계획 출처: https://www.geeksforgeeks.org/python-pil-image-open-method/
1차 수정
1. pip: not found 에러 2. pip3: not found 에러 3. No module named pip 에러 `python3 -m pip install awscli==1.18.8`로 해도 실패 4. 해결방법 이럴땐 컨테이너 내부로 액세스 후, 실제
1. What is ECR? 2. CI/CI 변수 ** 적용 이유
python shell_plus에서 `clear 또는 clc`명령어가 작동되지 않아 항상 답답했었다. `control + l` 키를 통해 이제 깔끔하게 작업할 수 있게 됐다. 기존 이후
1. 폰트 컬러 요구사항 `color: #999999;` 요구사항 충족하기 2. paste 메소드 중요사항 출처: https://stackoverflow.com/questions/7510313/transparent-png-in-pil-turns-out-not-to-be-transparent 3. ioFile 중요사항 ![](https://images....
1. S3 버킷 생성 테라폼의 state를 저장하기 위해 AWS S3 서비스를 사용한다. 버킷이름은 AWS 리전을 통틀어 고유해야 한다. 유데미 강좌에서 수강생에게 us-east-1 리전으로 실습 진행을 권하고 있기에 동일하게 진행했다. 퍼블릭 엑세스 차단한다.(디폴트) 버킷 생성 완료 ![](https:
1. .gitignore 수정 기존 gitignore 파일에 terraform 관련 ignore파일을 추가해야 한다. ( https://www.toptal.com/developers/gitignore ) 2. deploy 디렉토리 생성 최상위 디렉토리 안에 `deploy` 라는 디렉토리를 생성한다. 이는 모듈화 및 유지/보수 측면을 고려한 것이다. ...
1. bastion.tf 작성하기 서버 관리를 위해 어드민 권한으로 서버에 접속하는 루트를 구축할 것이다. SSH 방식으로만 접근이 가능하며, private한 (사내)네트워크 하에 구축되는 ec2 인스턴스다. 아래 사진에서 표시했듯이 AMI는 `Amazon Linux 2 AMI`를 사용할 것이다. 빨간색 음영처리된 부분을 복사한다. 아래 그림과 같이 ...
실제 프로젝트를 진행하다보면 `DEV`, `TEST`, `STAGING`, `PRODUCTION` 등 다양한 배포 환경이 필요하다. 하나의 프로젝트 내에 다양한 배포 환경이 있으니,매번 배포 관련 settings 변수를 수정하는 것은 비효율적이다. 1. terraform workspace 명령어 위와 같이 명령어를 입력하면 terraform이 제공하...
위와 같이, EC2 인스턴스에 Name이 없어서 디버깅 및 식별함에 있어 어려움이 있다. 1. variables.tf 생성하기 terraform 관련 모듈은 `deploy`디렉토리에서 관리하기로 했었다. 프로젝트의 최상단에 deploy 디렉토리가 있다. variables.tf main.tf `Locals`를 사용할 예정이다. Locals는 다...
AWS 서비스를 이용하며 tag는 중요한 역할을 한다. 메타 언어로 해당 리소스에 대한 주석 역할을 한다. 디버그가 쉬울 뿐만 아니라, 유지/보수/식별 측면에서 매우 효과적이다. 1. variables.tf 업데이트 2. main.tf 업데이트 위와 같이 작성하면 앞으로 terraform으로 생성할 모든 리소스들에 대해 tag가 생긴다. 3. b...
1. refreshfromdb 반영 전 `결과` 2. refreshfromdb 반영 후 sampleproduct.refreshfrom_db() 코드 한 줄 추가
`mkdir folder`와 같은 명령어 입력시, 디렉토리 생성과 동시에 해당 디렉토리에 진입하는 명령어를 작성해보자. .zshrc 파일 수정 1. 터미널 열기 또는 기존 터미널 cd ~/ 2. vi .zshrc 3. 코드 추가
`파일명 오타주의보` 1. skeleton CI/CD config 1) 프로젝트 최상단에 `.gitlab-ci.yml`파일 생성 2. 주요사항 (1) gitlab.yml 포맷 사용자가 직접 stage들을 정의한다. 크게 7가지의 stage들을 구성했다. (2) rules `우리는 현재 gitlab기반의 ci/cd를 구상하고 있다.` 파이프라인...
유데미 강의를 들으며 수업 내용을 기록하고 있다. 1. gitlab 접속 지난 시간에 `.gitlab.yml` skeleton 파일을 작성하였다. 작성후, git push까지 진행했었다. 2. merge request 진행 `gitlab-ci-cd-skeleton`브랜치에서 `master` 브랜치로 merge 좌측 `CI/CD` 메뉴에서 작업(`...
`.gitlab.yml`에 stage를 정의했었다. 각 stage 구체화 하자. 1. 'Test and Lint' stage `image, script`를 변경시킨다. 이번 stage에서 사용될 이미지는 도커 이미지다. 2. 'Validate Terraform' stage
terraform기반의 인프라를 자동화하는 pipeline을 구축하고 있다. CI만을 위한 (최소한의 policy를 부여받은) AWS 유저를 생성해야 한다. 1. admin용 iam 유저로 로그인 최초 aws를 가입했을 때, 그 계정은 루트 유저다. 그리고 루트 유
1. stage 내용 수정하기 `.gitlab.yml)`에서 `Build and Push` stage를 정의했었다. 새로운 브랜치를 만들고 `.gitlab.yml` 을 수정해보자. 수정 전 수정 후 지난번과 마찬가지로 gitlab이 제공하는 포맷 validate 기능을 활용해보자.
1. 코드 수정 수정 전 수정 후 2. TF_VAR 의미 terraform에 필요한 환경변수들을 `~.tf` 파일에서 사전에 정의할 수 있다. 하지만 도커 이미지를 빌드하고 run에 필요한 환경변수들은 다른 방식으로 지정해야 한다. (끊임없이 변하는 도커 이미지 태그 등) 다음과 같이 말이다. 3. 코드 추가 수정(for production) ...
수정 전 수정 후 추가로 Production Apply 부분도 수정한다.
이제 `.gitlab.yml`파일 수정을 마무리할 시점이 왔다. destroy에도 두 단계가 있다. 하나는 staging을 위한 destroy 다른 하나는 production을 위한 destroy다. 1. 코드 수정 수정 전 수정 후 gitlab 포맷 validate 기능을 활용하여 검토하자.
1. 내용 정리(feat.workflow 진행 전) 1. .gitlab.yml skeleton 파일을 작성했다. skeleton, 즉 뼈대만 갖춘 파일로 stage들을 정의만 했다. 도커 이미지, aws ci user, 환경변수, job 관련 script는 정의하지 않은 상태 script 는 echo "" 이 수준으로 s...
1. VPC 2. network.tf 파일 생성 `deploy`디렉토리 내 network.tf 파일 생성 terraform 자료 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc
이전 시간에 디폴트 VPC를 생성했다. cidr 범위는 10.1.0.0/16이었다. VPC의 IP역시 subnet(public, private)으로 나눠서 사용한다. Public subnet 로드밸런서와 bastion 서버를 위해 퍼블릭 서브넷이 필요하다. main.tf main.tf에는 위의 코드 한 줄만 새롭게 추가된다. network.t...
코드 추가 network.tf
1. CI user 정책 update `IAM -> User -> CI 관련 유저 선택 -> 정책편집 -> JSON` '정책 검토' 클
1. 상황 - `장고 어드민`에서 이미지 벌크 업로드 시도 - 413 request entity too large 에러 발생 2. 시행착오 1) .platform ec2 인스턴스 AMI 가 아마존 리눅스2 인 경우에는 프로젝트 최상단 경로에 .platform 으로 지정해야 한다는 의견이 많았다. 특히, 아래 링크의 한국인 개발자가 적어주신 자료로 인...
1. terraform plan 아래 명령어를 입력하면 postgres 데이터베이스의 비밀번호를 입력하라는 창이 나온다. 위와 같은 변수 입력창이 나오는 이유는 `variables.tf`에 데이터베이스의 username과 password 관련 description을 입력했기 때문이다. 2. sample.tfvars 생성 최상위 경로에 위치한 de...
1. policy 업데이트 아래의 새로운 정책을 기존 CI 유저 정책에 반영한다. 앞에서 bastion EC2 인스턴스를 생성했다. 하지만 해당 서버를 접근하거나 업데이트하는 등의 역할은 부여하지 않았다. 하드웨어만 있다고 생각하면 된다. 따라서, 기존 생성한 CI 유저에 ec2 인스턴스에 관한 역할을 추가로 부여하는 과정이다. 예를 들어, 해당 b...
1. user-data.sh bastion ec2 인스턴스를 생성할 때 가장 먼저 실행될 스크립트를 작성할 것이다. 스크립트 파일들을 모듈로써 관리가 용이하도록 `templates`디렉토리에 저장할 예정이다. `deploy` 디렉토리 내에 templates 디렉토리를 생성한다. 다시 templates 디렉토리 내에 bastion 디렉토리를 생성한다. ...
현재 iam 유저에게는 임의의 역할을 다른 aws 서비스에 전달(위임)하는 권한(역할)이 없는 상태다. iam 유저가 특정 역할을 bastion 인스턴스에 적용(전달, grant)할 수 있는 권한 역시 부여해야 하는 것이다. 그렇다면 왜 기존 iam 유저의 역할을 update하지 않고, 인스턴스에 권한을 attach 하는 것일까? "bastion 인...
variable.tf 파일 수정 bastion key name을 생성할 것이다. default 값은 앞서 aws에서 생성한 key pair 의 key 이름과 일치해야 한다. 그리하여 bastion ec2 인스턴스가 `launch`될 때, variabe.tf에 선언한 key name과 일치하는 value를 AWS ssh 키 페어에서 불러온다. bas...
AWS ec2 인스턴스는 (iam 유저의 역할을 부여할 때와 마찬가지로) 최소한의 네트워크 접근만 허용해야 한다. 물론 보안상의 이유때문이다. `"Best practice to always give the minimal access that is required for a service."` 1. 보안그룹 생성 `보안그룹`을 설정하자. 인바운드...
배경 terraform 기반 배포시, bastion 인스턴스가 생성될 때마다 해당 인스턴의 엔드포인트도 매번 바뀐다. 목적 따라서 배포마다 bastion host의 퍼블릭 dns 주소를 출력하게 할 것이다. 코드 outputs.tf 검증 그리고 터미널에서 `ssh ec2-user@엔드포인트` 과 같이 입력하면 bastion 인스턴스에 접속이...
1. CI user 권한 확장하기 AWS `IAM 리소스에 접속하여 정책`을 클릭, 초반부터 생성해둔 CI 유저 관련 셋팅을 수정해야 한다. 아래의 코드를 기존 정책 가장 하단에 입력한다. `로그 그룹` 관련 역할은 향후 클라우드 워치 리소스 활용 및 에러 디버깅을 위해 필요하다. `ecs`는 AWS 인프라 구축에 있어서 핵심적인 역할을 하는데, 도커...
1. task-exec-role.json 정의 `deploy 디레토리 내에 templates` 디렉토리가 있다. 다시 `ecs`디렉토리를 생성한다. 그 `ecs` 디렉토리 내에 task-exec-role.json 파일을 생성한다. `deploy/templates/ecs/task-exec-role.json` task-exec-role.json 아마존...
ecs.tf 파일에 아래의 코드를 추가한다.
1. template 정의 목적 2. template 코드 작성 `deploy/templates/ecs/container-definitions.json.tpl`
DRF에서 기본 제공하는 permissions는 아래와 같다. 헤더 쿠키 검증 default permissions를 커스텀 해야했다. permissions.py 핵심사항은 두 가지다. 1. 검증이 완료된 유저의 경우 `request.user = user` 2. has_permission 메소드 오버라이드 검증 완료된 유저면 return Tr...
1. variable.tf `AWS ECR 레포지토리 -- > Private -- >URI`복사 variable.tf 파일 수정 `:latest` 태그를 URI 바로 뒤에 입력했다. 초기 프로젝트 셋팅시, 가장 최신의 이미지에 latest태그가 입력될 수 있도록 설정했기 때문. 장고 settings.py의 시크릿 키 default는 입력하진 않을 ...
ecs 클러스터 내에서 도커 컨테이너를 실행시키는 것이 service다. ecs.tf 파일 수정 1. 보안그룹 설정 >인바운드 규칙: `proxy` 아웃바운드 규칙: `database, ECR` 2. ecs 서비스 리소스 구축 >`desired_count`: task의 수를 의미하며, 값이 높을 수록 비용도 증가한다. > >`network_conf...
1. ECS 접속 [1] ECS 서비스 선택 및 해당 클러스터 선택 [2] 작업 선택 [3] 로그 클릭 [4] 컨테이너 선택 [5
1. superuser 생성 지난시간까지 ecs 클러스터를 구축했다. 해당 환경에서 도커 컨테이너가 실행될 것이다. 이제 테스트를 해보자. 우선, `superuser`을 생성하고, 로그인이 필요한 API를 테스트 진행할 예정이다. 인터넷 게이트웨이 및 SSH를 통해 Bation 서버에 접근해야 한다. Bastion의 Host 이름을 얻는 방법은 ...
1. CI 유저에 로드 밸런스 권한 부여 ![](https://images.velog.io/images/khh180cm/post/5faea0f7-4da5
아래의 내용을 추가한다.ECS 클러스터 내에서 실행 중인 task의 hostname(IP)를 얻어야 한다.gethostname을 통해 hostname 객체를 얻고,gethostbyname을 통해 hostname 객체의 IP를 얻는다.리포지토리 master로 git pu
1. IAM 정책 수정 ![](https://images.velog.io/images/khh180cm/post/b53d53ec-ac4e-41dc-a
1. 브랜치 생성 2. s3.tf 파일 생성 `deploy`디렉토리 내에 s3.tf 파일을 생성한다. 3. container-definitions.json.tpl 수정 버킷이름과 AWS 리전을 담은 변수를 컨테이너에 전달해야 한다. 위 두 코드를 추가한다. s
장고 스토리지 라이브러리를 사용한다. s3 버킷으로 파일 업로더를 가능하게 해주는 라이브러리다.출처: https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.htmls3-write-policy.
1. requirements.txt 파일 수정 `boto3와 django-storages`모듈을 추가한다. 2. settings.py 파일 수정 3. docker-compose.yml 파일 수정 변경 전 `- S3STORAGEBACKEND=0` 위의 코드를
어드민에서 "브랜드" 관련 객체를 C,R,U,D하여도 브라우저 상에서 그 결과가 실시간 반영되지 않는 문제가 발생했다.queryset evaluation비권장하는 방법임을 알면서도search_set에 저장된 쿼리셋 캐시를강제로 evaluate했다.이렇게 해서 문제가 해
아래의 코드를 추가한다.
Press ENTER or type command to continuexcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/D
https://stackoverflow.com/questions/42239818/how-to-set-the-default-of-a-jsonfield-to-empty-list-in-django-and-django-jsonfie
TypeError: Direct assignment to the reverse side of a related set is prohibited. Use address_set.set() instead.user에 주소 정보가 없다.테스트 유저엔 주소 정보가 있다.테스트 유
출처: https://nan1004au.tistory.com/entry/MYSQL-foreign-key-%EB%AC%B4%EC%8B%9C%ED%95%98%EA%B3%A0-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%82%AD%EC%A0%9C
\[('상품인수',) ('2020-12-02 17:11',) - ('보내시는 고객님으로부터 상품을 인수받았습니다',) - ('서울역삼',), ('상품이동중',) ('2020-12-02 22:48',) - ('배달지역으로 상품이 이동중입니다.',) - ('곤지암Hub',
order 별 status의 중복 생성을 방지하고 싶을 때
결과'id', 'created_at', 'updated_at', 'deleted_at', 'is_deleted', 'product_code', 'brand', 'purchased_year', 'purchased_where', 'purchased_price', 'wish
git 레포지토리에 venv 파일이 푸쉬됐다. 내 로컬에서는 유지하고 싶지만, 레포지토리에서는 삭제하고 싶을때 출처: https://stackoverflow.com/questions/14409299/does-git-remove-files-from-version-control-after-they-are-added-to-gitignore
sudo docker ps -a 에 실행중인 컨테이너가 확인되지 않는다면sudo docker run --rm 75f4f28fa8ad celery -A app worker --loglevel=info -E 와 같이 -d 디태치 모드를 해제하고 실행시켜본다.self.\_s
import osimport djangofrom datetime import datetimefrom PIL import Image, ImageFont, ImageDraw, ImageFileImageFile.LOAD_TRUNCATED_IMAGES = Truefrom io
디렉토리로 이동 후
코드 파이프 라인을 통한main 브랜치 배포(본 서버 배포) 실패 사유설정 -> 서비스 역할 ARN 클릭아래 그림은 CloudWatchLogFullAccess 정책을 추가한 모습.배포가 안됐을 당시엔, 해당 정책이 존재하지 않았다.즉, 코드 혹은 settings.py
ec2 단축키 지정 -> ~/.bashrc로컬 단축키 지정 -> ~/.zshrc
빈스톡에서 아래와 같은 에러 메시지 pip을 통한 mysql 설치시 에러 발생솔루션출처: https://stackoverflow.com/questions/62111066/mysqlclient-installation-error-in-aws-elastic-bean
1. AWS Lambda 설정 2) 에러 1 >django.core.exceptions.ImproperlyConfigured: Requested setting LOGGINGCONFIG, but settings are not configured. You must ei
배너 관리에서 배너 링크 관련 object를 이미 생성할 수 있다.단지, admin.register를 했다는 이유로 장고의 관리자 화면 좌측에 불필요한 모델 정보가 보이기 시작했다.
출처: https://stackoverflow.com/questions/64503974/cant-run-locust-in-debug-mode
feature 브랜치에서 작업 도중 실수로 git pull origin main을 해버렸다.을 통해 가장 최신의 커밋은 삭제하고직전으로 되돌렸다.
참고자료: https://stackoverflow.com/questions/56450998/is-there-a-way-to-override-the-delete-selected-method-in-modeladmin-but-keep-con
`결과` 참고자료: https://spoqa.github.io/2019/02/15/python-timezone.html
http://miwifi.com 접속비밀번호 입력'고급 설정' 클릭'포트 포워딩' 클릭'규칙 추가' 클릭'저장 및 적용' 클릭
Order의 created_at 변경하기결과 값order = Order.objects.get(id=297)order.created_at\>> datetime.datetime(2021, 6, 25, 9, 28, 19, 891500, tzinfo=<UTC>)order
locale 적용했을 때결과ValueError at /api/consignment/registrationtime data '2021년 7월 2일 (금)' does not match format '%Y년 %m월 %d일 (%a)'
❶ 디렉토리 구조 Dockerfile app crontab my_script.py requirements.txt README.md ❷ Dockerfile ❸ crontab ❹ 에러 발생 > Python import error with cronjob in a docker container 기존 코드 변경 코드 ❺ 참고자료 솔루션: https://...
order_by를 사용하면 매번 쿼리를 한다.https://stackoverflow.com/questions/25961092/django-random-orderingorder-by-makes-additional-query/25961349
running 중인 컨테이너 종료workerbeat
Docekr udemy 강의
.zshrc에서 아래 코드를 주석처리한다.
출처: https://support.apple.com/ko-kr/guide/mac-help/mchl0311bdb4/mac
출처: https://stackoverflow.com/questions/51689294/how-to-extract-tar-file-in-mac-terminal
유저만 수십만명인 서비스에서 mysqldump를 토이 프로젝트에서 하듯이 하면 안 된다.다행히 같은 고민을 했던 사람이 스택오버플로우에 답변을 공유해줬다.명령어
주의요함 출력되고 있음참고자료: https://stackoverflow.com/questions/24603620/redirecting-ec2-elastic-load-balancer-from-http-to-https
debconf: delaying package configuration, since apt-utils is not installed해결방법
AWS Rout53에서 호스팅 영역 편집했으나크롬에서 DNS_Probe_Finished_Nxdomain에러 발생할 때크롬 URL 입력란에 아래와 같이 입력한다.3가지 선택을 클릭 후 인터넷 기록 삭제를 먼저하고고급 탭으로 넘어가 마찬가지로 저장 내용을 삭제한다.
1️⃣ requirement 설정 2️⃣ settings.py 설정 3️⃣ 모델링 4️⃣ models.py 5️⃣ admin.py 6️⃣ 결과 7️⃣ 참고자료 https://github.com/s-block/django-nest
출처: https://stackoverflow.com/questions/41257346/how-to-update-password-in-django
💎 AWSCodePipelineServiceRole에 로그 create 권한이 없다!1️⃣ IAM ➡️ 좌측의 역할클릭 ➡️ AWSCodePipelineServiceRole 검색2️⃣ 역할 클릭 후 ➡️ 정책 연결 클릭3️⃣ CloudWatchFullAccess 정책
raise ValueError("Dependency on app with no migrations: %s" % key0)ValueError: Dependency on app with no migrations: authentication해결책: python manage.
컨테이너 명령어 확인하기
under the hood
도커 컨테이너를 생성하고 실행시켜보자. 다운받을 도커 이미지는 mongo database다. docker container run --name mongo -d mongo 그리고 docker container ls 명령어를 통해 결과를 확인해보자. `docker
컨테이너 실습
1차 시도 2차 시도 3차 시도
docker-compose.ymlDockerfile에 아래와 같이 정의해주지 않으면,위 명령어 실행시, app 프로젝트가 생성되지 않는다.
1. 로컬 DB 2. AWS RDBMS 1) 로컬에서 접속 가능한 경우 2) bastion에서 생성 [1] bastion ec2에 접속한다. [2] [3] 해당 인스턴스에서 내 로컬로 생성된 csv 파일을 가져와야 한다.
1. 로컬머신의 파일을 ec2 인스턴스로 옮길때 `내 로컬 터미널에서 시작!` 여기서 pem키 및 보낼파일에는 해당 파일명 뿐만 아니라 경로까지 넣어줘야 한다. ex) scp 관련 명령어로 1) 로컬 -> ec2, 2) ec2 -> 로컬로 파일을 옮길 때 명령
`순서` 본인의 IDE로 sql 파일을 접근.(vim prod_db.sql 또는 vscode에서 해당 sql 파일 열기) `utf8mb40900aici -> utf8mb4general_ci` 교체 출처: https://developmoments.tistory.c
명령어 스택오버플로우에서 찾은 명령어는 위와 같다. 내 로컬 DB에서 적용하기 위해 아래와 같이 작성했다. 위의 명령어를 입력 후, DB의 비밀번호 입력을 하면 `no_products.sql` 파일이 생성된다. 출처: https://stackoverflow.c
"Can't connect to MySQL while building docker-compose image"또는django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on '127.0.0.1' (
docker run 을 하여도 반응이 없었다.해결책도커 환경설정의 메모리 크기 증가출처: https://github.com/benoitc/gunicorn/issues/1663
도커 스웜 강의
2020년형 맥북에어를 구입했다. 정말정말정말 많은 고심 끝에 구매했다. Mac 엔트리 모델임에도 불구하고 CPU와 메모리를 업그레이드 하니 가격이.... 그 가격이면 윈도우 기반 노트북의 더 좋은 사양을 구입할 수 있는데 말이다. > #### 그래도 인생에서 한
깃허브 액션
아래와 같이, 이메일도 받을 수가 있다.(github -> settings -> notification 설정)출처: https://docs.github.com/en/actions/managing-workflow-runs/enabling-debug-logging
지난 시간 내용 정리 workflow는 한 개 이상의 job으로 구성된다. 하나의 job은 step
이번 포스트의 목적은 uses, with의 사용이다.하나의 job 에 두 개의 step이 있는 구조에서두 번째 step의 action이 어떻게 첫 번째 step의 action을 참조할 수 있는지에 대한 이야기다. 디렉토리 구조는 다음과 같다..github/workfol
1. 가상 머신의 디렉토리 구조는 무엇일까? 하나의 job은 독립적인 환경으로 구성될 수 있다. 즉, 첫 번째 job은 ubuntu 가상 머신 환경에서, 두 번째 job은 windos 가상 머신 환경에서 동작하게 할 수 있다. 가상 머신에서 pwd를 입력하면
1. 절차 지향 VS 객체 지향 절차지향 프로그래밍으로 프로그래밍을 입문하게 된다. 처음엔 유지보수 측면에서 어려울 것이 없다. 규모가 작고 알고리즘이나 비즈니스 조건의 복잡도가 낮기 때문이다. 1. 코드가 복잡해지고 수정비용이 증가하는 이유 아래의 절자 지향 프
캡슐화: 기능의 구현을 외부에 감추는 것. 캡슐화로 기능을 사용하는 코드의 변경비용을 감소시켜준다. -> 비즈니스 요구에 기민하게 변화/적용이 용이하게 함. 1. 캡슐화 미적용 비즈니스가 성장해서 개발자에게 아래와 같은 추가 요구사항이 요청됨. "5년 이상
라는 책에서 "추상화의 목적은 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것이다."라는 표현이 나온다. 또한, 저자는 리처드 파인만의 말을 다음과 같이 인용한다. "현상은 복잡하다. 법칙은 단순하다. 버릴 게 무엇인지 알아내라." 구현하려는
![](https://images.velog.io/images/khh180cm
상위 클래스의 기능을 재사용하기 위해 상속을 많이 사용하는 모습이다. 하지만, 상속에는 아래와 같은 문제점이 뒤따른다. 단점 1. 상위 클래스의 변경이 어려움 하위 클래스가 많아질수록 상위 클래스의 변경이 어려움. 게다가 상위 클래스들의 동작을 이해해야 하위
맥북 터미널에 vimtutor를 입력한다. Lesson 1.1: 커서 움직이기 부터 시작해서 lesson 1장을 따라해 봤다. 내가 Vim을 배워보려는 이유 근거는 매우 주관적이니 주의 :) >Vim의 취지는 양 손이 키보드를 벗어나지 않게 하는 것이다. 1
indentation 에러
내 ip 주소 알기 프론트엔드와 협업을 진행하며 내 ip 주소를 알려줘야 하는 경우가 정말 많다. 매번 `ifconfig를 입력한 이후 en0의 inet 을 찾아 올라가는 과정이 귀찮다. 아래처럼 명령어를 지정하면 ip 주소를 1초 만에 알 수가 있다. > `1
빔의 매력
코딩할 맛이 나네
아래와 같이 입력 시 not found 에러가 나오는 경우Warning: plugin zsh-syntax-highlighting not found
출처: https://stackoverflow.com/questions/7225057/use-mouse-scroll-wheel-in-vim
💎 왜 ap-northeast-2a에서만 스케일 아웃이 될까 💎 추측 1) ALB를 점검해보자 가용영역에 대한 서브넷이 2b, 2a로 잘 지정돼 있다. 💎 추측 2) Beanstalk 설정을 점검해보자 로드밸런서 및 인스턴스의 서브넷 역시 2a, 2b로 잘 설정돼 있었다. ![](https://im
1️⃣ buildspec.yml > `production`브랜치에 PR 및 merge가 트리거가 되어 AWS CodeDeploy가 작동되는 구조다. 빈스톡에 배포되는 과정 중간에 CodeBuild 스테이지를 추가했다. 아래와 같이 소스코드 최상단에 buildspe
1️⃣ stash를 분명히 했다. 사건의 전말은 이랬다. >`feature/payment`에서 작업을 진행하고 있었다. 디자인팀에서 지난 번의 매거진 관련 수정사항이 급히 필요하다고 했다. 커밋을 하여 head를 최신화하는 것보단 잠시 저장소에 작업 내용을 저장하는
원인: .bash_profile에 있는 conda 설정
! rejected staging -> staging (fetch first)error: failed to push some refs to 'hint: Updates were rejected because the remote contains work th