알쓸개잡 3탄 (Scrapy)

Scrapy란? Python으로 작성된 오픈 소스 웹 크롤링 프레임워크 입니다. 이 프레임워크는 웹 스크래핑을 위해 디자인 되어 있으며, Spider를 작성해서 크롤링을 합니다. Scrapy 설치 아래 명령어를 통해서 Scrapy를 설치합니다. 1 pip install scrapy Scrapy 프로젝트 생성 아래 명령어를 통해서 Scrapy 프로젝트를 생성할 수 있습니다. 1 scrapy startproject {project-name} 프로젝트를 생성하고 나면 Scrapy에서 자동으로 프로젝트 디렉토리가 생성이 되며, 기본 구조는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 {project-name}/ ├── scrapy.cfg └── scraper ├── items.py ├── middlewares.py ├── pipelines.py ├── settings.py └── spiders └── __init__.py Spider Spider는 크롤링을 하는 방법, 페이지에서 구조화된 데이터를 추출하는 방법을 정의하는 클래스입니다. ...

2022-04-05 09:14 · 3 분 · 436 단어 · 김우영

알쓸개잡 2탄 (Pair Programming)

알아두면 쓸 데 있는 잡다한 개발지식 알아두면 쓸 데 있는 잡다한 개발지식을 많은 분들에게 공유하고자 2탄으로 돌아 왔습니다. 저희 스터디(var)에서는 다양한 개발 주제를 탐구하고 공유하고 있으며 개발 주제는 개발 언어, 프레임워크에만 치우쳐 있지 않고 애자일, 디자인 패턴, DB, 개발 툴, 새로 나온 프레임워크 등 다양한 분야에 대해 탐구하고 있으니 앞으로 올라오는 알쓸개잡 포스트에도 많은 관심과 저희 스터디에도 많은 관심 가져주세요~~ 저희 스터디는 언제나 새로운 분들을 환영합니다. (잡아먹지 않아요.. 편하게 들어와주세요) ...

2022-03-30 16:14 · 3 분 · 496 단어 · <남나현>

CI/CD 무중단 배포 POS Projcect 적용기 2탄

개발이란건 어쩌면… 완벽하다고 생각했던 코드는 조금만 시간이 지나서 다시 보면 왜이렇게 헛점 투성이 인걸까요? 개발이란건 어쩌면 삽질의 연속이 아닐까요? 이번에 무중단 배포 적용 진행하는 과정 또한 그러한 시행착오의 연속이었습니다. 완벽했다고 생각한 1차 배포기는 아래 링크에서 확인 가능합니다. CI/CD 무중단 배포 POS Projcect 적용기 1탄 바로가기 첫번째 삽질 지난번 적용기의 핵심은 하나의 서버에 도커 컨테이너를 2개 띄워둔 상태에서 사용하지 않는 컨테이너를 최신상태로 recreate 한 후에 배포한다는 개념이었습니다. 1. before deploy 2. green container recreate 3. attach green container ...

2022-03-28 09:28 · 8 분 · 1651 단어 · 박대웅

안드로이드 Overdraw 줄이기 (GPU 렌더링 최적화)

오버드로(Overdraw) 란? 안드로이드에서 오버드로 란 단일 프레임에 동일한 픽셀을 두 번이상 그리는 작업을 의미합니다. 안드로이드에서의 레이아웃은 페인터의 알고리즘 으로 그려지기에 사용자에게 보여지지 않는 부분까지 그려집니다. 이러한 이유로 인해 오버드로가 발생하면 GPU 렌더링 시간을 낭비하여 성능 문제로 이어질 수 있습니다. 어떻게 오버드로를 확인할까? 오버드로 디버그 도구 활성화 기기 설정에서 개발자 옵션을 클릭 합니다. 하드웨어 가속 렌더링 섹션에서 GPU 오버드로 디버그를 선택합니다. GPU 오버드로 디버그 팝업에서 오버드로 영역 표시를 선택합니다. 색 영역에 따른 오버드로 횟수 ...

2022-03-23 11:46 · 2 분 · 339 단어 · 송기수

전지적 관찰자 시점 RxKotlin

관찰자 구독의 시대 Observable 일상생활에서도 정기적으로 구독을 하고 편리한 삶을 살아갑니다. 대표적으로 구독이라는 말은 유튜브에서 매우 친숙한 친구입니다. 일상생활에서도 세탁구독, 수건구독등 상상외의 구독이 존재하죠 일상생활에서의 구독도 비동기처럼 살아 갈 수 있도록 도움을 줍니다. (멀티쓰레드는 아니지만요.) 관찰과 구독 기본적인 동작 구조 1. 관찰자가 해당 코드를 구독하여 관찰합니다. 2. 상태가 바뀔때 관찰자가 알려줍니다. 3. 관찰자가 알려준 응답으로 처리를 합니다. Reactive Programming Reactive Programming is programming with asynchronous data streams. Reactive 프로그래밍은 비동기적 데이터 흐름을 처리하는 프로그래밍입니다. ...

2022-03-22 11:04 · 3 분 · 446 단어 · 이상익

알쓸개잡 (Python Scrapping Library, 싱글톤 디자인 패턴, PHP Trait)

