Created: 2024-07-14
Updated: 2024-07-28
Language
Computer Science
모두의 네트워크
0. 읽은 시기🗓️
2024.07
1. 책 소개📖
OSI모델과 TCP/IP 모델의 기초를 쌓을 수 있는 책
2. 독후감✍️
정보처리기사와 기술 면접을 대비해서 네트워크 기초를 공부해 본 적은 있지만, 취업 이후에는 네트워크와 관련된 작업을 하지 않다보니 자연스럽게 잊혀졌다. 그러다 올해부터 회사에서 미니 프로젝트를 진행할 것이라는 소식을 들었다. 어떤 내용으로 진행할지 고민하다, 이번 기회에 자주 접하고 있지만 잘 모르는 주제를 선정해서 공부하면 좋을 것 같다고 생각했다. 그리고 그 주제가 네트워크🛜가 됐다.
인터넷을 통해서 정보를 수집하는 것도 좋지만, 정제된 지식이 정리된 책을 읽어보면 좋을 것 같다는 생각에 구입한 책이다(교보문고 기준 네트워크 검색어 + 판매량 순으로 순위권에 보이지 않는 책이지만, 어디선가 추천 글을 보아서 샀다🫠).
개인적으로 추천하는 책이고, 추천하는 이유는 지식을 연결해주기 때문이다. 간단한 예시로 4계층(전송 계층)은 신뢰할 수 있는 통신을 구현하는 계층이라고 외웠었는데, 신뢰할 수 있는 통신을 어떻게 만드는지 쉽고 간단하게 알려준다.
이 책을 읽고 막연하게 '정보는 상호 합의하에.. 잘.. 주고 받고 있지 않을까🫠..?'라는 생각을 '눈에 보이지 않는 전파를 통해 데이터가 이동하고 있구나🤓!'로 바꿀 수 있었다(그래서 가끔은 전파가 늘 이렇게 우리랑 함께해도 건강에 괜찮은가🥸라는 생각도 한다).
3. 새롭게 알게 된 내용📑
웹 서버에서의 데이터 전달과 처리
- 물리 계층
데이터가 전기 신호로 웹 서버에 도착- 데이터 링크 계층
이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소 비교
주소가 같으면 이더넷 헤더와 트레일러를 분리하고 네트워크 계층으로 전달- 네트워크 계층
목적지의 IP 주소와 웹 서버의 IP 주소가 같은지 확인
주소가 같으면 IP 헤더를 분리하고 전송 계층에 전달- 전송 계층
목적지 포트 번호를 확인하여 어떤 애플리케이션으로 전달해야 되는지 판단
TCP 헤더를 분리하여 응용 계층에 전달- 응용 계층
전송 계층으로부터 받은 데이터를 애플리케이션에 맞게 해석하고 처리
예: HTTP 요청이 도착하면 웹 서버는 이를 해석하여 적절한 웹 페이지를 반환
4. 구매처🛒
Database
SQL 첫걸음
0. 읽은 시기🗓️
2024.01
1. 책 소개📖
SQL 입문서
2. 독후감✍️
책이 쉽다. 그리고 MySQL🐬 환경이다. 다음 책은 SQL 레벨업인데, 그건 또 어렵다(그래서 읽는 걸 좀 미뤘다). SQL 기본 지식이 있는 상태(저는 SQLD를 소지하고 있습니다🙋♀️)라면, 이 책을 굳이 읽지 않아도 될 것 같다. 책도 얇고 단원이 잘 나눠져있어서 들고다니며 가볍게 보기 좋을 것 같다. 근데, 쿼리 좀 작성해봤으면 안 읽어도 될 것 같다.
3. 새롭게 알게 된 내용📑
새롭게 알게된 내용이나 알고 있던 내용을 깔끔하게 정리할 수 있도록 도와준 내용🤓!
-- * Null 값의 정렬 순서
-- * MySQL 기준 Null 값을 가장 작은 값으로 취급
-- * Oracle 기준 Null 값을 가장 큰 값으로 취급
-- * LIMIT
-- * 행수 제한
-- * where 조건절과 달리 order by 정렬 이후 최종적으로 수행
-- * OFFSET: 시작 위치 지정(0부터 시작)
select * from sample33 limit 3;
/*
+------+
| no |
+------+
| 1 |
| 2 |
| 3 |
+------+
*/
select * from sample33 limit 3 offset 3;
/*
+------+
| no |
+------+
| 4 |
| 5 |
| 6 |
+------+
*/
4. 구매처🛒
Code Quality
내 코드가 그렇게 이상한가요?
0. 읽은 시기🗓️
2024.03
1. 책 소개📖
좋은 코드 / 나쁜 코드로 배우는 설계 입문
2. 독후감✍️
누군가 내 코드를 읽으며 인상을 찌푸릴 때, 한 번쯤은 속으로 물었던 그 말. '제 코드가 그렇게 이상한가요..?'
코드 품질과 관련된 내용은 어째서인지 신입 개발자에게는 너무 성급한 주제라고 생각했다. 새로운 지식을 한창 쌓아갈 시기에 쌓인 지식을 다듬는 느낌이라 그간 미뤄왔는데, 한 번도 사용하지 않았던 MVVM패턴에 맞춰 기능을 구현하기 바빠 나도 내 코드를 보면서 ' 어😯? ' 하는 경우가 생겨 공부를 시작했다.
교보문고에 "코드"를 검색해서 판매량 기준으로 정렬하면, 좋은 책들과의 경쟁에서 밀려 3페이지 가장 마지막에 머물러있다. 하지만, 이 책은 내가 처음으로 코드 설계와 구조에 대해 관심을 갖게해준 책으로, 주변에 추천하고 싶은 책이다. 읽으면서 중요한 내용은 다시 복기하려고 적어두었는데, 문맥을 잊어버릴까봐 책도 결국은 샀다.
이 글을 수정하고 있는 24년 7월 기준 나는 C#을 쓰고 있는데, Java로 되어있는 예제 코드를 따라 쓰면서 오랜만에 다시 Java를 공부하는 재미도 있었다. 여러 좋은 내용이 있었지만, 프로젝트에서 이 책을 보고 적용해봤던 내용은 조건 분기 부분이었다. 책에서 설명한 조기 return을 활용하는 방법은 아래와 같다.
3. 새롭게 알게 된 내용📑
if(0 < member.hitPoint){
if(member.canAct()){
if(magic.costMagicPoint <= member.magicPoint){
member.consumeMagicPoint(magic.costMagicPoint);
member.chant(magic);
}
}
}
// 조기 리턴으로 중첩 제거하기 1
if(member.hitPoint <= 0) return;
if(member.canAct()){
if(magic.costMagicPoint <= member.magicPoint){
member.consumeMagicPoint(magi.costMagicPoint);
member.chant(magic);
}
}
// 조기 리턴으로 중첩 제거하기 2
if(member.hitPoint <= 0){
return;
}
if(!member.canAct()){
return;
}
if(member.magicPoint < magic.costMagicPoint){
return;
}
member.consumeMagicPoint(magic.costMagicPoint);
member.chant(magic);
float hitPointRate = member.hitPoint / member.maxHitPoint;
if(hitPointRate == 0){
currentHealthCondition = HealthCondition.dead;
}
else if(hitPointRate < 0.3){
currentHealthCondition = HealthCondition.danger;
}
else if(hitPointRate < 0.5){
currentHealthCondition = HealthCondition.caution;
}
else{
currentHealthCondition = HealthCondition.fine;
}
return currentHealthCondition;
// 가독성을 낮추는 else 구문도 조기 리턴으로 해결하기 1
float hitPointRate = member.hitPoint / member.maxHitPoint;
if(hitPoint == 0){
return HealthCondition.dead;
}
else if(hitPoint < 0.3){
return HealthCondition.danger;
}
else if(hitPoint < 0.5){
return HealthCondition.caution;
}
else{
return HealthCondition.fine;
}
// 가독성을 낮추는 else 구문도 조기 리턴으로 해결하기 2
float hitPointRate = member.hitPoint / member.maxHitPoint;
if(hitPoint == 0){
return HealthCondition.dead;
}
if(hitPoint < 0.3){
return HealthCondition.danger;
}
if(hitPoint < 0.5){
return HealthCondition.caution;
}
return HealthCondition.fine;
4. 구매처🛒
Etc.
'일상 > 독서의기록' 카테고리의 다른 글
[헤드 퍼스트 C#] CH1 멋진 프로그램을 만들어봅시다! (0) | 2024.02.04 |
---|---|
만화로 배우는 리눅스 시스템 관리 1 (1~9) (1) | 2024.01.27 |
코딩인터뷰 완전분석 (VI big-O 예제 8) (0) | 2024.01.22 |