4-추상화 설계

추상화: 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 복잡성을 숨기기 위해 사용되는 단순한 형식 객체는 여러 형태로 추상화해서 표현할 수 있다. 추상화를 하려면 객체에서 무엇을 감추고 무엇을 노출해야 하는지 결정해야 한다. 프로그래밍에서는 다음과 같은 목적으로 추상화를 사용한다. 복잡성을 숨기기 위해 코드를 체계화하기 위해 만드는 사람에게 변화의 자유를 주기 위해 함수 내부의 추상화 레벨을 통일하라 계층이 잘 분리되었을 때 장점 어떤 계층에서 작업할 때 그 아래의 계층은 이미 완성되어 있으므로, 해당 계층만 생각하면 된다....

2024-09-15 · 6 min · 1228 words

4-처리율 제한 장치의 설계

API에 처리율 제한을 두면 좋은점 DoS 공격에 의한 자원 고갈을 방지할 수 있다. 비용을 절감할 수 있다. 서버 과부하를 막는다. 1단계 문제 이해 및 설계 범위 확정 면접관과 소통하면서 어떤 제한 장치를 구현해야 하는지 분명히 한다. 예시: 설정된 처리율을 초과하는 요청은 정확하게 제한한다. 낮은 응답 시간 가능한 한 적은 메모리를 써야 한다. 분산형 처리율 제한: 하나의 처리율 제한 장치를 여러 서버나 프로세스에서 공유할 수 있어야 한다. 예외 처리: 요청이 제한되었을 때는 그 사실을 사용자에게 분명하게 보여주어야 한다....

2024-09-15 · 5 min · 971 words

4-좋은 단위 테스트의 4대 요소

좋은 단위 테스트 스위트의 특성 개발 주기에 통합돼 있다. 코드베이스의 가장 중요한 부분만을 대상으로 한다. 최소한의 유지비로 최대 가치를 끌어낸다. 가치있는 테스트를 작성하려면 가치있는 테스트를 식별할 수 있어야 한다. 좋은 단위 테스트의 4대 요소 자세히 살펴보기 좋은 단위 테스트 네 가지 특성 회귀 방지 리팩터링 내성 빠른 피드백 유지 보수성 첫 번째 요소: 회귀 방지 회귀: 코드를 수정한 후 기능이 의도한 대로 작동하지 않는 경우 회귀 방지 지표에 대한 테스트 점수가 얼마나 잘 나오는지 평가하려면 다음 사항을 고려해야 한다....

2024-09-15 · 5 min · 971 words

4-접근 패턴

접근 패턴: 애플리케이션이 MySQL을 사용하여 데이터에 접근하는 방법이다. 접근 패턴을 변경하면 MySQL 성능에 큰 영향을 미치지만, 일반적으로 다른 최적화보다 더 많은 노력이 필요하다. MySQL 성능은 애플리케이션이 MySQL을 어떻게 사용하냐에 의해 제한되는 것이지 그 반대는 아니다. MySQL은 아무것도 하지 않는다 애플리케이션이 유휴 상태일 때는 MySQL은 유휴 상태이고, 애플리케이션이 바쁘게 쿼리를 실행 중이면 MySQL도 바쁘게 해당 쿼리를 실행 중이다. MySQL에는 “페이지 플러싱” 같은 몇 가지 백그라운드 작업이 있지만, 실제로 백그라운드 작업은 쿼리를 실행하는 포그라운드 작업을 허용하여 느린 작업을 지연 작업을 지연하거나 방지함으로써 성능을 향상시킨다....

2024-09-15 · 1 min · 170 words

4-스프링 시큐리티

스프링 시큐리티 활성화하기 Spring 자동 구성을 이용하여 활성화한다. https://www.baeldung.com/spring-boot-security-autoconfiguration 아래 의존에는 SecurityAutoConfiguration 클래스가 포함되어 있어서, 자동으로 시큐리티 구성이 된다. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> Spring 자동 구성은 다음과 같이 구성된다. 모든 HTTP 요청 경로는 인증되어야 한다. 어떤 특정 역할이나 권한이 없다. 스프링 시큐리티의 기본 HTTP 기본 인증을 사용해서 인증된다. 사용자는 하나만 있으며, 이름은 user다. 비밀번호는 암호화해 준다. 시큐리티가 활성화되면 기본적으로 설정되는 프로퍼티가 있다. spring.security.user.name spring.security.user.password 따로 설정하지 않았으면 비밀번호가 랜덤으로 생성되면 콘솔 로그에 출력된다....

2024-09-15 · 5 min · 895 words

4-데이터 링크 계층 랜에서 데이터 전송하기