알아두면 쓸 데 있는 잡다한 개발지식 개발자라면, 아는 만큼 보인다는 말에 다들 공감하실 겁니다. 평소에 그냥 썼던 코드 한 줄도 나중에 ‘이게 이런 의미였구나~’ 하고 깨닫게 되는 경험을 다들 해보셨을 겁니다. 또 그만큼, 우리 주변에는 아직 알지 못하는, 또는 잘못 알고 있는 개발 지식들이 넘쳐납니다. 이를 조금이라도 더 많이 알고 있다면, 우리는 문제 상황에 직면했을 때 더욱 효율적으로 그 문제를 해결할 수 있을 겁니다. 더불어 개발자들 간의 커뮤니케이션도 더욱 원활해지고 이는 제품의 퀄리티 향상과도 직결될 것입니다. ...

2022-03-03 13:51 · 3 분 · 593 단어 · <정해찬>

Clean-Code-Python

원작자에게 허락을 맡고 개인적으로 번역한 글입니다. 출처 clean-code-python 목차 소개 변수 함수 객체와 자료구조 클래스 S: Single Responsibility Principle (SRP) O: Open/Closed Principle (OCP) L: Liskov Substitution Principle (LSP) I: Interface Segregation Principle (ISP) D: Dependency Inversion Principle (DIP) Don’t repeat yourself (DRY) 소개 소프트웨어 엔지니어링의 원칙인 로버트 마틴의 클린코드를 파이썬에 적용한 내용입니다. 파이썬에서 읽을 수 있고 재사용 가능하며 리팩터블할 수 있는 소프트웨어를 만드는 안내서입니다. 여기에 있는 모든 원칙이 엄격하게 지켜질 필요는 없으며, 더 적은 수의 원칙을 보편적으로 사용할 수 있습니다. 여기에 소개된 내용은 가이드라인일 뿐 그 이상은 아니지만, 클린 코드 저자들에 의해 수년간의 집단 경험을 통해 문서화 된것입니다. ...

2022-03-02 15:05 · 14 분 · 2860 단어 · 신승혁

DDD + Hexagonal Architecture(WITH 글로벌 프로젝트)

Intro 이번에 글로벌 프로젝트를 하면서 안정적이고 튼튼하면서도 유연한 애플리케이션을 만들고 싶어 설계에 대해 공부를 많이 하게되었습니다. 그 중에 제가 알게된 ** 육각형 설계(Hexagonal Architecture) **에 대해 설명하는 글을 작성하도록 하겠습니다. 이 글의 가장 중요한 내용은 “육각형 아키텍처가 Silver-bullet 패턴이다"라는 것을 말하기 위함이 아닙니다. [출처: 헥사고날(Hexagonal) 아키텍처 in 메쉬코리아] 그림을 통해 간단히 살펴보면 고수준의 비지니스 로직을 표현하는 내부 영역과 인터페이스 처리를 담당하는 저수준의 외부 영역으로 나눠집니다. 내부 영역 은 순수한 비지니스로직을 표현하는 기술 독립적인 영역입니다.그리고 외부영역과 연계되는 포트를 가지고 있습니다. ...

2022-02-11 09:18 · 10 분 · 1929 단어 · 신승혁

안드로이드 RFID 프로젝트 적용기

셀메이트 안드로이드?? 셀메이트에서 안드로이드가 있다는걸 아시지만, 코드나 기술스택에 대해 잘 모르시는 분들이 많을거 같습니다. 우리 셀메이트 안드로이드는요. Kotlin으로된 네이티브 앱입니다! 디자인 패턴은 MVP패턴으로 작성이되어있습니다. 대부분의 구성된 패턴이나 라이브러리들은 OkHttp3 기반 Retrofit RestfulAPI를 사용을 하고, Dagger2를 사용하여 의존성 주입을, RxKotlin을 사용하여 함수형으로 작성되어 있습니다 Kotlin(언어) + MVP(Architecture) + Retrofit Restful(API) + RxKotlin(함수형) + Dagger2(의존성 관리) RFID…? RFID는 대학교 졸업작품으로도 썻던 부품이라 매우 친근하게 사용할 수 있었지만 그때 당시엔,, 하드웨어가 주라서 C로 작성을 했었습니다.. ...

2022-01-21 17:05 · 2 분 · 284 단어 · 이상익

CI/CD 무중단 배포 POS Projcect 적용기

Inspiration 신승혁님께서 무중단 배포 관련하여 리서치한 내용에서 영감을 받아 실제 포스 웹 프로젝트에 적용해본 작업을 정리해보았습니다. 승혁님 감사합니다. 역시 내 멘티 승혁님의 원글은 아래 링크에서 확인가능합니다. CI/CD 무중단 배포 (with jenkins,docker,nginx) 오타 / 의견 환영합니다! 댓글이나 DM으로 알려주세요! docker-compose 로 blue/green 구성하기 현재의 POS 프로젝트 서버는 Nginx + Php-fpm 도커 컨테이너 구성으로 되어 있습니다. Blue/Green 배포 전략을 위해서는 Blue/Green 역할의 Php-fpm 컨테이너가 필요했습니다. /docker/docker-compose.production.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 services: pos-php: image: gitlab.corp.sellmate.co.kr:5005/sellmate-pos/web-v2/web container_name: pos-php build: context: . dockerfile: docker/php.Dockerfile env_file: - .env working_dir: /var/www # volumes: 생략 pos-nginx: container_name: pos-nginx image: gitlab.corp.sellmate.co.kr:5005/sellmate-pos/web-v2/nginx # volumes: 생략 # ports: 생략 volumes: #생략 기존의 production 구성입니다. 실제로는 docker-compose.yml + docker-compose.production.yml의 조합으로 이루어지지만 설명을 위해 필요한 부분만 남겼습니다. 이 구성은 아래와 같이 변경되었습니다. ...

2022-01-20 09:10 · 8 분 · 1503 단어 · 박대웅