191205 블로그 제작일지

191205 블로그 제작일지

캐시 헤더 캐싱 초보의 비애에서도 정리했지만, 캐시 헤더를 올바르게 추가해서 캐시가 제대로 동작합니다. 과하게 잘 돼서 문제였죠. HTML엔 캐시 헤더가 들어가지 않도록 해뒀습니다. Cache-Control 보시면 HTML 파일엔 no-cache가 들어가 있는 걸 보실 수 있을 겁니다. 각종 최적화 이제 무작정 늘어놓기보단 최적화도 좀 하면서 일을 벌일까 생각 중입니다. 워드프레스는 각종 쿼리 덕에 사이트 편집이 쉽지만, 쿼리...
[자바스크립트] 현재 중심적인 시간 표시하기

[자바스크립트] 현재 중심적인 시간 표시하기

"2019.12.04 23:00" 처럼 표기된 시간을 현재 시각을 기준으로 "13분 전" 처럼 변경하는 스크립트입니다. 아래 작성한 코드는 티스토리에 적용하는 용도로 작성한 코드인데, 시간 바꾸는 부분만 응용하시면 어디서든 사용하실 수 있지 싶네요. function date() {   const now = new Date().getTime();   [...document.querySelectorAll(".date a")].forEach(a => {       a.classList.add("abuseReport");       a.parentNode.parentNode.appendChild(a);   });   //티스토리 댓글 신고 버튼 밖으로 뺴기   [...document.querySelectorAll(".date")].forEach(a => {       if (!a.classList.contains("modded")) {           const text = a.innerText.trim(),               date = new Date(text).getTime(),               diff = (now - date)/1000,               dayDiff = Math.floor(diff/86400);           a.innerText = `${               diff < 86400               ? (                   text.length > 13                   //글자가 13자 초과면 보통 시간 정보가 있으니 13자 초과일 때만 n시간 전으로 표시                   ? (                       diff < 240 ? "방금" : diff < 3600 ? `${Math.floor(diff/60)}분 전` : `${Math.floor(diff/3600)}시간 전`                   )                   : (                       "오늘"                   )               )...
캐싱 초보의 비애

캐싱 초보의 비애

10월 24일에 적은 제작일지에서 캐시 헤더를 추가했다고 적었는데, 일단 거기서부터 틀렸습니다. 제일 먼저 .htaccess를 수정해 코드를 작성했습니다. 제가 어드민이라 conf 파일을 수정할 수 있음에도요. 더 큰 문제는 서버에 캐시 헤더를 추가하기 위한 모듈이 설치되어 있었지만 저는 그 모듈을 활성화하지 않고 모듈이 활성화돼있으면 캐시 헤더를 설정하는 코드만 추가해뒀고, 당연히 캐싱은 제대로 작동하고 있지 않았습니다. 그제 그...
왜 텅 빈 Array는 true인가

왜 텅 빈 Array는 true인가

자바스크립트가 좀 이상한 구조를 보이는 부분이 많아서 그런지 그냥 사용자가 많아서 그런지 자바스크립트를 까는 밈이 여기저기 많더라고요. this는 꽤 예전엔 진심으로 까는 사람도 많았고, [] == 0이고 "\t" == 0이지만 [] != "\t"인 기묘한 등식([] != []인데 [] == "\t"인게 더 기묘하지 않았을까 싶지만)을 이용한 건 물론이거니와, 자바스크립트의 기묘함을 이용해 []()!+ 만으로 코딩하는 JS**ck까지 꽤...
[티스토리] 원하는 태그만 랜덤으로 출력하기

[티스토리] 원하는 태그만 랜덤으로 출력하기

티스토리에서 기본적으로 랜덤 태그 치환자를 제공해줍니다만, 원하는 태그 몇 개 안에서만 랜덤으로 태그를 출력하고 싶으실 때 이 스크립트를 사용하시면 됩니다.*주의 : 티스토리 치환자와 달리 cloud(숫자) class를 추가하실 수 없습니다. randomTag = (tags, element, count) => {   const target = document.getElementById(element);   let i = 0;   for (i; i <= count; i++) {     const random = Math.floor(Math.random() * tags.length),       a = document.createElement('a');          tags[random] !== undefined && (       a.href = `/tags/${encodeURI(tags[random])}`,       a.innerHTML = tags[random],       tags.splice(random, 1),       target.append(a)     )   } }; 위 스크립트를 </body> 앞에 추가하신 뒤 randomTag(['원하는', '태그를', '여기에', '입력'], '태그가 들어갈 요소 ID', 10) 제일 마지막에 들어간 숫자는...
191125 블로그 제작일지

191125 블로그 제작일지

서버 서버에 간단한 것들을 자동화했습니다. 1. 한 달에 한 번 SSL 인증서(Let's Encrypt)의 갱신을 시도합니다.2. 매일 04시에 업데이트를 진행합니다.3. 매일 04시 30분에 서버 컴퓨터를 재부팅 합니다. php 모듈도 몇 개 추가로 설치했는데, 쓸 일이 있을진 모르겠네요… 포스트 리스트 썸네일 중심의 Masonry 리스트를 좀 수정했습니다. 상하 / 좌우 간격을 조금 줄이는 동시에, 기존엔 상하 / 좌우...
191115 블로그 제작일지

191115 블로그 제작일지

오랜만에 올리는 제작 일지네요.티스토리 스킨 제작하느라 제 블로그의 업데이트는 조금 소홀해졌습니다. 😥 이제 완성 단계에 접어들어서, 조만간 다시 열심히 업데이트할 수 있지 않을까 싶네요. 서버 관련 1. 워드프레스 버전을 5.3으로 올렸습니다.2. 제 로컬 환경이 아니면 로그인 페이지에 접근할 수 없도록 업데이트했습니다. 이제 저도 외부에서 블로그 관리 페이지에 접근하려면 집 컴퓨터에 원격 접속을 해야 합니다…3. 아무도...
[자바스크립트] 이미지의 우클릭만 방지하기

[자바스크립트] 이미지의 우클릭만 방지하기

가끔 웹서핑하다 보면 텍스트를 복사해가라고 해뒀는데, context menu를 막아둬서 모바일에선 복사할 수 없을 때가 있습니다.무분별하게 퍼진 우클릭 방지 스크립트 때문이지 싶은데, 원하시는 게 이미지의 우클릭 방지라면 이미지의 우클릭만 막을 수 있습니다. document.addEventListener("contextmenu", e => {     e.target.matches("img") && e.preventDefault() }) 심화 우클릭 방지에서 나아가 위 사진처럼 우클릭을 한 위치에 저작권 문구를 표기하는 커스텀 우클릭 메뉴 (context menu, 이하 컨텍스트 메뉴)를 만드실...
[자바스크립트] 한 번만 실행되는 Event Listener

[자바스크립트] 한 번만 실행되는 Event Listener

가끔 onclick, onerror 등의 이벤트가 한 번만 실행돼야 할 때가 있습니다. 가령 이미지에 에러가 있을 때 그 이미지를 다른 이미지로 교체하는 함수를 만들었을 때, 교체된 이미지에도 에러가 있다면 여러분은 콘솔에 찍히는 어마어마한 양의 404 에러를 보실 수 있을 겁니다.잡렉은 덤이고요. 다행히도, 위와 비슷한 상황을 예방할 수 있도록 이벤트 리스너가 한 번만 작동하게 할 수 있는 간단한 방법이...