클린 아키텍처 요약
·
📁Book
만들면서 배우는 클린 아키텍처 - 톰 홈버그클린코드책 다음으로 클린 아키첵처를 정리해보려고 한다. 01. 계층형 아키첵처의 문제는 무엇일까?- 계층형 아키텍처소스코드를 역할과 관심사에 따라 계층으로 분리한 아키텍처잘 만들어진 계층형 아키텍처는 선택의 폭을 넓히고, 변화하는 요구사항과 외부요인에 빠르게 적응할 수 있게 해준다. - 문제1. 계층형 아키텍처는 데이터베이스 주도 설계를 유도한다. 웹 계층은 도메인 계층에 의존하고, 도메인 계층은 영속성 계층에 의존하기 때문에 데이터베이스에 의존하게 되므로, 계층 사이에 강한 결합이 생긴다. 에를들어, ORM을 사용하게되면 도메인 계층에서 엔티티에 접근할 수 있는데 이렇게되면 서비스는 영속성 모델을 비즈니스 모델처럼 사용하게 되어 서비스에서 영속성 관련된 작업들..
[Python] list
·
📁Language/➕ Python
arr1 = [1,2,5,4,3]# 배열 길이 구하기 => 5len(arr1)# 배열 최대값 구하기 => 5arr1.max()# 배열 합계 구하기 => 15sum(arr1)# 배열 오름차순 정렬 => [1,2,3,4,5]arr1.sort()# 배열 내림차순 정렬 => [5,4,3,2,1]arr1.sort(reverse=True)# 배열 뒤집기 => [3,4,5,2,1]arr1.reverse()arr1[::-1]# 문자열로 출력 => '12543'''.join(arr1)  배열 자르기arr1 = [1,2,3,4,5]n = 2# 앞 자르기 => [1,2]arr1[:n]# 뒤 자르기 => [3,4,5]arr1[n:]# 존재 갯수 구하기 => 1arr1.count(3)  range(시작, 끝, 증가량)시작값 포..
[Python] 정수
·
📁Language/➕ Python
num1 = 5num2 = 8# 정수를 문자열로 변환 => '5'str(num1)# 0 부터 주어진 숫자까지 숫자 생성 => range(0, 5)range(5)# list로 나열 => [0, 1, 2, 3, 4]list(range(5))# 가장 큰 수 찾기 => 8max(num1, num2)# 나누기(몫을 정수만 남기기) => 28//3# 제곱 구하기 => 273**3# 제곱근 구하기 => 39**0.5
[Python] 문자열
·
📁Language/➕ Python
inputstr1 = input() 문자열변형str1 = 'Hello'str2 = ' Python'# 합치기 => 'Hello Python'str1 + str2# 길이 구하기 => 5len(str1)# 앞뒤 공백 제거하기 => 'Python'str2.strip() 타입 변환str1 = 'Hello Python'str2 = '100'arr = ['Hello', 'Python']# 정수로 변환하기 => 100int(str2)# list로 변환하기 (공백기준) => ['Hello', 'Python']str1.split(' ')# 튜플로 변환하기 => ('Hello', 'Python')tuple(str1.split(' '))# list를 문자열로 변환하기 => 'Hello Python'' '.join(arr) ..
[Mysql] 사용자생성 및 권한
·
📁DB/🐬 MySQL
Mysql의 사용자는 사용자의 계정뿐만 아니라 사용자의 접속주소까지 계정의 일부가 된다.Mysql에서 계정을 언급할 때는 항상 아이디와 호스트를 함께 명시해야한다.% 문자는 모든 호스트명을 의미한다.예시1 ) 'test_id'@'127.0.0.1'예시2) 'test_id'@'%'  계정# 모든 계정 확인하기SELECT user, host FROM mysql.user;# mysql 기본 내장 계정 확인하기SELECT user, host FROM mysql.user WHERE user LIKE 'mysql.%'; # 사용자 생성CREATE USER '{유저명}'@'%' IDENTIFIED BY '{비밀번호}';# 비밀번호 변경ALTER USER '{유저명}'@'%' IDENTIFIED BY '{새로운 비밀번..
[Mysql] 데이터베이스 백업 및 복원&복제
·
📁DB/🐬 MySQL
데이터베이스 백업 파일 만들기mysqldump -h {호스트주소} -u {유저명} -p {DB명} --set-gtid-purged=OFF > {파일명}.sql#예시mysqldump -h 127.0.0.1 -u user_name -p test_database --set-gtid-purged=OFF > backup_test_database.sql  백업 파일로 데이터베이스에 데이터 주입하기mysql -h {호스트주소} -u {유저명} -p {DB명}
[Github] remote: Repository not found. 에러 해결
·
📁ETC./⚒️ Tool
Fetching originremote: Repository not found.fatal: repository 'https://github.com/{레포지토리 경로}.git/' not founderror: Could not fetch origin레포지토리와 연결을 끊고 다시 연결을 해줘야함.#레포지토리와 연결 해제git remote remove origin#재연결git remote add origin https://{깃허브 유저명}:{깃허브 ssh key}@github.com/{레포지토리 경로}.git
[PostgreSQL] Mac북에서 사용하기
·
📁DB/🐘 PostgreSQL
설치 brew install postgresql brew services start postgresql 설치 확인 postgres --version 접속 # 접속 psql postgres # 사용자 확인 postgres=# \du
클린 코드(Clean Code) 요약
·
📁Book
Clean Code - 로버트 C.마틴 워낙 유명한 책이기도 하고, 언젠간 읽어봐야지 하고 묵혀뒀던 책을 완독하는 것을 목표로 정리해보려고 한다. 9. 단위 테스트- TDD : 실제 코드를 짜기 전에 단위 테스트 짜는 방식 - TDD 법칙 1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. - 테스트 코드는 실제 코드 못지 않게 깨끗하게 짜야 한다. - 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트이다. - 테스트 케이스가 있으면 변경이 쉬워진다. - 단일 assert 문 규칙 권장 (함수마다 assert문..
브라우저 렌더링 과정 이해하기 (작성중)
·
📁Language/🟨 Javascript
javascript를 공부하면서 내가 아직 브라우저 렌더링 과정에 대해 정확히 알지 못하고 있다는 것을 깨달아서 정리해보기로했다. 사전지식 브라우저 : 웹상에 존재하는 페이지들을 검색 및 열람하기 위한 응용 프로그램의 총칭 ex) chorme, safari, internet explorer, microsoft edge 등 렌더링 : HTML, CSS, JS로 작성된 문서를 파싱하여 브라우저에 시각적으로 출력하는 것 파싱 : 프로그래밍 언어로 작성된 문서의 문자열을 '토큰'으로 분해 -> 토큰으로 트리구조의 자료구조인 '파스트리'를 생성 -> 파스트리를 기반으로 '바이트 코드' 생성하고 실행 브라우저 렌더링 동작 과정 렌더링에 필요한 리소스를 서버에 요청하고 응답 받는다. 서버로부터 응답된 리소스를 파싱하..