Blog
-
gulpfile.js
스크립트 minification 을 위해 자주 사용하는 gulpfile.js 템플릿 코드
-
콘텐츠 입장에서 구성하고 작성하라
철저히 콘텐츠 입장에서 콘텐츠가 보이는 사람에게 어떻게 전달될지 고민하라. 내가 보는 콘텐츠 관점을 버려라. ‘내’가 콘텐츠를 관리하는 주체라고 생각하여 콘텐츠를 보는 사람과 콘텐츠 사이에 중개체로 나를 끼우는 것은 곤란하다. 언제나 콘텐츠 스스로가 콘텐츠의 관점에서 스스로의 정보를 설명하게 하라. 내가 그 콘텐츠라면? 나를 소개하는 설명서가 이 콘텐츠라면? 이라고 상상해보자.
-
속깊은 JavaScript
도서 정보 링크 이 책은 작년쯤 사두고 방치해 두었다. 여유있을 때 조금씩 책을 읽고 싶은 마음이 들었는데, 방치해둔 책을 끝까지는 읽어보고픈 맘이 들어 읽게 되었다. 읽고 나니, 읽었던 기록을 남기고 싶었다. 간단히 적어 본다. 독서가 습관이 아닌 나, 글쓰기에 서투른 나다. 블로그에 글 적어 봐야 아무도 관심가지지 않을 거라는 확신 하에 적어 본다. 2020년 12월…
-
자동 업데이트 후 이메일 생략하기
요즘 자동 업데이트는 잘 되는 편인데, 굳이 의미없는 이메일을 받는 건 좀 부담스럽다. 이메일 끄는 mu 플러그인을 아래처럼 만들어 붙일 수 있겠다.
-
ownCloud에서 NextCloud로 전환
둘이 은근히 비슷한 점이 있는 것 같은데… ownCloud보다 NextCloud가 훨씬 더 많은 것을 할 수 있는 것 같다. 이제 ownCloud 보다 NextCloud를 사용한다.
-
ESNext #07: Redux Hello, World
Redux는 어플리케이션의 상태 관리를 위한 라이브러리이다. 하도 이 리덕스를 리액트랑 같이 엮어 들었던 탓에 리액트 라이브러리인줄 알았으나, 그렇지는 않더라. 그냥 독립적으로도 사용 가능하다. 얼마 전에 상태 변화가 빡센 웹 앱을 작성한 프로젝트가 있었는데 이런저런 문제로 인해 jQuery 스타일로 매우 빡빡하게 만들었다. 어떻게는 완료하였으나 Redux를 조금 더 일찍 알았더라면 보다 깔끔하고 완성도 높은 결과물이 나왔을걸 하고…
-
wp_localize_script()로 숫자를 전달할 때
아래 예제 코드와 결과를 보면 명확하다. wp_localize_script() 로 전달한 연관 배열의 최상위 키의 값들은 모두 문자열로 변경된다. 때때로 PHP 측에서 자바스크립트 쪽으로 값을 전달할 때 타입이 달라 의도치 않은 버그를 낼 때가 있다. 이것은 wp_localizae_script() 함수의 알짜인 WP_Scripts::localize() 함수 구현에서 이유를 찾을 수 있다. 함수 내부에서 배열 내부의 키/값을 순회하면서 값을 문자열로 캐스팅한다. 단, 스칼라가…
-
우커머스 장바구니 추가 로직에 대해 노트
우커머스 상거래 중 기본이 되는 작업 중 하나는 장바구니에 물건을 담는 과정일 것이다. 관련 플러그인 개발을 하면서 자꾸 이 부분을 반복하게 된다. 하여 이 과정을 아주 간단하게 노트한다. 우커머스에는 기본적으로 네 가지 상품 타입이 존재한다. 기본 상품 (simple) 옵션 상품 (variable) 그룹 상품 (grouped) 외부 상품 (external) 이중 외부 상품은 사이트 외부의 상품을 단순 링크할…
-
Web IDE: REPL
https://repl.it/
-
captcha
구글 reCaptcha가 월 1백만건 초과건에 대한 사용량에 따라 요금을 내야 한다고 한다. hCaptcha는 좋은 대안이 될 수 있을 것 같다. 엔터프라이즈가 아니라면 무제한으로 사용할 수 있다. 워드프레스나 설치형으로 작성하려면 BotDetect Captcha 가 대안이 될 것이다.
-
SSH Remote Forwarding으로 개발 서버를 임시 노출하기
개발 서버는 내부 네트워크 안에 있어 외부에서는 접속이 불가하다. 그러나 가끔 외부 네트워크에 노출해야만 하는 경우가 발생한다. 이 때 SSH 터널링으로 외부에 있는 서버를 경유하여 내부로의 접근이 가능하게 할 수 있다. 다음 스텝을 따라해 보자. 원격 서버에 접속할 때 포워딩할 포트를 지정한다. 여기서는 12000번이라고 가정한다. 만약 원격 서버도 공유기 같은 장비에 물려 있다면 12000번으로 포트…
-
혼잣말
당뇨는 습관의 질병.
-
Heartbeat 주기 설정하기
Heartbeat Control 같은 플러그인이 있지만, 굳이 플러그인까지 쓸 필요 없다. 간단한 몇 줄의 코드로 주기 설정이 가능하다. 우선, heartbeat가 어떻게 동작하는지 간단하게 설명한다. heartbeat는 특정 관리자 페이지 접속시 브라우저와 주기적으로 통신한다. 이 주기는 자바스크립트의 setTimeout() 함수로 구현되며, 기본값은 관리자 페이지에 포커스가 있을 때 15초, 해당 페이지에서 포커스를 잃었을 때 120초로 설정된다. 이 120초는 하드코딩되어 있어…
-
멀티사이트의 멀티사이트, 멀티 네트워크
멀티 사이트는 여러 워드프레스 사이트를 하나의 설치본으로 관리할 수 있게 한다. 이렇게 만들면 데이터베이스에는 추가적으로 테이블이 생기게 된다. 이 중 wp_blogs, wp_site 가 눈에 뜨인다. 보통 멀티사이트를 만들면 wp_blogs 에는 멀티로 만든 사이트 목록이 기록된다. 그리고 wp_site는 주로 단일 레코드가 기록될 것이다. 그런데 wp_site의 레코드를 통해 멀티사이트의 확장이 가능하다. 즉, 하나의 워드프레스 설치본으로 멀티사이트를 여러…
-
혼잣말
즐거운 삶을 살자.
-
ESNext #6: Hooks
훅 기능은 워드프레스에서 구현한 기능이며 일반적인 자바스크립트가 아니지만, 카테고리를 간결하게 유지하고 싶어 이 곳에 작성한다. PHP에서 작성된 add_action, add_filter 같은 훅 제어가 JavaScript에서도 아주 유사하게 작성되어 있다! 자바스크립트가 비동기 방식이고, 이벤트 핸들링을 위해 콜백 함수를 쓰는 것이 매우 일상적이긴 하지만, 자바스크립트 고유의 콜백 방식을 쓰기는 조금 난감할 때가 있는데, 이 패키지를 사용하면 문제 없이 훅을…
-
ESNext #5: 동적 렌더링과 사이드바에 커스텀 필드 편집
지난 포스트에서는 블록의 속성값에 대해 간단하게 알아 보았다. 블록이 어떻게 자신의 값을 저장하고 표현하는지 알 수 있었다. 블록은 HTML 주석 부분에 블록이 필요한 데이터를 JSON 형태로 저장하거나, 자신이 가지고 있는 HTML 마크업 구조에서 가져올 수 있고, 또 커스텀 필드로부터 가져올 수 있다. 단, 블록 자체는 HTML 코드 그대로 기록하기 때문에 이런 동적인 값들을 표현하려면 생짜…
-
혼잣말
나는 뮐 위해 사는 건지?
-
혼잣말
검색엔진이 사랑하는 내 블로그. 아니 검색엔진만 사랑하는 내 블로그. ㅋㅋ.