1. 문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/164670

2. 문의 의도

  • 서브쿼리를 이용한 행 필터링

3. 풀이

  • 오답
SELECT B.WRITER_ID AS USER_ID, 
U.NICKNAME, CONCAT(U.STREET_ADDRESS1," ",U.STREET_ADDRESS2) AS 전체주소, 
CONCAT(SUBSTR(U.TLNO,1,3),"-",SUBSTR(U.TLNO,4,4),"-",SUBSTR(U.TLNO,8,4)) AS 전화번호
FROM USED_GOODS_BOARD AS B JOIN USED_GOODS_USER AS U ON B.WRITER_ID=U.USER_ID
GROUP BY B.WRITER_ID
HAVING COUNT(*) >= 3
ORDER BY B.WRITER_ID DESC
  • 정답
select distinct(u.USER_ID), u.NICKNAME, 
       concat(CITY,' ',STREET_ADDRESS1,' ',STREET_ADDRESS2) as 전체주소, 
       concat(left(TLNO,3),'-',substr(TLNO,4,4),'-',right(TLNO,4)) as 전화번호
from USED_GOODS_BOARD as b
join USED_GOODS_USER as u on b.WRITER_ID = u.USER_ID
where b.WRITER_ID in (select WRITER_ID 
                     from USED_GOODS_BOARD
                     group by WRITER_ID
                     having count(WRITER_ID) >= 3)
order by user_id desc

 

위 오답과 정답 둘 다 예시 테이블에서는 적어도 같은 테이블로 출력된다. 하지만 채점하면 에러가 난다.  그 이유는 프로그래머스에서 채점하는 테이블이 예시 테이블이 아닌 채점 테이블이 따로 있기 때문이다. 오답의 경우 두 테이블을 조인하여 having count(*)을 이용하여 필터링을 했는데 다음과 같은 상황에 엣지 케이스가 있다.

"동일한 유저가 판매글을 2개 올리고, 주소가 2개 인 경우" 이 경우 문제에 따르면 중고 거래 게시물을 3건 이상 등록한 것이 아닌 2건이지만 오답처럼 join과정에서 4개로 뻥튀기되고 count(*)로 집계하는 과정에서 의도치 않은 필터링이 된다. 따라서 정답처럼 사전에 서브쿼리로 writer_id를 선별해놓고 필터링 하는게 적절하다고 할 수 있겠다.

인 오류도 생각할 수 있으나.. 그냥 오답에 CITY 컬럼이 누락됐다. 너무 복잡하게 생각했네 🤣

1. 문제 출처

https://leetcode.com/problems/managers-with-at-least-5-direct-reports/description/?envType=study-plan-v2&envId=top-sql-50

2. 문제 의도

  • 계층형 데이터를 구하기 위한 self-join

3. 풀이

  • mangerid와 id를 키로 inner join 
  • groupy - having 조건을 이용하여 5개 이상의 부하직원이 있는 사람을 조회
select e2.name
from employee e1 inner join employee e2 on e1.managerid = e2.id
group by e1.managerid
having count(e1.id) >=5
order by e1.id asc

1. 문제 출처

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

2. 문의 의도

  • case when 문법을 이용한 데이터 변환

3. 풀이

  • price의 가격이 상한선이 정해져 있지 않아서, 8만원까지 하드 코딩 하거나, resursive 문법으로 해결
SELECT 
    CASE 
        WHEN (PRICE/10000) < 1 THEN 0
        WHEN (PRICE/10000) < 2 THEN 10000
        WHEN (PRICE/10000) < 3 THEN 20000
        WHEN (PRICE/10000) < 4 THEN 30000
        WHEN (PRICE/10000) < 5 THEN 40000
        WHEN (PRICE/10000) < 6 THEN 50000
        WHEN (PRICE/10000) < 7 THEN 60000
        WHEN (PRICE/10000) < 8 THEN 70000
        WHEN (PRICE/10000) < 9 THEN 80000
    END AS PRICE_GROUP,
    COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP ASC

 

좋은 기회로 NIVIDA 인증 프로그램에 참여하게 되었습니다. 다양한 항목들이 있어서 정리할 겸 작성해봅니다.


1. 항목

큰 카테고리는 4가지(Gen Al/LLM, Deep Learning, Accelerated Computing, Data Science) 로 그 안에 세부 내용이 있습니다. 

2. 절차

절차는 간단합니다. 약 2달 소요 된다고 합니다.

  • 1단계 지원: DLI service Delivery Partners, 학교 앰베더서, 직원, 강사 등에 만족하면 지원 가능합니다.
  • 2단계 평가: 트레이닝 코스와 과제를 수행하고 DLI Master Instructor에게 영어 인터뷰(한국 번역도 지원요청 가능) 
  • 3단계 활성

 