데이터 링크 계층이 역할과 이더넷 데이터 링크 게층은 네트워크 장비 간에 신호를 주고받는 규칙을 정하는 계층이다. LAN에서 데이터를 정상적으로 주고받기 위해서 데이터 링크 계층에 이더넷을 주로 사용한다. 이더넷에 목적지 정보(MAC주소)를 추가해서 자신의 데이터가 아니면 무시하도록 설계되어있다. 이더넷은 여러 컴퓨터가 동시에 데이터를 전송해도 충돌이 일어나지 않는 구조로 되어있다. 동시에 케이블이 지나가면 충돌하기 때문에 데이터를 보내는 시점을 늦추는 방법을 사용한다. 이를 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)라고 부른다. CS: 데이터를 보내려고 하는 컴퓨터가 케이블에 신호가 흐르고 있는지 확인한다....

2024-09-15 · 3 min · 487 words

4-개발자가 꼭 알아둬야 할 유니코드와 문자 집합에 대한 고찰

ASCII 7비트로 영문자만 처리하는 문자 인코딩 대다수 컴퓨터가 8비트인 바이트 단위를 사용하므로, ASCII 문자를 저장하고 비트를 하나 더 확보할 수 있었다. 워드스타에서는 32미만인 코드는 인쇄 제어 목적으로 사용했다. IBM PC는 OEM 문자집합을 고안했는데, 이는 유럽 언어를 위한 몇몇 강조문자와 선그리기 문자를 사용할 수 있었다. 하지만 미국 이외의 지역에서 PC를 판매하기 시작하면서 온갖 OEM 문자 집합 형식이 나오기시작했으며, 각자 요오에 맞춰 128글자를 정의했따. ANSI 표준 위원회에서느 ANSI 표준을 체계적으로 정리함에 따라 OEM 난투극이 끝났다....

2024-09-15 · 2 min · 327 words

4-CPU 스케줄링

스케줄링의 개요 스케줄링의 단계 CPU 스케줄러: 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일을 한다. 고수준 스케줄링 장기 스케줄링, 작업 스케줄링이라고도 한다. 전체 시스템의 부하를 고려하여 작업을 시작할지 말지를 결정한다. 이 결정에 따라 시스템의 전체 프로세스 수가 결정되는데 이를 멀티프로그래밍 정도(degree of multiprogramming)라고한다. 중간 수준 스케줄링 시스템에 과부하가 걸려서 전체 프로세스 수를 조절해야 한다면 이미 활성화된 프로세스 중 일부를 보류 상태로 보낸다. 저수준 스케줄링 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정한다....

2024-09-15 · 10 min · 2055 words

35-NIH 신드롬을 옹호하며

“코드 재사용은 좋다. 바퀴 재발명은 나쁘다"는 항상 맞는 말은 아니다. 적어도 핵심 비즈니스 기능과 목표는 파악한 후 직접 수행해라.

2024-09-15 · 1 min · 19 words

34-세상에 쉬운 일은 없습니다

세상에 쉬운 일은 없다 항상 위험을 줄여라 위 둘을 해결하기 위해서는, 구현에 앞서 설계를 해야한다. 설계를 하지 않고 구현하면, 수정하는데 더 많은 시간을 사용할 수 있다. 점진적인 설계과 구현은 좋다. 형식에 지나치게 얽매이는 설계는 시간낭비다.

2024-09-15 · 1 min · 35 words

33-빅 맥 제이미는 요리사

방법론을 조심하라. 방법론은 쓸만한 수준으로 그저 그런 성능을 내는 데는 괜찮은 방법이 될 수 있지만, 동시에 유능한 인재를 쫓아낼 수도 있다.

2024-09-15 · 1 min · 21 words

32-이야기 둘

자기 업무에 대해 훨씬 더 신중한 태도를 지녀야 한다. 자기가 맡은 업무에 대해 최고 결정권을 가지는 곳이 일하기 좋은 곳이다.

2024-09-15 · 1 min · 20 words

3190

편집 시간: 2022년 4월 20일 오후 5:11 코드 Algorithm/3190.py at main · Junroot/Algorithm 풀이 현재 시간에 회전이 있는지 빠르게 파악하기 위해서 dictionary로 저장했다. 보드 정보를 나타내는 2중 배열을 만들어서 비어있으면 0, 사과가 있으면 1, 뱀이 있으면 2로 표현했다. 뱀의 꼬리를 제거할 때, 가장 끝 부분 정보를 얻기 위해서 덱을 사용했다.

2024-09-15 · 1 min · 50 words

31-말단이면서도 해내기

조직 내에서 변화를 시도할 만한 결정권이 없는 사람도 있을 것이다. 혼자라도 하십시오 한 사람의 힘이라도 프로젝트르 개선할 여지가 많다. 입소문의 힘을 이용하십시오 조엘 테스트 중 많은 항복은 팀이 비협조적이더라도 혼자 실천할 수 있다. 그 중 성공적인 항목은 분명히 나머지 팀원에게 퍼지게 돼있다. 우수한 인재를 모으십시오 채용과 인터뷰 업무에 참여하세요. 우수한 인재가 여러분 팀에 합류하도록 홍보해라. 개선할 의지와 능력이 있는 사람을 찾아 같은 편으로 만들어라. 뒤처진 팀원이 있으면 배울 기회를 주세요....

