Programming/Backend28 [맥] 자동실행 cron을 대체하는 launchd 맥북에서 cron을 사용하는 것도 가능하지만, macOS에서는 기본적으로 cron보다 launchd (Launch Agents) 사용이 더 안정적이고 권장됩니다. cron이 동작하지 않는 이유는 macOS에서 cron이 완전히 활성화되어 있지 않거나, 환경변수 설정이 달라서 종종 작동하지 않을 수 있기 때문이에요.기존 등록 크론탭 (원하는 기능)# 월-금, 10시, 17시에 동작0 10,17 * * 1-5 cd /Volumes/Works/Monitoring && PYTHONPATH=/Volumes/Works/Monitoring /Volumes/Works/Monitoring/venv/bin/python -m apps.console.wiki.check_deploy_status >> /var/log/deplo.. 2025. 4. 2. [설정] Laravel, FastAPI 에서 Gmail SMTP 설정 가이드 PHP(Laravel 등)나 Python(FastAPI 등) 애플리케이션에서 Gmail SMTP 서버를 이용해 이메일을 보내는 방법을 정리했습니다. 특히 Gmail 계정에 2단계 인증(2-Step Verification)을 적용하지 않는 대신 앱 비밀번호(App Password)를 생성하여 SMTP 인증에 사용하는 절차를 중점적으로 다룹니다. 각 단계별 설정값과 코드 예시, 발생 가능한 보안 이슈 및 2025년 기준 Gmail 정책 정보까지 포함하였으니 순서대로 따라해보세요.1. Gmail SMTP 서버 설정값Gmail을 SMTP 발송 서버로 사용할 때 필요한 기본 설정값은 다음과 같습니다 (How To Set Up Your Gmail SMTP Settings (2025 Guide)) (How To Se.. 2025. 3. 25. [외부 연동] 엑셀(Excel) 파일을 ChatGPT API로 분석하는 방법(php framework) PHP에서 ChatGPT API를 연동하여 사용하는 방법을 단계별로 정리해서 안내드리겠습니다.1단계: 준비사항OpenAI API Key 발급👉 OpenAI API 키 발급받기PHP에서 cURL 확장이 활성화되어 있어야 합니다.보통 기본적으로 활성화되어 있습니다.2단계: 간단한 PHP 코드 작성아래 예시 코드는 ChatGPT API와 간단히 연동하는 방법을 보여줍니다.예시 파일: chatgpt.php 'gpt-3.5-turbo', 'messages' => [ ['role' => 'system', 'content' => '당신은 데이터를 분석하고 요약하는 전문가입니다.'], ['role' => 'user', 'content' => $prompt] ], 'temper.. 2025. 3. 10. [외부 연동] 엑셀(Excel) 파일을 ChatGPT API로 분석하는 방법(python) 1단계: 준비사항 및 환경설정다음 패키지를 Python 환경에 설치합니다.pip install pandas openpyxl openaipandas: 엑셀 파일 데이터 처리openpyxl: 엑셀 파일 읽기 지원openai: ChatGPT API 호출을 위한 라이브러리OpenAI의 API 키를 준비합니다.API Key 발급받기2단계: 엑셀 파일 읽기 (pandas 활용)아래 코드로 엑셀파일을 DataFrame 형태로 읽습니다.import pandas as pd# 엑셀 파일 로드 (파일명 및 경로는 본인의 파일명으로)df = pd.read_excel("첨부파일.xlsx", sheet_name="Sheet1")# 데이터 확인print(df.head())"첨부파일.xlsx" 및 "Sheet1"은 본인의 실제 파일.. 2025. 3. 10. [트러블 리포트::python] pip install psutil 오류 (rocky linux) 오류 내용$ pip install psutilCollecting psutil Using cached https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gzInstalling collected packages: psutil Running setup.py install for psutil ... error Complete output from command /[project folder]/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-enn.. 2025. 3. 8. [python] GUI 앱 오류시 로그 남기기 - logger.py import osimport tracebackfrom datetime import datetimeclass Logger: """ 로그를 기록하는 유틸리티 클래스 사용방법: 1. 일반 로그 기록 Logger.log("로그 메시지") 예) Logger.log("사용자가 로그인했습니다") 2. 예외 발생 시 로그 기록 try: # 코드... except Exception as e: Logger.log("에러 메시지", error=e) 예) Logger.log("데이터 처리 중 오류 발생", error=e) 로그 파일 위치: ./logs/application_YYY.. 2025. 1. 26. [블록체인 #팁] docker 에서 solana-cli 설치 Docker 환경에서 Solana CLI를 설치하고 사용하는 것은 가능합니다. 이를 통해 시스템에 직접 설치하지 않고도 Solana CLI를 활용할 수 있습니다. 이미 Docker 이미지를 제공하는 리포지토리가 존재하며, 이를 활용하여 손쉽게 설정할 수 있습니다. 설치 및 실행 방법:Docker 설치:시스템에 Docker가 설치되어 있지 않다면, Docker 공식 사이트를 참고하여 설치하세요.Solana CLI Docker 이미지 실행:다음 명령어를 사용하여 Docker Hub에 공개된 Solana CLI 이미지를 실행할 수 있습니다:docker run -it --rm andreaskasper/solana:cli이 명령어는 일회성으로 컨테이너를 실행하며, 종료 시 자동으로 삭제됩니다.지갑 생성 및 관리:.. 2025. 1. 20. [블록체인 #준비] Solana 플랫폼 테스트 계정 만들기 솔라나(Solana) 플랫폼에서 에어드롭 테스트를 수행하려면, 먼저 테스트 계정을 생성하고 테스트 토큰을 확보해야 합니다. 아래 단계별 가이드를 통해 진행해 보세요. 1. 솔라나 CLI 도구 설치솔라나 명령줄 인터페이스(CLI)를 설치하여 네트워크와 상호작용할 수 있습니다. 터미널에서 다음 명령어를 실행하여 설치하세요:mac or linuxsh -c "$(curl -sSfL https://release.solana.com/stable/install)"windowscmd /c "curl https://release.anza.xyz/v2.1.5/agave-install-init-x86_64-pc-windows-msvc.exe --output C:\agave-install-tmp\agave-install-in.. 2025. 1. 20. [python] 중복 프로세스 방지 스크립트 스니핏 pyinstaller 로 만든 실행파일을 만들게 되면 종종 중복 실행되는 경우가 있습니다.파이썬에서 중복 프로세스의 동작을 방지하려면 파일 기반의 락이나 OS별로 제공하는 프로세스 락 메커니즘을 사용할 수 있습니다. 예를 들어, fcntl 모듈을 사용하여 파일 락을 구현할 수 있습니다. 다음은 중복 프로세스를 방지하는 간단한 예제입니다:import fcntlimport sysdef prevent_duplicate_process(lockfile): fp = open(lockfile, 'w') try: # 파일에 락을 설정합니다. fcntl.flock(fp, fcntl.LOCK_EX | fcntl.LOCK_NB) return fp except IOErro.. 2025. 1. 5. [laravel] docker 환경에서 설치하기 with sail 주의) laravel 최신 버전을 기본 설치 합니다. 하위 버전으로 내리는 거 힘들어요. 하지 마세요. ^^ 잠시 본업에 충실하면 세상은 많이 변하고 있다. 본업의 해야할 것과 개인적으로 하고 싶은 것이 다르면 딜레마에 빠진다. laravel 솔루션을 보면 laravel/app을 사용하지 않고 있다. 괜히 봤다. 궁금했다.. 과거에 해봤던 팩키지 생성.. 으로 하는데.. 그렇다면 팩키지도 만들어 봐야 하는 거 아닌가? 이참에 하는 김에 빠방한 윈도 환경도 세팅을 했으니, docker 환경에서 wsl을 사용해서 해보자~ 싶었다. 괜한 생각은 꼬리에 꼬리를 물고... =_=;; 그렇게 환경은 정리가 되었으니... windows11 pro + wsl 2 + Ubuntu20.04.6 docker desktop .. 2023. 7. 12. [MAC M1] laravel + valet + php7.3 다운그레이드 방법 맥 M1에서 지원하는 PHP 기본 버전은 8.0.3 입니다. 터미널 사용 버전을 다운그레이드 하는 것은 쉬운데, 웹은 여전히 8.0이 사용되고 있었습니다. 웹서버는 valet을 사용하고 있었는데, 생각보다 버전 변경하는 것이 쉽네요. 매뉴얼을 대충 보면 안됩니다. ^^ ※ 아래 내용은 모두 로제타로 실행한 터미널에서 실행해야 합니다. 현재 m1에서는 php 8.0 이상만 지원하는 것으로 보입니다. % php -v PHP 8.0.3 (cli) (built: Mar 4 2021 20:45:17) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.3, Copyright (c) Zend Technologies with Zend OPcache v8.0.3, Copyri.. 2021. 3. 10. [MAC M1] laravel + vuejs + vuetify 설치 php, laravel, vuejs, vuetify 설치 brew install php@7.3 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" ph.. 2021. 3. 8. [Laravel] FCM을 이용해서 웹푸시 발송하기 https://picory.com/entry/Laravel-Web-Push-%EB%B0%9C%EC%86%A1%EA%B8%B0 얼마 전에 테스트 중이던 웹 푸시 소스가 사용자를 일정 수준으로 넘어서면서 인지, 아니면 원래 그런 건지 모르겠지만, 메시지는 전송했다는데, 테스트 하는 사람들은 받지 못했다고 하는 상황이 자주 연출이 되었다. 전송했다는데? 왜 안오지? 나는 잘되던데... 하다가 나도 받지 못하는 상황이 생기니... 이거 너무 불안정한데?? 싶어서 FCM을 사용하기로 하고 다시 정리를 해본다. 설치 composer require brozot/laravel-fcm config/app.php 설정 'providers' => [ // ... LaravelFCM\FCMServiceProvider::cla.. 2020. 6. 15. [og] 카카오톡 메시지에 URL 첨부시 제목이 URL로 나오는 경우 및 테스트 방법 6월 부터인가? 갑자기 카카오톡에 특정 사이트 URL을 전송하면 보여주던 이미지와 제목에서 이미지는 정상인데 제목이 문제가 되었다. 제목이 URL로만 보인다. 잘되는 것이 안되니 호기심이 생기네... 카카오톡은 어떤 것을 참조해서 제목을 가져오는 걸까? 카카오톡의 테스트 URL? 개발자 센터 일단 카카오톡 메시지로 전송이 되면 어떻게 되는지 미리 알수 있는 방법은 카카오톡 개발자 센터에 있다. 생뚱맞기는 하지만 카카오 스토리 > RESTAPI > 웹 페이지 스크롤링에서 테스트를 제공한다. [페이지 링크] 테스트는 간단하지만 개발자 센터에서 API 테스트기 때문에 액세스 토큰을 발급받아야 한다. 카카오톡 아이디만 있으면 되는 걸로 알고 있으니, 귀찮겠지만 테스트를 위해서 개발자센터에 등록 후 토큰을 발급 .. 2020. 6. 6. [Laravel] Eloquent ORM, Query Builder로 실행한 full query 확인 개발 중 자주 쿼리를 확인하는 일이 있다. 그런데 ->toSql()로 하게 되면 바인딩 전 쿼리만 나와서 해당 값이 정상 들어갔는지 확인이 어려울 수 있다. 이번에는 mysql 4.x old 버전에 쿼리 질의를 할 일이 생겼는데, php 5.x 버전 부터 mysql 4.x 버전을 지원하지 않고, 어느 언어를 사용하더라도 4.x 버전을 미지원이라는 장벽을 맞이하게 되었다. 결국 원격으로 php 5.x 저 버전에 raw 쿼리를 던져서 질의 하도록 미들웨어 개념의 api를 만들었다. 기본 어드민 툴은 laravel에서 사용을 해야 하니 raw query를 생성해서 던지는 작업을 해야하는 경우가 생긴 것이다. 머 이유가 어찌 됐건 일단 바인딩된 최종 raw query 획득을 위한 작업을 진행하기 위해서 설정 작.. 2020. 5. 30. [Linux] 가끔 필요한 내용 정리 n일 이전 생성 파일 보기 및 삭제 # n일 이전 생성 파일 보기 find 폴더/ -mtime +n find 폴더/ -mtime +n -print # n일 이전 생성 파일 삭제 find 폴더/ -mtime +n -delete find 폴더/ -mtime +n -exec rm {} \; 2020. 5. 18. [Python] 텔레그램 채팅봇 만들기 요 근래 말이 많은 텔레그램입니다. 원격지 컴퓨터에 명령 실행할 방법을 찾다가, 메신저를 통해서 실행해 보자는 아이디어 차원에서 한번 챗봇을 보게 되었는데, 파이썬 + 텔레그램 봇 구성이 생각보다 쉬워 공유를 해봅니다. telepot 모듈 설치 pip install telepot --upgrade 소스 샘플 import telepot from telepot.loop import MessageLoop import time TOKEN_MAIN = 'BOT_TOKEN' StartMsg = """ BOT 기본 명령어 1. /help : 도움말 2. 안녕 """ # 특정 명령어가 입력할 때 반응 def execcommand(message, chat_id): args = message.split(' ') comma.. 2020. 5. 15. [Python] psycopg2 에서 실행된 쿼리문 전체 보기 import psycopg2 as pg2 from psycopg2.extras import DictCursor conn = pg2.connect() cursor = conn.cursor(cursor_factory=DictCursor) cursor.execute('select %s, %s', ('test', 2)) cursor.query "select E'test', 2" 2020. 4. 29. [Python] 이름으로 특정 프로세스 종료 시키기 보통 콘솔에서 동작을 시킬때 동일한 프로그램이 좀비형태로 안죽고 있거나, 일정 시간 오버해서 동작하는 경우 강제로 종료시켜야할 필요성이 있을때 사용하면 유용합니다. import psutil # python filename.py로 실행된 프로세스를 찾음 for proc in psutil.process_iter(): try: # 프로세스 이름, PID값 가져오기 processName = proc.name() processID = proc.pid if processName[:6] == "python": // 윈도우는 python.exe로 올라옴 commandLine = proc.cmdline() # 동일한 프로세스 확인. code 확인 if 'filename.py' in commandLine: parent_p.. 2020. 4. 27. [Python] 엑셀 처리 방법 pip install openpyxl 디렉토리 내의 엑셀 파일 목록 전체를 읽어서 분석하기 코드 일부 import openpyxl import os dirList = [ 'D:\\admin', 'D:\\front' ] currentNo = 0 def analsysEcxcel(filename, currentNo): # 엑셀파일 열기 wb = openpyxl.load_workbook(filename) # 현재 Active Sheet 얻기 ws = wb.active # Active Sheet 지정하기 # ws = wb.get_sheet_by_name("Sheet1") # 국영수 점수를 읽기 for r in ws.rows: row_index = r[0].row # 행 인덱스 if row_index < 2: # .. 2020. 4. 16. [Laravel] gmail을 이용해서 메일 보내기 Laravel 기본 vendor를 이용하여 메일 전송하는 소스 입니다. 1. 메일 발송용 컨트롤러 생성 php artisan make:controller MailController 2019. 12. 15. 이전 1 2 다음 반응형