3. 출처

 

DLI Certified Instructor Application - Service Delivery Partner - Education Services

DLI Certified Instructor Application - Service Delivery Partner - Education Services

developer.nvidia.com

 

 

Instructor Qualifications For DLI Workshops

Instructor Qualifications for all current DLI Courses Follow the links below to ensure you have the qualifications necessary for the workshop you are interested in. Generative AI with Diffusion Models Instructor qualifications: Candidates must demonstrate

developer.nvidia.com

 

분기에 한번씩은 가천대학교 병원에 가게됩니다. 인천항 근처여서 그런지 유독 기름값이 싸다는 느낌을 받을 때까 있습니다. 실제로 사실인지 실제로 가격이 얼마나 차이가 날지 공공API를 통해 데이터를 수집하여 확인해보려합니다. 또한, 가격 차이가 많이 난다면 실제로 인천에 가서 주유하면 얼마나 이득인지 계산해봅니다.


1. 문제 정의 & 가설 수립

  • 호기심
    • 분기에 한번씩은 가천대학교 병원에 갑니다. 유조선이 쉽게 드나들 수 있는 인천항이 가까워서 수송비에 대한 부담이 적을 것 같습니다. 이 때문인지 기름 값이 저렴하다는 느낌을 받습니다. 과연 실제로 가격이 얼마나 차이가 날지 확인해보려합니다.
    • 가격차이가 많이 난다면 실제로 인천에 가서 주유하면 얼마나 이득인지 연비를 비롯한 차량 제원을 포함하여 계산해봅니다.
  • 배경 정보
    • 집🏠: 경기도 안양시 동안구
    • 병원🏥: 인천시 남동구
  • 가설1) EDA:  인천이 다른 지역보다 기름 값이 저렴할 것이다.
    • 결과 테이블: 시도 별 가격의 차이
  • 가설2) Business Impact: 인천시 남동구에 갔을 때 기름 넣는 것은 안양시 동안구 보다 1000 원 이상의 이득일 것이다.
    • 결과 테이블: 남동구와 동안구의 휘발류 가격의 차이를 고려한 금액 비교

2. 사전 정보 확인

  • 오피넷 공식 홈페이지(Link)

- 전국 평균 1,633원, 서울 1,700원 vs 경기 1,632원 vs 인천 1,624원
- 최고가 2,703원? 무슨일 → 높으신분들이 법인 카드 결제하여 페이백 받는 시스템(?)이 있다고 한다.

3. 데이터

  • 오피넷에서 제공해주는 무료 API / 유료 API가 존재
  • 무료 API는 하루 call 제한 1500건

(좌) 무료 API의 목록 / (우) 유료 API 리스트

  • 사용할만한 무료 API
    • 6번 최근 7일간 전국 일일 지역별 평균 가격
      • 기준일자, 지역코드, 지역명, 제품구분(보통휘발류), 평균가격
    • 22번 특정 7일간 전국 일일 지역 평균가격
      • 기준일자 지역코드, 지역명, 제품구분, 평균가격
  •  지역코드
    • 서울: 01, 경기: 02, 인천: 15
    • 경기도 안양시: 0204, 인천시 남동구: 1506

4. 결과

 

가설1) 인천이 다른 지역보다 기름 값이 저렴할 것이다.

  • 표1) 지역별 기름 값의 최근 7일자 휘발류 가격 평균

인천, 부산, 울산같은 항구 인접도시가 타 도시보다 가격이 저렴한건 사실이지만, 그렇다기엔 대구라는 예외도 있다. 근데 대구는 물가가 싸기로 유명하긴 하다.. 인건비가 타 도시 대비 적게 특정되는 특징을 가지고 있다. 

서울은 법인이 자주 사용하는 주유소의 이유 제주도는 운송료의 이유로 비싼 것으로 판단된다.

https://www.imaeil.com/page/view/2025031715010013188

 

대구 기름값 전국서 가장 싼 이유는

주유소 전경. 연합뉴스...

www.imaeil.com

  • 표2: 인천 vs 서울/경기의 최근 7일간 휘발류 분포의 차이와 검정
    • 인천 vs 서울/경기의 휘발류 가격 분포는 정규성 따르지 않음
    • 중앙값을 기준으로 비교하는 맨-휘트니 검정 시행

(좌) 인천 vs 서울/경기의 휘발류 가격 분포 / (우) boxplot과 중앙 값

정규성 검정 결과:
인천(15) 지역: 통계량=0.934, p값=0.000
서울/경기 지역: 통계량=0.963, p값=0.000

