본문 바로가기

전체 글

(925)
[ MSYS ] .ssh 폴더 공유하기 1. 추천: MSYS2에서 Windows Junction 사용Windows PowerShell에서 mklink /J를 이용하면 됩니다.먼저 MSYS2에서 실제 HOME 위치를 확인합니다.cygpath -w "$HOME"예를 들어 다음과 같이 출력되었다고 가정합니다.C:\msys64\home\username이제 PowerShell에서 다음 명령을 실행합니다.$source = "$env:USERPROFILE\.ssh"$target = "C:\msys64\home\username\.ssh"# 기존 디렉터리 백업if (Test-Path $target) { Rename-Item $target ".ssh.backup"}# Junction 생성New-Item -ItemType Junction -Path $tar..
[ Android ] 전 세계 소셜 로그인 API 제공 전 세계 소셜 로그인 API 제공 업체 총정리 (2026년 기준)전 세계에는 자사 계정을 이용해 외부 웹사이트나 모바일 앱에 로그인할 수 있도록 API를 제공하는 회사가 수십 곳 이상 있습니다.대표적으로 Google, Apple, Facebook, Kakao, Naver, LINE, WeChat, Microsoft, GitHub, Discord 등이 있습니다.이러한 기능을 일반적으로 소셜 로그인(Social Login) 또는 **외부 계정 로그인(Federated Login)**이라고 합니다.대부분 OAuth 2.0 또는 OpenID Connect(OIDC)를 사용하며, 일부는 자체 SDK를 제공합니다.아래는 실제 앱 개발에서 활용할 수 있는 서비스들을 지역과 용도별로 정리한 목록입니다.1. 글로벌 주요..
[ SSH ] SSH 터널링을 이용해 원격 컴퓨터의 서비스 연결하기 이때는 SSH의 Local Port Forwarding (-L) 기능을 사용하면 됩니다.1. 네트워크 구성예를 들어 다음과 같은 환경이라고 가정하겠습니다.[내 컴퓨터]192.168.0.10 | | 인터넷 | ▼[원격 공유기]공인 IP: 123.123.123.123포트포워딩:2222 → 192.168.1.100:22 | ▼[원격 컴퓨터]192.168.1.100SSH: 22HTTP: 3000 (예: Grafana)목표는 내 컴퓨터에서 다음 주소로 접속하는 것입니다.http://localhost:3000그러면 SSH 터널을 통해 원격 컴퓨터의 3000 포트로 연결됩니다.2. SSH 터널링 명령어내 컴퓨터의 터미널에서 실행합니다.ssh -L 3000:127.0.0.1:..
[ Grafana ] Grafana 완벽 가이드: 개념부터 설치, 모니터링, 알림까지 **Grafana**는 서버, 데이터베이스, 애플리케이션, IoT 장비 등에서 발생하는 데이터를 실시간으로 시각화하고 모니터링하는 오픈소스 플랫폼입니다.특히 Prometheus, PostgreSQL, Docker, Python 기반 시스템 운영에 유용합니다.Grafana는 단순히 그래프를 그리는 프로그램이 아닙니다. 시스템 상태 관찰, 성능 분석, 장애 감지, 알림, 운영 대시보드를 통합적으로 제공하는 도구입니다.1. Grafana는 어떤 프로그램인가?예를 들어 다음과 같은 시스템을 운영한다고 가정하겠습니다.PostgreSQL 16 데이터베이스Apache Airflow 2.9 데이터 처리 작업Python FastAPI 서버Docker 컨테이너Linux 서버 여러 대Grafana를 사용하면 이 모든 시스템..
[ Modbus ] TamidaS Simulator + ModbusTool로 Modbus TCP 테스트 환경 구축하기 Modbus를 이용하는 프로그램을 개발할 때 실제 PLC, 전력계, 센서 등의 장비가 없어도 통신을 테스트할 수 있습니다.이번 글에서는 다음과 같은 테스트 환경을 구성합니다.┌──────────────────────────────┐│ Windows PC ││ ││ QModMaster ││ Modbus Master / Client ││ │ ││ │ Modbus TCP ││ │ 127.0.0.1 ││ ▼ ││ TamidaS Si..
[ Airflow ] Manual Trigge 시 Dropbox(드롭다운) 형태로 선택 예를 들어 Airflow 2.9 기준으로:from airflow import DAGfrom airflow.models.param import Paramfrom airflow.operators.python import PythonOperatorfrom datetime import datetimedef run_job(**context): mode = context["params"]["mode"] print(f"선택된 mode = {mode}")with DAG( dag_id="manual_dropdown_test", start_date=datetime(2024, 1, 1), schedule=None, # Manual 실행 catchup=False, params=..
[ Modbus ] TamidaS Simulator + QModbus로 Modbus TCP 테스트 환경 구축하기 Modbus를 이용하는 프로그램을 개발할 때 실제 PLC, 전력계, 센서 등의 장비가 없어도 통신을 테스트할 수 있습니다.이번 글에서는 다음과 같은 테스트 환경을 구성합니다.┌──────────────────────────────┐│ Windows PC ││ ││ QModMaster ││ Modbus Master / Client ││ │ ││ │ Modbus TCP ││ │ 127.0.0.1 ││ ▼ ││ TamidaS Si..
[ DB ] unnest로 데이터 insert시 중복 제거하기 별도의 dedup dict를 먼저 만들지 않고, unnest용 dict를 만드는 루프에서 바로 중복 제거한다.예를 들어:params = {"a": [], "b": [], "value": [],}seen = set()for row in rows: key = (row["a"], row["b"]) if key in seen: continue seen.add(key) params["a"].append(row["a"]) params["b"].append(row["b"]) params["value"].append(row["value"])이렇게 하면 별도의:dedup = {}단계를 만들지 않고 한 번의 루프로 처리할 수 있습니다.다만 이 방식은 첫 번째 데이터가..