BlogHide Resteemsyjiq150 (56)in kr • 6 years agosteemCreated with Sketch.Playground에서 Cocoapod 라이브러리 사용하기엑스코드 플레이그라운드(Xcode Playground)에서 간단하게 코드를 테스트 해보고 싶은데 해당 코드가 특정 cocoapod 라이브러리에 의존성이 있는 경우 cocoapods-playgrounds 명령어 도구를 사용하면 편리하다. 설치 및 사용 방법 설치 sudo gem install cocoapods-playgroundsyjiq150 (56)in kr • 6 years agoPAKE와 SRP Protocol을 이용한 인증PAKE (password authenticated key exchange) PAKE 는 두명 이상의 참여자가 패스워드 기반으로 암호화된 채널을 만들어서 서로 통신할 수 있게 해주는 암호학 적인 방법을 말한다. Balanced PAKE 참여자들이 서로 암호화된 채널을 만드는 과정을 위해 동일한 패스워드를 사용하는 방법…yjiq150 (56)in kr • 6 years agoAPI 서버 인증을 위한 JWT와 JWK 이해하기쿠키(cookie)를 이용한 세션기반의 인증의 경우 특정 웹서버에서 세션 상태(session state)를 유지해야 하기 때문에 stateless 하지않다. 서버 로직이 Stateless가 아닌 경우 더 많은 요청을 처리하기 위해 동일한 서버의 숫자를 늘리는 스케일 아웃(scale out)에 적합하지 않다. 또한 도메인이 다른 서버에 대해서는 해당 세션…yjiq150 (56)in kr • 6 years ago인증서 파일 형식 및 확장자의 차이점 비교 설명https를 지원하는 웹서버를 설정하거나 서명이나 암호화 관련된 개발을 하게되면 한번씩 인증서 관련된 파일을 다룰 일이 생기게 된다. 이때 항상 프로그램이나 라이브러리들이 지원하는 형식이 달라서 인증서 형식을 변환해아 하는데 현재 갖고있는 파일의 형식이 무엇인지를 알아야 제대로 활용이 가능하다. 인증서 파일의 경우 인코딩 방식과 확장자가 일치하는 경우도…yjiq150 (56)in kr • 6 years agoKafka Consumer offset reset 방법카프카 Consumer를 사용하다 보면 offset을 reset해야하는 경우가 종종 있다. 개발 테스트를 진행하다가 필요에의해 offset을 리셋 실제 production에서 사용중에 예상치 못한 에러 등으로 데이터 누락이 발생하여 일정기간 전으로 다시 offset을 rewind해서 사용하고자 하는 경우 이런 경우에 Consumer…yjiq150 (56)in kr • 6 years ago크롬 익스텐션 개발 + React 적용하기크롬 익스텐션(Chrome Extension)은 모두 자바스크립트(Javascript)로 되어있기때문에 웹개발을 해본 사람이라면 그리 큰 노력을 들이지 않고도 개발을 시작 할 수 있다. 하지만 구글에서 익스텐션을 통한 보안이슈가 생기는 것을 막기 위해 다양한 방식으로 익스텐션의 자바스크립트가 실행되는 컨텍스트(context)들을 세분화 시켜두었기…yjiq150 (56)in kr • 6 years agoRedis OverviewRDBMS만큼의 정합성과 영속성을 보장할 필요가 없는 데이터들을 빠르게 처리하거나 일정 기간동안만 보관하고 있기 위한 용도로 레디스(Redis), memcached 등의 in-memory 기반 저장소가 많이 사용된다. 그중에서도 Redis는 빠른 성능을 유지하면서도 일정 수준 이상의 persistence를 제공하고, 다양한 native 데이터 구조들을…yjiq150 (56)in kr • 6 years agoMySQL InnoDB Transaction ModelMySQL의 InnoDB 엔진은 SQL 표준에 정의된 4가지 트랜잭션 격리 수준(transaction isolation level) 을 모두 제공한다. InnoDB 엔진의 트랜잭션 격리 수준 기본값은 REPEATABLE READ이다. MySQL client는 SET TRANSACTION 구문을 실행해서 격리 수준을 변경할 수 있고, server…yjiq150 (56)in kr • 6 years agoMySQL InnoDB Lock & Deadlock 이해하기MySQL InnoDB lock & deadlock 대규모의 많은 요청이 동시에 들어오는 데이터베이스(Database, DB) 어플리케이션의 경우 데이터의 정합성을 유지하면서 최대한 동시성을 높이는 것이 매우 중요한 포인트이다. MySQL InnoDB 엔진의 경우 상황에 따른 여러가지 락(Lock)을 통해서 동시성을 제어하며 이를 통해서 사용자가…yjiq150 (56)in kr • 6 years ago[MySQL] SELECT 해온 데이터 기반으로 값을 변경해서 INSERT 하기데이터베이스 작업을 하다보면 기존에 있는 데이터와 동일한 값의 데이터를 생성하거나, 기존에 있는 데이터를 기반으로 약간의 값 변경만을 적용하여 데이터를 생성하고 싶을때가 많다. 각각 경우에 어떻게 해야되는지 한번 살펴보도록 하자. 아래 쿼리를 실행하면 SELECT구문에서 선택된 row들이 바로 INSERT가 된다. INSERT INTO…yjiq150 (56)in kr • 6 years ago워드프레스 고유주소 원리워드프레스의 경우 글을 작성하면 " 라는 고유주소(permalink)를 갖는다. URL에는 디렉토리 구조처럼 나오면서도 워드프레스의 특정 포스트로 연결되는 이 고유주소는 어떻게 동작하는것일까? apache http 서버의 mod_rewrite 모듈 apache의 모듈중에서 mod_rewrite 가 활성화 되어 있을경우 서버내의 .htaccess…yjiq150 (56)in kr • 6 years agoShotcut을 이용하여 리눅스 서버에서 템플릿 기반의 동영상 만들기웹사이트 상에서 미리 제작된 영상 템플릿을 제공하고 이에 맞게 사용자가 이미지나 텍스트만 바꿀 수 있도록 툴을 제공한 후 사용자가 만들어낸 데이터 모델을 기반으로 영상을 만들어내는 video generator 기능을 구현하려면 어떻게 해야할까? 일단 웹사이트 프론트엔드에서 이미지를 업로드하고, 텍스트를 입력하고 배치하는 일들은 일반적인 웹사이트…yjiq150 (56)in kr • 6 years agoMySQL - InnoDB Auto Increment 성능 최적화MySQL - InnoDB Auto Increment 성능 최적화 MySQL에서 벌크 인서트를 실행할때 내부 동작을 찾아보다 보니, 어찌어찌 MySQL InnoDB 스토리지 엔진 내부에서 AUTO_INCREMENT(오토인크리먼트)를 어떤식으로 핸들링하고 있는지가 더 궁금해져서 MySQL 레퍼런스 문서(MySQL 5.7 기준)를 읽으면서 아래 내용을…yjiq150 (56)in kr • 6 years ago클라우드플레어(Cloudflare) 동작 원리"클라우드플레어(Cloudflare)를 적용만 하면 당신의 사이트의 속도를 빠르게 할 수 있다" 라는 클라우드플레어 광고 문구를 보고 도대체 클라우드플레어가 중간에서 어떤일을 하는지 궁금해서 조금 자세히 찾아보았다. 사이트 접속시에 어떤 일이 일어날까? 사용자가 주소를 입력했을때 일반적으로는 DNS에 example.com을 조회하면 그에…yjiq150 (56)in kr • 6 years ago커버로스 프로토콜(Kerberos Protocol)서버가 몇대 없고, 사용자의 숫자도 얼마 안되는 경우 각 서버별로 수동으로 유저를 추가하거나 권한을 부여해서 수동으로 관리하는것이 가능하다. 하지만 아래와 같이 점점 서버의 숫자가 많아지고, 유저들도 늘어나는 경우 관리에 드는 비용이 점점 커진다. 각 서버별로 접근 가능한 사용자(=클라이언트)들의 권한을 관리해야하는 경우 서버가…yjiq150 (56)in kr • 6 years agoHTTP Cache 튜토리얼HTTP를 이용하는 어플리케이션을 개발하다보면 효율적인 네트워크 송수신을위해 서버/클라이언트에서 캐쉬(cache)를 이용하는것이 필수적이다. HTTP를 이용할때 어떤식의 캐쉬방식이 있는지, 어떤 종류의 캐쉬들이 있는지, 어플리케이션 개발에있어서 상식적으로 알고있어야 할 내용들을 정리해보았다. 캐쉬의 종류 캐쉬의 위치에 따라 다음과 같이 분류가…yjiq150 (56)in kr • 6 years agoMySQL 중복 데이터 찾아서 삭제하기MySQL DB작업을 하다보면 table에 포함된 중복된 데이터를 골라내서 삭제하고 싶을때가 있다. revenue 라는 테이블안에 collect_date , currency , amount 라는 세개의 필드가 있다고 가정할때, collect_date 와 currency 가 동일하다면 중복된 데이터라고 가정한다. 샘플 데이터…yjiq150 (56)in kr • 6 years ago구글 태그매니저 사용하기구글 태그매니저란? GTM(Google Tag Manager)은 GA(Google Analytics)를 비롯한 여러 모니터링/마케팅 플랫폼들과 연동할 수 있는 중간자 적인 역할을 하는 플랫폼이다. 바로가기: 앱/웹을 재배포 하지 않고도 태그매니저내부의 설정값 변경 만으로 이미 배포되어있는 앱/웹의 설정 또는 조건식 들을 동적으로 변경할 수…yjiq150 (56)in kr • 6 years agoAWS EC2 ssh 로그인 쉽게하기AWS EC2 인스턴스 관리에 있어서 public/private key를 이용한 ssh 인증을 잘 이용하면 높은 보안성과 동시에 비밀번호 입력이 필요없는 편리한 환경을 구축 할 수 있다. AWS에 ssh 로그인 편리하게 하기 AWS(Amazon Web Service) EC2 계정 생성과정에서 필수적으로 public/private key pair를…yjiq150 (56)in kr • 6 years ago무료 SSL 인증서 적용하기 (Let's Encrypt)plain http 통신을 사용하는 경우 로그인 등의 인증 요청을 할때 plain text가 바로 노출이 되기때문에 항상 보안위험이 존재한다. 이를 막기 위해서 SSL이 적용된 https 통신을 하게되는데, 이를 위해서는 SSL 인증서가 필요하다. 일반적으로 여러 인증기관에서 웹서버용 SSL 인증서를 판매하고있는데 비용이 꽤 들다보니 기업들은 많이들…