프로그래밍 10

[Gitistory] github에서 로컬 서버로 요청 연동하기 (feat. Github Webhook)

오늘은 블로그에 포스팅하도록 Google Chrome driver 코드를 짰기 때문에 이제 Gitistory 프로젝트의 두번째 목적인 github의 레포지토리의 PR이 올라오는 순간 해당 코드를 작동시키도록 Github와 코드를 연동하는 것을 진행했다. 원래는 EC2 인스턴스를 통해서 24시간 코드를 돌리려 했는데, 인스턴스의 메모리가 너무 작아서flask의 가상 환경이 memory를 가득 잡아먹는 탓인지 CPU가 메모리 가상화하는데 점유를 다해서 문제가 발생했다. 이 문제는 docker로 구워서 가동시키면 해결 될 수도 있을 것 같은데 flask를 docker로 구워서 실행시키는 것보다 일단 로컬에서 코드를 다 짜고 해당 방법으로 조금 개선하도록 프로젝트를 진행하려 한다..  웹 상의 github we..

프로그래밍 2024.08.02

[Backend-RoadMap] HTTP에 대한 모든 것 - (2)

지난 포스팅에서는 HTTP의 기초 개념과 초기 버전에 대해서 학습한 뒤 정리해보았다.  이번 포스팅은 HTTP/1.0 버전보다 개선되어 출시된 1.1버전과 2.0 버전 및 HTTP에 대한 새로운 시도에 대해 알아보며 새롭게 확장된 HTTP의 변화를 통해 호스트들에게 어떤 것이 가능해졌는지 공부해 보도록 할 것이다.  HTTP/1.11.0이 출시된지 3년만인 199년에 1.1이 출시되었고, 1.0 버전에 비해 많은 개선이 이루어졌다. 주요 개선 사항을 알아보자.   1. PUT, PATCH, OPTIONS, DELETE가 HTTP 메서드에 새롭게 추가된다.   2. 필수가 아니었던 호스트 식별 헤더가 필수로 변경된다.   3. 한 요청당 하나의 연결이 필요했던 문제를 해결하기 위해 지속적 연결(Persis..

프로그래밍 2024.08.01

[Backend-RoadMap] HTTP에 대한 모든 것 - (1)

Backend 개발자의 커리어를 체계적으로 쌓아가기 위해 백엔드라면 당연히 알아야 할 지식에 대해 차곡차곡 학습하려 한다. 오늘은 HTTP에 대해 학습한 것에 대한 포스팅을 작성하겠다. HTTP란?HTTP는 클라이언트와 서버가 서로 통신하는 방식을 표준화하는 TCP/IP 기반 어플리케이션 계층 통신 프로토콜이다. HTTP는 콘텐츠가 인터넷을 통해 요청되고 전송되는 방식을 정의한다.  이때, 어플리케이션 계층 프로토콜이란? 호스트(클라이언트와 서버. 즉 통신 송/수신 주체)가 통신하는 방식을 표준화하는 단순한 추상화 계층을 의미한다. HTTP 자체는 클라이언트와 서버 간의 요청과 응답을 얻기 위해 TCP/IP에 의존한다. 기본적으로 TCP 포트 80번을 사용되고, HTTPS는 443번 포트를 사용한다.  ..

프로그래밍 2024.07.31

[Gitistory] Chrome driver를 통해 소프트웨어로 블로그 자동 로그인하기

개발공부를 목적을 두고 수행하고 싶어서 사이드 프로젝트를 하나 진행하려한다. 프로젝트 기능은 github의 PR 내용을 블로그에 자동 업로드하여, 코드와 주요 변경사항을 손쉽게 파악할 수 있도록 하는것이다. 이름은 Gitistory 그 과정에서 발생하는 트러블 슈팅 및 개발 과정을 정리하도록 하겠다. Flask 개발 환경 세팅 개발환경은 지난 포스팅을 통해 세팅을 완료했다. 다음은 이제 내 블로그에 소프트웨어 코드로 포스팅을 하는 방법을 찾는 것이었다. 처음엔 당연히 tistory open api를 사용하려고 했다. 하지만 왠지 올해부터 자동 댓글 생성하는 봇이 활동을 안하더라.. 아무튼 그래서 다른 방법을 생각해내야 했다. 크래프톤 정글에서 코치님이 '개발자에게 불가능한 것은 없다. 다만 시간이 얼마나..

프로그래밍 2024.07.29

[Scala] 공부 내용 정리

"class A extends B with C"이 때, C는 스칼라 언어에서 Trait라고 부르며, Java의 인터페이스와 유사하지만 구체적인 메서드 구현을 포함할 수 있다.예시 코드는 다음과 같다trait C { def traitMethod(): Unit = { println("This is a method from trait C") }} class B { def superClassMethod(): Unit = { println("This is a method from class B") }} class A extends B with C { def classAMethod(): Unit = { println("This is a method from class A") }} obje..

프로그래밍 2024.07.12

[SCALA] 스칼라란?

scala 코드를 분석하는 업무를 수행하며 스칼라 코드에 대해 처음 알게 되었다. scala는 java보다 늦게 생겨나, 오래 전부터 인기를 끌어온 java보다 유명하지 않지만 최근 떠오르고 있는 함수형 프로그래밍을 접목하되, 객체 지향 프로그래밍까지 같이 챙겨가면서 Java와의 호환성도 좋아 비교적 최근에 많은 호응을 얻었다고 한다. 이미 자리 잡은 개발자들에게 스칼라가 왜 매력있는 언어였는지, 또 Java와는 어떤 연관성이 있는지 정리해보겠다. Scala의 장점 1. 간결함, 그리고 표현력 스칼라는 함수형 프로그래밍을 지원하여 고전 Java에 비해 더 간결하고 표현력 있는 코드를 작성할 수 있게 해준다. 예를 들면 순회 컬렉션 처리에서의 람다 함수와 고차 함수를 사용하면 복잡한 코드를 더 간결하게 작..

프로그래밍 2024.07.12

[TIL] 객체 지향 프로그래밍(OOP)이란 ? (feat. 객체지향 5원칙 - SOLID)

지금까지 비즈니스 코드를 유지보수한 경험이 없어, 객체 지향 프로그래밍에 대한 필요성을 느끼지 못했다. 집중적으로 파고 들면서 객체 지향 프로그래밍을 학습한 적도 없어서, 대충 뭔지 한마디로 정의할 수는 있겠지만 정확히는 잘 모르겠다. 그래서 궁금해서 집중적으로 공부해보았다. 객체 지향 프로그래밍(OOP)이란? OOP = Object-Oriented Programming 객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그램 내의 데이터를 추상화한 뒤, 상태와 행위를 가지는 객체로 선언 후 사용하는 프로그래밍이다. 과거에는 데이터의 시간 절차 순으로 프로그래밍하는 절차 지향 프로그래밍을 사용했지만, 코드의 양이 많아지면서 코드의 유지 보수를 위해 객체 지향 프로그래밍을 사용하게 되었다. ..

프로그래밍 2024.03.30