2024-09-15 · 1 min · 178 words

30-이 나라에서는 개가 무슨 일을 하죠

dog fooding: 자기회사 제품을 실제로 사용해 보는 과정 고객 입장에서 제품을 실행해보니 버그가 바로 눈에 띄었다. 고객 입장에서 사용 편의성을 직접 이해할 수 있다.

2024-09-15 · 1 min · 24 words

3-함수 정의와 호출

코틀린에서 컬렉션 만들기 코틀린은 자신만의 컬렉션 기능을 제공하지 않는다. 표준 자바 컬렉션을 활용하면 자바 코드와 상호작용하기가 훨씬 쉽다. 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. 함수를 호출하기 쉽게 만들기 이름 붙인 인자 코틀린으로 작성한 함수를 호출할 때는 함수에 전달하는 인자 중 일부의 이름을 명시할 수 있다. 호출 시 인자 중 어느 하나라도 이름을 명시하고 나면 혼동을 막기 위해 그 뒤에 오는 모든 인자는 이름을 꼭 명시해야 한다. 자바로 작성한 코드를 호출할 때는 이름 붙인 인자를 사용할 수 없다....

2024-09-15 · 5 min · 1012 words

3-프로세스와 스레드

프로세스의 개요 프로세스의 개념 프로그램: 저장장치에 저장되어 있는 정적인 상태. 프로세스: 실행을 위해 메모리에 올라온 동적인 상태. 컴퓨터 시스템의 작업 단위로 태스크라고도 부른다. 프로그램에서 프로세스로 전환 프로그램을 실행시키면 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 프로세스를 처리하는 데 필요한 다양한 정보가 들어있는 프로세스 제어 블록(Process Control Block, PCB)을 만든다. 프로세스 제어 블록에는 있는 다양한 정보 중 대표적인 적인 것은 세가지다. 프로세스 구분자(Process IDentification, PID): 메모리의 프로세스를 구분하는 구분자다. 메모리 관련 정보: 프로세스가 메모리의 어디에 저장되어 있는지 위치 정보가 담겨있다....

2024-09-15 · 11 min · 2245 words

3-조엘 테스트 더 나은 코드를 위한 12단계

아래는 소프트웨어 팀이 얼마나 업무를 잘 수행하고 있는지 판단하는 조엘의 비공식적인 평가테스트 방법이다. 소스코드 관리시스템을 사용하고 있습니까? 소스코드 관리시스템을 사용하지 않으면, 다른 프로그래머가 무엇을 했는지 알 길이 없으며, 실수르 쉽게 되돌릴 수 없다. 한방에 빌드를 만들어낼 수 있습니까? 빌드 프로세스가 한 단계로 끝나지 않을 경우, 실수하기가 쉽다. 출시 날짜가 가까워질 수록 ‘마지막’ 버그를 수정하고 최종 EXE 파일을 생성하는 사이클을 짧게 유지해야 한다. 일일 빌드를 하고 있습니까? 빌드가 꺠진 문제성 코드를 우연히 체크인하는 경우, 다른 직원을 작업을 진행할 수 없게된다....

2024-09-15 · 2 min · 358 words

3-재사용성

knowledge를 반복해서 사용하지 말라 프로젝트에세 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. knowledge knowledge: 의도적인 정보 프로젝트를 진행할 때 정의한 모든 것 알고리즘의 작동 방식, UI의 형태, 우리가 원하는 결과 등 knowledge는 코드, 설정, 템플릿 등으로 표현할 수 있다. 프로그램에서 중요한 knowledge 두 가지 로직: 프로그램이 어떤 식으로 동작하는지와 프로그램이 어떻게 보이는지 공통 알고리즘: 원하는 동작을 하기 위한 알고리즘 비즈니스 로직은 시간이 지나면서 계속해서 변하지만, 공통 알고리즘은 한 번 정의된 이후에는 크게 변하지 않는다....

2024-09-15 · 5 min · 946 words

29-릭 채프먼이 아둔함을 찾습니다

마이크로소프트가 장기간 살아남은 이유는 치명적이고도 아둔한 실수를 저지르지 않았기 때문이다. 실수 중 대다수는 기술관련 지식이 없는 비즈니스 쪽 사람이 기술적인 기본 사실을 이해하지 못하기 때문에 발생한다. 프로그래머를 조타수로 두지 않는 소프트웨어 회사는 결코 성공할 수 없다. 그러나 프로그래머가 저지른 실수 또한 많다. 소프트웨어 비즈니스에서 성공하려면 프로그래밍에 해박한 동시에 비즈니스도 이해하고 좋아하는 관리층이 있어야한다.

2024-09-15 · 1 min · 53 words