반응형

전체 글 186

비행기표 조회 자동화

# 배경제주도민이라 명절때마다 비행기표 예약 전쟁을 겪어야한다.중간중간 비행기표가 있는지 매번 직접 들어가야 하는 번거로움이 있었다. 비행기표 조회 및 알림을 자동화해두면 명절 혹은 여행 성수기마다 두고두고 쓸 수 있을 것 같아서 파이썬 기반으로 스크립트를 작성해 보았다. # 사용 기술 및 라이브러리Python 3.10SeleniumSlack webhook # 코드아래는 스크립트 일부분이다.def main(): while True: url = os.getenv('FLIGHT_SCHEDULE_URL') webhook_url = os.getenv('SLACK_WEBHOOK_URL') try: schedules = get_flight_schedul..

개발 2024.08.09

RDB에서 인덱스를 사용하지 않는 케이스들

# 테이블 스캔테이블 전체 레코드를 반환하는 쿼리는 당연하게도 인덱스를 사용하지 않는다.SELECT * FROM articles # 복합 인덱스deleted_at, user_id 순으로 복합인덱스가 생성되었다.CREATE INDEX index_articles_on_deleted_at_and_user_id ON public.articles USING btree (deleted_at, user_id)생성한 인덱스 순서에 맞게 쿼리를 작성하여야 한다.# 인덱스와 동일한 순서SELECT * FROM articles WHERE deleted_at IS NULL and user_id IN (1,100,2)# 인덱스와 다른 순서SELECT * FROM articles WHERE user_id IN (1,100,2) ..

개발 2024.05.31

스프링과 싱글턴

# 싱글턴이 무엇인가?클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴손쉽게 객체의 유일성을 보장할 수 있다.public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; }}// Lazy한 방식으로도 구현이 가능하다.public class LazySingleton { private static LazySingleton instance; private LazySingleton() {} public static LazySingleton getInstance..

개발 2024.05.26

스프링과 SOLID 원칙

SOLID 란?컴퓨터 프로그래밍에서 SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 의미한다.SRP (Single Responsibility Principle) - 단일 책임 원칙OCP (Open/Closed Principle) - 개방/폐쇄 원칙LSP (Liskov Substitution Principle) - 리스코프 치환 원칙ISP (Interface Segregation Principle) - 인터페이스 분리 원칙DIP (Dependency Inversion Principle) - 의존성 역전 원칙이 다섯가지 원칙이 스프링에 어떻게 적용되는지 정리해본다.  1. 단일 책임 원칙 (SRP)정의클래스는 하나의 책임만 가져야 한다.스프링 적용..

개발 2024.05.21

Kotlin 간단 정리

Kotlin 이란? JetBrains에서 공개한 JVM 기반의 오픈 소스 프로그래밍 언어이다. 멀티 플랫폼을 지원하며, 정적 타입 언어이기도 하다. Java와 유사하지만 더 간결한 문법, 기능이 제공되며, Java와 상호 운용이 100% 지원된다. 아래 코드는 문법 비교를 위한 간단한 예시이다. //Java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } //Kotlin fun main() { println("Hello, World!") } Kotlin 컨셉 표현력, 간결성 간결하고 가독성이 높은 코드 작성을 장려한다 안정성 널 포인터 예외와 같은 일반적인 버그..

개발 2024.04.16

요즘 우아한 개발

