Make Jekyll plugin showing html meta data on an url
Overview 카톡이나 슬랙 등 여러 메신저에서 url을 보냈을 때, 아래 그림(Slack)과 같이 그 url의 정보를 가져와서 미리 보여주는 기능 존재. Benchmarking Sample (Slack) Benchmarking Sa...
Overview 카톡이나 슬랙 등 여러 메신저에서 url을 보냈을 때, 아래 그림(Slack)과 같이 그 url의 정보를 가져와서 미리 보여주는 기능 존재. Benchmarking Sample (Slack) Benchmarking Sa...
Jekyll 포스트에 jsFiddle 넣기 위한 Plugin 적용 방법
Jekyll 블로그에서 카테고리 별로 이동할 수 있는 왼쪽 사이드바를 추가하고 싶었음. Minimal mistake을 사용하고 있기 때문에 아래 링크를 통해 사이드바를 추가하고, Custom sidebar navigation menu
이전까지는 webstorm 내 terminal 에서 명령어를 사용하여 local에서 테스트함. jekyll을 webstorm 에서 Run button으로 돌리는 방법 조사.
Overview jekyll blog에 google analytics를 추가. 다른 블로그들에서 첨부하는 google analytics script 내용과 google analytics 페이지에서 첨부하라고 한 script 내용과 달랐음. 결국 두 방법 다 가능한 것이어서, go...
Overview 지금까지 Github pages에서 블로그를 호스팅하였음. 하지만, Github pages는 jekyll theme와 plugin들에 대한 제한이 존재하여, custom plugin이나 theme 적용시, 배포 실패가 되는 경우가 빈번해짐. 그래서, 호스팅 서비스...
Open Preferences dialog in webstorm Press ⌘ + , (command key and ‘,’)
Jekyll로 블로그를 시작해보기 위해 설치하는 동안 만난 에러들과 설치 방법들 (전체적으로 수정 2018.04.26)
PostgreSQL pg_dump 로 데이터 이동시키기 테스트를 위해서 기존 서비스 PostgreSQL(v9.5.5)에서 가지고 있던 데이터를 다른 곳으로 옮김.
Neo4j Docker에 CSV 파일 import 하기
APOC Plugin for Neo4j Docker에 설치하기
Neo4j Docker로 설치하기
Dockerfile 에서 CMD bash 명령어 사용하기 DOCKERFILE 내 container 를 docker run할 때 서비스 시작하기 위해서 CMD 키워드를 사용. 하지만, CMD service elasticsearch start로 하였을 때 서비스가 시작하지 않았음. ...
Overview Docker는 Dockerfile로부터 명령어들을 읽어 image들을 자동적으로 빌드할 수 있다. Play framework v2.5.18 for scala 프로젝트의 배포된 bin파일이 JRE 8u151이 설치된 Oracle linux v7.2 docker im...
Overview Docker를 brew로 macOS에 설치하는 방법에 관한 포스트. Docker 공식 홈페이지에서는 Docker for Mac이라는 dmg 파일을 다운로드 받아 설치하는 방법을 소개함.
Elasticsearch 에서 Garbage Collection log Option (Custom JVM Option) 적용 Elasticsearch 가 docker로 운영되고 있는 서버 인스턴스에서 Elasticsearch 의 gc.log 가 쌓여 디스크를 가득 차지하는 문제가 ...
Docker compose 로 Elasticsearch 의 Searchguard, X-Pack plugin 사용하기 이전에 테스트용으로 서버에 남겨놓았던 일래스틱서치의 데이터 탈취 당함. 테스트 데이터가 없어지고 인덱스에 어딘가로 돈을 보내면 데이터를 유출하지 않겠다는 메시지가 남...
elasticdump 이용해서 Elasticsearch 데이터 옮기기 기존 Elasticsearch 데이터를 테스트나 백업을 위해서 다른 곳으로 옮겨야함. Data migration tool이 있는지 찾아보다가 Elasticdump 을 발견.
x-pack으로 임의의 유저만 elasticsearch 데이터 read가 가능하고, 인증 받은 관리자만 데이터 수정 가능하게 만들기 Setup Elasticsearch 글을 따라 설치한 Elasticsearch는 인증 받지 못한 사용자가 REST API 를 통해 데이터 조작이 가능...
Docker build 로 Elasticsearch docker image 만들기 특정 이미지를 기반으로 하여 새로운 이미지를 만들 수 있는 Docker build에 대해 공부와 함께 이전에 ubuntu 14.04 위에 서비스로 elasticsearch 를 설치했던 내용들을 정리하...
Overview Elastic Search v5.4.3 (설치 시점인 2017.06.29자 최신버전)를 우분투에 설치
인계 받은 프로젝트 내 git submodule이 포함되어 있었음. 일단 $ git clone 후, submodule을 실행하려니, submodule의 repository 주소가 인계자 아이디가 포함된 절대 주소 값으로 표현되어 있었음. (ex. https://{다른 사람 id}...
IntelliJ 에서 JShell Console (자바9 이상) 사용하기
DataGrip에서 SSH tunnel 사용하기
Java Maven 에서 flyway으로 DB vesion control 하기 DB schema version control 할 수 있는 Flyway를 Maven project에 적용하는 방법 소개.
Ubuntu에서 vi setting 변경하여 백스페이스 활성화 Docker로 설치한 Ubuntu에서 vi로 파일을 수정할려고하는데, 백스페이스를 누를 때 이상한 글씨가 써지는 현상이 있었음.
Ubuntu에서 PEM 파일 만료 기간 알아보기 Ubuntu에서 특정 PEM 파일에 대한 만료 기간을 알아보고 싶을 때, openssl을 사용. $ openssl x509 -enddate -noout -in {file path/file.pem} notAfter=Dec 28 23:...
CentOS 7에 nginx 설치 Firewall 설치
Overview CentOS v7.3 64bit에 다음과 같은 설정을 진행한다. user 생성 local ssh keygen을 이용한 private/public key user 로그인 생성된 user sudo 권한 부여
요구사항 공유 및 접근 가능성이 높아야함 시트B에는 현재까지 사용된 금액, 용도, 사용내역들이 존재 시트A에는 시트B의 데이터들을 사용하여 용도에 따라 정리된 형태로 보려고 함
Overview Play framework v2.5 for scala (scala v2.11.7 사용) 프로젝트에서 적용하고 있었던 Controller, Service, DAO(Data access object) 구조 코드 정리와 이를 생각하다가 갑지기 궁금해진 두 가지 궁금증에 ...
Overview Play framework v2.5 for scala 에서 unit test를 적용을 위한 라이브러리 조사 및 초기 적용 방법 소개
Requirement Play Framework 를 사용한 개발을 하기 위한 개발 환경 세팅
Scala trait과 Java interface 비교 Java의 interface와 scala trait 둘 다 Class가 가지고 있는 특성을 추상화를 함. 그래서, 그에 대한 실제적 구현물은 interface 나 trait을 받는 쪽(implements, with)으로 맡길 ...
Overview Atlassian의 jira와 bitbucket를 사용하였지만, 두 서비스를 별도로 사용하는 것과 별반 다를게 없어 좀 더 유기적으로 사용하여 이슈, 코드 관리를 하려함. 그러한 노력의 일환으로 각 jira 이슈 별로 bitbucket의 feature branch를...
개요 카카오톡 블라인드 채용 과정 중 진행한 온라인 코딩 테스트 문제를 스칼라를 이용해서 풀어봄. 실제 코딩 테스트는 9월 16일(토) 오후 2시 ~ 7시 5시간 동안 진행되었으며, 자바, C++, 파이썬, 자바스크립트, 스위프트의 언어를 선택할 수 있었음(통계 및 문제 해설 관...
Issue 스칼라에서의 Dependency Injection에서 어떤 경우에는 객체를 val 로 선언하고, 어떤 경우에는 그냥 하는지 궁금했음. ```scala class TestDI @Inject() (val test: Test, test2: Test2) {
Continued Web Scraping with Scala-#3 Requirements Wiki 페이지 안에 항목 페이지로 연결되는 Path 출력 모든 항목 페이지는 id가 bodyContent 인 html element 안에 존재함 항목 페이...
Contents Scala scraper 함수 Scala Either 핸들링 방법 고찰
Continued Web Scraping with Scala-#1 Requirement Scala scraper(A Scala library for scraping content from HTML pages) 사용 Get URL에 대한 Exception Case 처리
Requirement 파이썬으로 웹 크롤러 만들기(Web Scraping with Python) 에서 파이썬 기본 라이브러리로만 웹 데이터를 string으로 받아오는 것에 대응하는 스칼라 스크립트 만들어보기
함수형 프로그래밍이란 무엇인가? Pure function 으로 프로그램을 구축. Pure function은 Side Effect(부수효과: 정해진 결과를 돌려주는 것 이외의 어떤 일)가 없는 함수이며, Side effect의 예는 다음과 같다. 변수를 수정한다. 자료구조...
Netlify 빌드 실패 현상 failed during stage 'building site': Build script returned non-zero exit code: 1
Mac에서 iOS Simulator와 Safari를 사용한 웹앱 디버깅 모바일 웹앱 개발을 하면 모바일 사파리에서 디버깅을 해야할 때가 있다. 모바일 사파리는 다른 브라우저는 물론 맥 사파리와도 다른 동작을 보여줄 경우가 있기 때문이다.
Heroku에서 MariaDB를 무료로 사용해보자 Heroku에 SpringBoot App을 무료로 배포해보자에 이어서 DB도 무료로 사용해보기로 하였다. DB를 사용하기 위해서는 heroku addon이 필요하다. 그리고 addon을 사용하기 위해서 신용카드 등록이 필요하다. 등...
Heroku에 SpringBoot App을 무료로 배포해보자 개인적으로 공부한 내용이나 하드웨어 리소스가 많이 필요하지 않은 간단한 백엔드 서비스를 개발하고 배포해보고 싶었음. 개인 서버나 클라우드 서버스를 사용하면 되지만 비용이 발생함. 초기에 무료로 사용할 수 있는 서비스가 있...
ngrok 로 localhost 를 Public url 로 접근 https를 사용해서 접근해야하는 프로젝트에서 로컬 개발 환경해서는 https를 따로 설정하기 힘듬. 그런데 ngrok 를 활용하면 localhost를 Public URL로 http, https 둘 다 접근 가능함. ...
Jenkins 와 Bitbucket 연동으로 CI 시작하기 기존 작업 방식은 다음과 같음. 개인 컴퓨터(Local)에서 작업 진행 → 개발 서버 git bare repository 에 Commit & Push → git hooks shell script 으로 push 발생...
자바 버전 관리자(jenv) 설치 다양한 버전의 자바를 사용하기 위해서 버전 관리 패키지(jenv)를 설치. ```sh $ brew install jenv
Serverless framework 기반, scala로 AWS lambda 사용하기
AWS SUMMIT 2018 후기
Spring Cloud Gateway RouteDefinition & Route 코드 분석 Spring Cloud Gateway는 요청을 라우팅하는 것에 대해 정의하는 방법은 크게 두 가지가 있다. 자바 코드로 정의하는 방법인 Java DSL(Domain-Specific L...
Spring Cloud Gateway RouteDefinitionLocator & RouteLocator 코드 분석 Spring Cloud Gateway에서 Java DSL(Domain-Specific Languages)로 정의된 Route 객체들과 설정 파일에서 정의한 r...
Spring Cloud Gateway Web Handler 코드 분석 Spring Cloud Gateway(v2.2.7.RELEASE) 코드에서 Web Handler 부분을 분석한다. WebHandler는 요청을 처리하기 위한 인터페이스이며, Spring Cloud Gateway...
Spring Cloud Gateway Handler Mapping 코드 분석 Spring Cloud Gateway(v2.2.7.RELEASE) 코드에서 Handler Mapping 부분(아래 이미지 음영 외 부분)을 분석한다. Spring Cloud Gateway의 클라이언트 요청...
Spring Cloud Gateway 소개 마이크로 서비스 아키텍처에서는 여러 마이크로 서비스 어플리케이션들로 구성되어 있으므로 각각 서비스 어플리케이션에서 공통 기능(하나의 서버 어플리케이션에서 Filter로 처리하던 기능들)을 구현해야하는 힘든 점이 있다. 그러한 공통 기능을 ...
문제 상황 배포 이후, 지속적으로 DB Connection이 증가하여 DB와의 연결이 끊어지는 문제가 발생하였다. 특정 API에서 DB Connection이 정상적으로 종료되지 않고, sleep 상태로 가기 때문이었는데, 이를 확인하기 위해서 Connection Pool을 log로...
API Documentation 이란
content-type이 multipart/form-data 인 HTTP Request를 Spring Boot 2에서 처리하는 방법
Spring boot 프로젝트 IntelliJ 에 세팅하기 Play framework in Scala 를 사용하다 아래와 같은 이유로 Spring boot 프로젝트를 시작. 커뮤니티나 레퍼런스의 양이 많음 개발자를 구할 경우 Scala + Play 보다는 Java + Sp...
Selenium 소개 Selenium 는 브라우저를 자동화한다. Selenium WebDriver, Selenium IDE, Selenium Grid 세가지 프로젝트들이 있다.
HTML Element와 Vue에서 Event function 바인딩 테스트 테스트 이유: Vue 에서 click event를 선언하는데, method 이름만 선언된 경우와 method 실행을 선언할 때 다른 파라미터 값을 넘겨주었다.
테스트 이유 RxJS Observable.zip 으로 여러 비동기를 묶을 때, 그 개별 비동기 안에 있는 비동기도 기다리는가를 실험해보았다. 결론은 zip은 zip으로 묶은 비동기들만 기다리고, 그 내부에서 호출한 비동기는 zip과 상관없이 실행된다.
현상 개발 환경에서는 잘 동작하던 기능이 스테이징 환경에서 이상 동작하는 현상이 발생하였다. 그 현상은 특정 메뉴 영역의 mouseout 이벤트가 제대로 동작하지 않는 것이었다.
배경 프로젝트가 시간에 지남에 따라 Vue Global mixin 컴포넌트가 방대해졌고, 특정 도메인 컴포넌트에서만 쓸 것 같은 기능들이 들어간 것을 발견하였다. 이를 분리하면서 생각했던 내용들을 정리하였다.
현상 요금 계산을 js로 할 때, 999999999999999 (15자리) 이후로 자릿수가 증가할수록 정확성이 깨지는 현상이 발생
현상 Cannot read property 'props' of undefined 에러가 발생 vue.esm.js:1356 Uncaught (in promise) TypeError: Cannot read property 'props' of undefined at normali...
IE11에서 strip-ansi 사용 시 에러 IE11 브라우저로 접속 시, module.exports = input => typeof input === 'string' ? input.replace(ansiRegex(), '') : input; 지점에서 에러가 발생하면서 테스...
왜 나는 눈앞의 버그를 보지 못했는가? - iOS 웹 브라우저에서 쿠키 설정 시 특이사항 보이지 않는 고릴라 실험을 아시나요? iOS 웹 브라우저 쿠키 설정에 대한 버그를 찾아나서는 과정 중에 유사한 상황을 겪어서 공유하고자 합니다.
모바일 웹에서 앱을 알리는 방법 어떠한 서비스에서 모바일 웹과 동일한 기능이거나 더 나은 기능을 제공해줄 수 있는 모바일 앱이 있을 수 있다. 그러한 경우 사용자가 그 앱을 다운로드 받을 수 있도록 안내를 해줄 필요가 있다. iOS라면 App Store, 안드로이드라면 구글 플레이...
문제 상황 공통 컴포넌트를 라이브러리 형태로 배포해서 여러 다른 서비스(도메인)에서 임포트하여 사용 공통 컴포넌트에서는 데이터를 가져오기 위해서 공통 컴포넌트 관리 서버의 API를 호출 ex. https://service-a.jungbin.kim/ind...
개요 특정 Vue component의 mounted에서 component 내부 특정 DOM 들에 addEventListener로 이벤트 함수를 걸어줌. 이 component는 사용자가 다른 페이지로 넘어가면서 destroyed 됨. 이 때 component 내부 DOM들에 걸려있는...
Webpack bundling 파일 사이즈 줄이기(Tree Shaking) 이 글은 개인적으로 시간 계산이 필요한 크롬 확장 프로그램 앱을 개발하다가 빌드 파일 크기 문제가 발생하면서 작성하게 되었습니다. (사용환경: Webpack v4.29.3)
VueJS mixin 과 extends 차이 동일 이벤트훅이 지정되었을 때의 호출 순서 mixins 와 extends 가 어떻게 다른 건가요? 질문 글에 대한 답변으로 Composing Vue.js Components 글이 언급됨. 내용은 아래와 같았음. ...
Web Worker 기본 개념 Worker 는 생성자를 사용하여 생성하는 객체. ex) new Worker("worker.js") 위의 예의 worker.js 파일에는 Worker 스레드가 실행할 코드가 존재. 이는 현재 윈도우와 다른 전역 컨텍스트에서 실행됨. 그래서 W...
OpenCV 를 WebAssembly로 빌드
C/C++ 코드를 WebAssembly로 빌드하기 위한 Mac OS X 환경 설정 Emscripten 설치 가이드를 참고하여 C와 C++을 WebAssembly로 컴파일하기 위한 도구 Emscripten 설치
JS Object JSON.stringify 시 발생 에러 자기 자신을 참조하고 있는 JavaScript Object를 JSON.stringify 할 경우 발생. var obj = { x: 1, y: "2" }; obj.myself = obj; JSON.stringify(obj);...
parcel 로 웹 앱 프로젝트 시작해보기 webpack 보다 가볍게 웹앱을 돌릴 수 있는 빌드툴이라는 소개를 보고 테스트해봄.
HTML5 Input element 내 숫자만 허용하기
iOS App 에 Google Analytics 라이브러리 연동 (Swift 3.2 / Xcode 9 초반) 코코아팟으로만 라이브러리 임포트를 했을 경우, import가 안되는 현상이 있음. Google Analytics 라이브러리 임포트하는게 제일 어려움.
Overview Swift3 의 Alamofire 라이브러리를 사용하여 callback 함수로 API request를 구현. 하지만, callback 함수 부분이 가독성이 떨어지는 것 같아 코드를 리팩토링해보기로 결정. AngularJS에서 defer 객체를 통한 Promise와 ...
UIViewController life cycle 중, storyboard 에서 설정한 auto layout 적용 시점 UIView 에 dashed & rounded border 를 적용하기 위해 viewDidLoad() 와 viewWillAppear() 에 아래 appl...
iOS UIView 방향별 border 추가/삭제 iOS에서 Swift3로 UIView의 top, bottom, left, right 에 border 추가/삭제할 수 있는 코드. extension을 이용하여, UIView에서 해당 함수를 접근할 수 있음.
iOS motion sensor 민감도 조절 방법 조사 디바이스 센서 데이터와 같이 지속적으로 업데이트되는 값은 들어오는 값 그대로(raw data)를 사용하는 것은 성능에 좋지 않을 수 있다. 데이터가 업데이트되는 주기가 빠를수록 그 데이터를 이용해야하는 함수 호출 또는 UI 렌...
Archive App을 빌드하는 것을 archive 라고 함. xcode 최상단 top 메뉴바에서 Product > Archive Archive가 완료되면, 지금까지 빌드한 앱들의 히스토리를 볼 수 있는 창이 뜸. 이 창은 Window > Organizer 으로 이동 ...
iOS App 개발을 하기위해서는 Developer 등록과 함께 Certificates와 Provisioning profile이 필요함. Certificates는 말 그대로 인증서. 이 인증서를 가지고 Provisioning profile을 만듬. 만약에 누군가 certificat...
클릭재킹(Clickjacking) 해킹 기법 중 하나. 관련 예방을 하지 않는다면, 웹 사이트에서 iframe 이라는 html 태그를 사용해서 주소가 다른 사이트를 불러올 수 있다.
Nginx logrotate 설정 배경: nginx log가 한 파일에 계속 남고 있어서 용량이 점점 커지고 있었다. -rw-r—r— 1 root root 211889676 2019-07-17 09:44 access.log -rw-r—r— 1 root root 1662663 2...
Coursera Machine Learning 강의를 듣고 이 강의를 듣게된 동기는 회사에서 Machine Learning 관련 업무를 맡을 뻔해서, 유투브에서 관련 강의/정보들을 찾아봄. 그 중 머신러닝 / 딥러닝 강의 7가지 추천에서 Andrew Ng 교수님의 Machine l...
HTML meta 데이터 가져오는 Ruby 스크립트 만들기 URL으로 HTML meta 데이터를 가져와 보여주는 Jekyll Plugin을 만들고 싶어서, 해당 기능을 가지고 있는 Ruby 라이브러리들을 찾아봄. URL을 입력값으로 meta 데이터를 객체로 매핑해서 반환해주는 것...