Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions 2026/Street_Coder/donghyeon/week2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 4 ~ 6장

## 내용

- 위협 모델링
- 위협 모델: 보안 측면에서 무엇이 잘못될 수 있는지를 명확히 이해하는 것
- 보안 조치의 우선순위, 비용 최적화, 효율성을 높이기 위함
- 소형 위협 모델
- 애플리케이션의 자산
- 자산을 저장하는 서버: 사용자 그룹별 액세스 가능 여부 파악
- 정보 민감성: 정보 유출시 피해의 정도
- 리소스에 대한 액세스 경로: DB에 접근 가능한 다른 방법이 있는지, 누가 접근 가능한지 등
- 은둔 보안: 임시 방편이지만 **시간을 버는 용도**로는 좋음
- 검증된 보안 라이브러리를 사용할 것
- **타이밍 공격 방지**
- : 별것 아니라고 생각되지만 해커들에게 좋은 먹이감이 될 수 있겠네..
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

'먹이감'은 '먹잇감'의 잘못된 표기입니다. 한글 맞춤법 사이시옷 규정에 따라 '먹잇감'으로 수정하는 것이 좋습니다.

Suggested change
- : 별것 아니라고 생각되지만 해커들에게 좋은 먹이감이 될 수 있겠네..
- : 별것 아니라고 생각되지만 해커들에게 좋은 먹잇감이 될 수 있겠네..

26 changes: 26 additions & 0 deletions 2026/Street_Coder/donghyeon/week3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 7 ~ 9장

## 논의

저희 회사는 버그 분류를 우선순위 정도로만 하고 있는데, 다른 분들은 어떻게 분류하는지 경험을 이야기하면 좋을 것 같습니다.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

보통 (심각도) 우선순위로 하죠.
그리고 배포하는 주기가 정해져 있으니까 그 배포 기간만큼 버그 수정 할 수 있는 목록도 우선순위로 짤리고요.


## 내용

- 100ms 이상이면 지연을 느낌
- 성능 문제 발생 시, 애플리케이션 최상위 계층부터 시작해 이진 검색 방식으로 문제 위치 파악
- 코드 최적화
- 효율적인 자료구조 사용 => 검색 성능 개선
- 플래그 저장시 문자열 지양
- 불리언 평가 최적화 (변수 > 필드 > 속성 > 메서드 호출)
- CPU 최적화
- 데이터 정렬: CPU는 4, 8, 16바이트 단위로 정렬된 데이터를 읽음
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분도 모임 때 언급한 내용이긴 한데,
1990년대 CPU의 주소 접근 방식 아키텍처가 빠르게 발전하고 있던 시기와 맞물려서 일어났던 일입니다.

지금은 기존 32비트(4바이트) 아니면 64비트(8바이트)가 기본 단위이고
이것도 프로그래머가 신경쓰지 않아도 되는 게 CPU 레벨, 컴파일러 레벨에서 주소 지정 단위를 가상으로 잡아서 실행해주기 때문에 그렇습니다.

하지만 1990년대는 JAVA와 같은 JVM도 없었고, IBM PC 호환 CPU에 디스크(360K ~ 1.2M)에 담을 수 있는 용량의 프로그램만 썼던 시절이기도 했습니다.
네이티브 언어(C언어), 네이티브 컴파일러(Turbo-C), 네이티브 환경에서 동작하는 실행 파일(exe)이었습니다.
CPU도 80년대부터 쓰던 구형은 8비트, 80년대 후반 보급된 16비트 CPU, 90년대 초반 부터는 최신 CPU는 32비트를 썼습니다.
그나마 32비트 CPU는 엄청나게 비쌌기 때문에 일반 가정집에서 살 수 있는 컴퓨터는 아니었습니다.
따라서 16비트, 32비트에 따른 주소 지정 방식이 2바이트, 4바이트로 달랐기 때문에 책에서도 CPU 별로 바이트 단위로 읽는 기준이 다른 걸 설명한 거죠.

- 캐시 근접성: 배열이 연결 리스트보다 빠름
- 종속성 제거, 분기 예측으로 파이프라이닝 효율 증대
- SIMD(Single Instruction Multiple Data) 활용
- I/O 및 캐싱
- 버퍼링: I/O 작업시 1바이트씩 읽지 말고, 적절한 크기만큼 읽어 시스템 호출 오버헤드 줄이기
- 비동기 I/O (async/await): 병렬성을 높이고 리소스 절약
- 캐시 활용: 최후의 수단
- 수동 잠금(Lock) 주의사항: 잠금 전용 객체를 별도로 할당하여 사용 (제어할 수 없는 외부 코드와 충돌하여 데드락 유발할 수 있기 때문)
- 버그 분류 (Bug Triage): 우선순위와 심각성 기준으로 분류 (like 아이젠하워 매트릭스)
- 덤프 다이빙: JVM 진영에서는 `jhsdb`
Loading