Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

전체 글 824

DevExtreme dxDataGrid CustomStore 사용 시 자주 묻는 질문 정리

DevExtreme dxDataGrid CustomStore 사용 시 자주 묻는 질문 정리 DevExtreme의 dxDataGrid를 사용하면서 가장 많이 접하는 질문 중 하나가 Pager의 전체 건수 설정, Loading Panel 제어, 그리고 수정된 데이터 반영 방법입니다. 이번 글에서는 실제 개발 과정에서 자주 사용하는 방법들을 정리해 보겠습니다.1. dxDataGrid Pager의 전체 건수(totalCount) 설정하기CustomStore를 사용할 경우 Pager는 데이터 개수를 자동으로 알 수 없습니다. 따라서 load 함수에서 반드시 totalCount 값을 함께 반환해야 합니다.const store = new DevExpress.data.CustomStore({ key: "id", ..

서버 없이 AdMob app-ads.txt 올리기 — Firebase Hosting 삽질기 (feat. Node 24 호환성 버그)

서버 없이 AdMob app-ads.txt 올리기 — Firebase Hosting 삽질기 (feat. Node 24 호환성 버그) 플레이스토어에 앱을 출시하고 AdMob으로 광고를 붙이려는데, app-ads.txt를 내 "개발자 웹사이트" 루트에 올리라는 요구사항에 걸렸다. 예전엔 Blogger 커스텀 리다이렉트로 우회했었는데, 이번엔 공식적으로 권장되는 Firebase Hosting으로 해보기로 했다. 과정에서 firebase-tools 신버전의 버그를 만나서 꽤 헤맸는데, 똑같이 겪을 사람들을 위해 정리해둔다.TL;DRapp-ads.txt는 Play Console에 등록한 "웹사이트" 도메인의 루트에, 라인 그대로의 텍스트 파일로 올라가 있어야 함자체 서버 없으면 Firebase Hosting(무료..

그냥글쓰기 2026.10.02

파이썬으로 네이버 쇼핑 커넥트 자동화하기 — 블로그 포스팅부터 인스타그램 릴스 자동 게시까지

파이썬으로 네이버 쇼핑 커넥트 자동화하기 — 블로그 포스팅부터 인스타그램 릴스 자동 게시까지 네이버 쇼핑 커넥트(브랜드 커넥트 제휴)로 받은 상품 링크를 블로그 글에 자동으로 붙이고, 같은 상품으로 인스타그램 릴스 영상까지 만들어 올리는 파이썬 자동화를 만들어 본 기록입니다. 중간에 겪은 삽질(PowerShell 쉼표, URL 인코딩, 에디터가 스타일을 지우는 문제 등)도 함께 정리했습니다.⚠️ 쇼핑 커넥트는 공개 Open API 가 없습니다. 이 글은 본인 계정으로 로그인한 브라우저가 호출하는 요청을 그대로 재현하는 방식이라, 응답 형식이 예고 없이 바뀔 수 있고 운영 정책상 제한될 수 있습니다. 호출 빈도를 낮게 유지하고, 사용 전 브랜드 커넥트 운영정책을 꼭 확인하세요.전체 구조[쇼핑 커넥트] ..

Python 에서 json

Python 에서 json 1. Python JSON 변환사용자가 Python에서 JSON 객체를 문자열로 변환하는 방법을 질문함.json.dumps() 함수 사용 예시와 옵션(indent, ensure_ascii, sort_keys) 설명 제공.Pretty print 형식도 가능하다는 안내.2. 대화 요약 요청사용자가 지금까지의 대화를 정리해서 HTML 형식으로 만들어 달라고 요청함.이에 따라 대화 내용을 항목별로 정리하여 HTML 문서 구조로 제공.3. 브라우저 탭 상황현재 사용자는 Tistory, Naver 블로그 관리 페이지, Bing 검색, Tistory 메인 페이지 등을 열어둔 상태.이 정보는 단순히 참고용으로만 활용됨.

URL 중첩 인코딩 디코딩 방법

URL 중첩 인코딩 디코딩 방법 웹 개발이나 데이터 전송 과정에서 종종 중첩된 URL 인코딩을 마주하게 됩니다. 예를 들어 %252522 같은 문자열은 한 번 디코딩하면 %2522가 되고, 다시 디코딩해야 "로 복원됩니다.중첩 인코딩의 특징인코딩 자체는 정상적으로 수행됨단, 여러 번 중복되어 사람이 읽기 어려움반복 디코딩을 통해 원래 JSON 구조로 복원 가능Python 예제 코드import urllib.parseimport json# 예시: 중첩된 인코딩 문자열encoded = "%257B%252522custEngNm%252522%25253A%252522John%252522%257D"def multi_decode(s, max_steps=5): for _ in range(max_steps): ..

dxDataGrid 편집 & Selection 관련

📌 dxDataGrid 편집 & Selection 관련 1. JSON 문자열 처리서버에서 JSON 문자열을 받으면 JSON.parse()로 객체로 변환해야 값 추출이 가능합니다.var jsonString = '[{"id":1,"name":"Electronics"},{"id":2,"name":"Books"}]';var data = JSON.parse(jsonString);var values = data.map(item => item.name);console.log(values); // ["Electronics", "Books"] 2. editCellTemplate에서 SelectBox 구성셀 편집 시 서버에서 가져온 데이터를 SelectBox로 표시하려면:{ dataField: "categoryId"..

좌표 격침전 앱 설명서

USER MANUAL · ANDROID좌표 격침전SONAR FIRE CONTROL — 사용자 설명서6×6(또는 8×8) 격자 위에 함대를 배치하고, 좌표만으로 상대 함대를 먼저 전멸시키는 턴제 블라인드 해상 전투 게임입니다. 이 설명서는 실제 앱 화면 캡처와 함께 배치·전투·온라인 대전·순위 확인까지의 전체 흐름을 안내합니다.기본 난이도6×6 · 함대 3척고급 난이도8×8 · 함대 5척대전 방식1인(AI) · 2인(온라인)좌표 표기열+행, 예: C4목차 시작하기 함대 배치 전투 승리 · 패배 온라인 대전 내 순위 뒤로가기 · 종료 좌표 입력 참고STEP 01시작하기닉네임을 정하고, 혼자 AI와 싸울지 친구와 온라인으로 붙을지 고릅니다.START — 닉네임 · 인원 선택닉네임 (선택)상단 입력창에 최대 1..

자작앱 설명서 2026.09.14

🔑 Oracle MERGE 성능 개선 방안

🔑 Oracle MERGE 성능 개선 방안 ON 조건 인덱스 최적화 – MERGE는 대상과 소스를 조인하므로 ON 조건 컬럼에 인덱스 필요변경된 값만 UPDATE – 불필요한 UPDATE 방지USING 절 단순화 – 복잡한 JOIN, GROUP BY 최소화병렬 처리 힌트 – 대용량 배치 작업 시 효과적실행 계획 확인 – EXPLAIN PLAN으로 Full Scan 여부 점검파티셔닝 활용 – 병목 완화 및 Local Index 사용MERGE 분리 전략 – UPDATE와 INSERT를 분리해 옵티마이저 활용 극대화최신 통계 유지 – DBMS_STATS로 실행 계획 정확성 확보⚠️ 실무에서 자주 발생하는 문제Snapshot too old 오류 – Undo 영역 과다 사용 → 사전 필터링으로 해결인덱스 무시 ..

Oracle OFFSET 성능 최적화와 Keyset 페이징

Oracle OFFSET 성능 최적화와 Keyset 페이징 OFFSET은 데이터가 많아질수록 성능이 급격히 떨어집니다. 대용량 환경에서는 Keyset Pagination(Seek 방식)을 사용하고, 정렬 컬럼에 적절한 인덱스를 추가하는 것이 가장 효과적인 방법입니다.OFFSET 성능 문제OFFSET-FETCH 방식은 지정된 OFFSET만큼 데이터를 건너뛰기 위해 정렬 후 스캔을 수행합니다.데이터가 수백만 건 이상이면 TEMP 공간 사용과 CPU 부하가 급격히 증가합니다.페이징 방식 비교방식장점단점성능 특성ROW_NUMBER정렬 순서 보장, 임의 페이지 접근 가능전체 정렬 비용 발생대량 데이터에서 성능 저하OFFSET-FETCHSQL 문법 간결, 직관적OFFSET 커질수록 성능 급격히 저하수백만 건 이상에..

JavaScript input 길이 체크 방법

JavaScript input 길이 체크 방법 1. 기본적인 길이 체크JavaScript에서 input의 길이를 확인할 때는 value.length 속성을 사용합니다.확인2. 주요 방법value.length : 문자열 길이를 직접 확인maxlength 속성 : HTML에서 입력 가능한 최대 길이를 제한이벤트 리스너 활용 : input 이벤트로 실시간 길이 체크const input = document.getElementById("username");input.addEventListener("input", () => { console.log("현재 길이:", input.value.length);});3. 활용 팁보통은 maxlength로 기본 제한을 두고, 추가적인 검증은 value.length로 처리하는..

반응형