- 화면 순서 타이틀바, 사용설명서, 미리보기, 설정 알약, 시작페이지 안내 순서입니다.
- 미리보기 위쪽 알약(알람·현재시간·타이머·카운트다운·백타임·루틴)을 누르면 그 항목이 탭 모양으로 보이고, 바로 아래 설정 탭도 같은 항목으로 열립니다. 아래 설정 알약을 눌러도 같습니다.
- 파란 알약 파란색에 "적용중"이 붙은 알약이 지금 미리보기와 탭에 보이는 항목입니다. 공통 설정은 표시 항목이 아니라서 파란색이 되지 않습니다.
- 알람 시간과 문구를 쓰고 [알람 추가]를 누르면 목록에 쌓입니다. 시각이 되면 탭 제목이 깜빡이며 문구가 나오고, 스크롤 메모가 있으면 메모가 흘러갑니다. [매일 반복]을 끄면 한 번만 울립니다.
- 현재시간 년·월일·요일·시·분·초 중 보일 항목을 고르면 탭 제목에 시계가 표시됩니다.
- 타이머 시·분·초를 쓰고 [시작]을 누릅니다. [일시정지]한 뒤 [시작]을 누르면 이어서 갑니다. 끝나면 깜빡이고 소리가 납니다.
- 카운트다운 목표 날짜·시각을 정하면 D-일수 또는 일·시·분·초로 남은 시간이 보이고, 시각이 되면 알림이 울립니다.
- 백타임 목표 시각까지 남은 시간이 거꾸로 흐릅니다. 항목을 여러 개 추가할 수 있고, 가장 가까운 항목이 탭에 보입니다. 시각이 되면 문구가 나옵니다.
- 루틴 시각과 반복(매일·평일·요일 선택)을 정해 추가합니다. 시각이 되면 루틴 이름이 탭에 나옵니다.
- 알림 끄기 알림이 울리는 동안 미리보기에 [알림 끄기]가 나타납니다. 정한 지속 시간이 지나면 저절로 멈춥니다.
- 공통 설정 초 단위 표시 여부, 평상시 문구 움직임(고정·깜빡임·스크롤·둘 다), 알림 방식·소리·지속 시간을 정합니다. 알람과 타이머는 항목 안에서 따로 정한 깜빡임 방식을 먼저 따릅니다.
- 완전초기화 입력한 설정과 목록, 타이머를 모두 지웁니다. 한 번 더 눌러야 실행되고 4초 안에 안 누르면 취소됩니다. 지운 뒤에도 [되돌리기]로 복구할 수 있습니다.
- URL생성 입력한 설정을 압축해 링크로 만들고 바로 복사합니다. 공유 창에서 원래 URL, 단축 URL, QR을 고릅니다. 입력한 설정이 없으면 만들지 않습니다.
- 적용 미리보기에 보이는 제목과 아이콘을 지금 이 브라우저 탭에 적용합니다. 미리보기의 [이 탭에 적용]과 같은 기능이라 둘이 함께 켜지고 꺼집니다. 알림이 울릴 때는 적용을 켜지 않아도 탭이 바뀝니다.
- 공유 URL생성과 같은 공유 창을 열지만 복사는 하지 않습니다. 단축 URL은 외부 서비스(is.gd)를 거치므로 인터넷이 필요합니다.
- 저장 엑셀에 붙여넣을 표, CSV 파일, 설정이 담긴 이동용 HTML 파일(열면 0-1.kr/45로 이동하며 설정 복원)을 만듭니다. 아이폰은 새 창에 내용이 나오니 복사해서 저장하세요.
- 전구 이 사용설명서를 펼쳐 보여줍니다.
- 자동저장 입력할 때마다 4초 안에 이 기기에 저장되고, 다시 열면 이어서 복구됩니다. 타이머가 돌고 있었다면 남은 시간도 이어집니다. 링크로 열면 링크 안의 설정이 우선합니다.
- 되돌리기·되살리기 설정 알약 위 두 버튼으로 최근 60단계까지 오갈 수 있습니다.
- 탭을 닫았을 때 같은 기기와 브라우저라면 다시 열 때 자동으로 복구됩니다. 다른 기기에서는 [URL생성]으로 만든 링크를 댓글이나 메모에 남겨 두고 그 링크를 여세요.
- 알림이 울리려면 이 페이지가 열려 있어야 합니다. 탭을 닫으면 알림도 멈춥니다. 다른 탭을 보고 있어도 탭 제목은 바뀝니다. 컴퓨터가 절전 상태이면 그 사이의 알림은 울리지 않습니다.
- 브라우저 제한 탭 글꼴은 바꿀 수 없어서 유니코드 글자, 이모지, 아이콘 숫자로 표현합니다. 브라우저 하단 작업표시줄의 깜빡임은 페이지가 직접 제어할 수 없습니다.
- 시작페이지 이 페이지를 브라우저를 켤 때 자동으로 열리게 하는 방법은 맨 아래 [시작페이지로 설정하기]에 있습니다.
이 설명은 V6 기준입니다. 기능이 바뀔 때마다 함께 고칩니다.
미리보기
공통 설정
모든 시간 표시에 초 단위를 넣을까요?
분까지만 고르면 탭 제목이 1분 단위로만 바뀌어 덜 신경 쓰입니다. 현재시간의 [초] 체크와 함께 적용됩니다.
평상시 문구는 어떻게 움직일까요?
스크롤은 16자보다 긴 문구에만 적용됩니다. 알림이 울릴 때는 아래 설정과 항목별 깜빡임 방식을 따릅니다.
소리는 이 페이지를 한 번 눌러 본 뒤부터 울립니다. 폰은 무음 모드와 음량을 확인하세요.
1. 알람 · 스크롤 메모
알람 시간이 되면 탭 제목에 문구가 나오고 깜빡입니다. 문구와 메모를 쓰고 [알람 추가]를 누르면 목록에 쌓입니다.
2. 현재시간
탭 제목에 현재 시각을 보여줍니다. 표시할 항목을 고릅니다. 공통 설정에서 초 단위를 끄면 [초]를 체크해도 표시하지 않습니다.
3. 타이머
시간을 정하고 [시작]을 누르면 줄어듭니다. 끝나면 탭이 깜빡이고 소리가 납니다. 일시정지 후 이어서 시작할 수 있습니다.
4. 카운트다운
정한 날짜와 시각까지 남은 시간을 탭 제목에 보여줍니다. 발표일, 접수 마감일에 씁니다. 시각이 되면 알림이 울립니다.
5. 백타임
목표 시각을 정하면 지금부터 그 시각까지 남은 시간이 거꾸로 흐릅니다. 지금 17시에 목표를 18시로 하면 1시간이 흘러갑니다. 항목을 여러 개 추가할 수 있고, 시각이 되면 문구를 띄웁니다.
6. 루틴
하루 일정, 약 먹는 시간, 물 주는 시간처럼 반복되는 알림을 모읍니다. 시각이 되면 이름이 탭에 나옵니다.
- 같은 기기와 브라우저라면 이 페이지를 다시 열면 4초마다 저장된 설정이 돌아옵니다.
- [공유]로 만든 링크를 댓글에 남겨 두면, 다른 기기에서도 그 링크로 열어 복구합니다.
- 잘못 바꿨다면 되돌리기로 직전 상태를 불러옵니다.
이 페이지가 스스로 시작페이지나 고정 탭이 될 수는 없습니다. 브라우저 설정에서 직접 지정해야 하고, 방법은 두 가지입니다.
방법 A. 시작할 때 열기 브라우저를 켤 때 지정한 주소가 탭으로 열립니다. 주소를 여러 개 넣으면 탭이 여러 개 열리므로, 평소 쓰는 시작페이지 다음에 0-1.kr/45를 두 번째 주소로 넣어 두 번째 탭으로 둘 수 있습니다.
방법 B. 탭 고정 탭을 우클릭해서 고정하면 맨 앞에 작은 탭으로 붙고, 브라우저를 껐다 켜도 다시 열리는 경우가 많습니다. 브라우저와 시작 설정에 따라 다를 수 있으니 한 번 확인해 보세요.
주소 팁 주소에는 0-1.kr/45를 넣습니다. 설정까지 함께 열고 싶다면 [공유]로 만든 원래 URL(0-1.kr/45 뒤에 ?bt=…가 붙은 주소)을 넣습니다. 이 경우 설정을 바꿀 때마다 시작페이지 주소도 다시 등록해야 합니다. 블로그 주소가 바뀌면 시작페이지도 다시 등록하세요.
알림 팁 크롬은 5분 넘게 가려진 탭의 타이머를 1분에 한 번 정도로 늦춥니다. 이때는 깜빡임과 스크롤이 끊길 수 있습니다.
- 오른쪽 위 점 세 개 [Chrome 맞춤 설정 및 제어]를 누르고 [설정]으로 들어갑니다.
- 아래로 내려 [시작 그룹]을 찾습니다.
- [특정 페이지 또는 페이지 모음 열기]를 선택하고 [새 페이지 추가]를 누릅니다.
- 주소 칸에 https://0-1.kr/45를 넣고 [추가]를 누릅니다. 다른 주소도 같은 방식으로 더하면 적은 순서대로 탭이 열립니다.
- 탭 고정은 탭 위에서 우클릭한 뒤 [고정]을 고릅니다.
화면 문구는 크롬 버전에 따라 조금 다를 수 있습니다.
- 오른쪽 위 [더보기] 점 세 개를 누르고 [설정]으로 들어갑니다.
- 왼쪽 메뉴에서 [시작, 홈 및 새 탭]을 누릅니다.
- [다음 페이지를 열 수 있습니다]를 선택합니다.
- [새 페이지 추가]를 누르고 https://0-1.kr/45를 넣은 뒤 [추가]를 누릅니다. 여러 개는 같은 방법을 반복합니다.
- 탭 고정은 탭 위에서 우클릭한 뒤 [탭 고정]을 고릅니다.
휴대폰 엣지는 시작할 때 여러 페이지를 여는 설정을 보지 못했습니다. 설정 → 일반에서 시작 화면 방식과 홈페이지 하나를 정할 수 있습니다.
- 먼저 https://0-1.kr/45를 포함해 시작할 때 열고 싶은 사이트를 각각 탭으로 엽니다.
- 오른쪽 위 메뉴(줄 세 개)에서 설정으로 들어갑니다.
- 왼쪽 [홈]에서 [새 창 및 새 탭] 항목을 찾습니다.
- [홈페이지 및 새 창]을 [사용자 지정 URL]로 바꾸고 [현재 페이지 사용]을 누릅니다. 열려 있던 주소가 세로줄(|)로 나뉘어 들어갑니다.
- 브라우저를 다시 켜서 확인합니다.
참고한 자료가 2020년 글이라 지금 화면과 문구가 다를 수 있습니다.
- 메뉴 막대에서 Safari → [설정] → [일반]으로 들어갑니다.
- [홈페이지]에 https://0-1.kr/45를 넣습니다.
- 새 윈도우와 새 탭이 홈페이지로 열리도록 같은 화면에서 고릅니다.
- 탭 고정은 탭 위에서 우클릭한 뒤 [탭 고정]을 고릅니다.
공식 문서로 확인하지 못한 내용이라 버전에 따라 다를 수 있습니다. 홈페이지는 하나만 넣을 수 있는 것으로 알고 있습니다.
- 0-1.kr/45 페이지를 열어 둔 채로 메뉴에서 [설정]에 들어갑니다.
- [인터넷 설정] 화면에서 [홈페이지]를 누릅니다.
- [현재 페이지]를 고르면 지금 열린 주소가 첫 화면으로 등록됩니다. 다른 주소는 [사용자 설정]에서 직접 넣습니다.
홈페이지는 하나만 정할 수 있습니다. 확인한 범위에서는 휴대폰과 태블릿 브라우저에 여러 페이지를 동시에 시작 탭으로 여는 설정이 없었습니다.
공유
저장
'+esc(VER)+' 으로 이동합니다. 이동하지 않으면 여기를 누르세요.
' +' \n'; } function refreshSave(){ var u=buildUrl(); $('bt-x-box').value=toText(buildRows(),'\t'); $('bt-h-len').textContent=u.length+'자'; $('bt-h-stat').textContent=u.length>8000?'주소가 길어 일부 브라우저에서 열리지 않을 수 있습니다. 엑셀(CSV)도 함께 저장하세요.':'파일을 열면 0-1.kr/45로 이동하고 설정이 채워집니다.'; } function closeUI(){ if(curPop){$(curPop).hidden=true;} curPop=''; document.body.classList.remove('bt-popup-open'); document.body.style.overflow=prevOverflow; popOpen=false; } function openPop(id){ if(popOpen){closeUI();} if(id==='bt-pop'){refreshPop();}else{refreshSave();} $(id).hidden=false; curPop=id; document.body.classList.add('bt-popup-open'); prevOverflow=document.body.style.overflow; document.body.style.overflow='hidden'; popOpen=true; hideTip(); try{if(location.hash!=='#btp'){location.hash='btp';}}catch(err){} } function closePop(){ if(!popOpen){return;} closeUI(); try{if(location.hash==='#btp'){history.back();}}catch(err){} } window.addEventListener('hashchange',function(){ if(popOpen&&location.hash!=='#btp'){closeUI();} },false); document.addEventListener('keydown',function(e){ if(popOpen&&(e.key==='Escape'||e.keyCode===27)){closePop();} },false); function makeShort(){ var st=$('bt-s-stat'); st.textContent='단축 URL을 만드는 중입니다…'; fetch('https://is.gd/create.php?format=json&url='+encodeURIComponent(origUrl)).then(function(r){return r.json();}).then(function(d){ if(d&&d.shorturl){ shortUrl=d.shorturl; $('bt-s-box').value=shortUrl; $('bt-s-len').textContent=shortUrl.length+'자 (원래의 '+Math.round(shortUrl.length/origUrl.length*100)+'%)'; st.textContent='만들었습니다. 복사하거나 공유하세요.'; }else{ throw new Error((d&&d.errormessage)||'응답 오류'); } }).catch(function(err){ st.textContent='단축에 실패했습니다. 잠시 뒤 다시 시도하거나 원래 URL을 쓰세요. ('+(err&&err.message?err.message:'네트워크 오류')+')'; }); } bind($('bt-share'),function(){openPop('bt-pop');}); bind($('bt-save'),function(){openPop('bt-spop');}); bind($('bt-pop-close'),closePop); bind($('bt-pop-bg'),closePop); bind($('bt-spop-close'),closePop); bind($('bt-spop-bg'),closePop); bind($('bt-o-copy'),function(){copyText(origUrl,'원래 URL을 복사했습니다');}); bind($('bt-o-qr'),function(){showQR('o',origUrl,true);}); bind($('bt-o-qrsave'),function(){saveQR('o');}); bind($('bt-o-share'),function(){shareText(origUrl);}); bind($('bt-s-make'),makeShort); bind($('bt-s-copy'),function(){if(!shortUrl){toast('먼저 단축 URL을 만드세요');return;}copyText(shortUrl,'단축 URL을 복사했습니다');}); bind($('bt-s-qr'),function(){showQR('s',shortUrl,false);}); bind($('bt-s-qrsave'),function(){saveQR('s');}); bind($('bt-s-share'),function(){shareText(shortUrl);}); bind($('bt-x-copy'),function(){copyText($('bt-x-box').value,'엑셀에 붙여넣을 내용을 복사했습니다');}); bind($('bt-x-file'),function(){saveFile(fname('csv'),''+toText(buildRows(),','),'text/csv;charset=utf-8');}); bind($('bt-h-file'),function(){saveFile(fname('html'),redirectHtml(buildUrl()),'text/html;charset=utf-8');}); bind($('bt-h-copy'),function(){copyText(redirectHtml(buildUrl()),'HTML 내용을 복사했습니다');}); /* ---------- 타이틀바 버튼 ---------- */ var resetArmed=false,resetTimer=null,b1=$('bt-b1'); function disarm(){ resetArmed=false; clearTimeout(resetTimer); b1.textContent='완전초기화'; b1.classList.remove('bt-danger'); } function doReset(){ clearTimeout(histTimer);pushHist(); resetAll(); tm.run=false;tm.rem=0; rings.length=0; stripBt(); setApply(false,true); setMode('al'); markDirty(); clearTimeout(histTimer);pushHist(); autosave(true); toast('설정을 모두 지웠습니다. 되돌리기로 복구할 수 있습니다'); } bind(b1,function(){ if(!resetArmed){ resetArmed=true; b1.textContent='한 번 더 누르면 지웁니다'; b1.classList.add('bt-danger'); resetTimer=setTimeout(disarm,4000); return; } disarm(); doReset(); }); bind($('bt-b2'),function(){ if(!shareState()){toast('입력한 설정이 없습니다. 먼저 설정을 입력하세요');return;} var u=buildUrl(); copyText(u,'URL을 만들어 복사했습니다 ('+u.length+'자)'); openPop('bt-pop'); }); bind($('bt-bulb'),function(){ var h=$('bt-h0'),body=$('bt-p0'); h.setAttribute('aria-expanded','true'); body.hidden=false; try{$('bt-sec1').scrollIntoView({behavior:'smooth',block:'start'});}catch(err){} toast('사용설명서를 열었습니다'); }); bind($('bt-addr-copy'),function(){copyText($('bt-addr').value,'주소를 복사했습니다');}); window.addEventListener('scroll',hideTip,false); window.addEventListener('resize',hideTip,false); window.addEventListener('pagehide',function(){autosave(true);},false); $('bt-title').setAttribute('data-ver',VER); /* ---------- 시작 ---------- */ (function boot(){ var sv; if(restoreFromUrl()){ toast('링크의 설정을 불러왔습니다'); }else{ sv=loadSaved(); if(sv){setState(sv,true);toast('이전 설정을 복구했습니다');} else{setState(null,false);} } pushHist(); render(); updateLive(); setSaved(); $('bt-saved').textContent='자동저장 4초마다'; setInterval(function(){autosave(false);},4000); startTicker(); })(); })();