맨-휘트니 검정 결과:
통계량: 267359.000
p-value: 0.000
가설 1 결론: 실제로 인천과 서울/경기 지역의 휘발류 가격은 차이가 나며 통계적으로 유의미하다

가설2) 인천시 남동구에 갔을 때 기름 넣는 것은 안양시 동안구 보다 1000 원 이상의 이득일 것이다.

  • 결과 테이블: 남동구와 동안구의 휘발류 가격의 차이를 고려한 금액 비교
    • 병원 근처 최저가 1,568원
    • 집 근처 최저가: 1,645원
이렇게만 봐도 77원 차이가 나네!

(좌) 인천 병원 근처의 기름 값 / (우) 안양시 집 근처의 기름 값

  • 자동차 제원
    • k3 기준 기름통 용량 50L이므로 절반인 25L 기준
    • 주유 팬널 기준 대략 2칸 ~ 3칸을 채울 수 있는 용량

  • 연비: 16 km /L 
  • 휘발류 1600원 / L 
  • 10M당 1원 소요, 1키로당 100원
휘발류 리터당 1600원 기준, 가격 10원/L 차이마다 250원의 차이, 80원이면 2000원의 이득
  • 병원 근처의 최저가 주유소는 2.5km 떨어져있으므로, 250원 소모, 왕복기준 500원 소모
  • 편도 기준 20분 이상 멀리 있는 곳은 안가느니만 못하다.

5. 결론

가설 1) 인천이 다른 지역보다 기름 값이 저렴할 것이다
 - 사실이지만, 항상 항구 도시가 항상 싼건 아니다.

가설 2) 1000 원 이상의 이득일 것이다.
 - 그렇다. 10원/L 차이나면 250원의 차이가 난다. 인천 간김에 넣는건 좋은 선택이다.
 - 그러다고 굳이 20분 정도의 먼 최저가 주유소를 갈 필요는 없다.

인사이트)
- 지역별로 주유소의 가격은 최대 100원의 차이가 있다.
- 가끔 법인 전용 주유소가 있으므로 조심할 것… 특히 서울

 

본 주제는 매달 한 번씩 호기심을 주제로 분석하는 모임 <월간 데이터 노트>의 결과입니다.
관심이 있으시면 다음 링크를 확인해 보세요!!

 

 

노션은 여러 사람들이 사용하는 협업 툴로 데이터베이스 기능이 있습니다. 이번 글은 멘토링과 같은  다수의 인원의 일정을 구글캘린더에 동기화 하는 방법을 기술합니다. 이렇게 하면 매번 노션페이지에 들어가서 일정을 확인하고 내 캘린더에 기록할 번거로움이 사라집니다. 


