Vue에서 모바일 기기의 소프트 키보드가 열려있는지 확인하는 방법
```javascript
```javascript
며칠 전에 Yarn4가 나왔다. 조만간 업그레이드 하려고 생각했으나, 문제는 당장 터졌다.
iframe의 js 코드에서 부모창의 dom을 찾으려면 parent.document 객체에서 검색해야 한다.
QueryCache에서 error response body를 캐싱하지 않도록 하자.
react-query의 useQuery는 state 저장소의 역할을 할 수 있다. useQuery의 return값은 어느 컴포넌트에서 조회하든 같은 값을 반환한다.
react-query에서 특정 mutation을 수행하고, mutation이 완료될 경우 특정 함수를 실행하려면 어떻게 해야할까? react-query는 mutation을 수행할 때마다 mutationCache를 update한다. 따라서 mutationCache의 변경을 subsc...
객체에 조건부로 프로퍼티를 추가할 때 사용하는 방법.
javascript Set 자료형에 object를 element로 넣는다면, 각 element가 unique한지 어떻게 구별하는 기준은 무엇일까? object 안의 property value까지 비교할까?
진행 중인 transition이 취소되면? transitionEnd event가 발생하지 않는다. 이렇게 되면 transitionEnd를 기준으로 event를 발생시키는 javascript 앱에 오류가 발생한다.
Android mobile chrome에서는 알 수 없는 이유로 scroll이 최상단, 최하단까지 이동하지 않는 경우가 있다.
요약: safari는 scrollIntoView의 모든 option을 지원하지 않음 reference: https://caniuse.com/?search=scrollIntoView safari 13, 14에서 test함 오류 목...
Working code link: CodePen
Lodash 사용 예제를 정리해보았다. 왜냐면 내가 자꾸 잊어먹기 때문… 계속 업데이트 할 예정이다.
Chrome browser 기준이다.
Vue.js에서 lodash의 remove 함수가 제대로 동작하지 않는다. 보다 정확히 말하자면, Vue.js에서 watching 중인 reactive array에서 element를 _.remove(array, fn) 해도, Vue.js는 이를 감지하지 못한다.
새로 나온 Node.js 디버깅 도구(?)
Server for FCM Admin
0. JavaScript Logger
It is working code on my blog
Login with Email and password
Where is Uploader component?
Rotate images by EXIF orientation infomation
I made a game using Vue.js, vuetify, firebase.
For Exporting JSON to Excel file, SheetJS is useful. SheetJS is complicated to use, but powerful and well maintained. I tried to use vue-json-excel, but on v...
1. vitest 설정
After Upgrading vue-cli from v3 to v4, you got an error message like below on typing any npm script.
dispatch를 쓰면 된다.
Working code link: CodePen
Vue CLI를 사용하다 보면 이런 에러가 발생할 때가 있다.
Vue.js devtools v5 beta가 나왔다. performance, routing 등 여러 추가 기능이 있지만 무엇보다 중요한 것은,
Vue.js에서 lodash의 remove 함수가 제대로 동작하지 않는다. 보다 정확히 말하자면, Vue.js에서 watching 중인 reactive array에서 element를 _.remove(array, fn) 해도, Vue.js는 이를 감지하지 못한다.
I made a game using Vue.js, vuetify, firebase.
firebase cli로 firebase hosting에 Vue.js로 만든 SPA를 배포하는 순서를 정리해보았다.
UPDATE: 오류 발생 확인(v2.9.1)
지난 주에 vuetify를 사용하여 서비스를 하나 만들었다. vuetify의 번잡함(?)에 질려(?), 비교적 깔끔해보이는 element-ui를 사용하여 서비스를 만든 후, 후기를 적어보았다.
Vuex is very useful library for Vue.js. However… when handling form like input tag with Vuex, setting up two way binding is somehow complicated and you need ...
고뇌
For Exporting JSON to Excel file, SheetJS is useful. SheetJS is complicated to use, but powerful and well maintained. I tried to use vue-json-excel, but on v...
Vue.js에서 화면을 이동 혹은 변경할 때, 나는 2가지 방법 중 하나를 사용한다.
버스에서 간단히 읽으려고 집어든 책인데, 얇은 두께에도 불구하고 의외로 깊이가 있어 놀랐다. 일단 이 책은 초보자용 책은 아니다. 책 표지에도 초중급 독자를 대상으로 한다고 (작게) 써져있다. Vue.js에 대해 어느 정도 알고 있고, 적어도 실전 프로젝트로 개발을 하고 있는 분들...
설문조사 서비스를 만들었다. Vue.js와 SurveyJS를 사용하여 SPA로 만들었다. 소스코드는 여기서 볼 수 있다.
무슨 서비스가 되었든 로그인(인증)을 구현하기란 상당히 까다롭다. 요즘에는 좋은 라이브러리나 모듈이 많이 있어 그 고통에서 많이 해방되었지만, 여전히 이런저런 사정상 직접 구현해야 하는 경우도 있다. 이번에는 내가 그런 경우다. 그래서 하나 만들어보았다. 로그인 화면이 수문장처럼 ...
Vue.js로 만든 기존 코드를 es6로 바꾸는 작업을 하고 있다. 하다보니 methods를 정의할 때, 화살표 함수를 사용하면 안된다는 사실을 알게됐다. 아래와 같이 정리해 보았다. 이 글로부터 큰 도움을 받았다.
나는 글쓰기를 제법 어려워하는데, 모든 글은 재미있어야 한다는 강박관념 때문이다. 물론 재미있는 글을 쓰기란 어렵다. 기술 문서라면 더더욱 그렇다. 하지만 놀랍게도 이 책은 성공했다. 훌륭한 기술 문서이면서도 재미있다. 도대체 무슨 짓을 한걸까?
나는 JavaScript가 어렵다. 일단 언어 자체부터 상당히 난해하다. 뿐만 아니라 하루가 멀다하고 새로운 기술이 나온다. 그냥 또 뭔가 나왔는가보다 하고 넘기기에는 너무나 매력적인 기술이라 놓칠 수도 없다. 그러는 사이에 세월은 흘렀고, 어느새 JavaScript는 단지 언어 ...
webpack 시작 Vue.js 등의 프론트엔드 프레임워크를 사용해서 개발을 시작하면 webpack 사용을 피할 수 없다. webpack에서는 webpack-dev-server를 제공하는데, 개발시에 로컬 웹서버 역할을 해준다. webpack의 설정은 상당히 복잡하지만, 대부분...
1. ‘Promise’이(가) 정의되지 않았습니다.
Update! 2019-08-04
프린터 구매를 위해 프린터 사용기를 구글링해보았다. 놀랍게도 유용한 리뷰는 드물었다. 이제 프린터가 IT의 한 축이던 시대는 영원히 끝나버린건가. 조지 소로스의 오픈 소사이어티 재단의 주요 사업 중 하나가 복사기 보급 아니었던가. 제록스가 한 때 IT의 선두주자 아니었던가. 아쉬운...
개발이란 참 묘한 것이다. 어떤 언어나 프레임워크든 처음 배울 때는 무진장 어렵고, 눈에 익기 시작하면 쉽고 재미있으며, 익숙해지면 이제 개발의 달인이 된 것 같다. 그리고 시간이 더 흐르고 난 어느 시점에 불현듯 이런 생각이 든다. 내가 알기는 아는 것 같은데, 정말로 제대로 알...
짧고 재미있어 하루도 안 걸려 읽어내렸다. 나도 SI에서 개발자 일을 시작했다. 경영학과 출신의 IT비전공자였고, 개발에 대해서는 아무런 지식도 없었다. 벌써 9년 전의 일이다.
모 클라우드 회사 면접에서 OSI 모델을 제대로 설명하지 못 한 충격을 잊기 위해 잡은 책. 어플리케이션 개발을 주로 하다보니 인프라를 소홀히 다뤘다. 하지만 우리가 딛고 있는 세상은 거대한 IT인프라 위에 서 있는 것이나 다를 바 없다. 따라서 그 중요성은 말할 필요도 없다. 하...
요즘 롤스의 정의론을 읽고 있다. 롤스는 사회 체제를 유지하기 위한 판단 기준으로 정의를 내세우는데, 자신의 논지를 전개하기 위하여 고전적 공리주의를 비판한다. 그러다 문득 이런 생각이 들었다.
결단이 필요한 순간, 무엇이 옳은지 또는 어떻게 해야하는지를 말하는 사람들이 있다. 헤겔, 롤스, 벤담 등 다들 어려운 이야기를 하는 사상가들이다. 그리고 이들은 자신의 논지를 전개하기 위하여 늘 하나의 가정을 한다. 인류 최초의 사회는 어떻게 만들어졌을까? 각자 설득력 있는 가정...
이런 류의 책, 즉 ‘만화로 보는 xx’의 책이 흔히 그렇듯, 결코 쉽지는 않다. 하지만 이는 순전히 책이 다루고 있는 내용 그 자체가 애당초 어렵기 때문이다. 이 책은 짧은 분량과 만화라는 매체의 제약에도 불구하고 머신러닝을 쉽게 설명하기 위해 많은 노력을 했다. 그러면서도 머신...
어릴 적의 나는 장기를 곧잘 두었는데, 별다른 이유가 있던 것은 아니었고, 그저 내가 또래 친구들보다 장기를 조금 더 잘 두었기 때문이었다. 당시만 해도 온라인 장기 대전은 아예 없었기 때문에 나는 장기에 있어서는 늘 득의양양했다. 하지만 이런 나도 맥을 못추는 상대가 있었다. 작...
인천 이음 카드를 1달 이용한 후 쓰는 사용기
산업의 초창기에는 이런 일도 가능하다. 신화적인 이야기다. 하지만 여전히 어딘가 기회는 있을지 모른다.
알리 익스프레스에서 w1칩을 복제한 짝퉁 공기팟을 샀다. 결론은…
AliExpress에서 V9을 구매했다. 내 생에 첫 골전도 헤드폰이다.
부끄러운 이야기 먼저 하나 해야겠다. 나는 지금껏 몇 개의 Node.Js 앱을 만들어왔다. 하지만 그러는 동안 Node.Js를 따로 공부하지 않았다. 한 권의 책도 보지 않았고, 인터넷 강의도 보지 않았다. 어짜피 다 아는 JavaScript 아닌가, 달리 공부해야 할 것도 많은데...
나는 지극히 오만한 인간이다. 때문에 동물에 대한 모든 연구는 결국 인간에 대한 질문으로 귀결된다고 생각한다. 하지만 무엇을 볼 수 있는지는 오로지 어떤 질문을 하느냐에 따라 전적으로 갈린다. 그 결과, 우리 인간은 동물의 세계에 자신의 모습을 비춰볼 수밖에 없다. 이 책이 다루는...
실로 야심찬 시도다. 프로그래밍 언어 67개를 다룬다. 하나만 제대로 다루기도 벅찬데, 무려 67개다. 그렇다고 재미로 만들어진 언어 몇을 대충 다루는 것도 아니다. 죄다 어엿한 하나의 언어다. 물론 어디까지나 도감인만큼 깊이 다루지는 않는다. 어떤 컨셉이고, 특징은 무엇이며, 프...
글은 빛나야 하고, 이야기는 재미있어야 한다. 설사 그것이 세상에 다시 없을 미친 사랑 이야기라 할지라도 말이다.
삶과 허무는 춤추듯 마주본 채 빙글빙글 돈다.
삶에 휘말려 어찌할 바를 몰라 전전긍긍 할 때가 있다. 그러고 있자면 이대로 끝인가 싶기도 하다. 하지만 그래도 어떻게든 내일은 오고, 살아진다. 아니, 그저 이 길 외에는 달리 방법이 없다는 것을 잘 알고 있을 뿐이다. 마치 길 건너편으로 이어지지 않은 육교 위를 걷듯이. 우리는...
요사이에 읽은 책 중에는 좋은 글들이 많았다. 특히 ‘사피엔스’와 ‘호모 데우스’는 거대 담론을 냉철하게 전개하고 강력하게 주장하여, 읽고 있노라면 넋이 나가기 십상이었다. 좋다. 나는 이런 대담한 글을 좋아한다. 하지만 굳이 따지자면 내가 가장 좋아하는 이야기는 어리석은 사람들의...
진심으로 말하건대, 나는 이 에세이를 읽을 준비가 전혀 되어있지 않았다. 나는 방금 막 같은 작가가 쓴 에세이를 읽은 참이었다. 프란츠 카프카가 이룬 문학적 성취의 미묘함에 관하여 열변을 토하는 글이었는데, 솔직히 말하여 내게는 관심 밖이었다. 자연히 제 아무리 ‘이것은 물이다’의...
단 한 번도 물 속을 떠나보지 않은 물고기가 물에 대하여 헤아릴 수 있을까. 익숙함이란 그런 것이다. 마치 모든 것이 원래 그러했던 것처럼, 당연히 그러해야 하는 것처럼 만든다. 하지만 세상에 당연한 것은 어디에도 없다. 이 괴리가 분노와 환멸을 일으킨다. 그 결과는 황폐함이다. ...
위대한 역사가들의 시대는 끝났다. 사마천은 역사에서 하늘의 도가 어디에 있는지를 물었다. 하지만 사람들은 이제 과학에 천도를 묻는다. 우리가 누구인지, 어떻게 살고 있는지에 대해서라면 경제학자가 역사학자보다 우월하다. 뿐만 아니라 정치외교학 등 수많은 학문이 역사학으로부터 떨어져나...
나는 JavaScript가 어렵다. 일단 언어 자체부터 상당히 난해하다. 뿐만 아니라 하루가 멀다하고 새로운 기술이 나온다. 그냥 또 뭔가 나왔는가보다 하고 넘기기에는 너무나 매력적인 기술이라 놓칠 수도 없다. 그러는 사이에 세월은 흘렀고, 어느새 JavaScript는 단지 언어 ...
간만에 AngularJS로 개발을 할 일이 생겼다. 내가 만든 코드인데도 만든지 4년 가까운 시간이 지나니 AngularJS의 동작에 대하여 기억이 나지 않았다. 그래서 간단히 정리해본다.
After Upgrading vue-cli from v3 to v4, you got an error message like below on typing any npm script.
모달을 띄울 때, 뒤 배경을 흐릿하게 만들면 모달의 가독성이 향상된다. backdrop-filter CSS를 쓰면 이걸 쉽게 만들 수 있다.
dispatch를 쓰면 된다.
You should get Uncaught TypeError: Cannot read property ~~ of undefined, because you accessed txt property even though there is not middleName property.
Luxon is a small version of Moment. Let’s get it.
Vue CLI를 사용하다 보면 이런 에러가 발생할 때가 있다.
AngularJS Material provide useful functions, especailly theme. Configuring theme is not complicated, but searching on google is not easy. So I wrote a simple...
Internet Explorer는 URLSearchParams를 지원하지 않는다. 그래서 URL 쿼리스트링을 다루기가 귀찮아진다.
AngularJS는 DOM 렌더링 완료 후에 콜백 함수를 실행하게 하는 기능이 없다. 직접 만들어줘야 한다.
나는 iframe을 싫어하지만 이런 저런 이유로 부득불 사용해야만 할 때가 있다. 아래 코드는 iframe에서 부모 frame으로 데이터를 전송하는 방법이다. iframe에서는 postMessage 함수로 메세지(데이터)를 쏴주고, 부모 프레임에서는 iframe에서 전달받을 메시지...
UPDATE: 오류 발생 확인(v2.9.1)
지난 주에 vuetify를 사용하여 서비스를 하나 만들었다. vuetify의 번잡함(?)에 질려(?), 비교적 깔끔해보이는 element-ui를 사용하여 서비스를 만든 후, 후기를 적어보았다.
Vuex is very useful library for Vue.js. However… when handling form like input tag with Vuex, setting up two way binding is somehow complicated and you need ...
고뇌
이제는 애증의 물건이 되어버린 AngularJS. Angular-UI-Router를 사용하여 지연 로드(lazy load)를 구현해보았다. 지연 로딩을 위해 ocLazyLoad를 사용했다.
This problem was Fixed version 1.0.20!! (thanks betty!)
Vue CLI 3에서는 webpack 설정 방법이 크게 바뀌었다. Vue CLI 2와는 달리 따로 설정을 하지 않으면 webpack 설정 파일이 만들어지지도 않는다. 하지만 이런 저런 이유로 webpack 설정을 만져줘야 할 때가 있다.
버스에서 간단히 읽으려고 집어든 책인데, 얇은 두께에도 불구하고 의외로 깊이가 있어 놀랐다. 일단 이 책은 초보자용 책은 아니다. 책 표지에도 초중급 독자를 대상으로 한다고 (작게) 써져있다. Vue.js에 대해 어느 정도 알고 있고, 적어도 실전 프로젝트로 개발을 하고 있는 분들...
나는 글쓰기를 제법 어려워하는데, 모든 글은 재미있어야 한다는 강박관념 때문이다. 물론 재미있는 글을 쓰기란 어렵다. 기술 문서라면 더더욱 그렇다. 하지만 놀랍게도 이 책은 성공했다. 훌륭한 기술 문서이면서도 재미있다. 도대체 무슨 짓을 한걸까?
나는 JavaScript가 어렵다. 일단 언어 자체부터 상당히 난해하다. 뿐만 아니라 하루가 멀다하고 새로운 기술이 나온다. 그냥 또 뭔가 나왔는가보다 하고 넘기기에는 너무나 매력적인 기술이라 놓칠 수도 없다. 그러는 사이에 세월은 흘렀고, 어느새 JavaScript는 단지 언어 ...
요즘 스위프트로 iOS 앱을 개발하고 있다. 네이티브앱은 아니고 웹뷰로 이미 개발되어 있는 웹페이지를 띄워주는 앱인데, 열심히 개발하고 있자니 난데없이 화면이 하얗게 침묵했다. 불과 몇 초 전까지만 해도 잘 돌아가던 기능이다.
이 소설의 등장 인물들은 자꾸만 눈이 먼다. 안개와 구름에 눈이 멀고, 화염과 연기에 눈이 멀고, 원한과 복수에 눈이 멀고, 세월과 시간에 눈이 먼다. 그 외 명예, 호승심, 탐욕 등 사람의 눈을 가리는 장막은 이루 셀 수 없다. 그 중 가장 아름다운 장막은 단연 사랑이니, 정이란...
나는 예전부터 늘상 소설이 재미있으려면 사람을 죽이고 시작해야 한다고 했다. 주인공의 개성 부족에도 불구하고 끊임없이 터져나오는 긴급 상황이 몰입감을 이끌어낸다.
현실은 항상 저 멀리 흐릿하게 보인다. 하지만 당위는 내 바로 곁에 있다. 양자의 간극을 좁히기란 어렵다. 어디에 머물러야 하는가. 어디로 나아가야 하는가. 추한 간극 속에 선택은 늘 고통스럽다. 고뇌하는 칼끝은 흔들린다. 오로지 마음을 다잡을 뿐이다.
나는 도심 한가운데 살고 있지만, 그럼에도 인간 외의 생물을 관찰하기를 좋아한다. 무엇에도 구속 받지 않는듯 보이면서도 최대한의 효율을 추구하는 그들의 삶에서 어떠한 영감을 얻지 않을까 하는 기대감 때문이다. 때문에 그들의 발자국과 자취 하나 하나에 담긴 의도와 사연에 대한 깨달음...
톨스토이는 모든 종류의 작위를 거부한다. 그를 가리켜 무정부주의자라고 보는 견해는 지나치게 온건하다. 그를 어떻게 바라보아야 할까? 그의 책을 더 많이 읽고 싶다.
급류는 운명이다. 피할 수 없는, 그저 받아들일 수 밖에 없는 그 무엇이다. 누군가는 좌절하고, 혹은 극복하려 하고, 혹은 증오하지만, 결국에는 모두 씻겨 내려간다.
1.부모님
“나는 누구인가?”
‘육체는 단명하나 근성은 영원한 것’. 김성모 만화가 근 30년간 내세우던 주제 의식이다. 김성모는 이 강렬한 메세지를 쉼없이 남발한다. 전달의 과잉이다. 덕분에 어떠한 역경에도 굴하지 않는 불굴의 정신이 가지는 숭고함은 일종의 쌈마이한 허세로 전락하는 수모를 겪는다.
나는 문학이 주는 공감과 위안의 힘을 믿지 않는다. 상처입은 가슴이 귀를 통해 치유를 받았다는 말을 나는 들어본 적이 없다. 하지만 가만히 이런 생각을 해본다. ‘나도 분명 높은 이상과 꿈, 그리고 의지를 가지고 있던 시절이 있었지. 그때는 어느 누구도, 어떤 시련도 나를 막을 수...
기억을 더듬다보면 도무지 알 수 없는 이유로 뚜렷이 남아있는 몇몇 장면들이 있다. 시간이 멀어질수록, 기억을 떠올릴수록, 장면은 꿈결같아 정말로 있었던 일인지, 어쩌면 나의 상상일 뿐이었는지 분간하기 어려워진다. 그 진실이야 아무래도 좋다. 좋았던 기억일수록, 우연히 과거의 그 장...
2019년에 이 소설을 읽는 나로서는 여러 설정과 전개가 작위적이라는 느낌이 들었다. 도대체 작중 인물들이 내린 선택과 행동에 무슨 실익이 있는가? 하지만 1998년 작품임을 알게 되어 다소 납득했다. 불과 20년만에 세상은 이렇게나 바뀐 것이다. 도무지 왜 저렇게 살았는지 이해하...
이 소설의 주인공은 극히 혐오스러운 인간이다. 범죄자이며, 허세꾼이며, 여혐 종자이면서도, 색을 밝히는, 한 마디로 인간 막장이라 할 수 있다. 하지만 운 좋게도 돈은 제법 많은지라 온갖 난잡한 모험을 벌이고 다니는데, 사건이 전개될수록 이놈이 어떻게 인생을 조지게 될지 기대감이 ...
환경 Vue 2.7 <script setup> 문법 사용
환경 Vue 2.7 <script setup> 문법 사용
처음 Vuetify를 Add하고 프로젝트를 빌드하면 warning이 많이 뜬다.
누군가에게 설명해주려는데 갑자기 기억이 나지 않아서 당황했다. 그래서 정리를 해보았다.
It is working code on my blog
Login with Email and password
Where is Uploader component?
Vue CLI 3에서는 webpack 설정 방법이 크게 바뀌었다. Vue CLI 2와는 달리 따로 설정을 하지 않으면 webpack 설정 파일이 만들어지지도 않는다. 하지만 이런 저런 이유로 webpack 설정을 만져줘야 할 때가 있다.
I wrote codes get EXIF data of image using Vue.js for liks79 who is my dear friend.
지금껏 Vue CLI 2를 사용하고 있었는데, 오늘에야 드디어 Vue CLI 3를 설치했다. 처음에는 webpack 설정 파일을 찾을 수 없어 이게 뭔 똥인가 싶었는데, 이걸 보고 깜짝 놀랐다.
xargs는 리눅스에서 파이프라인 이전 단계를 standard input으로 하여 다음 명령을 실행하는 기능을 한다.
AWS S3에 예전 배포 파일들이 쌓여있으면 관리하기 어렵다. 배포를 자주 할 수록 더욱 그렇다. 그러니 파일 변경일을 기준으로 30일 이상 지난 파일을 삭제해보자.
‘*/’ 로 설정해야 하위 디렉토리의 파일까지 재귀적으로 artifact에 포함된다. AWS 문서에도 나와 있기는 한데… 다소 애매하게 설명하고 있어서 놓치기 쉽다.
CloudFront(이하 CF)에서 error page redirection은 1회의 request에서 1회만 가능하다. 2회 이상 동작하지 않는다. 예를 들어보자.
build artifact는 codeBuild가 build를 마친 후, 그 결과물을 저장한 파일. 나중에 auto scaling 할 때 쓰인다 source artifact는 codeBuild가 build를 하기 위해 소스코드를 가져온 파일
CloudFront(이하 CF)에 HTTP request를 보낼 때, 존재하지 않는 method(HTTP Verb)로 보내면 어떻게 될까?
CloudFront의 Custom Error Page은 오로지 redirection을 할 뿐이지, 어떠한 side effect도 없다. AWS 엔지니어에게 확인받음. 그러니 response header에 x-cache: error from cloudfront 가 떠도 의도한 바라면...
CORS header 설정도 캐싱한다
현상 CloudFront -> S3로 index.html 파일을 요청했는데 이런 오류가 발생
update: 20210811
하위 호환성은 늘 고민스러운 문제다. 웹뷰에서도 그렇다. JS의 새 버전이 나오면서 웹뷰가 JS의 신기능을 지원하지 않는 경우가 발생했다. iOS와 Android의 버전이 올라가면서 이 문제는 해결되었지만, 세상에는 여전히 구형 기기를 사용하는 사람들이 많다. 이 분들은 이상하게도...
4/1 오픈 이후 대략 1달이 지났다. 서비스는 안정화 되었고 추가 개발 건도 착실히 진행 중이다. 이제 회고를 해도 좋은 때가 되었다. 프로젝트의 진행 단계별로 회고를 진행하고자 한다.
40일의 개발 기간을 거쳐 11 키티즈를 런칭했다.
Environment iOS Safari
scrollTop의 값을 수정하면, onscroll event가 발생한다
iOS는 스크롤 파워가 강할 때 bounce scroll effect를 낸다. 보기 좋은 UX지만, scrollTop을 기준으로 event를 발생시키려면 문제가 발생한다.
safari에서 scroll event를 다루다보면 괴상한 동작을 발견한다. scrollable container 최상단이 고무줄처럼 튕기는 UI인데, 이를 iOS의 native-style scrolling이라고 한다(출처: https://developer.apple.com/lib...
이거 정말 좋은건데 모르시는 분들이 있어 안타까움에 올린다.
Vue.js로 만든 웹앱을 Firebase에 호스팅하면 당황스러운 상황에 처하게 된다. 분명히 Firebase에서 알려준 내 웹앱의 URL에 접속했는데, 화면에 아무 것도 안뜬다!
It is working code on my blog
Login with Email and password
Where is Uploader component?
Rotate images by EXIF orientation infomation
I made a game using Vue.js, vuetify, firebase.
firebase cli로 firebase hosting에 Vue.js로 만든 SPA를 배포하는 순서를 정리해보았다.
저 유명한 소설, ‘변신’이 월급쟁이의 이야기였다니.
알고리즘 공부라 하면 아마도 모든 개발자들의 한결같은 새해 목표일 것이다. 물론 대부분의 새해 목표가 그렇듯이 곧 잊혀진다. 나도 알고리즘 공부를 몇 년째 새해 목표 중 하나로 잡아두었는지 모른다. 끔찍한 일이다. 그래도 요즘은 알고리즘 공부하기에 좋은 책이 많다. 이 책, ‘누구...
나는
버스에서 간단히 읽으려고 집어든 책인데, 얇은 두께에도 불구하고 의외로 깊이가 있어 놀랐다. 일단 이 책은 초보자용 책은 아니다. 책 표지에도 초중급 독자를 대상으로 한다고 (작게) 써져있다. Vue.js에 대해 어느 정도 알고 있고, 적어도 실전 프로젝트로 개발을 하고 있는 분들...
요즘 종일 Vue.js만 보고 있었더니, 함께 일하는 나이 지긋한(?) 개발자께서 이런 말을 하신다.
나는 글쓰기를 제법 어려워하는데, 모든 글은 재미있어야 한다는 강박관념 때문이다. 물론 재미있는 글을 쓰기란 어렵다. 기술 문서라면 더더욱 그렇다. 하지만 놀랍게도 이 책은 성공했다. 훌륭한 기술 문서이면서도 재미있다. 도대체 무슨 짓을 한걸까?
나는 JavaScript가 어렵다. 일단 언어 자체부터 상당히 난해하다. 뿐만 아니라 하루가 멀다하고 새로운 기술이 나온다. 그냥 또 뭔가 나왔는가보다 하고 넘기기에는 너무나 매력적인 기술이라 놓칠 수도 없다. 그러는 사이에 세월은 흘렀고, 어느새 JavaScript는 단지 언어 ...
숫자를 목표치까지 빠르게 변경시키는 커스텀 훅을 만들어보았다.
React에서 object를 useState로 관리한다면, setState를 할 때 반드시 새로 object를 만들어서 넣어라.
React 개발하다가 생각난 거. Object destructing으로 받아온 string값이 useEffect의 dependency로 들어있을 경우, object는 바뀌되 그 안의 string property의 값은 변경되지 않으면, useEffect는 동작할까? 검증을 위해 몇...
iframe.contentWindow.postMessage(msg, '*');
create-react-app으로 react 개발을 하다가, webpack 설정이 궁금해서 npm run eject를 해봤다. 설정을 훑어보고 git checkout -f 로 원복했는데… 다시는 npm run eject를 할 수 없었다.
흔히들 React를 사용하고 싶으면 공식 문서를 보라고 한다. 하지만 그것만으로 정말 충분한가? React를 사용할 때마다 당황스러운 일이 한두 번이 아니다. 그럴 때마다 나는 고통스럽게도 codesandbox를 열고… 하나하나 테스트를 해본다. 내가 아는 게 정말로 맞는지, 내가...
display: block -> display: none이 된 component는
로컬 브랜치 일괄 삭제
Which files have been deleted or modified? Use git diff --diff-filter=[(A|C|D|M|R|T|U|X|B)…[*]]
When using GitLab-CI, it is needed that finding changed or new files, and then copy & paste the files to server sometimes. The job is pretty simple.
커밋을 비교하여 변경된 파일의 목록을 뽑아보자
나는 게으른 사람이다. 그리고 뭔가를 백업하는건 아주 귀찮은 일이다. 소스코드는 그나마 낫다. 개발하고 수정할 때마다 git remote 서버로 push하면 된다. 하지만 작업용 및 관리용으로 들고 있는 work 폴더를 백업하는건 너무나도 귀찮은 일이다. 그러니 자동화하기로 했다....
git에서 파일의 변경 이력을 확인하는 방법은 간단하다. file_path에는 확인하고픈 파일의 경로를 넣어준다.
Google Playstore에서 메일을 받았다. 1달 내로 조치가 없다면 내가 만든 앱을 Playstore에서 내려버리겠다고… 오랫동안 방치해둔 앱이기에 관리자 콘솔을 들어가보니, 구글에서는 이미 오래 전부터 관련 내용을 경고하고 있었다.
When your Android App’s minSdkVersion is prior to 21(using dalvik), and your app and the libraries it references exceed 65,536 methods, Android studio debugg...
Android studio에서 앱을 build하려고 하는데, 이런 오류가 발생했다.
Let’s launch a custom error page when the network is down in the Android WebView App.
Android Honeycomb부터는 Main Thread에서 네트워킹 처리를 하면 안된다. 이를 어겼다가는 이런 에러가 뜬다!
회사에서 운영하는 서비스 중 안드로이드 앱이 있는데, 이 앱에서는 아직도 GCM으로 push messege를 보내고 있다. 하지만 더이상 그럴 수 없는 상황이 되었다.
0. 클라우드 난민
It works on my Node.js project.
Updated! For new IBM Cloud on 2019.06.24.
virtual box 설치
몇 일 전 [IBM Cloud]의 홍보 글을 올린 후, 몇 가지 업데이트 해야할 사항들이 있어 따로 글을 작성한다.
IBM Cloud는 참 좋은 서비스인데, 쓰는 사람을 못 봤다. 기껏해야 IBM 소속 개발자 정도. 안타까운 마음에 돈 안 받고 홍보글을 쓴다. IBM Cloud의 장점은 다음과 같다.
S3의 lastModified는 사용자가 변경할 수 없다. 이것은 S3의 사용 제한 사항이다(기능이다).
AWS EC2에 Apache HTTP Server를 올려 frontend를 서빙하고, CI/CD는 AWS CodePipeLine을 사용하고 있었다. 문제는 배포할 때마다 CodeDeploy의 BlockTraffic 단계에서 너무 많은 시간이 걸려 답답했다. 배포 시간을 조금이나마 ...
AWS 입문서. ‘당신이 지금 알아야 할 AWS’를 읽고 난 후, 보다 심화된 내용을 알고 싶어 읽은 책이다. 장단점을 정리해보았다.
어플리케이션 개발자의 입장에서 볼 때 AWS를 익히기란 쉽지 않다. 물론 온프레미스 환경보다는 쉽다. 아무튼 내가 바닥을 뜯고 전선을 깔 필요는 없으니까. 그럼에도 불구하고 AWS를 배우는 데에는 다음과 같은 난점이 존재한다.
AWS의 서버리스 웹 애플리케이션 구축 튜토리얼을 따라하고 있다. AWS를 내가 직접 만지는건 3년만이다. 그간 모르긴 몰라도 많이 바뀌었다. aws cli조차도 구성하기 힘들었다. 튜토리얼을 따라하기 위하여 aws cli로 S3를 만질 수 있도록 설정하는 과정을 정리해보았다.
평소 구인 공고에서의 지원’ 자격 중, HTTP 프로토콜에 대한 이해’라는 항목이 무엇을 의미하는지 궁금했다. 벌써 십 수 년 동안 HTTP를 사용해서 개발을 하고 있는데, 또 뭘 더 알아야 한단 말인가? 이런 오만한 생각 때문에 이 책을 사두고도 완독까지 3년에 가까운 시간이 걸...
sign-in
Content Security Policy(CSP) 정리
HTTP/2를 꼭 사용해야만 하는지 의문을 제기하는 사람이 있어 chrome lighthouse로 성능을 비교해보았다. 동일한 웹앱(Vue.js를 사용해 개발한 SPA)을 대상으로 측정했다.
클린 애자일 1장 애자일 소개
아래 링크는 markdown에서 syntax highlighting을 지원하는 language list다.
Vue.js에서 화면을 이동 혹은 변경할 때, 나는 2가지 방법 중 하나를 사용한다.
tl;dr: npm audit fix로 취약점을 해결하자
tl:dr: xcopy의 /exclude: 옵션에 제외할 목록을 기술한 txt 파일을 넣으면 여러 파일과 디렉토리를 제외하고 복사할 수 있다.
GC는 복잡하고, 크로미움 업데이트 할 때마다 계속 바뀐다. GC는 대부분 증분적으로, 일부는 동시에. 일부는 병렬적으로 한다. 그리고 할당량(?)과 유휴 시간에 결정(?)된다 The summary is that most of the GC work is d...
HTML5 spec From the moment that the user agent is to initiate the drag-and-drop operation, until the end of the drag-and-drop operation, device input events ...
현상 오류 대상: scrollable container 현상 상세 dragging 중에는 scrollable container에서 mouse wheel event 동작하지 않음 scrollabl...
현상 오류 대상: drag ghost image 현상 상세 ghost image의 크기가 drag target에 한정되지 않음 ghost image가 scroll이 하단으로 내려간 만큼의 크기의 scroll...
간만에 AngularJS로 개발을 할 일이 생겼다. 내가 만든 코드인데도 만든지 4년 가까운 시간이 지나니 AngularJS의 동작에 대하여 기억이 나지 않았다. 그래서 간단히 정리해본다.
AngularJS Material provide useful functions, especailly theme. Configuring theme is not complicated, but searching on google is not easy. So I wrote a simple...
AngularJS는 DOM 렌더링 완료 후에 콜백 함수를 실행하게 하는 기능이 없다. 직접 만들어줘야 한다.
이제는 애증의 물건이 되어버린 AngularJS. Angular-UI-Router를 사용하여 지연 로드(lazy load)를 구현해보았다. 지연 로딩을 위해 ocLazyLoad를 사용했다.
This problem was Fixed version 1.0.20!! (thanks betty!)
노예와 자유인의 차이는 단 한 문장으로 요약할 수 있다. 노예는 질문할 수 없다.
The difference between a slave and a free person can be summed up in a single sentence. Slaves can’t ask questions.
이하 질문은 나, 답변은 Google Bard
생각이란 무엇일까? 단비.ai 프로젝트를 할 때부터 든 생각이다. 단비.ai 프로젝트의 목표가 ‘챗봇을 만드는 플랫폼’이었기 때문이다. 대화하는 인공지능, 챗봇이야말로 우리가 생각하는 인공지능의 가장 전형적인 모습 아니겠는가? 그렇다면 이야기를 진척하기 앞서 챗봇이 어떻게 동작하는...
데이비드 스타 조던과 저자에 대하여 아무런 사전 지식 없이 읽기 시작했다. 이 기묘한 인간 군상 둘은 도대체 어찌 되는 것인가. 그리고 마지막 몇 페이지에 도달하기 전, 크게 탄식했다. 포스트모더니즘의 망령은 아직도 남아 있는가. 하지만 다행스럽게도 남은 몇 페이지 덕분에 나의 의...
나는 글 읽기를 좋아한다. 그리고 제법 많이 읽는 축에 속한다고 자부한다. 아무튼 늘 무언가를 읽고 있으니까. 하지만 그 주제는 대개 정해져 있다. 경제, 역사, 과학이 대부분이고, 문학류는 거의 읽지 않는다. 수필은 말할 필요도 없다. 요컨대 실용적인 글만 찾아본다는거다. 자연히...
글을 읽다보면 가끔씩 그 필력에 사로잡힐 때가 있다. 장절함이든 속도감이든, 무엇이든 좋다. 문장이 뿜어내는 힘을 타고 정신없이 책을 넘기다보면 어느새 책장의 끝이 보이는 순간이 오는데, 그러면 문득 아쉬워하며 나도 이런 글을 써보고 싶은 것이다. 아사이 료의 ‘시간을 달리는 여유...
물리학자이자 시인이었던 메이지-다이쇼 시대 일본인의 수필집. 담담하게 자연과 사물과 인간을 관찰하며 묘사한다. 수필에서 흔히 볼법한 감정의 과잉은 없다. 그렇기에 괜한 방해없이 그의 눈에 비치는 광경을 바로 눈 앞에서 보는 듯 빠져든다. 그렇다고 결코 무미無味하지는 않다. 그의 글...
설정 방법 반드시 configure 아래에 output을 넣어야 한다. module.exports = { configure: { output: { filename: `[name].[hash].js`, ...
다른 프로젝트에서 번들링 한 output 파일을 react 등 다른 frontend framework에서 가져다 쓸 수 있을까? 물론 이런 걸 하기 위해 모듈화를 하는 거지만, 간혹 레거시와 함께 해야 할 필요가 있을 때가 있다. craco를 쓰면 간단하다.
이 글은 webpack 4.11.1 버전을 기준으로 합니다.
webpack 시작 Vue.js 등의 프론트엔드 프레임워크를 사용해서 개발을 시작하면 webpack 사용을 피할 수 없다. webpack에서는 webpack-dev-server를 제공하는데, 개발시에 로컬 웹서버 역할을 해준다. webpack의 설정은 상당히 복잡하지만, 대부분...
Android에서 WebView로 앱을 개발하다보면 Back 버튼과 Forward 버튼이 신경쓰인다. 이 버튼들을 눌렀을 때 도달할 URL이 민감한(?) 화면일 수 있기 때문. 그래서 URL을 확인할 수 있는 방법을 정리해보았다.
FCM’s device token is same with GCM’s device token because FCM includes GCM. But FCM’s token has more information than GCM’s. So if you want to convert FCM’s...
시작 저 자신에게 자극을 주기 위해 뭐라도 해보자고 시작한 일기입니다. 그럼 시작!
When dealing with ms-sql, there are times when you encounter the following errors…
MSSQL에서 OPENQUERY를 할 때 이런 오류가 발생할 수 있다.
MSSQL에서 OPENQUERY를 할 때 이런 오류가 발생할 수 있다.
7년 동안 외웠다 까먹기를 반복하다 지쳐버린 나…
html parser가 inline style을 만나면 CSSOM을 만들기 위해 parser 동작을 일시 중지할까? cssom은 javascript가 css style을 조작하기 위한 모델이다 cssom은 외부 css를 받아오든, style tag를 만나든, inline styl...
display: block -> display: none이 된 component는
CSS property z-index는 parent를 공유하는 element끼리만 영향을 미친다. 다른 parent의 element와는 무관하다. 그 이유는 stacking order 때문이다. stacking context는 하나의 element당 1개 생성되고, stackin...
요약 flex-direction: column-reverse 일 때 scrollTop의 기준은 scroll 최하단이다 scrollTop은 -n ~ 0의 값을 가진다 scroll-bar가 ...
next.js에서 dynamic import 함부로 하지 마라. 리렌더링 할 때마다 컴포넌트 새로 그린다.
Next.js v14.2.16 기준이다.
Next.js의 패러렐 라우트 기능을 사용하면 modal UI를 간편하게 구현할 수 있다고 한다. 하지만 14.2.16 버전에서 확인해보니 정상 동작하지 않는다. 패러렐 라우트가 정상 동작하는 앱의 소스 코드를 github에서 확인해보니 next.js 15 버전이다.
Next.js의 dynamic route 기능을 사용하면 간단하게 API proxy server를 만들 수 있다. 좋은 기능이지만 proxy server에서 오류를 response 하는 방법이 조금 기묘하다.
전쟁이 터지고 마을 사람들이 징병으로 끌려간지 얼마 지나지도 않았건만, 전선은 크게 밀려 전라도가 함락되었다. 1번 국도가 마을 한가운데를 관통하고 있었으니 만큼 세상은 즉각적으로 변했다. 인민군이 왔고, 완장을 찬 사람들이 나타나 마을 사람들을 학교 운동장에 둥글게 불러모았다. ...
할아버지께 들은 한국전쟁 이야기. 아마도 여러 에피소드를 소개할 수 있을 듯 하다. 가급적 연재할 예정.
할아버지께 직접 들은 이야기다. 인상깊어 옮겨본다. 나 역시 기억이 잘 나지 않아 오류가 있을 수 있다. 할아버지께 다시 여쭤봐야지. 고로 계속 수정 예정.
1. Move to Google Chrome directory
이거 정말 좋은건데 모르시는 분들이 있어 안타까움에 올린다.
운영하는 서비스 중 ASP와 Visual Basic으로 만들어진 구닥다리 사이트가 하나 있다. 어느 날 google chrome에서 사이트를 열어보니 화면 한 구석이 휑하다.
나는 운이 좋다는 말을 삼가는 편인데, 운명이란 변화무쌍하여 언제 어떻게 내게 등을 돌릴지 모른다 생각하기 때문이다. 그렇다해도 여태 무풍에서 해온 6번의 공연 동안 나의 운은 제법 좋았다고 감히 말할 수 있다. 그간 함께한 파트너 덕분이다. 파트너의 도움 아니었으면 나 홀로 무엇...
지난 17년 첫번째 공연을 하고 만 1년이 지났다. 돌이켜보면 그 당시의 느낌이 꽤나 절절했었다. 나름 장문의 글도 썼다. 글을 다시 읽어보니 행간마다 고통이 박혀있다. 나는 어쩜 그리 춤을 못췄는가. 10초의 안무를 익히는데 1시간이 걸렸다는 대목에 이르러서는 그만 정신을 놓아버...
얼마 전부터 지인의 강력한 권유로 살사를 배우기 시작했다. 그간 나는 춤과 인연이 전혀 없었다. 혼란스러웠던 세기말, 그 시절에 청소년기를 보냈다면 누구나 한 번쯤 따라해봤다는 HOT와 GOD의 춤조차 근처에도 가지 않았다. 그래도 내심 내가 잘 할거라는 자신은 있었다. 그간 운동...
나는 운이 좋다는 말을 삼가는 편인데, 운명이란 변화무쌍하여 언제 어떻게 내게 등을 돌릴지 모른다 생각하기 때문이다. 그렇다해도 여태 무풍에서 해온 6번의 공연 동안 나의 운은 제법 좋았다고 감히 말할 수 있다. 그간 함께한 파트너 덕분이다. 파트너의 도움 아니었으면 나 홀로 무엇...
지난 17년 첫번째 공연을 하고 만 1년이 지났다. 돌이켜보면 그 당시의 느낌이 꽤나 절절했었다. 나름 장문의 글도 썼다. 글을 다시 읽어보니 행간마다 고통이 박혀있다. 나는 어쩜 그리 춤을 못췄는가. 10초의 안무를 익히는데 1시간이 걸렸다는 대목에 이르러서는 그만 정신을 놓아버...
얼마 전부터 지인의 강력한 권유로 살사를 배우기 시작했다. 그간 나는 춤과 인연이 전혀 없었다. 혼란스러웠던 세기말, 그 시절에 청소년기를 보냈다면 누구나 한 번쯤 따라해봤다는 HOT와 GOD의 춤조차 근처에도 가지 않았다. 그래도 내심 내가 잘 할거라는 자신은 있었다. 그간 운동...
이걸 찾느라 너무나 오랜 시간을 고통받았다.
0. 기묘한 조합
Working code link: CodePen
For Exporting JSON to Excel file, SheetJS is useful. SheetJS is complicated to use, but powerful and well maintained. I tried to use vue-json-excel, but on v...
IIS6.0에서 JSON을 내려받을 일이 생겼다. 그런데 잘 안된다. 이런 오류 메시지가 뜬다.
Python의 Requests 모듈로 C#에 json 데이터를 post request로 보낼 때 아래와 같은 500 에러를 맞이할 수 있다.
Updated! For new IBM Cloud on 2019.06.24.
기술 문서를 작성할 때 sphinx를 사용하면 편리하다. 기술문서 번역을 한다면 sphinx-intl은 아주 유용하다. 그 장점에는 여러가지가 있지만, 기술 문서 번역자에게 가장 큰 고통을 주는 문제, 바로 원본 문서의 잦은 변경 또한 쉽게 해결해준다. 변경된 부분만 찍어서 알...
docker로 ubuntu를 desktop처럼 돌리려면 아래 docker image를 pull 받아서 실행하면 된다.
1. git으로 간다 회사에 git을 도입하기로 했다. 그간 내가 다니는 회사는 svn을 사내 버전관리 도구로 사용하고 있었는데, 나는 머리가 좋지 않아 git이 없으면 개발을 하질 못한다. 언제 뭘 만들고 고치고 지웠는지 도무지 기억할 수가 있어야지… 이점에서 git의 장점은 명...
When using GitLab-CI, it is needed that finding changed or new files, and then copy & paste the files to server sometimes. The job is pretty simple.
1. git으로 간다 회사에 git을 도입하기로 했다. 그간 내가 다니는 회사는 svn을 사내 버전관리 도구로 사용하고 있었는데, 나는 머리가 좋지 않아 git이 없으면 개발을 하질 못한다. 언제 뭘 만들고 고치고 지웠는지 도무지 기억할 수가 있어야지… 이점에서 git의 장점은 명...
오래 전 프로그래밍을 처음 배웠을 때가 생각난다. 나는 자바로 프로그래밍을 처음 시작했고, 당시 자바의 위상은 객체지향 패러다임의 현현과도 같았다. 현실 세계를 모사한다지만 결코 그래보이지 않는 객체 지향의 늪에 빠져, 나 역시 여느 사람 이상으로 꽤나 고생해서 익혀야 했다. 그리...
Spring Data JPA를 쓰다가 Sorting이 안되는 고통을 겪었다. 평소처럼 Spring Data method명으로 order by를 먹이려는데, 왜인지는 모르겠으나 컬럼명을 발견하지 못하여, 쿼리문이 만들어지지 못하는 오류가 발생했다. 그래서 Sort 객체를 사용한 간단...
Linux에서 Java10을 설치하는 방법을 정리해보았다. 우분투와 리눅스 민트에서 다 잘 설치된다. linuxuprising의 문서를 참조하였다.
When using GitLab-CI, it is needed that finding changed or new files, and then copy & paste the files to server sometimes. The job is pretty simple.
CI/CD 도입 Gitlab을 설치하는 방법은 전에 다뤘다. 이번에는 CI/CD 도구를 도입했다. 예전에 일했던 프로젝트에서는 주로 jenkins를 사용했는데, 이번에는 Gitlab-CI를 써보기로 했다. Git 초심자가 대부분인 우리 프로젝트 특성상, Gitlab과 연계가 긴밀한...
It works on my Node.js project.
부끄러운 이야기 먼저 하나 해야겠다. 나는 지금껏 몇 개의 Node.Js 앱을 만들어왔다. 하지만 그러는 동안 Node.Js를 따로 공부하지 않았다. 한 권의 책도 보지 않았고, 인터넷 강의도 보지 않았다. 어짜피 다 아는 JavaScript 아닌가, 달리 공부해야 할 것도 많은데...
새로 나온 Node.js 디버깅 도구(?)
처음 Vuetify를 Add하고 프로젝트를 빌드하면 warning이 많이 뜬다.
산쇼다유 매끄럽고도 단순한 이야기가 끝날 때쯤 짧은 생각에 잠겼다. 인간의 도리란 무엇인지, 고통스러운 삶 속에서, 끝내 지켜야만 하는 바는 무엇인지를 생각한다.
조커의 관객은 둘로 나눌 수 있다. 조커에게 공감하는 자와 그렇지 못한 자. 조커의 말대로 ‘말해도 이해 못 할테니’
바야흐로 공감과 위로의 시대다. 다들 힘들어 죽겠다고 한다. 뭘 해도 안된다고 한다. 그러고 있자면 TV든, 책이든, 유튜브든 한 마디씩 던진다. ‘힘들지. 나도 그래. 다 괜찮다. 잘 될거야.’ 다 좋은 말이다. 하지만 나는 이런 이야기를 그다지 좋아하지 않는다. 내게는 시간이 ...
이 책을 읽은 소감을 한 마디로 말하자면 주공단에 대한 새삼스러운 존경심이다. 한 사람의 깨달음이 문명의 이정표를 바꾼 사례란 역사상 극히 드물다. 백읍고의 비극은 희씨 일가 모두에게 큰 충격이었겠으나, 이를 받아들이는 방법은 각자 달랐다. 문왕은 신의 뜻을 헤아리고자 했고, 무왕...
이쯤에서 오규 소라이를 인정하지 않을 수 없음을 고백해야겠다. 나는 오랫동안 성리학을 썩 맘에 들어하지 않았다. 이유야 많다. 성리학에 대한 집착이 조선 망국의 원인이라는 점, 우주와 만물의 이치 따위의 현대 과학 문명의 관점에서는 터무니 없기만 한 개념 등 때문이다. 하지만 나로...
소라이는 성리학자를 혐오했다. 그들의 엄격주의는 편협함을 낳는다고 보았다. 통감강목에 등장하는 인물 중, 주자의 마음에 드는 사람은 단 한 명도 없어 보인다는 그의 일갈처럼, 성리학의 엄격함은 애당초 실행 불가능하다는 주장이었다. 소라이는 인간의 자연스러운 욕망을 긍정했다. 공익을...
Intersection Types를 쓰면 된다.
typescript에서 object의 모든 key값을 기준으로 무언가 작업(object 비교)를 할 때, type 때문에 골치아파진다. object의 type은 정해져 있는데, Object.keys() api를 사용하면 key가 string type으로 뽑혀 나온다. string ...
상당히 어려운 책이었다. 나의 타입스크립트 활용 수준은 변수, 인수, 함수에 주석 다는 정도에 불과했다. 하지만 이 책에서는 그런 건 너무나 초보적인 활용 수준이라 본다. 대신 타입으로 프로그래밍을 한다. 처음에는 타입으로 별 걸 다 한다고 생각했지만 보면 볼수록 정교하고 우아하다...
Apache HTTP Server에 mime type을 추가하려면?
You can configure Apache HTTP Server’s response header based on web browser. Example is below.
node_modules의 구조
npm audit fix --force 를 하면 node module의 버전을 낮추기도 한다. 보안취약점이 발생하지 않는 버전을 찾기 때문.
Based on Yarn v4.4.0.
며칠 전에 Yarn4가 나왔다. 조만간 업그레이드 하려고 생각했으나, 문제는 당장 터졌다.
node_modules의 구조
1700년 일본 최고 지성이자 사상적 괴객 아라이 하쿠세키가 바라본 서양 문명, 그리고 종교적 헌신을 위해 목숨을 바친 에스파냐 선교사 조반니 사도티의 이야기다. 불과 4번의 만남이었을 뿐이지만, 아라이 하쿠세키와 조반니 사도티는 서로의 지성과 인품을 인정한다. 하지만 막부의 신하...
일본 제조업의 기술력은 탁월하다 너무나 탁월한 나머지 일본 내에서만 수많은 기업이 경쟁 중이다 이들이 먼저 신기술을 개발하고 일본 기업끼리 경쟁하다 보면 어느새 기술이 한국과 중국에 유출... 값싼 제품에 밀린 일본 기업은 해당 시장에서 도태된다 그리고 새로운 기술을 개발해 새로운...
이 블로그는 jekyll을 사용하여 돌리고 있다. 테마는 minimal mistake를 사용한다. 요 테마는 업데이트가 상당히 활발한데, 멋진 블로그를 위해 숟가락 얹은 처지인지라 블로깅 하는 틈틈히 테마 업데이트를 따라가줘야 한다. 테마 업데이트 방법은 다음과 같다. 나는 git...
0. 시작 블로깅을 재개하기로 결심했다. 오래된 나태함과 타성을 조금이나마 다잡기 위함이다. 블로깅의 본질이라면 마땅히 글쓰기이겠지만, 나라는 사람은 어쩔 수 없는지라 시작부터 수단에 집착하고야 말았다. 바로 적당한 블로깅 도구를 찾아 구축하는 일이었는데, 이 단계에서부터 생각외...
0. 클라우드 난민
생각이란 무엇일까? 단비.ai 프로젝트를 할 때부터 든 생각이다. 단비.ai 프로젝트의 목표가 ‘챗봇을 만드는 플랫폼’이었기 때문이다. 대화하는 인공지능, 챗봇이야말로 우리가 생각하는 인공지능의 가장 전형적인 모습 아니겠는가? 그렇다면 이야기를 진척하기 앞서 챗봇이 어떻게 동작하는...
전쟁이 터지고 마을 사람들이 징병으로 끌려간지 얼마 지나지도 않았건만, 전선은 크게 밀려 전라도가 함락되었다. 1번 국도가 마을 한가운데를 관통하고 있었으니 만큼 세상은 즉각적으로 변했다. 인민군이 왔고, 완장을 찬 사람들이 나타나 마을 사람들을 학교 운동장에 둥글게 불러모았다. ...
할아버지께 들은 한국전쟁 이야기. 아마도 여러 에피소드를 소개할 수 있을 듯 하다. 가급적 연재할 예정.
너에게 닥친 고난이 아무리 커보이더라도, 명심해라, 아직 빙산의 일각일 뿐이다.
내게는 새마을금고에서 일하는 친구가 하나 있다. 이 친구는 동네의 작은 지점에서 일을 하는데, 이런 곳이 흔히 그렇듯 긴급한 업무만 얼른 보러가는 찬바람 부는 그런 은행이 아니다. 오히려 할일없는 동네 주민들이 들러 한 수다 떨고가는 마을 경로당 겸 사랑방과 비슷하다고 하겠다. 은...
axios에는 HTTP request 여러 개를 한번에 묶어 던지는 기능이 있다. 이 기능을 사용하여 기껏 개발해놨는데, 기능 변경으로 인해 코드를 지워야 한다. 잊기 전에 박제해두자.
1. ‘Promise’이(가) 정의되지 않았습니다.
이거 정말 좋은건데 모르시는 분들이 있어 안타까움에 올린다.
webpack 시작 Vue.js 등의 프론트엔드 프레임워크를 사용해서 개발을 시작하면 webpack 사용을 피할 수 없다. webpack에서는 webpack-dev-server를 제공하는데, 개발시에 로컬 웹서버 역할을 해준다. webpack의 설정은 상당히 복잡하지만, 대부분...
요즘 스위프트로 iOS 앱을 개발하고 있다. 네이티브앱은 아니고 웹뷰로 이미 개발되어 있는 웹페이지를 띄워주는 앱인데, 열심히 개발하고 있자니 난데없이 화면이 하얗게 침묵했다. 불과 몇 초 전까지만 해도 잘 돌아가던 기능이다.
시작 저 자신에게 자극을 주기 위해 뭐라도 해보자고 시작한 일기입니다. 그럼 시작!
요즘 스위프트로 iOS 앱을 개발하고 있다. 네이티브앱은 아니고 웹뷰로 이미 개발되어 있는 웹페이지를 띄워주는 앱인데, 열심히 개발하고 있자니 난데없이 화면이 하얗게 침묵했다. 불과 몇 초 전까지만 해도 잘 돌아가던 기능이다.
시작 저 자신에게 자극을 주기 위해 뭐라도 해보자고 시작한 일기입니다. 그럼 시작!
Server for FCM Admin
FCM’s device token is same with GCM’s device token because FCM includes GCM. But FCM’s token has more information than GCM’s. So if you want to convert FCM’s...
새로 나온 Node.js 디버깅 도구(?)
Stack Overflow에 새로운 기능이 추가되었다. 화면 우측 하단을 보면 고무 오리가 천연덕스레 떠있다.
소스 코드를 압축할 때 .git 디렉토리나 node_modules을 포함할 필요는 없다. 제외하자.
Linux에서 Java10을 설치하는 방법을 정리해보았다. 우분투와 리눅스 민트에서 다 잘 설치된다. linuxuprising의 문서를 참조하였다.
알고리즘 공부라 하면 아마도 모든 개발자들의 한결같은 새해 목표일 것이다. 물론 대부분의 새해 목표가 그렇듯이 곧 잊혀진다. 나도 알고리즘 공부를 몇 년째 새해 목표 중 하나로 잡아두었는지 모른다. 끔찍한 일이다. 그래도 요즘은 알고리즘 공부하기에 좋은 책이 많다. 이 책, ‘누구...
요즘 종일 Vue.js만 보고 있었더니, 함께 일하는 나이 지긋한(?) 개발자께서 이런 말을 하신다.
설문조사 서비스를 만들었다. Vue.js와 SurveyJS를 사용하여 SPA로 만들었다. 소스코드는 여기서 볼 수 있다.
SurveyJS로 설문조사 서비스를 개발하다가 발견한 것을 공유한다.
제목을 보고 홀린 듯 사버렸다. 요즘 나의 고민 중 하나를 정통으로 찌르는 제목이었기 때문이다. 요즘 세상은 프레임워크 없는 프론트엔드 개발을 상상하기 힘든 세상이 되었다. 프레임워크는 너무나도 강력하여 개발을 쉽고, 편리하고, 빠르게 만들어준다. 불과 몇 년 전만 해도 jQuer...
이 글은 webpack 4.11.1 버전을 기준으로 합니다.
Visual Studio Code로 단어 2개를 동시에 포함하는 파일을 검색해보자.
Visual Studio Code로 Microsoft SQL Server(이하 mssql)을 사용하고 있는데, 아주 좋다. 여기서 설치하면 된다. 무거운 SQL Server Management Studio를 실행할 것 없이, mssql을 가볍고 편리하게 사용할 수 있다.
버냉키의 업적에 대해서는 이미 평가가 끝났다고 생각한다. 그는 연준 의장으로서 금융위기의 시대를 극복해냈고, 현대 중앙은행의 정책 수단을 만들어냈다. 한편으로 그는 경제학자이자 역사가이다. 따라서 그가 정리한 현대 경제사는 연준의 향후 행보를 짐작하기 위한 참고자료일 뿐만 아니라 ...
나는
CI/CD 도입 Gitlab을 설치하는 방법은 전에 다뤘다. 이번에는 CI/CD 도구를 도입했다. 예전에 일했던 프로젝트에서는 주로 jenkins를 사용했는데, 이번에는 Gitlab-CI를 써보기로 했다. Git 초심자가 대부분인 우리 프로젝트 특성상, Gitlab과 연계가 긴밀한...
CI/CD 도입 Gitlab을 설치하는 방법은 전에 다뤘다. 이번에는 CI/CD 도구를 도입했다. 예전에 일했던 프로젝트에서는 주로 jenkins를 사용했는데, 이번에는 Gitlab-CI를 써보기로 했다. Git 초심자가 대부분인 우리 프로젝트 특성상, Gitlab과 연계가 긴밀한...
CI/CD 도입 Gitlab을 설치하는 방법은 전에 다뤘다. 이번에는 CI/CD 도구를 도입했다. 예전에 일했던 프로젝트에서는 주로 jenkins를 사용했는데, 이번에는 Gitlab-CI를 써보기로 했다. Git 초심자가 대부분인 우리 프로젝트 특성상, Gitlab과 연계가 긴밀한...
CI/CD 도입 Gitlab을 설치하는 방법은 전에 다뤘다. 이번에는 CI/CD 도구를 도입했다. 예전에 일했던 프로젝트에서는 주로 jenkins를 사용했는데, 이번에는 Gitlab-CI를 써보기로 했다. Git 초심자가 대부분인 우리 프로젝트 특성상, Gitlab과 연계가 긴밀한...
CI/CD 도입 Gitlab을 설치하는 방법은 전에 다뤘다. 이번에는 CI/CD 도구를 도입했다. 예전에 일했던 프로젝트에서는 주로 jenkins를 사용했는데, 이번에는 Gitlab-CI를 써보기로 했다. Git 초심자가 대부분인 우리 프로젝트 특성상, Gitlab과 연계가 긴밀한...
Working code link: CodePen
For Exporting JSON to Excel file, SheetJS is useful. SheetJS is complicated to use, but powerful and well maintained. I tried to use vue-json-excel, but on v...
0. JavaScript Logger
가내수공업적 로그 분석
아마도 세월이 흘러 이제는 누가 기억하는지도 모를 어느 게임의 이야기다. 때는 97년으로 아직 외환위기 이전이었다. 그래서인지 몰라도 컴퓨터 게임의 가격은 2019년 현재와 비교해도 비싸면 비쌌지 결코 싸지 않았다. SWIV 3D의 가격은 무려 3만 6천원(아마)으로, 지금 물가로...
영화 각본가를 꿈꾸던 대학생이 있었다. 하지만 그의 노력과 시도는 성공 직전에 모두 실패했다. 젊은 나이라 할지라도 그의 좌절이 가벼울리 없었다. 그러던 그에게 누군가 이렇게 말했다.
HTML textarea로 만들어진 게시판을 TinyMCE로 교체하는 작업을 하던 도중, 개행문자가 DB에 CRLF(\r\n)로 저장되어 귀찮은 일이 생겼다.
Microsoft SQL Server에서 프로그램당 active connection의 숫자를 확인하자.
Lodash 사용 예제를 정리해보았다. 왜냐면 내가 자꾸 잊어먹기 때문… 계속 업데이트 할 예정이다.
Vue.js에서 lodash의 remove 함수가 제대로 동작하지 않는다. 보다 정확히 말하자면, Vue.js에서 watching 중인 reactive array에서 element를 _.remove(array, fn) 해도, Vue.js는 이를 감지하지 못한다.
CSS는 늘 고통스럽다. 저자도 마찬가지였나보다. 저자는 프론트엔드 개발을 하며 겪은 고통스러운 삽질의 과정을 솔직하고 생생하게 말해준다. 마치 내가 삽질하며 배우는 기분이다. 역시 개발을 배우려면 삽질이 최고지. 멋진 책이다!
나는 iframe을 싫어하지만 이런 저런 이유로 부득불 사용해야만 할 때가 있다. 아래 코드는 iframe에서 부모 frame으로 데이터를 전송하는 방법이다. iframe에서는 postMessage 함수로 메세지(데이터)를 쏴주고, 부모 프레임에서는 iframe에서 전달받을 메시지...
처음 Vuetify를 Add하고 프로젝트를 빌드하면 warning이 많이 뜬다.
Naver 지도 Open API가 2019년 04월 15일자로 서비스 종료된다.
CORS 문제로 몇 년간 고통받고 있다. 문제에 부닥칠 때마다 구글링을 하며 수많은 Q&A글을 본다. 그리고
It works on my Node.js project.
Updated! For new IBM Cloud on 2019.06.24.
0. 클라우드 난민
Updated! For new IBM Cloud on 2019.06.24.
모달을 띄울 때, 뒤 배경을 흐릿하게 만들면 모달의 가독성이 향상된다. backdrop-filter CSS를 쓰면 이걸 쉽게 만들 수 있다.
CSS는 늘 고통스럽다. 저자도 마찬가지였나보다. 저자는 프론트엔드 개발을 하며 겪은 고통스러운 삽질의 과정을 솔직하고 생생하게 말해준다. 마치 내가 삽질하며 배우는 기분이다. 역시 개발을 배우려면 삽질이 최고지. 멋진 책이다!
침략국의 군인의 죽음은 응보일 뿐이라는 이야기를 많이 듣는다. 하지만 대부분의 경우, 평범한 병사에 불과한 그들 역시 전쟁의 광기에 희생당했을 뿐이다. 이 세상을 선과 악의 이분법적 대결로 보는 시각은 얼마나 어리석은가.
워싱턴 포스트가 놀라운 일을 해냈다. 할 말이 많지만 간단히 요약부터 해본다.
평화를 이루기 위해 백 만의 목숨을 빼앗아야 한다면 이를 평화라고 부를 수 있는가? 이에 대한 역사학계의 일반적인 답변은 ‘그렇다’이다. 심지어 그 시대를 살아간 당사자들조차 그렇게 증언했다. 로마 제국이 가장 영광스러웠던 시기인 오현제의 시대, 제국은 평화롭다고 일컬어졌으나 실은...
갈리아인으로부터 로마를 탈환하고, 3차 삼니움 전쟁에 이르기까지를 다룬 책. 로마는 끊임없이 싸운다. 에트루리아인과 삼니움인, 그리고 그보다 약한 수 많은 부족들과 싸운다. 귀족 계급과 평민 계급의 싸움 역시 외적과의 싸움 이상으로 격렬했다. 어찌나 쉬지 않고 싸우는지 로마인 자신...
우선 부끄러운 고백부터 해야겠다. 나는 올해 처음으로 헌법을 공부하기 시작했다. 그리고 크게 후회했다. 왜 진작 헌법에 관심을 두지 않았을까? 소위 인문학을 공부하면서 해왔던 많은 생각들, 특히 현실의 부조리함에 대한 고민의 최전선에 바로 헌법이 서 있었다. 헌법이란 당위와 현상에...
2005년 제정된 이라크 헌법의 경우, 전문이 유려하고 장문이다. 민족의 역사에 대한 자부심이 가득함을 느낄 수 있다. 그 초반만 소개하면 다음과 같다.
HOL(head of line): TCP에서의 전송 지연으로 인한 레이턴시
몇 년 전 겪은 일이다. 당시 사용 중이던 안드로이드 폰의 배터리가 이상하게 빨리 닳아서 제조사의 서비스 센터에 찾아갔다. 해당 기종의 배터리에 문제가 있어 이미 이슈화 되었던 기기였다. 그래서 나는 당연히 내 폰도 배터리에 문제가 있으리라 생각했다. 서비스센터의 AS기사는 이러한...
After 500 Years, an Ancient Bronze Hand Is Rejoined to a Finger
iOS 패키지 매니저 아님
서아프리카 무문자 사회에 대한 문화인류학의 성과를 엿보며 한반도의 고대사를 생각한다. 무문자 사회에서 신화는 그리 멀리 있지 않다. 누에르족의 신화에서 최초의 인간이 출현했다고 여겨지는 나무는 1920년대까지도 그 자리에 그대로 서 있었다. 전승된 계보라 할지라도 진실을 전하기 보...
Meet the Other Social Influencers of the Animal Kingdom
200 ok status만 응답하는 코드
msw(mock service worker) msw란? api 응답을 모킹하는 서비스 워커.
목표: 애플 실리콘으로 local LLM을 구축하자
환경 vite v3.6.0 bun v1.0.26
Starting with Vite v5, the setting for HTTPS option has changed.
나는 예전에 고양이와 함께 살았다. 동화에서나 나올법한 이야기 같으나, 우리는 매일 이야기를 나눴다. 두 수컷이 함께 먹고, 자고, 놀고, 다투기 위해서는 대화를 나누지 않을 수 없었다. 물론 한국어를 사용하여 이야기를 나눈 건 아니다. 하지만 우리는 서로의 마음을 전할 수 있었다...
부재의 존재(Presence of absence)라는 개념을 처음 접했다. 과거에 존재했으나 현재는 더이상 존재하지 않는 모든 것은 그 빈자리로서 현재에 영향을 미친다. 이는 비단 자연 뿐만이 아니다. 우리의 마음에도 영향을 미친다. 예를 들어보자. 맹수가 존재하지 않는 세상에서 ...
가상 면접 사례로 배우는 대규모 시스템 설계 기초2, 2024, 인사이트, 알렉스 쉬 & 산 람, 이병준 역
10년만 일찍 이 책을 만났으면 어땠을까 싶다. 컴퓨터 공학에 대한 공부를 어디서부터 시작해야할지 도통 감을 잡을 수 없어 괴로워하던 그 시절에 이 책을 읽었으면 큰 도움이 되었으리라. 물론 컴퓨터 공학에 대한 나의 깨달음이 여전히 일천하여 이 책의 가르침을 충분히 소화해내지 못 ...
사진 속 저 멀리 용마산의 모습은 지금과 다름 없는데, 사진 속 사람의 모습은 그렇지 않다. 낯설다 못해 충격적이다. 청계천과 중랑천 둑길에 굴을 파고 사는 사람들, 얼기설기 엮은 비닐 아래에서 잠을 청하는 사람들이다. 불과 50년 전의 사진이다. 개미집과 판자촌이라 불리던 그 곳...
2016년 11월 12일 광화문 광장에서의 박근혜 퇴진 시위를 기억한다. 추운 날이었다. 너무 추운 나머지 주류 언론에서는 시위의 소멸을 전망했다. 하지만 그날 시위 참여자는 100만명을 넘겼다. 거대한 인파가 청와대 인근까지 전진했다. 의무경찰과 그들을 태운 버스가 시위대를 가로...
할아버지께 직접 들은 이야기다. 인상깊어 옮겨본다. 나 역시 기억이 잘 나지 않아 오류가 있을 수 있다. 할아버지께 다시 여쭤봐야지. 고로 계속 수정 예정.
예전 회사에서 했던 인터뷰.
운영하는 서비스 중 ASP와 Visual Basic으로 만들어진 구닥다리 사이트가 하나 있다. 어느 날 google chrome에서 사이트를 열어보니 화면 한 구석이 휑하다.
운영하는 서비스 중 ASP와 Visual Basic으로 만들어진 구닥다리 사이트가 하나 있다. 어느 날 google chrome에서 사이트를 열어보니 화면 한 구석이 휑하다.
마이크로소프트 서피스 프로3(이하 서피스)의 OS를 재설치 할 일이 생겼다. 서피스는 편리하게도 다양한 재설치 및 초기화 옵션을 제공한다. 하지만 나는 그런걸 믿지 않는다. windows95 시절에 하드플로피 디스크 30장을 동원, 백업 후 포맷을 했다가 다 날려먹은 뼈아픈 기억 ...
마이크로소프트 서피스 프로3(이하 서피스)의 OS를 재설치 할 일이 생겼다. 서피스는 편리하게도 다양한 재설치 및 초기화 옵션을 제공한다. 하지만 나는 그런걸 믿지 않는다. windows95 시절에 하드플로피 디스크 30장을 동원, 백업 후 포맷을 했다가 다 날려먹은 뼈아픈 기억 ...
나는 짬뽕이라는 음식을 좋아하지 않는다. 한국 짬뽕의 주류인 해물 짬뽕은 더욱 그렇다. 비린 맛을 매운 맛으로 가리고, 매운 맛을 비린 맛으로 감추는 모양새가 영 못마땅하다. 아마도 분명하고 명쾌한 것을 좋아하는 나의 성향 때문일 터이다.
얼마 전부터 지인의 강력한 권유로 살사를 배우기 시작했다. 그간 나는 춤과 인연이 전혀 없었다. 혼란스러웠던 세기말, 그 시절에 청소년기를 보냈다면 누구나 한 번쯤 따라해봤다는 HOT와 GOD의 춤조차 근처에도 가지 않았다. 그래도 내심 내가 잘 할거라는 자신은 있었다. 그간 운동...
인하공전 축제 마지막 밤, 공연 무대의 최후를 장식하고자 온 선미를 보기 위해 수많은 인파가 몰렸다. 나 역시 기꺼이 함께 했다. 어떻게든 가까이서 보고 싶다는 열망으로 건장한 청년들과 부비적거리며 어찌어찌 다다른 곳은 무대 앞 15미터, 아쉽지만 그 이상은 어려운 거리였다. 그녀...
인하공전 축제 마지막 밤, 공연 무대의 최후를 장식하고자 온 선미를 보기 위해 수많은 인파가 몰렸다. 나 역시 기꺼이 함께 했다. 어떻게든 가까이서 보고 싶다는 열망으로 건장한 청년들과 부비적거리며 어찌어찌 다다른 곳은 무대 앞 15미터, 아쉽지만 그 이상은 어려운 거리였다. 그녀...
인하공전 축제 마지막 밤, 공연 무대의 최후를 장식하고자 온 선미를 보기 위해 수많은 인파가 몰렸다. 나 역시 기꺼이 함께 했다. 어떻게든 가까이서 보고 싶다는 열망으로 건장한 청년들과 부비적거리며 어찌어찌 다다른 곳은 무대 앞 15미터, 아쉽지만 그 이상은 어려운 거리였다. 그녀...
0. 시작
0. 시작
0. 시작
0. 시작
0. 기묘한 조합
IIS6.0에서 JSON을 내려받을 일이 생겼다. 그런데 잘 안된다. 이런 오류 메시지가 뜬다.
내게는 새마을금고에서 일하는 친구가 하나 있다. 이 친구는 동네의 작은 지점에서 일을 하는데, 이런 곳이 흔히 그렇듯 긴급한 업무만 얼른 보러가는 찬바람 부는 그런 은행이 아니다. 오히려 할일없는 동네 주민들이 들러 한 수다 떨고가는 마을 경로당 겸 사랑방과 비슷하다고 하겠다. 은...
내게는 새마을금고에서 일하는 친구가 하나 있다. 이 친구는 동네의 작은 지점에서 일을 하는데, 이런 곳이 흔히 그렇듯 긴급한 업무만 얼른 보러가는 찬바람 부는 그런 은행이 아니다. 오히려 할일없는 동네 주민들이 들러 한 수다 떨고가는 마을 경로당 겸 사랑방과 비슷하다고 하겠다. 은...
물리학자이자 시인이었던 메이지-다이쇼 시대 일본인의 수필집. 담담하게 자연과 사물과 인간을 관찰하며 묘사한다. 수필에서 흔히 볼법한 감정의 과잉은 없다. 그렇기에 괜한 방해없이 그의 눈에 비치는 광경을 바로 눈 앞에서 보는 듯 빠져든다. 그렇다고 결코 무미無味하지는 않다. 그의 글...
글을 읽다보면 가끔씩 그 필력에 사로잡힐 때가 있다. 장절함이든 속도감이든, 무엇이든 좋다. 문장이 뿜어내는 힘을 타고 정신없이 책을 넘기다보면 어느새 책장의 끝이 보이는 순간이 오는데, 그러면 문득 아쉬워하며 나도 이런 글을 써보고 싶은 것이다. 아사이 료의 ‘시간을 달리는 여유...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
전철을 타고 긴 시간 통근을 한다는 것은 꽤나 고통스러운 일이다. 대체로 만원이고, 비좁고, 덥다. 그렇게 전철을 타고 내리는 사람들 사이에 끼어 서있노라면, 좌석에 앉아가는 승객들을 절로 부러운 눈으로 쳐다보기 마련이다. 어떻게든 앉아서 갈 심산으로 일찌감치 출근을 시작하여 자리...
나는 글 읽기를 좋아한다. 그리고 제법 많이 읽는 축에 속한다고 자부한다. 아무튼 늘 무언가를 읽고 있으니까. 하지만 그 주제는 대개 정해져 있다. 경제, 역사, 과학이 대부분이고, 문학류는 거의 읽지 않는다. 수필은 말할 필요도 없다. 요컨대 실용적인 글만 찾아본다는거다. 자연히...
나는 글 읽기를 좋아한다. 그리고 제법 많이 읽는 축에 속한다고 자부한다. 아무튼 늘 무언가를 읽고 있으니까. 하지만 그 주제는 대개 정해져 있다. 경제, 역사, 과학이 대부분이고, 문학류는 거의 읽지 않는다. 수필은 말할 필요도 없다. 요컨대 실용적인 글만 찾아본다는거다. 자연히...
Update! 2019-08-04
Update! 2019-08-04
git에서 파일의 변경 이력을 확인하는 방법은 간단하다. file_path에는 확인하고픈 파일의 경로를 넣어준다.
git에서 파일의 변경 이력을 확인하는 방법은 간단하다. file_path에는 확인하고픈 파일의 경로를 넣어준다.
git에서 파일의 변경 이력을 확인하는 방법은 간단하다. file_path에는 확인하고픈 파일의 경로를 넣어준다.
너에게 닥친 고난이 아무리 커보이더라도, 명심해라, 아직 빙산의 일각일 뿐이다.
1. ‘Promise’이(가) 정의되지 않았습니다.
1. ‘Promise’이(가) 정의되지 않았습니다.
webpack 시작 Vue.js 등의 프론트엔드 프레임워크를 사용해서 개발을 시작하면 webpack 사용을 피할 수 없다. webpack에서는 webpack-dev-server를 제공하는데, 개발시에 로컬 웹서버 역할을 해준다. webpack의 설정은 상당히 복잡하지만, 대부분...
기술 문서를 작성할 때 sphinx를 사용하면 편리하다. 기술문서 번역을 한다면 sphinx-intl은 아주 유용하다. 그 장점에는 여러가지가 있지만, 기술 문서 번역자에게 가장 큰 고통을 주는 문제, 바로 원본 문서의 잦은 변경 또한 쉽게 해결해준다. 변경된 부분만 찍어서 알...
기술 문서를 작성할 때 sphinx를 사용하면 편리하다. 기술문서 번역을 한다면 sphinx-intl은 아주 유용하다. 그 장점에는 여러가지가 있지만, 기술 문서 번역자에게 가장 큰 고통을 주는 문제, 바로 원본 문서의 잦은 변경 또한 쉽게 해결해준다. 변경된 부분만 찍어서 알...
FCM’s device token is same with GCM’s device token because FCM includes GCM. But FCM’s token has more information than GCM’s. So if you want to convert FCM’s...
FCM’s device token is same with GCM’s device token because FCM includes GCM. But FCM’s token has more information than GCM’s. So if you want to convert FCM’s...
이거 정말 좋은건데 모르시는 분들이 있어 안타까움에 올린다.
Stack Overflow에 새로운 기능이 추가되었다. 화면 우측 하단을 보면 고무 오리가 천연덕스레 떠있다.
Stack Overflow에 새로운 기능이 추가되었다. 화면 우측 하단을 보면 고무 오리가 천연덕스레 떠있다.
Stack Overflow에 새로운 기능이 추가되었다. 화면 우측 하단을 보면 고무 오리가 천연덕스레 떠있다.
요즘 스위프트로 iOS 앱을 개발하고 있다. 네이티브앱은 아니고 웹뷰로 이미 개발되어 있는 웹페이지를 띄워주는 앱인데, 열심히 개발하고 있자니 난데없이 화면이 하얗게 침묵했다. 불과 몇 초 전까지만 해도 잘 돌아가던 기능이다.
나는 JavaScript가 어렵다. 일단 언어 자체부터 상당히 난해하다. 뿐만 아니라 하루가 멀다하고 새로운 기술이 나온다. 그냥 또 뭔가 나왔는가보다 하고 넘기기에는 너무나 매력적인 기술이라 놓칠 수도 없다. 그러는 사이에 세월은 흘렀고, 어느새 JavaScript는 단지 언어 ...
회사에서 운영하는 서비스 중 안드로이드 앱이 있는데, 이 앱에서는 아직도 GCM으로 push messege를 보내고 있다. 하지만 더이상 그럴 수 없는 상황이 되었다.
회사에서 운영하는 서비스 중 안드로이드 앱이 있는데, 이 앱에서는 아직도 GCM으로 push messege를 보내고 있다. 하지만 더이상 그럴 수 없는 상황이 되었다.
AWS의 서버리스 웹 애플리케이션 구축 튜토리얼을 따라하고 있다. AWS를 내가 직접 만지는건 3년만이다. 그간 모르긴 몰라도 많이 바뀌었다. aws cli조차도 구성하기 힘들었다. 튜토리얼을 따라하기 위하여 aws cli로 S3를 만질 수 있도록 설정하는 과정을 정리해보았다.
AWS의 서버리스 웹 애플리케이션 구축 튜토리얼을 따라하고 있다. AWS를 내가 직접 만지는건 3년만이다. 그간 모르긴 몰라도 많이 바뀌었다. aws cli조차도 구성하기 힘들었다. 튜토리얼을 따라하기 위하여 aws cli로 S3를 만질 수 있도록 설정하는 과정을 정리해보았다.
Vue.js로 만든 기존 코드를 es6로 바꾸는 작업을 하고 있다. 하다보니 methods를 정의할 때, 화살표 함수를 사용하면 안된다는 사실을 알게됐다. 아래와 같이 정리해 보았다. 이 글로부터 큰 도움을 받았다.
나는 게으른 사람이다. 그리고 뭔가를 백업하는건 아주 귀찮은 일이다. 소스코드는 그나마 낫다. 개발하고 수정할 때마다 git remote 서버로 push하면 된다. 하지만 작업용 및 관리용으로 들고 있는 work 폴더를 백업하는건 너무나도 귀찮은 일이다. 그러니 자동화하기로 했다....
나는 게으른 사람이다. 그리고 뭔가를 백업하는건 아주 귀찮은 일이다. 소스코드는 그나마 낫다. 개발하고 수정할 때마다 git remote 서버로 push하면 된다. 하지만 작업용 및 관리용으로 들고 있는 work 폴더를 백업하는건 너무나도 귀찮은 일이다. 그러니 자동화하기로 했다....
나는 게으른 사람이다. 그리고 뭔가를 백업하는건 아주 귀찮은 일이다. 소스코드는 그나마 낫다. 개발하고 수정할 때마다 git remote 서버로 push하면 된다. 하지만 작업용 및 관리용으로 들고 있는 work 폴더를 백업하는건 너무나도 귀찮은 일이다. 그러니 자동화하기로 했다....
tl;dr: npm audit fix로 취약점을 해결하자
아래 링크는 markdown에서 syntax highlighting을 지원하는 language list다.
가내수공업적 로그 분석
C#에서 Json.NET의 사용 예제를 정리해보았다. 왜냐면 내가 자꾸 잊어먹기 때문… 계속 업데이트 할 예정이다.
C#에서 Json.NET의 사용 예제를 정리해보았다. 왜냐면 내가 자꾸 잊어먹기 때문… 계속 업데이트 할 예정이다.
I made a game using Vue.js, vuetify, firebase.
철기 시대의 무역과 경제 성장
철기 시대의 무역과 경제 성장
철기 시대의 무역과 경제 성장
철기 시대의 무역과 경제 성장
어릴 적 시골의 우리 집 헛간에 눌러 살던 고양이 모녀가 있었다. 마침 방학이라 시간도 많았던지라, 그늘에 앉아 고양이 가족이 노는 모습을 지켜보는게 나의 일과였다. 처음에는 나를 몹시도 경계하던 고양이 가족이었지만, 곧 기묘한 관계가 형성되었다. 고양이 쪽에서 내게 먼저 다가오는...
HTML textarea로 만들어진 게시판을 TinyMCE로 교체하는 작업을 하던 도중, 개행문자가 DB에 CRLF(\r\n)로 저장되어 귀찮은 일이 생겼다.
처음 Vuetify를 Add하고 프로젝트를 빌드하면 warning이 많이 뜬다.
I heard a sad lyrics, technicalism love story.
아래 사진은 인하대학교 우편분류실 입구다.
관리가 제대로 되지 않고 있는 리눅스 서버가 하나 있다. 이 서버의 log 파일을 지우기 위해 사용하는 명령어를 사용 순서대로 정리해보았다.
Updated! For new IBM Cloud on 2019.06.24.
Updated! For new IBM Cloud on 2019.06.24.
Updated! For new IBM Cloud on 2019.06.24.
It works on my Node.js project.
몇일 전, 출근길에 분주히 움직이는 한 무리의 일꾼들이 눈에 띄었다. 식당을 철거 중이었다. 영업을 중단한지 한 달 만이었다. 그곳은 내가 즐겨찾던 식당이었다.
토이 프로젝트에 크롤링이 필요하여 잡은 책이다. 하지만 프로젝트가 곧 엎어져(?) 버린 탓에 크롤러를 직접 만들 필요는 없었다. 이런 맥빠지는 일을 겪었지만 책을 덮을 수는 없었다. 웹 크롤링의 어려움이라 함은 결국 제대로 만들어지지 않은 웹페이지와의 싸움이다. 그리고 이 책은 바...
이게 아닌 줄 알아도 조직은 굴러간다. 그렇게 스스로 굴러가다 보면, 거기에 취해있다 보면 무엇이 잘못인지조차 잊는다. 끝내는 파멸할테지만, 그렇게 된 다음에라도 깨달을 수 있을까? 무엇이 잘못이었는지.
프로젝트 시작
북유럽 신화의 신들은 모순적이다. 이들은 내가 평소 생각하던 신의 모습과는 다르다. 모든 것을 알고자 하나 실은 아무 것도 모르는, 혹은 몰랐던 신 오딘. 신이면서도 신이 아니며, 모든 신에게 종말을 내릴 자 로키. 누구보다 강하다지만 그 힘을 어찌 써야할지 무지한 토르. 신보다 ...
There is no side effect. I got 100Gb!
Spring Data JPA를 쓰다가 Sorting이 안되는 고통을 겪었다. 평소처럼 Spring Data method명으로 order by를 먹이려는데, 왜인지는 모르겠으나 컬럼명을 발견하지 못하여, 쿼리문이 만들어지지 못하는 오류가 발생했다. 그래서 Sort 객체를 사용한 간단...
Spring Data JPA를 쓰다가 Sorting이 안되는 고통을 겪었다. 평소처럼 Spring Data method명으로 order by를 먹이려는데, 왜인지는 모르겠으나 컬럼명을 발견하지 못하여, 쿼리문이 만들어지지 못하는 오류가 발생했다. 그래서 Sort 객체를 사용한 간단...
오늘은 정말이지 이상한 날이었다. 늘 그렇듯 아주 간단한 개발 요청이 한 건 들어왔고, 나는 몇 분 만에 기능을 구현했다. 아무 문제도 없었다. 하지만 끝이 아니었다. 방금 손을 보았던 그 기능의 바로 옆에 있는 기능이 더이상 정상 동작하지 않았다. 오류 메시지도 없었다. 마치 처...
400년 전의 인천에 이윤생이라는 양반이 살았다. 그 당시 나라는 이미 외국과 한 차례 전쟁을 치뤘고, 다가오는 전쟁을 준비하고 있었다. 이윤생은 활 쏘고 말 달리기를 잘하여 무반 벼슬을 받았다. 이윤생이 정식으로 무과에 급제했는지, 그리고 그가 받은 관직인 중앙군 장교를 정말로 ...
재미있는 기사가 있어 요약해보았다.
dispatch를 쓰면 된다.
청동기 시대 시리아의 거대 도시 중 하나였던 Qatna의 왕궁 발굴 현장에서 코끼리뼈로 가득찬 방 2개가 발견되었다. 왕궁은 청동기 시대 중기에 건설되어 청동기 시대 말기(1340 B.C)에 파괴된 것으로 보인다. 코끼리 뼈가 있는 방의 높이는 5m 이상이고 가로, 세로 3미터가 ...
A Record of Horseback Riding, Written in Bone and Teeth를 읽고 쓴 글
아일랜드와 영국 제국주의에 관한 재미있는 기사가 있어 소개한다. 이웃한 제국주의 국가로부터 식민 지배를 당한 한국의 입장에서도 생각할 거리가 있다.
Python의 Requests 모듈로 C#에 json 데이터를 post request로 보낼 때 아래와 같은 500 에러를 맞이할 수 있다.
회사에서 급히 쿠버네티스를 사용할 일이 생겼다. helm chart를 알게 되었기 때문. 복잡한 운영환경 구축을 아주 쉽게 해준다는 마법같은 약속! 하지만 helm chart 구성을 수정하려고 하니 몹시 당황스러웠다. 그간 내가 쓰던 docker와 docker-compose 지식으...
A Hitchhiker’s Guide to an Ancient Geomagnetic Disruption
개발자 채용공고를 읽다보면 종종 이런 우대사항 혹은 필수사항을 발견한다.
How the World’s Oldest Wooden Sculpture Is Reshaping Prehistory
Apollo’s Cult in the Black Sea Area and the Greek Colonists: Some Remarks(논문) 요약
How Many Tyrannosaurus Rexes Ever Lived on Earth? Here’s a New Clue.
What Doomed a Sprawling City Near St. Louis 1,000 Years Ago?
The Flu Vanished During Covid. What Will Its Return Look Like?
I’m a Physicist Who Searches for Aliens. U.F.O.s Don’t Impress Me.
update: 20210811
1, !(bang)… very confused even Google are.
요약: safari는 scrollIntoView의 모든 option을 지원하지 않음 reference: https://caniuse.com/?search=scrollIntoView safari 13, 14에서 test함 오류 목...
node_modules의 구조
javascript Set 자료형에 object를 element로 넣는다면, 각 element가 unique한지 어떻게 구별하는 기준은 무엇일까? object 안의 property value까지 비교할까?
Did the ‘Black Death’ Really Kill Half of Europe? New Research Says No. 요약
HTML video tag의 onTimeUpdate 프로퍼티에 박히는 콜백은 가장 느릴 경우 250ms 마다 1회 동작한다.
2023.04.06. v0.151.3 기준으로 Three.js의 버전이 올라가면서 더이상 THREE.RGBFormat API를 사용할 수 없게 되었다.
Vite의 자동 폴리필과 vue-tsc의 타입 체크는 완전히 따로 논다.
문제 HLS로 video를 재생하려는데, 최초 로딩시 너무 많은 네트워크 데이터를 사용한다. 나의 경우에는 최초 로딩시 무려 1분의 buffer를 하느라 60MB 가까운 데이터를 사용했다.
문제 HLS로 video를 재생하려는데, 최초 로딩시 너무 많은 네트워크 데이터를 사용한다. 나의 경우에는 최초 로딩시 무려 1분의 buffer를 하느라 60MB 가까운 데이터를 사용했다.
강화 흥왕리 이궁지 발굴조사보고서, 2019, 국립강화문화재연구소 본격적인 발굴이라기보다는 지표조사였다. 오랜 시간이 흘러 남아 있는 것은 드물었다. 담장의 흔적과 기단, 그리고 2개의 건물 뿐이었다. 정말로 이곳은 고려의 궁궐이었을까? 개경 천도 이후에는 어떤 곳이었고, 조선 시...
영산강 유역의 고대고분 정밀분포조사보고서, 2011, 국립나주문화재연구소 엄다 재동 마을의 마한 고분은 오래 전부터 나의 마음을 잡아 끌었다. 이 경치 좋은 언덕에 무덤을 쓴 사람은 누구일까? 누구였기에 2천년에 가까운 시간이 흘렀음에도 우뚝한 무덤을 남긴걸까? 그에 대한 기억은 ...
영산강 유역의 고대고분 정밀분포조사보고서, 2011, 국립나주문화재연구소 엄다 재동 마을의 마한 고분은 오래 전부터 나의 마음을 잡아 끌었다. 이 경치 좋은 언덕에 무덤을 쓴 사람은 누구일까? 누구였기에 2천년에 가까운 시간이 흘렀음에도 우뚝한 무덤을 남긴걸까? 그에 대한 기억은 ...
영산강 유역의 고대고분 정밀분포조사보고서, 2011, 국립나주문화재연구소 엄다 재동 마을의 마한 고분은 오래 전부터 나의 마음을 잡아 끌었다. 이 경치 좋은 언덕에 무덤을 쓴 사람은 누구일까? 누구였기에 2천년에 가까운 시간이 흘렀음에도 우뚝한 무덤을 남긴걸까? 그에 대한 기억은 ...
영산강 유역의 고대고분 정밀분포조사보고서, 2011, 국립나주문화재연구소 엄다 재동 마을의 마한 고분은 오래 전부터 나의 마음을 잡아 끌었다. 이 경치 좋은 언덕에 무덤을 쓴 사람은 누구일까? 누구였기에 2천년에 가까운 시간이 흘렀음에도 우뚝한 무덤을 남긴걸까? 그에 대한 기억은 ...
영산강 유역의 고대고분 정밀분포조사보고서, 2011, 국립나주문화재연구소 엄다 재동 마을의 마한 고분은 오래 전부터 나의 마음을 잡아 끌었다. 이 경치 좋은 언덕에 무덤을 쓴 사람은 누구일까? 누구였기에 2천년에 가까운 시간이 흘렀음에도 우뚝한 무덤을 남긴걸까? 그에 대한 기억은 ...
목표: 애플 실리콘으로 stable diffusion 2를 돌려보자
모던 리액트 Deep Dive, 2022, 위키북스, 김용찬
10년이면 강산도 변한다는 옛말이 있다. 틀린 말이다. 적어도 근대 이후로는 말이다. 지도가 그려진지 100년이 지났으나, 지도를 손가락으로 짚으며 길과 건물을 살피노라면 여전히 100년 전 그 때 그 길을 걷는 것만 같다. 역사의 연구가 과거와 현재의 연결점을 찾는 작업이라면, ...
가상 면접 사례로 배우는 대규모 시스템 설계 기초, 2021, 인사이트, 알렉스 쉬, 이병준 역
eslint와 prettier의 개발 경험은 불쾌하다. 그 이유는
환경 vite v3.6.0 bun v1.0.26
내가 사는 마을에는 높고 긴 돌계단이 있다. 한 눈에 보기에도 오래된 계단 양측에는 산등성이를 따라 쌓은 집들이 다닥다닥 붙어있어 기묘한 경이감을 자아낸다. 힘겹게 계단을 올라서면 서울 시내가 한 눈에 내려다 보인다. 바로 일제 시대 때 만들어진 경성 야스쿠니 신사의 계단이다. 한...
영화 스타워즈에서는 중요한 순간마다 주인공에게 이미 고인이 된 스승의 목소리가 들린다. “루크, 포스를 믿어라.” 그러면 주인공은 미혹을 버리고 목소리의 가르침을 따른다. 그리고 우주를 구한다. 한낱 영화 속 이야기에 불과하지만, 낯설게 본다면 마냥 그렇지도 않다. 주인공이 들은 ...
즉각적인 반응을 이끌어내는 이야기가 있다. 이런 이야기가 되기 위한 조건은 많지 않다. 강자를 물리치는 약자, 거대한 전쟁, 압도적인 무공, 용기와 희생의 비장미, 일발역전의 계책이다. 무협지의 전형적인 레퍼토리를 말하는건가? 아니다. 고대 그리스-페르시아 전쟁을 다룬 헤로도토스의...
메이지 유신은 실로 빛난다. 역사상 이토록 적은 희생으로 근대화를 이룩한 비서구 국가의 사례가 또 있을까? 저자는 ‘밭두렁 키신저’(내가 만든 표현이다)가 유신이 성공할 수 있었던 원동력이라 본다. 흑선내항 이전에 이미 일본의 민중 사이에서는 다양한 사상이 백가쟁명 중이었다. 흑선...
HTML element의 scroll 이벤트는 어디에서 발생하는가? 햇갈리는 질문이다. 다시 말해보자. 내가 일으킨 scroll 이벤트는 어느 element에서 잡아 채는가? 그래도 햇갈린다. 다시 말해보자. onscroll 이벤트를 어느 element에 설정해야지 내가 원하는대로...
내가 lodash와 underscore를 사용한지 어언 10년이 다 되어간다. 함수형 자바스크립트라면 나름 익숙하다고 생각했다. 따로 공부한 적은 없었지만 말이다. 하지만 이 책을 읽고 보니 내가 그간 오만했음을 뒤늦게 깨달았다.
한 달여의 남미 종주는 브라질에서 시작하여 아르헨티나, 칠레, 볼리비아, 페루로 이어진다. 반시계 방향의 여정에서 보이는 남미 대륙의 풍광과 유적은 그야말로 장엄하다. 이과수 폭포, 안데스 산맥과 빙하,유우니 사막과 마추픽추의 거석에 이르기까지 무엇 하나 빼놓을 수 없다. 하지만 ...