분류 전체보기
최단 경로 문제 - 다익스트라 알고리즘
최단 경로 문제 - 다익스트라 알고리즘
2024.04.09최단 경로 문제 최단 경로 문제는 그래프 내의 두 정점(노드) 간의 가장 짧은 경로, 즉, 각 간선들의 가중치의 합이 최소가 되는 경로를 찾는 문제이다. 그래프의 형태에 따라 다양한 최단 경로 알고리즘이 존재한다. 이러한 알고리즘은 그래프의 크기, 가중치의 존재 유무 또는 음수 사이클의 존재 여부 등에 따라 다르게 사용한다. 대표적인 알고리즘 복습할 겸 대표적인 최단 경로 알고리즘을 찾아봤다. 다익스트라 알고리즘: 가중치가 음수가 아닐 때 사용될 수 있다. 다익스트라가 대학원생이던 시절 여자 친구와 함께 커피숍에 갔다가 20분 만에 고안한 알고리즘으로도 유명하다. 벨만-포드 알고리즘: 음수인 가중치를 처리할 수 있는 알고리즘이다. 음수 사이클을 탐지할 수 있는 것이 특징이다. 플로이드-워셜 알고리즘: 가..
실무로 통하는 인과추론 with 파이썬
실무로 통하는 인과추론 with 파이썬
2024.03.24한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다.파이썬으로 numpy, pandas도 활용해봤고 기본적인 머신러닝과 통계 개념 정도만 알면 괜찮지 않을까라는 안일하게 고르게 된 책입니다. 죄송하게도 통계에 대한 지식이 부족하여 수식을 제대로 이해하지 못하고 넘어가는 경우가 많았습니다. 너무 표면적인 부분만을 이해한 것 같지만 제가 읽으며 배우거나 느낀 내용을 적어봅니다. 통계에서 배운 내용을 복습하며서 읽었는데 초반부터 저에게 생소한 용어가 등장해서 더 어려웠던 것 같습니다.처치: 구하려는 효과에 대한 개입내생 변수: 관측되지 않은(=시스템에 포함되지 않는) 요인에 의해 영향을 받는 변수외생 변수: 모델링하지 않은 변수; 시스템 밖에서 주어지는 변수...그래도 여러 흥미로운 실제 사례, 연구,..
[AWS] 2월부터 늘어난 VPC 비용 - In-use Public IPv4 Address
[AWS] 2월부터 늘어난 VPC 비용 - In-use Public IPv4 Address
2024.03.03오늘 2월 Invoice를 받아보니 VPC 비용이 갑자기 애매하게 증가한 사실을 알 수 있었습니다... 상황에 따라 몇 만원이 초과할 수 있어서, 예산 알림을 20$로 정해두어서 알림을 받지 못해서 인보이스를 받고서야 알아차렸습니다. 흑.. 아래의 공지를 보면 비용이 증가 이유를 알 수 있습니다. 바로 새로 적용된 IPv4 요금 때문!! 자동 할당된 것도! 서버스에서 사용 중인 것도! 모두 요금 부과의 대상이됐습니다. 공지 – AWS Public IPv4 주소 요금 변경 및 Public IP Insights 기능 출시 | Amazon Web Services AWS에서 퍼블릭(Public) IPv4 주소에 대한 새로운 요금이 도입됩니다. 2024년 2월 1일부터 서비스 연결 여부에 관계없이 모든 퍼블릭 I..
[서평] 헤드 퍼스트 자바(3판)
[서평] 헤드 퍼스트 자바(3판)
2024.02.25한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 리뷰 대학교에 입학하고 C언어만 주구장창 파다가 객체지향을 처음 접했을 때 조금 더 명확하게 개념을 잡고 싶었던 적이 있습니다. 당시에는 객체지향은 이거다!라고 했다가 그렇게 간단하게 정의할 수 있는 게 아니라고 핀잔?을 듣기도 했습니다. 클래스로 계층적으로 표현해서 추상화하는 게 자바인가... 메시지를 전달하고 객체가 알맞게 처리해서 객체지향형 언어인가 막 여러 추상적인 말들로 혼란스러워할 때 동아리 선배가 추천해 준 책이 헤드퍼스트 자바 2판이었습니다. 동아리 방에 앉아서, 책 속에 나오는 인물에 빙의해서 자연스럽게 자바를 활용하도록 구성되어 되게 재미있게 읽었던 기억이 있습니다. 당시에는 아무래도 2005년에 번역된 책인 만큼 최신 자바의 ..
[Java] 람다식과 익명 클래스
[Java] 람다식과 익명 클래스
2024.02.21람다식은 어디서 왔을까? 함수형 언어가 다시 주목받으며 자바도 함수형의 이점을 살리기 위한 여러 기능이 업데이트되었다. 특히 자바 8에서 소개된 람다식이 대표적인 예이다. 함수형에서는 여러 클래스나 값을 변경하고 상호작용을 구현하여 표현하지 않는다. 보통 코드를 보면 무엇을 하는지 한눈에 보이고 데이터나 이벤트 스트림이 처리되는 과정을 가독성 좋게 볼 수 있다. 이런 데이터나 스트림을 다루는 데에 있어서 작은 동작이나 일회성 작업에 이름을 붙일 필요가 없는 경우가 많다. 그럴 때 쓸 수 있는 것이 람다식 혹은 익명 함수이다. 클래스명 같은 이름이 없기 때문에 그저 하나의 람다식으로 쉽게 전달될 수 있기도 하다. 람다식과 익명 클래스 람다식, 익명 클래스 모두 이름이 없는 함수나 객체를 표현하기 위해 쓰인..
[Java] Annotation (feat. Reflection)
[Java] Annotation (feat. Reflection)
2024.02.19Annotation? Annotate는 어떤 문서에 간단한 설명이나 의견을 달아놓는 것을 뜻한다. "주석을 달다"라고 번역할 수 있다. 이런 추가 정보는 어떤 데이터를 설명하기 위한 데이터이며 우리는 것을 메타데이터라고 부른다. 어노테이션(Annotation)을 사용하는 이유 자바에서 어노테이션은 코드에 메타데이터(코드를 설명하는 추가적인 데이터)를 표현하기 위한 방법 중에 하나이다. 이런 메타데이터를 통해 프로그램은 추가적인 정보를 알 수 있고 그에 따라 여러가지 기능을 지원할 수 있다. 대표적으로 여러 프레임워크에서는 메타데이터와 리플렉션을 통해 런타임에 다양한 기능을 지원해주고는 한다. 우리는 몇 가지 어노테이션으로 의존성 주입, 트랜젝션 관리, 테스트 코드 등을 깔끔하게 구현할 수 있다. 단순히 ..
CertBot 인증서가 만료가 되었다
CertBot 인증서가 만료가 되었다
2024.01.21문제의 상황 모도코라는 사이트의 API Server를 운영하고 있고 CertBot으로 무료 인증서를 Let's Encrypt로부터 받아와서 사용하고 있다. 무료 인증서는 갱신 기간이 90일밖에 되지 않기 때문에 CertBot으로 자동으로 renew되도록 cronjob을 등록해놓았다. 실제로 거의 1년 동안 신경 안 쓰고 잘 사용해왔다. 그런데 인증서가 만료되면서 사이트 로그인이 되지 않는다고 갑자기 문의가 들어왔다. 일단 API 서버가 사용중인 인증서를 보니 이전에 만료된 Let's Encrypt 인증서를 사용하고 있었다. 운영 환경 API Server를 관리하기 위해 PM2라는 Process Manager를 사용하고 있다. GitHub에 Code를 업데이트하면 GitHub Action으로 자동으로 AW..
[서평] 프로덕트: 유저를 사로잡는 서비스 기획의 모든 것
[서평] 프로덕트: 유저를 사로잡는 서비스 기획의 모든 것
2023.12.25한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 유저로부터 도출해내는 방향성; IT 프로젝트 기획의 A to z; 사용자를 중심에 둔 서비스의 기획의 시작과 끝을 알 수 있는 책이다. 우리 소프트웨어학부(컴퓨터공학과)는 팀플이 정말 많다. 한 학기에 많게는 3개의 프로젝트를 기획해야 되는데 대부분 사용자에서부터 시작하지 못한다. 밖에서 여러 프로젝트를 하고 피드백을 받으면서 실제 프로덕트는 어떤 것이 중요한지 알 수 있었다. 이 책을 통해서 프로덕트의 본질이 무엇인지 내가 프로덕트를 기획할 때 어떤 문제를 해결해야 하기 위해 노력해야 하는지 체계적으로 생각해볼 수 있었다. 기술적인 측면에서 문제를 해결하려다 보면 많이 산으로 가고는 한다. 사용자에게 초점이 맞추지 않으면 필요하지도 않는 기능을..
[서평] 데이터 드리븐 리포트
[서평] 데이터 드리븐 리포트
2023.11.26한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 단순히 이 기술 좋아요! 핫!해요 보다 데이터를 이용해서 설득하는 법에 관해 배울 수 있었다. 프로그래밍을 하면서 여러 데이터를 읽고 다루고 통계치를 낼 수는 있어도 어떤 의도를 가지고 설득하는 것은 전혀 다른 영역이었다. 저자는 파이썬 코드와 ChatGPT를 적극적으로 활용해서 여러 종류의 데이터를 내가 원하는 의도에 맞춰서 분석하고 시각화해낸다. 정형/비정형 데이터로 ChatGPT를 사용해 실습을 해보며 이 정도 분석은 나도 할 수 있을 것 같은데..? 라는 자신감을 가질 수 있었다. 4장의 데이터 드리븐 커뮤니케이션 부분에서 많은 팁을 얻었다. 나보다 내 보고 주제를 아는 사람이 없으므로 중요 수치 및 지표 암기하기, 처음 보는 사람에서 질..
Error installing cocoapods 해결 후, CocoaPods 업그레이드하는 법
Error installing cocoapods 해결 후, CocoaPods 업그레이드하는 법
2023.11.17최신 코코아팟(CocoaPods)으로 업그레이드하기 맥을 Sonama(14.1.1)로 업그레이드를 하고 XCode17에 대응하기 위해 코코아팟을 업그레이드하려 했습니다. 그런데 sudo gem install cocoapods을 했더니 다음과 같은 오류가 발생했습니다. Fetching cocoapods-downloader-2.0.gem Fetching cocoapods-core-1.14.2.gem Fetching cocoapods-1.14.2.gem ERROR: Error installing cocoapods: There are no versions of cocoapods-downloader (>= 2.0) compatible with your Ruby & RubyGems 원인 루비(Ruby) & 패키지 ..
wehavit 프로젝트의 두 번째 스프린트 회고 후 느낀 점
wehavit 프로젝트의 두 번째 스프린트 회고 후 느낀 점
2023.11.06프로젝트의 시작 비교보다는 칭찬을 할 수 있는 습관 앱을 만들기 시작한 지 벌써 2개월이 지나간다. 실질적으로 개발을 시작한 지 1개월이 지났고 어제 2번째 스프린트가 끝났다. 2차 스프린트의 끝 이번 2번째 스프린트는 한 명을 빼고는 거의 대부분의 태스크를 마무리하지 못했다. Sprint 2 • cau-bootcamp Sprint 2 github.com 회고를 하며 나왔던 원인으로는 학교에서 쏟아져 나오는 과제와 팀플로 꼽았다. 1차 스프린트의 교훈을 삼아, 서로 현실적인 시간을 정하고 그것을 기반으로 계획을 했지만 변수가 너무 많았다. 프로젝트가 성공하려면 시간 투자가 필요하다. 하루에 4시간은 공부하는 데에 써야 하지 않을까 싶다. 지금 시점에서 앱 개발이 성공적으로 개발되려면 모두 새로 배운기 시..
커피를 프로그래밍하듯이 접근해보기
커피를 프로그래밍하듯이 접근해보기
2023.10.31요즘 커피에 빠졌습니다. 그동안 커피를 내려 마시며 생각한 것을 글로 남겨봅니다. 피코프레소로 아아를 위한 에스프레소 추출 V60를 이용한 브류잉 (약배전 원두의 2pour 추출) 정답이 없는 커피 추출 커피 추출은 정답이 없기 때문에 코딩과 비슷했습니다. 특히, 사람의 손을 많이 타는 브류잉이 그렇습니다. 같은 커피도 누가 내리냐에 따라 맛이 확연히 달라집니다. 물론 요즘은 추출을 도와주는 다양한 도구가 있기 때문에 레시피가 있기 때문에 간단한 훈련만 받으면 누구나 맛있는 커피를 내릴 수 있습니다. 저도 레시피 기반으로 추출하기 때문에 빠르게 익하며 맛있는 커피에 입문할 수 있었습니다. ㅎㅎ (반대로 향이나 감각 기반으로 맛있게 추출하는 핸드드립 방법도 있습니다) 커피 추출 미세조정하기! 이 글에서는 ..