목차

    1. 요구사항 정의

    저는 부업으로 멘토링을 하고 있습니다. 다수의 인원이 저에게 멘토링을 신청하는데, 기존에는 슬랙에 멘토링 가능시간을 올리면 답글로 신청하는 방식이였습니다. 하지만 여러 채널에서 멘토링 신청을 받는 상황이 와서 같은 시간에 약속을 잡는 상황이 발생할 수 도 있었습니다. 또한, 이런 멘토링 신청내용을 저의 구글 캘린더에 담아서 한번에 일정을 확인하고 싶어졌습니다. 

    기본적으로 Make라는 자동화 툴에서는 노션의 데이터베이스에 상호작용할 수 있는 인터페이스를 제공합니다. 데이터베이스 조회, 생성, 추가, 업데이트 등의 옵션을 제공합니다.

    최종적으로 완성시킬 Flow는 다음과 같습니다.

    노션 데이터베이스 -> Make -> 구글 / 노션 캘린더 기입

    2. 노션데이터베이스 기입 -> Make

    노션에 캘린더 형식으로 데이터베이스를 만들고, 속성으로 "멘티 이름"과 "날짜 시각"을 정확하게 기입하도록 유도합니다. 이 속성을 추후 Make툴의 파라미터로 받아서 구글 캘린더에 작성됩니다. 

    달력 데이터베이스
    신청 페이지

     

    2. Make 세부사항

    Make에서 Notion 홈페이지에 대한 권한을 줄 수 있습니다. 거기서 특정 데이터베이스 이름을 기준으로 데이터를 관찰할 수 있고, 새로운 이벤트가 열리면 이를 trigger 삼아 구글 캘린더에 전송하는 시스템입니다.

    • Connection: 연결할 노션 계정과 페이지
    • Watch Database Item:  관찰할 기준
    • Database ID: 데이터베이스 식별자, 노션 페이지를 지정해주면 자동으로 연결 가능한 DB가 확인됨
    • Limit: 1번 실행에 추가할 수

     

    • Connection: 연결할 구글 캘린더 계정
    • Create an Event: 간단하게(Quickly), 자세하게(In Detail)
    • Calender ID: 캘린더 이름
    • Event Name:  캘린더에 적을 제목으로, 멘티 이름 속성을 Notion에 받아와 추가했습니다( Ex [1on1] 홍길동)
    • Start Date: 노션에 기입한 날짜&시각을 기입, 노션 DB와 자료형 일치
    • Duration: 추가할 시간

    그 밖에도 노션에서 가져오는 정보들이 변수명으로 적혀있어서 필요에 따라 선택하여 넣을 수 있습니다.

    3. 시연

    왼쪽 하단에보면 매 15분 마다 Tigger가 작동합니다. 노션 데이터베이스를 관찰하는 빈도입니다.

    왼쪽 하단에 Run Once를 눌러서 즉시 실행을 시킬 수도 있으며,  트리거의 조건에 따라 기입했던 노션 데이터베이스의 정보를 받아온 것을 확인할 수 있습니다.  Propeties Value의 멘티이름과 날짜시각이 잘 들어온 것을 볼 수 있습니다.

    이를 구글 캘린더에 동기화되고 다시 노션에 자동으로 동기화가 된 모습입니다.

     

    Last Updated 2025.05.21.

    지난 통계학/데이터사이언스 책 추천에 이어서 엔지니어링 관련 책 추천을 해보려 합니다. 데이터 사이언스에서 CS, 백엔드, 프론트, 네트워크, 데이터 모델링 등 필수적이진 않지만 알면 알수록 본인의 성과와 확장성이 높아질 것입니다. 참고로 이전 책 추천은 다음 링크를 참고하세요.

    https://snowgot.tistory.com/135

     

    DataScience 책 추천(교양, 통계, 데이터과학, 머신러닝, 프로그래밍 등 )

    Last Updated 2025.02.10. 2018년 이후 데이터과학업계에 몸 담으면서 유용하게 공부했던 책과 컨텐츠 혹은 추천받는 책들을 모았습니다. 하지만 명심하세요 자신에게 잘 맞는 책은 지금 당장 도서관

    snowgot.tistory.com


    목차

    1. 엔지니어링 일반

    요즘은 개발이 추상화되고 AI의 지원으로 개발과 분석이 쉬워졌지만 그럼에도 불구하고 low level의 이해는 컴퓨터활용의 능력을 이끌어 올려줍니다.

    https://snowgot.tistory.com/192

     

    컴퓨터밑바닥: Chapter 1 프로그램 언어부터 실행까지, 이렇게 진행된다.

    데이터 중심 어플리케이션 설계에 이어 컴퓨터 밑바닥의 비밀이라는 책을 스터디 합니다. 1장은 프로그래밍 언어가 작동하는 기본을 설명하는 단원으로 컴파일러와 링커 그리고 추상화에에 대

    snowgot.tistory.com

    보통 백엔드 개발자들에게 필독서로 권장되지만 난이도가 낮은 편은 아닙니다. 하지만 데이터 관련 직군에게 설계의 관점으로 일부 챕터를 읽는 것을 권장할만큼 잘 쓰여진 책이라고 생각됩니다. 저는 3장 저장소에 대한 단원이 가장 좋았습니다.

    https://snowgot.tistory.com/173

     

    DDIA Chapter 3: 저장소와 검색

    솔직히 말이죠 이런 책을 읽는다는게 쉽지만은 않습니다만, 특히 이번장에서는 데이베이스의 저장구조와 검색에 대한 테크니컬한 내용이 많이 들어가서 중간에 도망갈뻔 했습니다. 그런데 참

    snowgot.tistory.com

     

    2. 데이터 모델링

    갑자기 왠 자격증이냐 하겠지만, 1단원이 데이터 모델링에 대한 개념으로 입문자일 때 읽었던 경험보다 3년차 일때 읽었던 경험이 훨씬 더 좋았습니다. 겸사겸사 공부해보시는 것 추천합니다.

    데이터 엔지니어링 커뮤너티에서 추천 받은 책으로 40년 내공으로 쓰여진 지은이의 경험이 녹아 있는 책이라고 합니다.

    비전공자도 이해할 수 있는 DB 설계 강의를 만들었다고 한다.(Youtube)

     

    3. 기록

    • 2025.05.21. 최초 작성

    이번에 시간을 공유하는 삶이라는 타임 트래킹 소모임에 참여하게 되었습니다. 일단위로 시간을 기록하고 일주일 회고를 12주간 반복하는 모임입니다. 이 모임에서 아이디어를 얻어 나의 업무기록을 자동화하는 여정에 대해서 Make 툴을 중심으로 작성해보겠습니다.


    목차

    1. 요구사항 정의

    시간단위로 업무를 기록하는 모임이기 때문에 최대한 시간을 기록하는 것에 공수를 줄이고 싶었습니다. 매번 업무와 일상의 context change가 될 때마다 캘린더를 키고 기입하는 것이 아닌, 최소한의 트리거로 캘린더에 기입하는 것이 목적이였습니다. 일단 가장 루틴한 업무부터 기록해보자는 생각이 들었습니다. 루틴하게 9-6를 캘린더에 밀어넣고 사후 조정해도 되지만, 점심시간이나 집중하지 않을 때 혹은 사이드 프로젝트를 시작하고 종료하는 시간을 기록해보고자 했습니다.  예컨데 다음과 같은 절차로 캘린더 기입이 되었으면 했습니다.

    핸드폰 터치 -> (무엇인가) -> 노션 캘린더 기입 

    갤럭시에는 루틴와 굿락이라는 어플로 어느정도 자동화 할 수 있지만 "캘린더에 현재 시각을 기준으로 1시간동안 업무를 제목으로 기록해줘" 와 같은 디테일은 챙길 수 없습니다. 그래서 2가지 툴을 도입했습니다. 

    2. Tasker

    먼저 갤럭시에서 Custom 된 HTTP POST 요청을 보낼 수 있어야합니다. 이를 도와주는 도구로 Tasker라는 유료앱(4400원)이 존재합니다. UI는 투박한데 모바일에서 가장 자동화하기 좋은 어플로 평가받더라구요. 아이폰에서 단축어와 대응될 수 있겠습니다. 

    우편 == POST

    추가적으로 % 옵션을 이용하여 현재 시각 등등 매개변수를 POST요청에 태워서 보낼 수 있습니다. 참고로 google calendar에 기입하려면 summary와 text 키 값이 필수라고 합니다. 

    3. Make

    Make는 GUI로 구현하는 자동화툴로서 Notion, Gmail, ChatGPT, Calendar 등 다양한 서비스의 자동화를 지원합니다. 접근성이 쉽고  테스트하기 좋은 서비스입니다. 또한 노션캘린더와 구글캘린더는 양방향 동기화가 되기 때문에 고민이 덜어집니다. 결론적으로 다음과 같은 루틴이 완성됩니다.

    갤럭시  Tasker 자동화클릭 -> make -> Google Calender -> Notion Calender

    3. 시연

    Tasker에서 생성된 어플을 누르면 온종일 대기하고 있는 Make가 응답을 받고

     

    Calendar 노드가 정해진 규칙(제목: summary 변수, 시작 지금, 종료 15분 뒤) 으로 일정을 보내어

    구글 캘린더에 기입된 후 노션 캘린더에도 동기화 됩니다.

    4. 후기

    Tasker와 Maker 조합이면 핸드폰으로도 웬만한 자동화 모두 가능할 것 같고 사실 make단독으로도 루틴을 만들어서 생성하는게 꽤나 활용할 것 같습니다. 업무 외에도 휴식이나 수면과 같은 시간을 자동으로 기입해 보겠습니다.

    5. 참고자료

    https://tak0407.tistory.com/entry/%EC%9D%BC%EC%9D%BC-%ED%9A%8C%EA%B3%A0Daily-Reflection-%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94-%EC%97%90%EB%84%88%EC%A7%80-%EB%A0%88%EB%B2%A8%EC%9D%84-%EB%82%AE%EC%B6%B0%EB%B3%B4%EC%9E%90-2

     

    일일 회고(Daily Reflection) 작성하는 에너지 레벨을 낮춰보자 - 2

    목차 들어가며지난 글에서는내가 일일 회고를 쓰는 이유와 일일회고를 좀 더 간단하게 접근해보는 방식을 소개했다. 회고하고 싶은 항목에 대해 설문 폼을 만들고, 이를 Notion에 잘 연동되는지

    tak0407.tistory.com

     
     

    'Data Science > 자동화' 카테고리의 다른 글

    Make를 이용한 Notion Database -> 캘린더 자동화  (2) 2025.05.22

    데이터 중심 어플리케이션 설계에 이어 컴퓨터 밑바닥의 비밀이라는 책을 스터디 합니다. 1장은 프로그래밍 언어가 작동하는 기본을 설명하는 단원으로 컴파일러와 링커 그리고 추상화에에 대한 내용입니다. 이번에는 조금 색다르게 비유법을 통해서 설명해보겠습니다.


     

    목차

    1. 용어 정리

    신규개념 설명
    컴파일러(compiler) 고수준의 언어를 저수준의 언어로 번역하는 프로그램
    토큰(Token) 컴파일러가 쪼갠 각 항목에 정보를 결합한 것
    해석(parsing) 소스코드에서 토큰을 추출하는 과정
    GCC 컴파일러 유닉스/리눅스 계열의 표준 컴파일러
    대상 파일(object file) 소스파일을 컴파일한 결과로 기계어로 쓰여진 프로그램
    링커(Linker) 컴파일러가 만든 대상파일을 하나의 실행파일로 합쳐주는 프로그램
    심벌(Symbol) 전역 변수(Global Variable)과 함수(function)을 포함하는 모든 변수 이름들
    라이브러리 컴파일된 패키지와 모든 함수의 선언을 포함한 헤더 파일로 만든 것
    헤더 파일(header file) 컴파일러가 외부 심벌 정보를 기록하는 표

    2. 프로그램이 음식점이라면

    여기 이세계 식당이 있습니다. 요리사와 요리법이 존재하는 것 같지만 재료는 무한이 복제되는 마법 창고에서 생성됩니다. 이 때 요리사는 재료와 요리법의 순서를 조합하여 하나의 완성된 요리를 하게 됩니다. 이를 우린 컴퓨터에서 컴파일러라고 부릅니다.

    만약 제육볶음을 만든다면? 파, 고기 앞다리살과 같은 재료가 필요할 것이구요, 파는 썰고 고기는 적당히 볶고 맛나게 먹는 그런 레시피가 만들어질 것 입니다. 이렇듯 컴파일러는 데이터와 코드의 조합으로 실행 가능한 그리고 기계가 이해할 수 있는 대상 파일을 만들게 됩니다. 

    그런데 말입니다. 옆 집 중국 음식점의 두반장이 그렇게 인기가 많다는데요? 제육볶음에 한 번 넣어보면 어떨까요? 마침 중국집 위치가 적혀있는 정보도 가지고 있네요! 찾아가서 가져옵니다. 이때 두반장은 외부 변수이고 외부 재료의 위치는 심벌 테이블로 비유될 수 있습니다.

    자 이제 제육볶음 레시피를 개발했으니 우리 수 쉐프에게 보고하죠. 쉪! 이게 새로운 제육볶음 레시피입니다. 쉐프가 흡족해 하는군요. 이걸 우린 컴퓨터에서 링커 라고 합니다. 이 링커는 흡족한 대상 파일을 모아 하나의 요리법으로 정리합니다. 이를 우리는 라이브러리라고 하구요. 마치 밀키트를 연상 시키는군요!
     

    그런데 말입니다. 컴파일러를 열심히 설명해봤는데, 인터프리터라는 것도 있단 말이죠? 말로는 파이썬, 자바스크립트가 인터프리터라고 하고 C가 컴파일러라는데 잘 이해가 되지 않는 군요. 요리법으로 비교하면 말이죠,  컴파일러는 설계형 요리사입니다. 차근히 대상파일을 보고 변수가 잘 선언되어있는지 에러는 나지 않는지 검토합니다. 레시피를 검토하는 것처럼 말이죠!  반면 인터프리터는 즉석 요리사입니다. 일단 만들고 해석합니다. 그러다보니 아차! 제육이 없군요! 다시 시작 해야겠어요. 
     

    3. 동적/정적 라이브러리

    그런데 말입니다. 남의 요리법을 가져다 쓸 수 있다는 사실. 우린 라이브러리를 가져다 쓰는 것에 익숙한데 이렇게 남의 노하우, 요리법을 복사해다가 내 음식점을 저장해놀 수 있겠습니다. 마라탕이 그렇게 인기가 많대요!! 우리도 써봐요. 문제는 요리법이 세상에 너~무 많아서 이걸 모두 복사해놓다간 음식 창고보다 문서창고가 더 많아지겠어요. 이거이거 문제군요.

    그러지 말고 우리 돕고 삽시다! 저기 동문시장 청년몰은 요리법을 공유하는 시스템이 있대요!! 몰래 복사해 놓을 것이아니라 필요할 때 마다 가져다 쓰면 된답니다 오호!! 역시 사람은 돕고 살아야해요. 운영시간 내내 가져다 써도 되고 주문이 들어올 때 마다 가져다 써도 된다니 이거 참 인심이 좋은 곳입니다.

     
    이렇게 동적 라이브러리는 장점이 많아요! 매번 요리법을 복제하지 않아도 되고요! 요리법 ver 2.0가 나와도 수정된 요리법만 가져오면 만사 Ok!  요리법을 복사해다 쓰던(정적 라이브러리)시절보다 훨씬 편하군요. 추가 메뉴 확장도 좋아요. 요즘 또 안성재 쉐프가 유명하니까 도토리 국수 플러그인을 써보겠습니다. 또 다른 요리법과 쓰까 쓸 수 있는 점도 아주 좋군요!

    하지만 단점도 있는데요! 아무래도 요리법을 공유 주방에서 가져오다보니 살짝 시간이 소요가 되네요! 아무렴 어떠한가요. 그리고 잘 쓰던 중국집 위치가 이사 갔대요 흑흑 원래는 참조표를 보고 다녔는데 이사갔나 보군요. 이런 경우를 대비해서 멀-티버스를 만들어서 극복~ 했답니다. (급마무리)
     

    4. 후기

    보통 데이터를 음식으로 표현하니까 적용해봤는데 재밌으면서도 엄밀하지 않은 부분이 공존하는 그런 글이 되었네요. 사실 링커가 내부 변수는 관심을 가지지 않는다 와 같은 사실도 한 번 표현해보고자 했는데 가상화 부분이 살짝 이해가 안되어서 추후 메모리 단원에서 정리할 예정!

    5. 출처

    https://www.aladin.co.kr/shop/wproduct.aspx?itemid=335644868&srsltid=afmbooqwsqgopudtwswt2orsbm-denky529mzgxv3i6jvikbxrsqrvid

     

    컴퓨터 밑바닥의 비밀 : 알라딘

    코드를 실행하면 컴퓨터 내부에서는 어떤 일이 벌어질까? 운영 체제부터 CPU, 동기화, 입출력을 구현하는 원리까지, 내 코드를 바꿔줄 컴퓨터 밑바닥의 비밀을 들여다보자.

    www.aladin.co.kr

     

     

    데이터 중심 어플리케이션 설계(대중애설) 스터디의 후기를 작성하고 좋았던 방법과 이 책을 스터디로 선택하려는 사람들을 위한 기록을 남겨봅니다.


    1. 스터디 방법

    • 사용 플랫폼: 슬랙 - 허들
    • 기간: 25년 2월 ~ 4월 24일
    • 참여 방법: 총 12장을 매주 읽고 블로그/노션에 NDA 템플릿을 이용해서 정리하기
      • 새롭게 알게된 점(New)
      • 어려웠거나 이해하지 못한 부분(Difficulty)
      • 추가 내용(Amendment)
    • 스터디 방법: 매주 일요일 오후 10시에 모여 작성한 내용 읽으며 질의응답

    2. 후기

    • 책 후기

    "데이터"라는 문구만 보고 데이터분석/사이언티스트가 도전할 수도 있겠으나 명확히는 설계에 관점이 맞춰져 있기 때문에 백엔드에 관심 있는 사람들이 보는게 좋다. Part 1에서는 신뢰성, 데이터 모델, 저장소와 검색, 부호화 Part 2에서는 분산 데이터, 복제, 파티셔닝, 트랜젝션, 일관성 Part 3 배치 처리, 스트림 처리에 대해서 다루는 흐름으로 폭 넓게 데이터 시스템 설계에 대한 이해를 도울 수 있을 것으로 판단할 수 있다. 하지만 각 단원마다의 내용이 압축되어 소개하므로 각 시스템에 대해서 설계하고 구현한 사람들에는 복기의 느낌으로 읽어보는 것이 가장 큰 도움이 될 수 있다. 다른 이론서와 비슷하게 책 자체를 필사해서 적는 블로그가 많기 때문에(본인 포함...) 참고 할만한 블로그가 적다. 늘 느끼지만 이런 난이도 높은 책들은 완벽하게 이해하려하기 보다는 책/단원에서 얘기말하고자 하는 바를 인내심있게 쫓되 나의 무지를 너무 탓하지 않고 꾸준히 읽는 것이 스터디 완료의 비결인 듯!  단원이 말하고자 바를 요약하고 나의 언어로 재구성해서 작성하는 셀프 스터디가 필요하다. 본인이 데이터 관련 직무라면 3장 정도는 읽어보는거 매우 추천

    https://snowgot.tistory.com/173

     

    DDIA Chapter 3: 저장소와 검색

    솔직히 말이죠 이런 책을 읽는다는게 쉽지만은 않습니다만, 특히 이번장에서는 데이베이스의 저장구조와 검색에 대한 테크니컬한 내용이 많이 들어가서 중간에 도망갈뻔 했습니다. 그런데 참

    snowgot.tistory.com

    • 스터디 방법 후기

    자율적으로 글을 쓰고 발표하기로 하였어서 고정적인 2-3명의 발표자가 있고 청중이 5명정도 유지되었다. 특히 청중에는 N사 광고도메인 개발자 분이 계셔서, 추상적으로 읽을 수 밖에 없는 주니어 개발자들의 질문이나 고민을 실무적으로 대답해주는 부분이 이번 스터디의 가장 큰 특징이였다. 느슨한 스터디에도 꾸준히 진행할 수 있었던 동기부여가 된 것 같다. 서로 얻을 수 있는 부분을 자연스럽게 구축하는 것이 스터디에서 중요함을 느꼈다. 꽤나 잘 진행된 스터디어서 다음 책은 컴퓨터밑바닥의 비밀 이라는 책을 진행할 예정

    https://www.aladin.co.kr/shop/wproduct.aspx?itemid=335644868&srsltid=afmboopu5fkt_m8yvdlgx5duttjhtqcg5hfodxg-vn11qjc0tcqsyyht

     

    컴퓨터 밑바닥의 비밀 : 알라딘

    코드를 실행하면 컴퓨터 내부에서는 어떤 일이 벌어질까? 운영 체제부터 CPU, 동기화, 입출력을 구현하는 원리까지, 내 코드를 바꿔줄 컴퓨터 밑바닥의 비밀을 들여다보자.

    www.aladin.co.kr

     

    3. 스터디원들 후기(KPT)

    각 스터디원들의 KPT 후기를 텍스트로 남긴다. 중도에 포기하고 싶은 마음도 많았지만 그래도 끝까지 해본다는 경험으로 나의 무지를 받아들이며 했던 경험이 좋았다. 다음 사진은 꾸준함에 대한 이상과 실제 그림 ㅎㅎ 일단 끝까지 해보자고~

    Keep Problem Try
    다른분들의 열정을 보고 배움... 책을 안읽음, 정리를 안함, 와서 듣기만함 참여자체에 대한 고민을 더 하자
    다른 분들 필기와 열정을 배움 배워서 응용할 생각을 해야 하는데 그냥 필기 열심히 하는 범생이 같아서 좀 별로였음 (나자신) 그냥 책 공부한다고 생각하지 말고 연관관계를 최소한 5개는 더 만들것. 책 내용 이외의 대화거리를 끄집어 낼것
    DB에 대해 더 배운 느낌.,. 무엇보다 회사에서 어떤 시스템을 쓰고 있고 왜 이런 방식을 도입했나 조금 이해가 갔습니다. 중반 이후로는 조금 어려웠다 .. 어렵다 보니까 손이 확실히 덜갔다. 여러 번 읽어야 하는 책일 것 같다. 다시 어려웠던 부분부터 읽어나가면 좋을 것 같다.
    데이터 중심의 설계를 고민해본 적이 없어서 배운 시도 자체가  좋았다.

    특히 3장의 저장소와 검색부분을 읽으면서 깨달았던 OLTP와 OLAP의 진정한 차이 등등이 너무 좋았음

    신규 개념을 상단에 적는 형식의 글 템플릿 작성이 좋았다.
    난이도가 넘 어려워서 1-2번 읽고도 이해 못할 때가 많았다.

    이론적인 부분만 읽어서 모호한 부분이 많앗음
    NDA 템플릿 잘 안 씀..
    요약부터 읽어버리자. 3번 읽자. 남이 쓴것도 줍줍해서보자

    실제 사례를 실습해보자(Data Flow같은 스트림처리 서비스 써보기)

    글의 전개방식으로 쓰다보니까 NDA처럼 순서를 고려하지 않는 정리는 조큼 어려운듯
    책에 내용이 많아서 소제목 간의 연관성이 바로 정리되지 않았는데 발표 준비 + 들으면서 정리할 수 있었음

    책 내용 뿐만 아니라 실무 이야기, 대응책에 대해 배울 수 있어서좋았음

    NDA 템플릿 좋았음
    책 내용 이해하기에 급급해서 NDA 템플릿을 잘 활용하지 못함
    제대로 남에게 설명할 수 있을 정도로 이해하거나 기억하지 못함....(기억력 이슈?)
    좀더 실무에 적용해서 어떤 사례에 어떻게 대처할 수 있는지 정리하기

    기업 발표 내용처럼 실무에 적용한 사례 찾아보면서 책 이해하기 (내가 나중에 적용을 고민할 수 있는 포인트가 무엇인지 제대로 이해할 수 있을 것 같음)
    나와 다른 경험들을 가진 분들의 이야기를 듣는 것, 중도 하차했고 참여한 것도 모두 청강이었지만 딱 한 번 내 경험을 공유한 적이 있었는데, 제 3자의 관점에서 나의 고민과 문제를 봐주셨을 때 느낀 점들이 있었음 감사합니다. 미리 안읽음 / 읽다가 이해 안하면 책 집어 던짐(던지진 않고 고이 책 덮어버림) / 읽으면서 자꾸 '내가 이게 필요한가?'라는 생각이 듬 / 자기검열 읽는 시간을 확보해서 읽어보기. 이해 안가도 그냥 쭉 읽어보기 ㅠ

     

     

    + Recent posts