win32 shell 파일 복원 로직.

윈도우 shellapi.h 에서 지운 파일을 복원하는 API가 없습니다. 구현방법은 다음과 같습니다. 윈도우 휴지통의 모든 파일을 검색해 최근 삭제한 파일, 폴더를 복원합니다. #include <windows.h> #include <shlobj.h> #include <shlwapi.h> #include <propkey.h> #include <propvarutil.h> #include <iostream> #include <string> #include <wrl/client.h> #pragma comment ( lib , "shell32.lib" ) #pragma comment ( lib , "ole32.lib" ) #pragma comment ( lib , "propsys.lib" ) static HRESULT GetFileTimeProp ( IShellItem2 * item2 , const PROPERTYKEY & key , FILETIME & outFt ) {     outFt = {};     PROPVARIANT pv; PropVariantInit ( & pv);     HRESULT hr = item2 -> GetProperty (key, & pv);     if ( FAILED (hr)) { PropVariantClear ( & pv); return hr; }     if ( pv . vt == VT_FILETIME) { outFt = pv . filetime ; PropVariantClear ( & pv); return S_OK; }     if ( pv . vt == VT_DATE)     {       ...

Fedora 43 Silverblue 사용기와 설정.

- 후기. 설치는 쉬웠고, 한글 설정은 간단했고, 사용은 안정감 있습니다. flatpak에 있는 프로그램 사용하는 일반 사용자에게는 정말 좋습니다.  아무리 막써도 망가지지 않는다는 장점이 있으니까요. 하지만 GUI 개발 운영체제로 사용하기엔 힘듭니다.  distrobox를 사용해 android studio 설치했지만 온갖 난관이 생기네요. 권한은 적용하기 힘들고, 폴더 위치는 이상하고, 하드웨어에 접근하려면 불변을 깨야 하고.. ----------------------------------------------------------------- - 버전.  Fedora 43 Silverblue ----------------------------------------------------------------- - 한글 설정. 설정 - 키보드 - 입력소스  한글(Hangule) 만 남기고 나머지는 지움. '한글(Hangule)' 오른쪽의 ...을 클릭해 '기본설정' - 본인이 원하는 설정으로 수정. 기본은 Shift + Space 로 한영전환 함. 이외의 설치나 설정 없이 한영전환 가능함. 여러 배포판 설치하다보니 최근 급격하게 한글 지원이 좋아지고 있음. ----------------------------------------------------------------- - 프로그램 설치. flatpak, Distrobox, rpm-ostree 방법이 있고, 간단 설명합니다. flatpak - 샌드박스 규칙이 엄격하며, 주로 일반 프로그램을 설치할 때 사용합니다. Distrobox - 샌드박스 규칙이 느슨하며, 주로 개발 프로그램에 사용합니다. rpm-ostree - Fedora Silverblue는 불변 OS지만 OS에 프로그램을 설치할 수 있게 길을 열어놨습니다. ---------------------------------------------------------------- - 크롬 설치. ---------------...

