기타 개발관련25 [Python] URL 이어붙이는 최적의 방법 개요 각 프로그래밍 언어에서 다른 리소스의 데이터를 불러올 때, URL을 사용하게 되는데 이때 변수가 여러개 들어가고, 매번 달라져야 한다면, URL string을 매번 고치는 것이 아니라 이쁘게 만들어서 보기 좋게 만드는 것이 수정하기에도 좋을 것이다. 그리고 나중에 다른 개발자가 수정하게 되더라도, 잘 짜여진 코드를 보고 쉽게 수정할 수 있다. 코드 from urllib.parse import urlencode # Your base URL base_url = "http://example.com" # Parameters to append params = { "param1": "value1", "param2": "value2" } # Encode parameters encoded_params = urle.. 2024. 3. 29. Chat GPT로 리팩토링 하고 느낀 점(1) Chat GPT에게 코드를 주면, 언어모델이라 그런지 부자연스러운 변수명, 함수명을 더 자연스럽게 만들어준다. 예를 들어 Angle을 평균내는 메소드이면 변경 전) AngleAverage 변경 후) CalculateAngleAverage 이렇게 더 명확하게 이름을 바꾸어준다. 또한 180 / Math.PI 이 계산식이 무엇을 의미하는지 알고 있어서 아무 설명없이 코드에 있더라도 따로 상수로 빼준다. 변경 전) // 180 / Math.PI = 각도를 라디안으로 변환 var sintotal = values.Sum(d => Math.Sin(d / (180 / Math.PI))); var costotal = values.Sum(d => Math.Cos(d / (180 / Math.PI))); var avg =.. 2023. 10. 16. 각 언어별 Path 및 String 처리 방법 배경 각 프로그래밍 언어마다 경로 설정 방법과 문자열 (string) 처리 방법은 다소 다릅니다. 아래에 널리 사용되는 몇 가지 프로그래밍 언어에 대해 간단히 설명하겠습니다. 설명 Python: 경로 설정 방법: os 모듈을 사용하여 경로를 조작할 수 있습니다. 예시: import os 절대 경로: os.path.abspath('file.txt') 상대 경로: os.path.join('folder', 'file.txt') 문자열 처리 방법: Python의 문자열은 변경할 수 없기 때문에 다양한 내장 메서드를 사용하여 문자열을 조작할 수 있습니다. 예시: string_variable.upper(), string_variable.lower(), string_variable.replace(), string_v.. 2023. 7. 24. [BBOX] BBOX란 무엇일까? BBOX란? 바운딩 박스(Bounding BOX, bbox)는 지리적인 영역을 사각형으로 둘러싸는 데 사용되는 개념입니다. 이 영역은 위도와 경도로 정의되며, 최소 경도, 최소 위도, 최대 경도, 최대 위도 값을 가지고 있습니다. 바운딩 박스는 해당 영역의 경계를 나타내는데, 일반적으로 좌하단과 우상단의 두 점을 이용하여 사각형을 형성합니다. 위도와 경도란? 위도와 경도는 지구의 위도와 경도 그리드를 기반으로 지리적인 위치를 나타내는 좌표 시스템입니다. 위도는 적도를 기준으로 한 북쪽 또는 남쪽 방향의 각도이며, 경도는 본초자오선(0도 경도)을 기준으로 한 동쪽 또는 서쪽 방향의 각도입니다. 바운딩 박스는 주어진 지역의 경계를 정의하는 데 사용됩니다. 이를 통해 특정 지역의 위치와 영역을 빠르게 파악할.. 2023. 7. 24. Ubuntu, MySQL - 'Failed with result 'oom-kill' 에러 해결 방법 Ubuntu, MySQL - 'Failed with result 'oom-kill' 에러 해결 방법 이 블로그 글에서는 Ubuntu 서버에서 MySQL을 사용하다가 발생하는 'Failed with result 'oom-kill' 에러에 대해 알아보겠습니다. 이 에러는 Out-Of-Memory(메모리 부족) 문제로 인해 MySQL 서비스가 강제로 종료되는 상황을 의미합니다. 이 문제를 해결하기 위해 몇 가지 유용한 방법과 조치를 안내드리겠습니다. 1. OOM(Out-Of-Memory) 상황 이해하기: OOM-kill은 운영 체제에서 발생하는 메모리 부족으로 인해 Linux 커널이 프로세스 중 하나를 강제로 종료시키는 것을 말합니다. 이는 메모리 사용량이 너무 많아서 시스템이 충돌하지 않도록 하는 보호 메커.. 2023. 7. 21. [라즈베리파이] 웹서버 만들기 (1) 이번 프로젝트에서는 이전에 만든 파이썬 로직을 사용해야해서 파이썬 웹서버를 만드려고 했다. 다시 오랜만에 만지는 웹서버 세팅에 며칠을 소비했다. 하지만... 중꺽마 정말 며칠간 조금씩 시간을 내서 했다. 그 과정을 기록한다. 간단하게 해결된 부분은 간단하게 적고, 애먹은 포트포워딩 부분을 잘 기록하고 싶다. 1. 라즈베리파이 리셋 라즈베리파이를 이전에 사용하고 있었지만, 더 이상 사용하지 않아서 리셋을 했다. 구글링 해보면 잘 나오고, 아래 사이트에서 다운로드 받아서 진행할 수 있다. https://www.raspberrypi.com/software/ Raspberry Pi OS – Raspberry Pi From industries large and small, to the kitchen table t.. 2023. 3. 4. [Docker] Docker 실행 후 바로 종료될 때 비밀번호가 너무 간단해서 Validation을 충족하지 못해서 발생하는 오류일 수 있다. https://1password.com/ko/password-generator/ 강력하고, 안전한 무작위 비밀번호를 생성하세요 | Password Generator | 1Password ✓안전 ✓무작위 ✓강력 - 무작위 비밀번호 생성기로 강력한 비밀번호를 생성하세요. 1password.com 비밀번호를 어렵게 만들어서 해결하자. 2022. 11. 11. [Git] 기본적인 Git flow 흐름도 개요도 배경 토이 프로젝트를 하기 위해 팀원에게 Git 흐름을 설명하며 그려주었던 그림이다. 다행히 이해해주셔서 다른 분들도 보고 도움이 되었으면 한다. 이 외에 branch의 개념도 기본적으로 들어갔어야 하지만, 조금이라도 내용이 많아지면 거부감이 들 수 있다고 생각하여 줄였다. 설명 가장 기본적으로 나(Me)에게서 원격(origin)으로 Push를 한다. 남이 Push 한 내용을 Pull 받는다. 그 과정에서 실수를 줄이기 위해 Push 하기 직전의 몇 단계가 더 있고, 반대로 그렇게 철저하게 여러 단계를 거쳤다고 믿어지는 결과물을 받는 과정은 Pull 한단계로 끝난다. 결론 이렇게 사용을 하다보면, 이런 기능이 더 있으면 좋겠는데... 하는 생각이 든다. 그럴 때 찾아보면 역시나 그 기능이 있다. .. 2022. 10. 22. [RaspberryPi] Maria DB 설정 1. sudo apt-get install mariadb-server 2. sudo mysql -r root -p - 비밀번호는 아직 없으므로 passwor에 엔터 쳐서 진입 3. root 비밀번호 바꾸기 - SET PASSWORD FOR 'root'@'localhost' = PASSWORD('9999'); 4. FLUSH PRIVILEGES; 5. sql 서버 끄기 - mysqladmin -u root -p shutdown 6. sql 서버 다시 켜기 - sudo systemctl start mariadb - (mysql이라면) sudo systemctl start mysql 7. 바뀐 비밀번호로 로그인 해보기 - sudo mysql -u root -p 2022. 9. 20. 이전 1 2 3 다음