목록전체 글 (44)
효습
Starting MySQL. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/user.local.pid). mysql.server start 하다가 저런 에러가 날 수 있다 보통 삭제하고 다시 설치하면 다시 정상 작동한다 하지만 난 Mysql 데이터 파일(ibdata1) 없었다 .근데 ibdata1이 없으면 InnoDB 엔진이 mysql 서버를 실행시키지 못함몇 번을 다시 깔아도 없길래 캐시 삭제를 시도함 (근데 보통 저 파일은 mysql을 설치하면 다시 생기기때문에 mysql 을 삭제하고 다시 설치하면 해결된다근데 난 안생겼음 몇 번을 다시 깔아도 안생김 ) 그럼 뭐가 문제냐?mysql 설정 파일 , 캐시 파일이 ..
프로젝트 중에 스마트 워크 센터를 검색을 구현하는 api를 담당했다.처음에 검색 요소가 이름 , 태그 2개인 줄 알고검색어가 없는 경우, 1개가 들어오는 경우 , 2개가 들어오는 경우 생각해서 메서드를 4개를 만드려고 했다. 이렇게 코드 짤 때가 너무 비효율적인 것 같다고 생각했는데 알고보니 지역구까지 해서 검색 요소가 3개인 것이다! 3개면 만들어야하는 메서드가 6개다.물론 만들수는 있지그런데 더 좋은 방법이 있는데 그걸 선택하지 않을 이유는 없다 예전에 살짝 공부한 적이 있는 QueryDSL이 떠올라 한번 적용해보기로 했다 Dependencies 추가 //QueryDsl implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotati..
쉬운 경우에서 어려운 경우로 진행예외적인 경우에서 정상인 경우로 진행 구현하기 쉬운 테스트부터 시작하기 예를 들어모든 조건을 충족하는 경우모든 조건을 충족하지 않는 경우 예외 상황을 먼저 테스트해야 하는 이유다양한 예외 상황은 복잡한 if-else 블록을 동반할 때가 많음 → 코드가 복잡해지고 버그 발생 가능성이 높아짐초반에 예외 상황을 먼저 테스트하면 이런 가능성이 줄어듦예외 상황에 따른 if-else 구조가 미리 만들어지기 때문에 많은 코드를 완성한 뒤에 예외 상황을 반영할 때보다 코드 구조가 덜 바뀐다예외 상황을 찾고 테스트에 반영하면 예외 상황을 처리하지 않아 발생하는 버그도 줄어듦 완급 조절정해진 값을 리턴값 비교를 이용해서 정해진 값을 리턴다양한 테스트를 추가하면서 구현을 일반화 테스트할 목록..
ERD(Entity Relationship Diagram) : 릴레이션 간의 관계들을 정의함 4.2.1 ERD의 중요성 관계형 구조로 표현할 수 있는 데이터를 구성하는데 유용하지만 비정현데이터를 충분히 표현할 수 없음 4.2.3 정규화 과정 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상을 해결하거나 저장공간을 효율적으로 사용하기 위해 분리하는 과정 정규형 원칙정보 표현의 무손실 : 정보가 사라지지 않아야 한다, 같은 의미의 정보를 유지하면서 더 효율적인 구조로 변화해야한다데이터 중복의 최소화 : 데이터 중복을 최소화하면서 , 데이터 관리의 편리성을 부여하고 자료 저장 공간을 효율적으로 사용분리의 원칙 : 독립적인 관계는 별개의 릴레이션으로 표현 , 릴레이션 각각에 대해 독립적 처리가 가능..
DB (DataBase) : 일정한 규칙 , 규약을 통해 구조화되어 저장되는 데이터 모음DBMS (DataBase Management System) : 데이터베이스를 제어 , 관리하는 통합 시스템DBMS 마다 정의된 쿼리 언어(query language)를 통해 삽입 , 삭제 , 수정 , 조회 등을 수행할 수 있음 4.1.1 엔티티 (Entity) 사람 , 장소 , 물건 , 사건 , 개념 등 여러 개의 속성을 지닌 명사를 의미서비스의 요구사항에 맞춰 속성을 정함약한 엔티티와 강한 엔티티A가 혼자서는 존재하지 못하고 B의 존재 여부에 따라 종속적이라면 A는 약한 엔티티이고 B는 강한 엔티티이다 4.1.2 릴레이션 (Relation)데이터베이스에서 정보를 구분하여 저장하는 기본 단위엔티티에 관한 데이터를 ..
CPU 스케쥴링 알고리즘은 CPU 이용률은 높게 ,주어진 시간에 많은 일을 하게 ,준비 큐 (ready queue)에 있는 프로세스는 적게 ,응답 시간을 짧게 설정하는 것을 목표로 함 3.4.1 비선점형 방식 (non - preemptive)프로세스가 스스로 CPU 소유권을 포기하는 방식 , 강제로 프로세스를 중지하지 않으므로 컨텍스트 스위칭으로 인한 부하가 적음 FCFS (First Come , First Served)가장 먼저 온 것을 가장 먼저 처리하는 알고리즘준비 큐에서 오래기다리는 현상(convoy effect)이 발생하는 단점이 있음 SJF (Shortest Job First)실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘Starvation(기아 상태) 발생할 수 있다 : 긴 시..
TDD란?TDD란 테스트부터 시작한다기능을 검증하는데 테스트 코드를 먼저 작성하고 테스트를 통과시키기 위해 개발을 진행한다먼저 테스트 파일 경로에 클래스를 만들고 완성하면 java 소스 파일 폴더에 넣어도 된다완성되지 않는 코드가 배포되는 것을 방지할 수 있다 TDD 흐름기능을 검증하는 테스트를 먼저 작성한다가장 먼저 통과시킬 기능 먼저 구현함작성한 테스트를 통과하지 못하면 테스트를 통과할 만큼만 코드를 작성한다테스트를 통과한 뒤에는 개선할 코드가 있으면 리팩토링한다.테스트코드 자체도 리팩토링 대상이다리팩토링한 뒤 , 다시 테스트를 실행하여 기존 기능이 망가지지 않았는지 확인한다이 과정을 반복하면서 점진적으로 기능을 완성해나가는 것이다 TDD 사이클을 레드(Red)-그린(Green)-리팩터(Refact..
2.3.1 네트워크 기기의 처리 범위 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가애플리케이션 계층 : L7 스위치인터넷 계층 : 라우터 : L3 스위치데이터 링크 계층 : L2 스위치 브리지물리 계층 : NIC , 리피터 , AP 2.3.2 애플리케이션 계층을 처리하는 기기 L7 스위치스위치 : 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장치L7 스위치는 = 로드밸런서서버의 부하를 분산하는 기기클라이언트로부터 오는 요청들은 뒤쪽의 여러 서버로 나누는 역할을 하며 시스템이 처리할 수 있는 트래픽 증가를 목표로 한다URL , 서버 , 캐시 , 쿠키들을 기반으로 트래픽을 분산한다바이러스 , 불필요한 외부..
인터넷 프로토콜 스위트 (internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 프로토콜의 집합을 의미함 2.2.1 계층 구조TCP/IP 계층은 4개의 계층을 가지고 있으며 , OSI 7계층과 많이 비교됨 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향 받지 않도록 설계되었다 애플리케이션 계층(application)FTP , HTTP , SSH , SMTP , DNS등 응용 프로그램이 사용되는 프로토콜 계층웹 서비스 , 이메일 등 서비스를 실질적으로 사람들에게 제공FTP : 장치와 장치 간의 파일을 전송하는 데 사용되는 표중 통신 프로토콜SSH : 보안되지 않은 네트워킄에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜HTT..
네트워크란 노드(node)와 링크(Link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미노드 - 서버 , 라우터 , 스위치 등 네트워크 장치를 의미링크 - 유선 또는 무선을 의미2.1.1 처리량과 지연 시간좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 의미 처리량(throughput)링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼만큼의 트래픽을 처리했는지 나타냄단위 : bps(bits per second) , 초당 전송 또는 수신되는 비트 수사용자들이 많이 접속할 때마다 커지는 트래픽 , 네트워크 장치 간의 대역폭 , 네트워크 중간에 발생하는 에러 , 장치의 하드웨어 스펙에 영향을 받는다트래픽이 많아졌다라는 말은 ..