vs code에 Codex 로그인시에 Sign-in failed: {"code":-32603," 에러.

- 문제. vs code에서 Codex 로그인 에러. Sign-in failed: {"code":-32603,"message":"failed to start login server: 액세스 권한에 의해 숨겨진 소켓에 액세스를 시도했습니다. (os error 10013)"} - 해결. netsh int ipv4 set dynamicport tcp start=49152 num=16384 netsh int ipv6 set dynamicport tcp start=49152 num=16384 TCP 동적 포트(Dynamic Port)의 범위를 Windows 기본값(49152–65535) 으로 되돌림. - 원인. Codex는 로그인시에 1455 포트를 사용하는데 1455 포트를 사용하지 못하게 되면 오류 발생함. 원래 최신 Windows의 동적(클라이언트) 포트 기본 범위는 49152–65535인데, 어떤 이유로 이 값이 낮은 포트(예: 1025부터) 로 바뀌어 있었을 가능성이 큽니다.  - 문제 확인. netsh int ipv4 show dynamicport tcp 동적 포트범위가 (시작포트49152, 포트수16384)가 아니거나. netsh interface ipv4 show excludedportrange protocol=tcp 제외 범위 포트에 1455가 포함되 있거나. netstat -ano | findstr :1455 1455 포트를 사용하는 프로그램. - 이후. 보안, 개발 프로그램에 의해 동적 포트 범위가 바뀌면 재발 할 수 있음.  - 참고. https://community.openai.com/t/introducing-the-codex-ide-extension/1354930/10 https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/default-dynamic-port-range-tcpip-chang?utm_source=cha...

데비안 13에 DisplayLink 설치 방법.

DisplayLink가 Debian을 지원하지 않으므로 커널빌드를 해야 합니다. DisplayLink에서 빌트 스크립트를 제공하기 때문에 과정은 간단합니다. amd 5500u cpu인데 유튜브도 잘 돌아갔습니다.  전체 cpu 사용율은 16~18%정도 였습니다. 정지된 화면을 띄우면 6~9% 정도 였습니다. ====================== - 설치환경. Debian 13.2.0  KDE Plasma 6.3.6 WAVLINK DisplayLink DL6950   ====================== - 터미널을 열어 아래와 같이 실행합니다. # 시스템 업데이트. sudo apt update && sudo apt upgrade -y # 커널 컴파일에 필요한 도구와 소스 다운로드. sudo apt install git wget libdrm-dev distro-info-data linux-headers-$(uname -r) -y # 홈 폴더로 이동. cd ~ # displaylink 소스 다운로드. git clone https://github.com/AdnanHodzic/displaylink-debian.git # 다운로드 받은 displaylink 폴더로 이동. cd displaylink-debian # 커널 빌드 스크립트 실행.  sudo ./displaylink-debian.sh # 이후 install 선택 후 Y를 선택하면 됩니다. # 완료 후 재부팅. sudo reboot # 설치 확인. systemctl status displaylink-driver ====================== - 주의사항. - Secure Boot  BIOS 설정으로 진입하여 Secure Boot를 Disable로 변경하세요.  이게 싫으면 displaylink에 서명을 해야 합니다. - 커널 업데이트 시   데비안 업데이트를 ...

ecs/pos usb 인쇄 파이썬 스크립트.

이미지
텍스트를 입력하면, 이미지로 변환해, 프린터 합니다. 프린터의 usb 드라이버가 설치되 있어야 합니다. 실행하려면 아래 라이브러리가 설치되어야 합니다. pip install pywin32 import tkinter as tk from tkinter import messagebox from PIL import Image , ImageDraw , ImageFont from escpos . printer import Network import os # PyInstaller로 패키징했을 때 리소스 경로를 찾는 함수 def resource_path ( relative_path ):     try :         base_path = sys._MEIPASS     except Exception :         base_path = os . path . abspath ( "." )     return os . path . join ( base_path , relative_path ) class ReceiptPrinterApp :     def __init__ ( self , root ):         self . root = root         self . root .title( "ESC/POS Printer Text to Image" )         self . root .geometry( "450x450" )   # UI 요소가 늘어남에 따라 창 크기 확장         # --- UI 구성 ---         setting_frame = tk . LabelFrame (   ...

ecs/pos 네트워크 인쇄 파이썬 스크립트.

텍스트를 입력하면, 이미지로 변환해, 프린터 합니다. 네트워크 IP 주소로 연결합니다. 프린터 폰트, 폰트사이즈, 용지좌우넓이 세팅할 수 있습니다. 폰트는 py 와 같은 파일에 있어야 합니다. 용지좌우넓이는 80mm 용지로 576으로 되어 있는데 글씨가 짤리면 512 로 설정합니다. 실행하려면 아래 라이브러리가 설치되어야 합니다. pip install pillow python-escpos import tkinter as tk from tkinter import messagebox from PIL import Image, ImageDraw, ImageFont from escpos.printer import Network import os class ReceiptPrinterApp :     def __init__ ( self , root ):         self . root = root         self . root .title( "ESC/POS Printer Text to Image" )         self . root .geometry( "450x450" )   # UI 요소가 늘어남에 따라 창 크기 확장         # --- UI 구성 ---         setting_frame = tk . LabelFrame (             root , text = "프린터 및 폰트 설정" , padx = 10 , pady = 10         )         setting_frame . pack ( fill = "x" , padx = 10 , pady = 5 )    ...