'배달의 민족' 서비스를 운영하고 있는 우아한형제들에서 발간한 책이다. 우아한형제들에서는 DR이라고 하는 데브렐 활동을 활발하게 하고 있다고 한다. 여기서 DR은 개발자들을 대상으로 하는 일련의 활동들을 의미하는데, 내외부 개발자들을 대상으로 기술 교류나 활발한 소통이 이루어질 수 있게끔 기회를 제공해 준다고 한다. 이 책이 발간되기 까지의 핵심 역할을 했던 DR을 소개한 뒤에, 기술 블로그(https://techblog.woowahan.com/) 들에 탑재되었던 아티클들을 기반으로 책은 이어져 나간다. 우연히 이 책을 찾아 읽게 되었는데, 앞에 머리말 부분과 흥미가 가는 몇몇 챕터 및 아티클들만 뽑아서 읽었다. 개발 관련 내용도 재밌었지만 머리말 부분에서 우아한형제들이라는 회사에서 '개발'이라는 것에 ..

독서 2024.04.04

개발자가 된 이유

이직 준비를 하면서 문득 든 생각. '내가 개발자라는 직업을 갖게 된 이유, 이 일을 계속하려는 이유가 뭘까?' 개발자라는 직업을 갖게 된 이유 컴퓨터 공학 전공을 하였다. 관련 전공을 하긴 했지만 4년 가까이 공부를 하면서, 개발자가 되어야지 했던 순간은 없었던 것 같다. 졸업을 앞두고 우연한 계기로 일주일자리 웹 개발 관련 부트캠프를 참가하게 되었다. 웹 서비스를 직접 구현해 보는 경험, 현업자, 개발자를 꿈꾸는 사람 등 다양한 사람들과 이야기를 나눠볼 수 있었던 시간을 가졌고, 일주일이라는 짧은 시간이었지만 임팩트 있었던 순간들을 보내게 되었다. 일상 속 매일 같이 사용하고 접하는 것을 직접 만들어 볼 수 있다는 점, 이를 통해 일상 속 불편함을 개선하고 편리함을 제공할 수 있다는 점이 매력적이었다..

생각 2024.04.02

당신의 뇌는 최적화를 원한다

책 제목을 보고 호기심이 생겨 읽게 된 책. 뇌과학 관점에서 자기계발 관련 이야기를 쉽게 풀어주는 책이다. 이 책에서는 아래 7가지의 뇌 호르몬이 등장한다. 책에서 설명해주고 있는 내용을 간략하게만 정리해보았다. 도파민 의욕과 열정의 행복물질 도파민이 분비되면 사람이 행복해진다. 목표를 세울 때, 달성했을 때 분비되게 된다. 노르아드레날린 집중력과 기억력을 끌어올려야할 때 나오는 집중물질 '투쟁 또는 도피' 상황에서 분비 노르아드레날린에 의한 동기부여는 단기적으로 최대 효과를 낼 수 있다. 도파민과 노르아드레날린을 조화롭게 활용하는 것이 좋다. 아드레날린 신체 능력과 몰입에너지가 필요할 때 나오는 승부물질 신체 기능을 순간적으로 증진시킨다. 심장이 두근대는 것은 성공할 징조 낮에는 열심히 일하고, 밤에는..

독서 2024.03.31

웹서버 ? 웹 어플리케이션 서버 (WAS)?

정적 페이지→ 데이터베이스에서 정보를 가져오거나 별도의 서버에서의 처리가 없어도, 사용자들에게 보여줄 수 있는 페이지. 어떠한 사용자가 오던간에 동일한 페이지를 보여준다동적 페이지→ 서버에서 데이터베이스에서 정보를 가져와서 처리하는 것 처럼, 어떠한 요청에 의하여 서버가 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지, 사용자들마다 다른 페이지가 보여질 수 있다.웹 서버와 웹 어플리케이션 서버의 가장 큰 차이점웹서버는 정적 데이터를 처리, 웹 어플리케이션 서버는 동적 데이터를 처리한다.웹 서버HTTP 통신규약을 처리하는 서버클라이언트가 요청한 정적인 컨텐츠를 HTTP 프로토콜을 통하여 제공해주는 서버정적 페이지를 보내주며, 정적 컨텐츠 제공이 가장 큰 역할컨테이너동적인 데이터들을 처리하여, 정적..

아카이브 2020.12.27

HTTP 정리

HTTP (Hyper Text Trasfer Protocol)👉🏻 W3 상에서 정보를 주고받을 수 있는 프로토콜이며, 웹에서 이루어지는 모든 데이터 교환의 기초기반 프로토콜현재 주로 사용하는 HTTP/1.1은 TCP를 기반으로 동작한다HTTP/2 또한 TCP를 기반으로 동작하며, HTTP/3은 UDP를 기반하고 있다특징클라이언트 / 서버의 구조단순하며, 확장이 용이하다무상태(Stateless) - 서버는 클라이언트의 상태를 저장하고 있지 않는다비연결성 - 기본적으로는 서버 / 클라이언트간의 연결을 유지하지 않는다비연결성의 한계매번 TCP/IP 연결을 맺어야 함HTML 뿐만이 아닌 JS, CSS, 이미지 등 수많은 자원들에 대한 연결이 각각 맺어짐극복현재는 HTTP 지속 연결(Persistent Con..

아카이브 2020.12.27
반응형