분류 전체보기 34

[Tip] Tistory에 Toggle 기능 만들어 사용하기

🍎 Tistory에 "접는글"이 아닌 Toggle을 기능이 존재하지 않아 Html Code를 살짝 수정해 아래 폼을 만들어봤습니다. 🍏 가이드를 따라오시면 아래 Toggle 기능을 글에 적용시킬 수 있습니다. toggle start Inner toggle -1- Inner toogle contents -1- Inner toggle -2- Inner toogle contents -2- 1. Tistory User Admin Page에서 꾸미기 -> 스킨 편집을 누릅니다. 2. 우측 상단 스킨 편집에서 HTML 편집을 누릅니다. 3. 편집 대상인 CSS를 눌러아래 코드를 입력 후 적용합니다. .toggle-indent{ margin-left : 20px; // 해당 부분을 수정하시면 들여쓰기 정도를 변경할 ..

잡다한 글 2023.05.08

[Python] Multi Processing과 [Java] Multi Processing 차이

🍎 Python Crawling Application을 개발하면서 I/O Bound 작업 처리는 Thread를 사용해 처리하는 것이 유리하고 CPU Bound 작업 처리 시엔 자식 프로세스를 여럿 생성해 작업을 처리하는 것이 유리하다고 배웠습니다. 그런데 Java 진영에선 Multi Processing을 어떻게 처리할까요? ❓ 어디서부터 비롯된 궁금증인가요? • Python 진영에선 Multi Processing을 자식 프로세스를 생성해 CPU Bound 작업을 맡아하는 반면 Java 진영에선 여러개의 JVM Instance를 추가적으로 생성해 처리하지 않습니다. 어떤 방식으로 Java 진영에서 Multi Processing을 처리할까요? 🍎 Java는 Thread를 통해서 Multi Processing..

TIL 2023.04.24

노출되면 안되는 데이터는 어떤 방식으로 처리할 수 있을까요?

🍎 주소 값을 기반으로 외부 API와 통신해 좌표를 얻어 올 수 있었습니다. 여기서 고민할 부분이 생겼습니다. 외부 API 요청에 대한 응답 시 계정에 부여된 ClientId, ClientKey를 어떤 방식으로 관리하는지입니다. 🍎 노출을 관리해야 하는 이유는 외부에 ClientId, ClientKey가 노출되면 불특정 사용자가 API를 사용하게 될 것이고 이는 많은 문제를 유발할 수 있기 때문입니다. ❓ 외부에 노출되면 안 되는 데이터는 어떤 방식으로 관리해야 안전할까요? 🍏 찾아본 결과 크게 세 가지 방법이 존재합니다. 1. Hard Coding : 필드에 노출되는 값을 정의하고 사용합니다. 2. 환경 변수에 등록해 사용 : Spring 환경에서 @Value를 통해 값을 주입해 사용합니다. 3. 외부..

TIL 2023.04.16

[Python] Thread 설계 의도를 파악한 성능 개선. 7초에서 3초로

💻 Crawling Application Code에서 I/O Bound 작업 처리 시, threading Module과 concurrent.futures Module를 사용했습니다. - 두 Module의 장단점을 알지 못한 채 사용해 이번 포스팅에서 깊게 다뤄보겠습니다. 🍎threading Module과 concurrent.futures Module을 사용하는 이유는 해당 포스팅에서 확인할 수 있습니다. 🍎 thread.Thread와 concurrent.futures.ThreadPoolExecutor의 특징을 알아봅시다. 🍏thread.Thread의 특징 - Process안에 존재해 작업 처리 시 사용됩니다. Thread를 사용하는 두 가지 이유는 아래와 같습니다. 1️⃣ Target Method를 실행..

TIL 2023.04.11

파이썬 성능을 높이고 싶을 때 알아야 할 것

❓ 파이썬 환경에서 Multi Thread, Multi Processing의 차이점 그리고 성능을 높이고 싶다면? 파이썬에서 멀티 스레드와 멀티 프로세스는 동시에 여러 작업을 수행하는 방식이지만, 그 구현 방식에 차이가 있습니다. • 멀티 스레드는 한 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 방식입니다. 각 스레드는 공유된 메모리에 접근하여 작업을 수행합니다. 이로 인해 스레드 간의 통신이 빠르고 간단하며, 메모리를 공유하기 때문에 메모리 사용량이 적습니다. • 하지만, 공유 메모리에 대한 동시성 제어가 필요하며, 이를 관리하는데 복잡한 코드가 필요할 수 있습니다. 또한, Global Interpreter Lock 제약 조건이 있어 하나의 스레드만 파이썬 인터프리터 내에서 실행될 수 있습니다...

TIL 2023.04.06

Crawling 성능 40배 올리기, 160분에서 4분대로 -병렬 처리-

👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다.✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요)✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선)✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍏 지금까지 Selenium을 사용해 Crawling을 진행하고 Selenium 도구의 단점을 알게 되어 걷..

Dev 2023.04.06

Crawling 성능 40배 올리기, 160분에서 4분대로 -도구 선택의 중요성-

👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다.✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요)✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선)✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍎 우선, Selenium에서 성능을 향상할 수 있는 방법을 찾아봤습니다.🍏 Selenium을 사용해 요구..

Dev 2023.04.05

Crawling 성능 40배 올리기, 160분에서 4분대로 -요구사항 충족-

👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다.✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요)✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선)✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍎 Crawling지정한 임의의 세 개의 쇼핑몰을 모아볼 수 있는 기능을 구현하기 위해선 어떤 방법으로 해결..

Dev 2023.04.04

Hard, Soft Delete and etc..

🍎 프로젝트 관련 수영장 정보 삭제 시 오늘 알게 된 Soft Delete를 사용했습니다. 이유는 잠재적인 미래 사용을 생각했기 때문입니다. 잠재적인 미래 사용으론 운영되고 있지 않은 수영장을 사용자가 고르게 되면 다른 체육 활동 시설, 운영되고 있는 수영 시설을 제공하기 위함입니다. 좌표계산 부분을 어느 계층에 두어야할 지 고민하고 있습니다. 나중에 리팩토링이 필요한 부분이고 일단 infra에 정의해 진행합니다. 🍏 예외는 정말 예외인 곳에서 사용해야 합니다. 이유는 예외를 생성할 때 스택 추적 전체를 캡처하기 때문에 비용이 많이 발생하기 때문입니다. 🍏 Query Parameter vs Path Variable의 차이 위 두 방식은 어디에 어떤 데이터(명사)를 요청하는 것인지 명확하게 정의하기 위해 ..

TIL 2023.04.03

동기화와 병렬 처리 둘의 상관 관계 그리고 Java

🍎 많은 곳에서 등장하는 Keyword인 동기화와 병렬 처리를 이번 기회에 확실하게 하고자 정리합니다. 나아가 사용하고 있는 Java 라는 언어, 특히 JVM 위에서 어떤 방식으로 동기화와 병렬 처리를 수행하는지 알아보고자 해당 글을 작성합니다. ❓동기화란?동시다발적으로 실행되는 프로세스들은 공동의 목적을 올바르게 수행하기 위해 서로 협력하며 영향을 주고 받기도 합니다. 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기 때문에 반드시 “동기화” 되어야 합니다.프로세스 동기화란 프로세스들 사이의 수행 시기를 맞추는 것을 의미합니다. 또한 실행의 흐름을 갖는 모든 것은 동기화의 대상입니다.동기화에는 실행 순서 제어를 위한 동기화가 있고, 상호 배제를 위한 동기화가 존재합니다. ❓병렬..

Dev 2023.04.03