[{"id":"chroma-key","href":"/ko/tools/chroma-key/","title":"크로마 키","tags":"image chroma-key transparency","search":"chroma-key image chroma-key transparency background-removal green-screen 크로마 키 배경색을 투명하게 지정한 색과 그 허용 오차 범위를 투명하게 만듭니다. 컬러 피커나 canvas 클릭으로 대상 색을 고르고, tolerance로 함께 지울 범위를, smoothing으로 경계의 부드러움을 정합니다. 투명도를 지키기 위해 출력은 png로 고정되며 모든 처리는 브라우저 안에서 끝납니다."},{"id":"cors-preflight-predictor","href":"/ko/tools/cors-preflight-predictor/","title":"CORS 프리플라이트","tags":"cors fetch preflight","search":"cors-preflight-predictor cors fetch preflight http cors 프리플라이트 options가 먼저 가는지 판정 method, request 헤더, content-type으로 해당 cross-origin request가 options 프리플라이트를 동반하는지 판정하고 근거가 된 조건을 보여줍니다. application/json은 safelist에 없어 그것만으로 프리플라이트 대상이 됩니다. fetch 표준의 safelist에 기반한 정적 예측입니다."},{"id":"cross-platform-filename-scanner","href":"/ko/tools/cross-platform-filename-scanner/","title":"파일명 스캐너","tags":"filename windows unicode","search":"cross-platform-filename-scanner filename windows unicode portability 파일명 스캐너 os를 넘으면 깨지는 이름 찾기 상대 경로 목록을 넘기면 windows 예약어와 금지 문자, 대소문자만 다른 충돌, unicode 정규화로 같아지는 충돌을 찾아냅니다. 파일 내용은 읽지 않고 경로 문자열만 봅니다. 잘못된 변경을 막기 위해 이름을 바꾸지 않고 문제 후보와 해당 경로를 보여주는 데서 멈춥니다."},{"id":"dst-local-time-checker","href":"/ko/tools/dst-local-time-checker/","title":"서머타임 경계","tags":"dst timezone scheduling","search":"dst-local-time-checker dst timezone scheduling intl 서머타임 경계 사라지거나 두 번 오는 시각 찾기 iana time zone의 local time이 하나로 정해지는지, 시계를 되돌리는 날에 두 번 나타나는지, 시계를 앞당기는 날에 아예 존재하지 않는지를 판정합니다. 두 번 나타나는 시각은 서로 다른 두 utc instant에 대응하고, 존재하지 않는 시각은 어디에도 대응하지 않습니다. 결과는 브라우저의 intl time zone data에 따릅니다."},{"id":"eye-training-20-20-20","href":"/ko/tools/eye-training-20-20-20/","title":"20-20-20","tags":"20-20-20 break-timer eye-strain","search":"eye-training-20-20-20 20-20-20 break-timer eye-strain wellness focus 20-20-20 20분마다 20초, 먼 곳 보기 20분마다 20피트(약 6미터) 앞을 20초 보는 규칙을 위한 휴식 타이머입니다. 가까운 곳을 계속 응시하는 상태를 기계적으로 끊는 것이 목적이며, 화면 작업이나 공부 사이에 쓸 수 있습니다. 치료가 아니라 시선을 움직이기 쉽게 돕는 도구입니다."},{"id":"invisible-character-inspector","href":"/ko/tools/invisible-character-inspector/","title":"보이지 않는 문자","tags":"unicode invisible-character bidi","search":"invisible-character-inspector unicode invisible-character bidi zero-width 보이지 않는 문자 제로 폭·bom·양방향 제어 드러내기 제로 폭 문자, bom, nbsp, 양방향 제어 문자의 종류와 위치를 보여주고 고른 종류만 한꺼번에 제거합니다. zwj와 variation selector는 이모지나 일부 언어 표현에 필요하므로 일괄로 지우지 않습니다. 표시 사고를 일으키기 쉬운 문자로 대상을 좁혔으며 security scanner는 아닙니다."},{"id":"sprite-sheet","href":"/ko/tools/sprite-sheet/","title":"스프라이트 시트","tags":"video sprite-sheet thumbnail","search":"sprite-sheet video sprite-sheet thumbnail preview webworker 스프라이트 시트 동영상을 썸네일 목록으로 동영상에서 일정 간격으로 144프레임을 뽑아 12×12 그리드로 배치한 스프라이트 시트 한 장을 만듭니다. 플레이어의 탐색 미리보기나 애니메이션 소재로 쓸 수 있습니다. 디코딩과 합성은 web worker에서 처리하므로 작업 중에도 ui가 멈추지 않습니다."},{"id":"uuid-generator","href":"/ko/tools/uuid-generator/","title":"UUID","tags":"uuid generator","search":"uuid-generator uuid generator uuid v4·v7 일괄 발급 uuid v4(난수)와 v7(시간순)을 최대 1000개까지 한 번에 생성하고 csv로 내보냅니다. v7은 앞부분에 밀리초 단위 unix 시각을 담아 생성 순서대로 정렬되며 데이터베이스 인덱스가 잘 조각나지 않습니다. 생성은 모두 브라우저 안에서 이뤄집니다."},{"id":"cache-control-freshness","href":"/ko/tools/cache-control-freshness/","title":"Cache-Control","tags":"cache-control http rfc-9111","search":"cache-control-freshness cache-control http rfc-9111 cdn cache-control 남은 신선도 계산 rfc 9111의 age 계산과 directive 우선순위로 response가 fresh인지 stale인지와 남은 신선도 초를 구합니다. shared cache를 고르면 s-maxage가 max-age보다 우선합니다. 같은 입력에서 같은 결과가 나오도록 판정 시각도 명시적인 입력으로 두었습니다."},{"id":"cipher","href":"/ko/tools/cipher/","title":"픽셀 암호","tags":"image cipher encryption","search":"cipher image cipher encryption aes png metadata privacy web-crypto 픽셀 암호 비밀번호로 이미지 잠그기 비밀번호에서 pbkdf2로 파생한 키가 무작위 aes-ctr 키를 aes-gcm으로 감싸고, salt와 iv는 png의 text 청크에 남습니다. 복호화에 필요한 정보가 이미지 자체에 들어가므로 기억할 것은 비밀번호뿐입니다. 실루엣을 지키기 위해 투명 픽셀은 제외합니다."},{"id":"eye-training-saccade","href":"/ko/tools/eye-training-saccade/","title":"사카드","tags":"eye-training saccade eye-strain","search":"eye-training-saccade eye-training saccade eye-strain scanning focus 사카드 튀는 목표를 다시 포착 화면 안을 띄엄띄엄 이동하는 타깃을 그때마다 눈으로 다시 잡는 1분 세션입니다. 머리는 움직이지 않고 시선만 튀겨 따라갑니다. 오랜 근거리 작업으로 굳어진 시선의 움직임을 바꾸고 싶을 때 적합합니다. 치료가 아니라 휴식을 돕는 도구입니다."},{"id":"file-type-mismatch","href":"/ko/tools/file-type-mismatch/","title":"파일 형식 불일치","tags":"file-signature mime extension","search":"file-type-mismatch file-signature mime extension magic-bytes 파일 형식 불일치 확장자·mime·실제 바이트 대조 확장자, 신고된 mime type, 앞부분 바이트 signature를 대조해 셋이 어긋나는 파일을 찾습니다. 특정할 수 없는 것은 안전이 아니라 불명으로 구분합니다. security scanner가 아니므로 결과는 형식의 증명이 아니라 조사의 단서로 쓰세요."},{"id":"poster-tile-calculator","href":"/ko/tools/poster-tile-calculator/","title":"포스터 분할 인쇄","tags":"poster printing tiling","search":"poster-tile-calculator poster printing tiling overlap 포스터 분할 인쇄 필요한 장수와 겹침 폭 계산 완성 치수, 용지 크기, 여백, 겹침 폭에서 필요한 장수와 각 페이지가 맡는 범위를 계산합니다. 여백에는 프린터가 인쇄할 수 없는 가장자리 폭도 포함하세요. 겹침은 5~10mm를 기준으로 조정합니다. pdf 생성과 이미지 자동 분할은 하지 않습니다."},{"id":"unicode-normalization-collision","href":"/ko/tools/unicode-normalization-collision/","title":"정규화 충돌","tags":"unicode normalization filename","search":"unicode-normalization-collision unicode normalization filename identifier 정규화 충돌 nfc/nfd에서 같아지는 이름 찾기 겉모습이 다른 식별자가 unicode 정규화로 같은 값이 되는 조합을 nfc·nfd·nfkc·nfkd 형태별로 찾아냅니다. 호환 정규화는 단위 기호나 장식 문자의 의미를 바꿀 수 있어 일괄 적용을 권하지 않습니다. os나 db 고유의 대조 규칙, locale별 대소문자 변환은 재현하지 않습니다."},{"id":"url-encoding","href":"/ko/tools/url-encoding/","title":"URL 인코딩","tags":"url percent-encoding form-encoding","search":"url-encoding url percent-encoding form-encoding url 인코딩 구성 요소·전체 url·폼 값 구분 url 컴포넌트, url 전체, 폼 값의 세 가지 규칙으로 인코딩과 디코딩을 합니다. 규칙마다 그대로 남는 문자가 다르며 폼 값 디코딩만 +를 공백으로 취급합니다. 잘못된 percent escape나 utf-8은 오류로 표시하고 추측으로 입력을 바꾸지 않습니다."},{"id":"base64-encoding","href":"/ko/tools/base64-encoding/","title":"Base64","tags":"base64 base64url utf-8","search":"base64-encoding base64 base64url utf-8 base64 standard와 base64url 오가기 utf-8 텍스트를 +와 /를 쓰는 standard base64, 또는 -와 _를 쓰는 base64url로 변환하고 되돌립니다. base64url은 padding 없이 출력하며 디코딩에서는 올바르게 붙은 padding 입력도 받습니다. 고른 형식과 맞지 않는 alphabet이나 깨진 padding은 추측으로 고치지 않고 오류로 처리합니다."},{"id":"chmod-simulator","href":"/ko/tools/chmod-simulator/","title":"chmod","tags":"chmod unix permissions","search":"chmod-simulator chmod unix permissions umask chmod 권한 비트가 어떻게 바뀌는지 확인 numeric mode나 gnu symbolic mode를 현재 mode에 적용해 권한 bit와 특수 bit가 단계별로 어떻게 바뀌는지 보여줍니다. x는 항상 execute를 붙이지만 x는 디렉터리이거나 이미 execute bit가 있는 파일에만 적용됩니다. +w는 umask를 따르고 a+w는 umask를 무시합니다."},{"id":"comparator","href":"/ko/tools/comparator/","title":"이미지 차분","tags":"image compare diff","search":"comparator image compare diff regression qa 이미지 차분 달라진 픽셀만 칠하기 두 이미지를 겹쳐 허용 오차를 넘은 픽셀을 마젠타로 칠합니다. 일치율과 차분 픽셀 수도 함께 나오므로 회귀 테스트 판정에 쓸 수 있습니다. 양쪽 모두 완전히 투명한 픽셀은 rgb가 달라도 일치로 봅니다. 엄밀한 비교는 0%, 압축된 이미지는 1~5%가 기준입니다."},{"id":"csv-json-table-converter","href":"/ko/tools/csv-json-table-converter/","title":"CSV ↔ JSON","tags":"csv json table","search":"csv-json-table-converter csv json table converter csv ↔ json  csv와 정규화된 table json을 상호 변환합니다. comma나 줄바꿈이 든 cell은 quoted field로 해석·출력하므로 값이 그대로 유지됩니다. 열 수가 모자란 행은 최대 열 수까지 빈 cell로 채우고 경고를 표시합니다. 모든 cell은 문자열로 두고 타입을 추측하지 않습니다."},{"id":"eye-training-smooth-pursuit","href":"/ko/tools/eye-training-smooth-pursuit/","title":"추적 운동","tags":"eye-training smooth-pursuit eye-strain","search":"eye-training-smooth-pursuit eye-training smooth-pursuit eye-strain focus wellness 추적 운동 움직이는 목표를 눈으로만 따라가기 머리를 고정한 채 부드럽게 움직이는 타깃을 눈만으로 계속 따라가는 1분 세션입니다. 튀는 타깃을 다시 잡는 사카드와 달리 시선을 끊지 않고 속도를 계속 맞춥니다. 긴 화면 작업 사이에 넣는 휴식 도구이며 치료는 아닙니다."},{"id":"line-ending-forensics","href":"/ko/tools/line-ending-forensics/","title":"줄바꿈 혼용","tags":"line-ending crlf text-file","search":"line-ending-forensics line-ending crlf text-file git 줄바꿈 혼용 lf·crlf·cr 위치 특정 lf, crlf, cr이 섞인 위치를 줄 번호로 보여주고 한쪽으로 통일한 버전을 만듭니다. textarea에 붙여 넣으면 브라우저나 os가 모두 lf로 고를 수 있으니 원래 bytes를 보려면 파일 선택을 쓰세요. 수정본은 utf-8로 출력하며 원본 파일을 자동으로 덮어쓰지 않습니다."},{"id":"ascii-tree-generator","href":"/ko/tools/ascii-tree-generator/","title":"ASCII 트리","tags":"ascii folder-tree developer-tools","search":"ascii-tree-generator ascii folder-tree developer-tools ascii 트리 들여쓰기를 구조도로 들여쓴 목록에서 ascii 또는 utf-8 괘선으로 폴더 구성도를 만듭니다. markdown 글머리 기호도 읽으며 자식이 있는 이름은 폴더로 다룹니다. 들여쓰기는 스페이스든 탭이든 상관없지만 같은 계층은 같은 폭으로 맞추세요. 공유 url에는 입력과 설정이 그대로 담깁니다."},{"id":"invert-color","href":"/ko/tools/invert-color/","title":"색상 반전","tags":"image invert negative","search":"invert-color image invert negative filter color 색상 반전 네거티브를 0~100%로 섞기 색을 네거티브로 반전하고 슬라이더로 원래 색과의 혼합량을 0~100%에서 정합니다. 50%면 차분한 중간 톤이 됩니다. 투명 픽셀은 건너뛰므로 ui 에셋이나 겹친 이미지도 무너지지 않고, 저장 형식은 불러온 파일을 그대로 따릅니다."},{"id":"screen-burn","href":"/ko/tools/screen-burn/","title":"번인 완화","tags":"oled burn-in display","search":"screen-burn oled burn-in display repair utility 번인 완화 전체 화면 패턴으로 잔상 풀기 서브픽셀을 고르게 움직이는 전체 화면 패턴을 일정 시간 재생해 oled와 lcd의 잔상을 옅게 만드는 것을 노립니다. 우선 5~10분, 끈질긴 잔상에는 온도를 보면서 30~60분이 기준입니다. 대상은 일시적인 번인이며 물리적으로 망가진 서브픽셀은 고칠 수 없습니다."},{"id":"tsv-json-table-converter","href":"/ko/tools/tsv-json-table-converter/","title":"TSV ↔ JSON","tags":"tsv json table","search":"tsv-json-table-converter tsv json table converter tsv ↔ json  tsv와 정규화된 table json을 상호 변환합니다. tab이나 줄바꿈이 든 cell은 quoted field로 해석·출력하므로 값이 그대로 유지됩니다. 열 수가 모자란 행은 최대 열 수까지 빈 cell로 채우고 경고를 표시합니다. 모든 cell은 문자열로 두고 타입을 추측하지 않습니다."},{"id":"html-csv-table-converter","href":"/ko/tools/html-csv-table-converter/","title":"HTML Table ↔ CSV","tags":"html csv table","search":"html-csv-table-converter html csv table converter html table ↔ csv  html table 요소와 csv를 정규화된 table json을 거쳐 상호 변환합니다. 병합 cell은 값을 반복한 직사각형으로 펼치고 경고를 표시합니다. csv에는 병합 정보가 없어 html로 되돌려도 병합 표시로는 돌아가지 않습니다. comma가 든 cell은 quoted field로 유지합니다."},{"id":"monochrome","href":"/ko/tools/monochrome/","title":"흑백 변환","tags":"image monochrome black-and-white","search":"monochrome image monochrome black-and-white grayscale filter 흑백 변환 대비와 밝기 조정 ntsc 가중 평균(0.299×r + 0.587×g + 0.114×b)으로 흑백으로 바꾼 뒤 대비와 밝기를 조정합니다. 휘도 가중치가 사람이 보는 방식을 따르므로 단순 평균보다 자연스러운 흑백이 됩니다. 저장 형식은 불러온 파일을 그대로 따릅니다."},{"id":"html-tsv-table-converter","href":"/ko/tools/html-tsv-table-converter/","title":"HTML Table ↔ TSV","tags":"html tsv table","search":"html-tsv-table-converter html tsv table converter html table ↔ tsv  html table 요소와 tsv를 정규화된 table json을 거쳐 상호 변환합니다. 병합 cell은 값을 반복한 직사각형으로 펼치고 경고를 표시합니다. tsv에는 병합 정보가 없어 html로 되돌려도 병합 표시로는 돌아가지 않습니다. tab이 든 cell은 quoted field로 유지합니다."},{"id":"normal-map","href":"/ko/tools/normal-map/","title":"노멀맵","tags":"image normal map 3d","search":"normal-map image normal map 3d texture pbr webgl game 노멀맵 높이 맵·사진에서 생성 높이 맵이나 사진의 명암을 기울기로 읽어 노멀맵을 생성합니다. 강도 슬라이더로 요철의 세기를 정하고 y 반전으로 directx 방향으로 바꿉니다(기본은 opengl과 metal). 컬러 사진은 휘도로 변환해 처리하므로 대비가 강한 흑백 이미지가 가장 깨끗하게 나옵니다."},{"id":"html-json-table-converter","href":"/ko/tools/html-json-table-converter/","title":"HTML Table ↔ JSON","tags":"html json table","search":"html-json-table-converter html json table rowspan colspan html table ↔ json  html table 요소와 정규화된 table json을 상호 변환합니다. rowspan과 colspan은 덮는 각 cell에 값을 반복한 직사각형으로 펼치고 경고를 표시합니다. cell에서는 표시 문자만 가져오며 script는 실행하지 않습니다. 입력에 담을 수 있는 table 요소는 하나뿐입니다."},{"id":"pixelator","href":"/ko/tools/pixelator/","title":"픽셀레이터","tags":"image pixel mosaic","search":"pixelator image pixel mosaic pixelate privacy 픽셀레이터 모자이크 적용 거칠기를 1~30 눈금으로 지정하면 이미지를 축소했다가 다시 확대해 모자이크를 만듭니다. 값이 클수록 블록이 커지고 최대에서는 긴 변이 약 20블록까지 거칠어집니다. 얼굴이나 글자를 읽을 수 없게 만드는 데 적합하며 저장 형식은 불러온 파일을 따릅니다."},{"id":"markdown-json-table-converter","href":"/ko/tools/markdown-json-table-converter/","title":"Markdown Table ↔ JSON","tags":"markdown gfm json","search":"markdown-json-table-converter markdown gfm json table markdown table ↔ json  gfm markdown table과 정규화된 table json을 상호 변환합니다. escape된 pipe와 br 요소는 json으로 되돌리면 원래 cell 문자열로 복원됩니다. inline markdown과 html은 cell 문자열로 유지하며 실행하지 않습니다. 입력은 단일 gfm table만 허용하고 앞뒤 문장은 오류로 처리합니다."},{"id":"scramble","href":"/ko/tools/scramble/","title":"이미지 스크램블","tags":"image encryption privacy","search":"scramble image encryption privacy scramble puzzle security 이미지 스크램블 타일을 섞어 가리기 이미지를 한 변 2~50의 격자 타일로 나눠 비밀번호에서 정해진 순서로 재배열합니다. 같은 비밀번호와 같은 분할 수를 넣으면 되돌릴 수 있지만 둘 중 하나라도 다르면 복원되지 않습니다. 분할 수는 10~20 정도가 기준이며 클수록 더 잘게 흩어집니다. 출력은 png입니다."},{"id":"seamless-texture","href":"/ko/tools/seamless-texture/","title":"심리스 텍스처","tags":"image texture seamless","search":"seamless-texture image texture seamless tile pattern 심리스 텍스처 이음새 없는 타일로 이미지를 4분할해 오프셋 배치하고 가운데로 모인 경계를 마스크로 블렌딩합니다. 상하좌우 끝이 이어지므로 반복해 깔아도 이음매가 눈에 띄지 않습니다. 타일 보기와 단일 보기를 오가며 결과를 확인할 수 있고 출력은 png 또는 jpeg입니다."},{"id":"stamp-maker","href":"/ko/tools/stamp-maker/","title":"스탬프 메이커","tags":"image stamp ink","search":"stamp-maker image stamp ink seal dithering threshold binary 스탬프 메이커 이진화해 인장으로 임계값으로 이미지를 흑백 2색으로 낮춰 인장 자국처럼 마무리합니다. 잉크 색을 고를 수 있고, floyd-steinberg 오차 확산 디더링을 켜면 2색만으로도 사진의 계조가 부드럽게 남습니다. 투명도를 지키기 위해 출력은 png로 고정됩니다."},{"id":"html-markdown-table-converter","href":"/ko/tools/html-markdown-table-converter/","title":"HTML Table ↔ Markdown","tags":"html markdown gfm","search":"html-markdown-table-converter html markdown gfm table html table ↔ markdown  html table 요소와 gfm markdown table을 상호 변환합니다. cell 안의 pipe는 escape하고 줄바꿈은 br 요소로 오가므로 html로 되돌려도 깨지지 않습니다. rowspan과 colspan은 값을 반복한 직사각형으로 펼치고 경고를 표시합니다. inline 표기는 cell 문자열로 유지합니다."},{"id":"steganography","href":"/ko/tools/steganography/","title":"스테가노그래피","tags":"image png metadata","search":"steganography image png metadata security steganography 스테가노그래피 png 안에 파일 숨기기 임의의 파일을 png의 text 청크에 넣고 같은 도구로 다시 꺼냅니다. 픽셀은 하나도 바뀌지 않아 겉모습은 그대로이며, 넣은 만큼 파일만 커집니다. 암호화는 하지 않으므로 민감한 정보는 먼저 암호화하세요. 실용적인 크기는 수 mb 정도입니다."},{"id":"markdown-csv-table-converter","href":"/ko/tools/markdown-csv-table-converter/","title":"Markdown Table ↔ CSV","tags":"markdown csv table","search":"markdown-csv-table-converter markdown csv table converter markdown table ↔ csv  gfm markdown table과 csv를 상호 변환합니다. comma가 든 cell은 csv에서 quoted field로, cell 안의 줄바꿈은 markdown 쪽에서 br 요소로 나눠 씁니다. 열 수가 모자란 행은 최대 열 수까지 빈 cell로 채우고 경고를 표시합니다. 모든 cell은 문자열로 둡니다."},{"id":"markdown-tsv-table-converter","href":"/ko/tools/markdown-tsv-table-converter/","title":"Markdown Table ↔ TSV","tags":"markdown tsv table","search":"markdown-tsv-table-converter markdown tsv table converter markdown table ↔ tsv  gfm markdown table과 tsv를 상호 변환합니다. tab이 든 cell은 tsv에서 quoted field로, cell 안의 줄바꿈은 markdown 쪽에서 br 요소로 나눠 씁니다. 열 수가 모자란 행은 최대 열 수까지 빈 cell로 채우고 경고를 표시합니다. 모든 cell은 문자열로 둡니다."},{"id":"csv-tsv-table-converter","href":"/ko/tools/csv-tsv-table-converter/","title":"CSV ↔ TSV","tags":"csv tsv table","search":"csv-tsv-table-converter csv tsv table converter csv ↔ tsv  csv와 tsv를 상호 변환합니다. comma나 tab이 든 cell은 대상 형식의 규칙으로 다시 quote하고, cell 안의 줄바꿈도 quoted field 안에 유지합니다. 열 수가 모자란 행은 최대 열 수까지 빈 cell로 채우고 경고를 표시합니다. 모든 cell은 문자열로 두고 타입을 추측하지 않습니다."}]