똑똑, 프로젝트에 코틀린을 도입하려고 합니다. 이 글은 2017년 4월, 배민프레시에 코틀린 도입하는 과정에서 작성된 글을 바탕으로 재구성되었습니다. 시작하며 2017년 4월, 모바일 플랫폼에서 사용자 경험 극대화를 위한 여정의 첫발로 메인 개편 프로젝트를 시작했습니다. 이 프로젝트의…
네트워크 성능의 제약 사항 1990년대 인터넷 초창기 시절에는 캠퍼스 전체에 연결된 56Kbps 인터넷을 통해 E-Mail이나 IRC(Internet Relay Chat)와 같은 텍스트 중심이었지만 컴퓨터를 통해 지구 반대편의 남아프리카 학생과 통신을 할 수 있다는 것이 마냥 신기하기만…
- blog - open source kakao의 오픈소스 Ep7 - CMUX: CLI에 날개를 달자! “카카오의 오픈소스를 소개합니다” 일곱 번째는 jon.kwon과 동료들이 개발한 CMUX입니다. CMUX는 Cloudera Manager 기반의 하둡 클러스터를 관리하는데 필요한 대화…
Java Enum 활용기 안녕하세요? 우아한 형제들에서 결제/정산 시스템을 개발하고 있는 이동욱입니다. 이번 사내 블로그 포스팅 주제로 저는 Java Enum 활용 경험을 선택하였습니다. 이전에 개인 블로그에 Enum에 관해 알게 된 점들을 정리했음에도 선택한 이유는 제가 Enum을 통…
Web Components(2): Custom Elements 오늘은 이전에 썼던 글 WebComponents: Keep calm and #UseThePlatform에 이어지는 것으로, Web Components의 주요 표준 중 하나인 Custom Elements에 대한 글이다. TL;…
Gerrit을 이용한 코드 리뷰 시스템 - 인증 환경 설정 - 등록일 - 2017.06.19 - | - 코멘트 - 14740 "Gerrit을 이용한 코드 리뷰 시스템 - 코드 리뷰 시스템 설치"에서는 Apache와 MySQL을 사용하는 Gerrit 코드 리뷰 시스템을 설치하는 방법을 살…
HTTPS 전환 후 서버 메모리는 안녕한가요? - 등록일 - 2017.06.14 - | - 코멘트 - 38216 Apache 웹 서버에 HTTPS와 HTTP/2를 적용한 다음 메모리 누수(memory leak) 현상이 발생했습니다. 서버마다 메모리가 80% 이상 사용되고 있어 메모리를…
배민 API GATEWAY – spring cloud zuul 적용기 서비스를 운영하고 개발하는 팀이라면, LEGACY라는 거대한 괴물이 얼마나 다루기가 힘든 일인지 동감 할 것이다. 이 괴물이 오래되면 될수록, 크면 클수록… 제가 운영하고 개발하고 있는 팀에도 7년 묵은 괴물이 살고…
Redux-Saga에서의 WebSocket(socket.io) 이벤트 처리 React(이하 리액트), Redux(이하 리덕스) 생태계에서 소켓과 같은 외부 이벤트 처리는 개발에 많은 고민을 안겨준다. 똑같은 외부 이벤트가 발생하더라도 앱의 상태에 따라 다르게 처리하고 싶을 수도 있고,…
Socket.io-Client for Unity3D 소개 들어가면서 socket.io 웹 환경에서는 클라이언트인 브라우저와 서버 간에 푸쉬나 실시간 데이터를 처리하는데 여러 가지 방법을 활용했습니다. 그중에 Ajax를 이용한 polling, Long polling과 Streaming의…
3월 저희 회사에서 조용하게 런칭한 재능마켓 서비스를 구축하며 경험한 것들을 공유하려고 합니다. 목표는 간단(?)했습니다. - 새로운 기술을 도입하자. - 서비스 배포/롤백 작업을 최대한 단순하게 진행되도록 하자. - 서비스 안정성은 최대한 확보하자. - 런칭 후 내가 편하자 사람인에서…
2017년과 이후 JavaScript의 동향 - 브라우저 밖의 JavaScript - 등록일 - 2017.05.29 - | - 코멘트 - 22951 "2017년과 이후 JavaScript의 동향" 시리즈의 두 글에서는 ECMAScript의 브라우저 구현 상태와 주요한 기능을 중심으로 J…
빅데이터 다차원 분석 플랫폼, Kylin - 등록일 - 2017.05.15 - | - 코멘트 - 24508 대규모 데이터에서 데이터 인사이트를 얻는 것은 매우 어려운 일입니다. 특히 데이터 인사이트를 얻기 위해 몇 십억 건의 데이터에 다수의 GROUP BY 질의를 실시간으로 실행해 결과…
[모집] 우아한테크캠프 참가자를 모집합니다. 우아한테크캠프 참가자를 모집합니다. 우아한테크캠프 이미 외부에는 우아한형제들에서 인턴을 모집하는 것으로 공고가 나가고, 몇몇 분들이 공유도 해 주신 상황인데요. 이번에 진행하는 행사의 정확한 명칭은, 우아한형제들의 인턴모집이 아니라 우아한형제…
최근 클라우드 컴퓨팅환경이 널리 사용되면서 서버 하드웨어 대한 유지보수 및 구성을 신경 쓰지 않고, 다양한 서비스들을 위한 서버를 개발할 수 있게 되었습니다. 하지만 이런 환경을 사용함에도 auto-scaling이나 서버 로그 수집, 서비스 배포 및 관리 등 소프트웨어 스택에 관한 부분…
“NoSQL”이란 용어를 들어보신 적이 있는지요? 관계형 DBMS에서 데이터를 조회, 수정, 삭제하거나, DBMS를 조작하는데 사용되는 언어인 SQL(Structured Query Language)은 많이 들어보셨을 텐데, “No”+ “SQL”이라니? 아마 IT 산업에 현재 일하고 계시…
지난 3월 미국 라스베이거스에서 열렸던 IBM InterConnect 2017 행사에 삼성 SDS의 공통 플랫폼인 Insator가 소개되어 글로벌 기업 IT 관리자들로부터 많은 관심을 받았습니다. 전시에 소개된 Insator는 삼성SDS에서 자체 개발한 ‘데이터기반 서비스 공통플랫폼’으…
글로벌 대표 리서치 기관에 따르면 전세계 데이터 양은 2년 마다 2배씩 증가하고 있으며, 기업에서 다루는 스토리지 볼륨은 연평균 50% 이상 커지고 있습니다. 이에 비례하여 기업의 데이터 관리 비용도 기하급수적으로 늘어나고 있습니다. 늘어만 가는 데이터 관리 비용을 절감할 수 있는 방안…
Redux 분석하기 Redux는 Event Sourcing패턴과 Functional programming을 결합하여 라이브러리 형태로 구현한 컨테이너다. 이 컨테이너는 애플리케이션의 상태를 저장하고, 쉽게 예측할 수 있도록 하여 일관된 구현을 유지할 수 있도록 하고, 테스트, 유지보수,…
React 렌더링과 성능 알아보기 React는 간단하면서도 충분히 빠르다. 하지만 착각하지 말자. 대충 만들어도 빠르다는 것은 아니다. React 애플리케이션은 잘 만들어야 빠르다. React의 동작 원리를 이해하고 애플리케이션이 느려질 수 있는 상황들을 찾아 해결하는 것이 중요하다.…
Gerrit을 이용한 코드 리뷰 시스템 - 코드 리뷰 시스템 설치 - 등록일 - 2017.04.19 - | - 코멘트 - 67901 Gerrit은 코드 리뷰 기능과 Git 서버 저장소 관리 기능을 제공하는 웹 기반 코드 리뷰 시스템입니다. 온라인으로 코드의 변경 사항을 비교하고 토론할…
프로세스 개선이 현업에서 정착되려면 이 글은 프로젝트 프로세스의 개선에 관련된 이야기 입니다. 그리고 몇 달전 프로젝트에서 프로세스 구상하고 적용했던 경험들을 이야기하려 합니다. 만약 누군가가 우리팀이 겪은 것과 비슷한 상황에 처해 있다면 이 이야기가 조금이나마 도움이 될 것이라고 기대…
클라이언트 JavaScript 개발 환경은 빠르게 변화하고 있습니다. 다양한 관련 기술 중 빌드 툴 쪽에서 최근 가장 주목 받는 것은 webpack이라고 할 수 있습니다. webpack 전체는 굉장히 방대하기 때문에 한번에 이해하기가 쉽지 않습니다. 인터넷에 이미 잘 구성된 설정파일이…
2017년과 이후 JavaScript의 동향 - JavaScript(ECMAScript) - 등록일 - 2017.04.08 - | - 코멘트 - 41158 2016년 4월에 "2016년과 이후 JavaScript의 동향"에서 JavaScript 기술이 2016년과 그 이후에 어떻게 쓰이…
이번 글에서는 크로키가 사용하는 스택 중 클라이언트 JavaScript 프레임워크(client-side JavaScript framework)에 대해서 소개해볼까 합니다. TD;DR) 크로키에서는 Backbone, Angular를 거쳐 현재는 Mithril이라는 프레임워크를 사용하고 있…
React 적용 가이드 - 네이버 메일 모바일 웹 적용기 - 등록일 - 2017.04.04 - | - 코멘트 - 64185 2015년 12월에 네이버 메일 모바일 웹의 디자인 개편이 있었습니다. 기능 변경은 거의 없이 UI를 개편하는 작업이었지만, Vanilla JS(프레임워크나 라이브…
Postman 개요 / 설치 / 사용법 / 활용 방법 Postman 이란 (https://www.getpostman.com/) A powerful GUI platform to make your API development faster & easier, from building API r…
Gerrit을 이용한 코드 리뷰 시스템 - Gerrit과 Git - 등록일 - 2017.03.20 - | - 코멘트 - 40220 "Gerrit을 이용한 코드 리뷰 시스템 - 코드 리뷰와 Gerrit"에서 Gerrit은 내부에 프로젝트별로 Git 중앙 저장소를 여러 개 두고 접근을 제어…
배민 신춘문예 개발기 배민 신춘문예 개발기 인생은 멀리서 보면 희극이고 가까이서 보면 비극이다. ~ Charlie Chaplin 배민신춘문예는 매년 이맘때 진행하는 이벤트로 그 해 마케팅실의 염원을 담아 대규모로 진행하는 이벤트이다. 보통 우리 회사에서는 이벤트를 마케팅실에서 직접 정해…
좋은 git 커밋 메시지를 작성하기 위한 7가지 약속 본 글은 Chris Beams의 How to Write a Git Commit Message 블로그 내용을 이해하기 빠르고 쉽게 전달하기 위해 번역, 편집하고 도움이 될만한 내용을 추가한 것입니다. git 커밋 메시지를 잘 쓰려고 노…
Android GIF 인코더 빠르게 하기 - 등록일 - 2017.03.09 - | - 코멘트 - 13204 인터넷 커뮤니티 사이트에서 GIF 애니메이션 이미지는 이른바 '움짤'이라 불리며 하나의 문화로 자리매김하고 있습니다. 이러한 문화에 발맞춰 움짤 생성 앱들이 우후죽순 만들어지고 있…
OSORI 권한관리 플랫폼 Osori 권한관리 플랫폼 오소리란? 인증(Authentication)과 인가(Authorization)중 Authorization부분을 담당하며 권한 관리를 쉽게 해주는 플랫폼으로 UI형태의 관리 페이지와 라이브러리를 제공함으로써 최소한의 비용으로 연동할 수…
OAuth 2.0 대표 취약점과 보안 고려 사항 알아보기 목차 - OAuth 2.0 이란? - 대표 보안 취약점 - CSRF, Covert Redirect - 보안 검수 항목 - 마무리 - 참고 자료 1. OAuth 2.0 이란? OAuth 2.0은 다양한 플랫폼 환경에서 권한 부여를…
쉽게 이해하는 자바스크립트 프로토타입 체인 자바스크립트는 객체 지향 언어이자 함수를 1급 객체로 취급하기 때문에 함수형 프로그래밍도 가능한 멀티 패러다임 언어이다. 자바스크립트를 조금이라도 다뤄봤던 사람이라면 익히 알고 있겠지만, 자바스크립트에는 클래스란 개념이 없어 객체 생성이나 상속…
현재 크로키에서는 서버용 웹 프레임워크로 Node.js 위에서 Express를 사용하고 있습니다. 이번 글에서는 어떤 이유로 Node.js를 사용하게 되었는지 설명하려고 합니다. 여러분들이 웹 프레임워크를 선택하시는 데 참고가 되었으면 합니다. 크로크닷컴을 설립한 것은 2012년 2월입…
AWS KMS를 이용한 암호화 API 구축하기 서버 없이 쉽고 빠르게 암복호화 API서비스를 만들어 봅니다. 지난해 우아한형제들은 정보보호관리체계(ISMS)인증 심사를 준비하며 개인정보 암호화 키를 물리적으로 분리하여 보다 안전하게 관리할 수 있는 AWS Key Management Se…
Gerrit을 이용한 코드 리뷰 시스템 - 코드 리뷰와 Gerrit - 등록일 - 2017.02.03 - | - 코멘트 - 78276 코드 리뷰는 프로그램의 소스 코드를 검토해 프로그래밍 중에 간과하고 지나친 오류를 찾아내 제품이나 서비스의 품질을 높이는 행위입니다. 코드 리뷰를 통해…
- blog - open source 오픈소스 간단 리뷰 - nomad : 가벼운 스케쥴러, 강력한 성능 Introduction 서비스 스케줄러는 클러스터 내의 컴퓨팅 리소스를 관리하고 사용자 애플리케이션을 어느 호스트에서 서비스할지 결정하는 시스템 소프트웨어입니다. 컨테이너 스케줄러로…
빌링 시스템 장애, 이러지 말란 Maria~ 우아한 6시 안녕하세요! 우아한형제들에서 빌링/정산 시스템 개발을 맡고 있는 이주현이라고 합니다. 저는 지난 7월 입사한 이래로 배민에서 진행하는 다양한 이벤트에 대응하며 짧지만 강한 경험들을 하고 있습니다. 그중 얼마 전 있었던 빌링 시스템…
크로키에서는 로그를 JSON 문자열로 만들어 일자별(혹은 시간별)로 묶은 후 gzip으로 압축해서 저장하고 있습니다. 그런데 이미 만들어진 로그를 수정해야 하는 일이 생겼습니다. 예를 들면 {"date":"Fri Jan 15 2016 00:00:01 GMT+0000 (UTC)","pat…
Overview 대부분의 초기 스타트업은 컨텐츠를 저장할 저장소에 대한 별다른 고민을 하지 않습니다. 여유가 있다면 NAS 장비를 구매해서 사용하고, 아니라면 NFS와 RAID를 구성해서 사용하게 됩니다. 하지만 서비스가 점점 커짐에 따라 하루 동안 저장되는 컨텐츠의 용량이 커지고, 네…
2016년 개편된 Daum영화 프론트엔드 개발에는 ReactiveX의 JavaScript 라이브러리 RxJS 4를 사용했습니다. ReactiveX는 ReactiveX Introduction에서 callback의 문제점에 도움을 주는 것으로 소개가 되어 있습니다. 웹에서는 Angular…
소소한 배민라이더스 BROS 2.0 오픈 이야기 용어 설명 배달의민족앱은 배달음식점을 앱을 통해 주문하는 것인데, 배민라이더스 는 그동안 배달을 하지 않던 맛집(?)을 앱으로 주문할 수 있는 서비스입니다. 앱을 주문하는 사용자의 앱을 사용하는 방법은 모두 같지만, 배민라이더스는 배달을…
- blog - open source kakao의 오픈소스 Ep6 - Cite “카카오의 오픈소스를 소개합니다” 여섯번째는 niko.bellic이 개발한 Cite입니다. Cite는 Container as a Service(CaaS)로서 소스코드를 빌드하고 배포하며 운영하는 일련의 과정을…
TOAST Haste 소개 목차 들어가기에 앞서 TOAST Haste Let's haste 결론 들어가기에 앞서 우리는 오랜 시간 동안 TCP(Transmission Control Protocol)를 이용해서 많은 애플리케이션을 개발해왔습니다. TCP는 패킷 순서 보장, 흐름 제어, 혼…
좌충우돌 실전 프로젝트 개발 스토리 우아한형제들의 배민B2C개발팀에서 서비스 개발을 맡고 있는 이수홍입니다. 이번에 제가 맡게된 통합인증 프로젝트를 진행하면서 좌충우돌 겪었던 이야기를 들려 드리고 싶어서 이렇게 글을 적어봅니다. 입사 후 첫 프로젝트 입사 후 드디어 프로젝트를 맡게 되었…
네이버 지도 JavaScript API 완벽 가이드 – 오버레이 편 - 등록일 - 2016.12.14 - | - 코멘트 - 71814 네이버 지도 JavaScript API 완벽 가이드 – 오버레이 편 "네이버 지도 JavaScript API 완벽 가이드 - 투영, 지도 유형 편"에 이…
오픈소스 라이선스 배경 및 연혁 안녕하세요 기술전략팀 조영준입니다. 요즘 많은 기업에서 회사 내부에서 개발중인 프로젝트를 오픈소스로 공개하는 케이스가 많습니다. (우분투 OS에서부터 DB인 MySql, 큐브리드, 마리아DB, 기타 앵귤러JS, 테서플로, 제플린 등등.. 너무나 많은 프로…
누군가에게는 빼빼로데이. 누군가에게는? 호기심 가득 11월 11일 빼빼로데이. 많은 인터넷 서비스 회사들이 빼빼로데이를 맞이하여 여러 이벤트를 준비한 것처럼, 배민 또한 이벤트를 준비했습니다. 아침 11시부터 선착순 1,111명에게 11,000원 할인쿠폰을 발급하는 이벤트. 선착순 이벤…
자바스크립트 프레임워크 소개 4 - React 최근에 팀 내에서 진행했던 스터디 내용을 정리하는 의미에서, 4회에 걸쳐 자바스크립트 (프론트엔드) 프레임워크를 소개하는 시리즈를 연재할 예정입니다. 금주부터 아래와 같은 목차로 진행되니 많은 관심 부탁드립니다. - Cycle.js - An…
자바스크립트 프레임워크 소개 3 - Vue.js 최근에 팀 내에서 진행했던 스터디 내용을 정리하는 의미에서, 4회에 걸쳐 자바스크립트 (프론트엔드) 프레임워크를 소개하는 시리즈를 연재할 예정입니다. 금주부터 아래와 같은 목차로 진행되니 많은 관심 부탁드립니다. - Cycle.js - A…
자바스크립트 프레임워크 소개 2 - Angular2 최근에 팀내에서 진행했던 스터디 내용을 정리하는 의미에서, 4회에 걸쳐 자바스크립트 (프론트엔드) 프레임워크를 소개하는 시리즈를 연재할 예정입니다. 아래와 같은 목차로 진행되니 많은 관심 부탁드립니다. - Cycle.js - Angul…
자바스크립트 프레임워크 소개 1- Cycle.js 최근에 팀내에서 진행했던 스터디 내용을 정리하는 의미에서, 4회에 걸쳐 자바스크립트 (프론트엔드) 프레임워크를 소개하는 시리즈를 연재할 예정입니다. 금주부터 아래와 같은 목차로 진행되니 많은 관심 부탁드립니다. - Cycle.js - A…
AWS IoT 버튼을 활용하여 차임벨 만들기 우아한형제들 사무실 입구에는 이런 안내문이 붙어 있습니다. 사원증을 깜박하고 출근한 직원들이 문을 두드리면 문 근처의 직원들이 일에 집중하기 힘들다는 것이 그 이유였는데요. 재치있고 재밌게 쓰여 있지만 결국 한줄로 요약하면 ‘문 두드리지 마세…
Chrome의 Flash 차단 정책과 Flash에서 Canvas로 전환 사례 - 등록일 - 2016.10.20 - | - 코멘트 - 31217 한때는 Flash를 사용하지 않는 웹 페이지를 찾아보기 힘들 정도로 Flash의 점유율이 높았습니다. 네이버 또한 Flash로 많은 콘텐츠를 만…
Sql server 2012 / Event ID 36888 Schannel Error 2016년 10월 정기 점검 데이터서비스팀은 10월 정기점검일을 맞아 메인 서비스 DB로 운영중인 Windows Server 2012 R2, SQL Server 2012 2기를 업데이트 및 리부팅 작업…
오픈소스 Moloch을 소개합니다. 목차 - 들어가기 전에 - Moloch이란? - Moloch 활용 - 결론 - 참고자료 들어가기 전에 요즘 많은 IT기업들이 고가의 상용 솔루션을 대체하기 위해 오픈소스를 적극적으로 활용합니다. 오픈소스로 사용할 경우 비용도 절감할 수 있지만, 사용자…
네이버 지도 JavaScript API 완벽 가이드 – 투영, 지도 유형 편 - 등록일 - 2016.09.29 - | - 코멘트 - 35221 2016년 6월 네이버 지도 JavaScript API v3(이하 지도 API)을 새로 출시했습니다. 오랜 시간 고심한 만큼 새로운 버전은 좀…
다 때가 있다 – 우아한형제들 개발자 모집 <script language="JavaScript" type="text/javascript"> function paragraph_toggle(obj) { if (obj.style.display == 'none') { obj.style.disp…
네이버 쇼핑의 새로운 카드형 UI 라이브러리, eg.InfiniteGrid - 등록일 - 2016.09.21 - | - 코멘트 - 26362 사용자가 많은 콘텐츠를 한눈에 볼 수 있고 빠르게 콘텐츠를 소비할 수 있게 하는 UI는 단연 카드형 UI입니다. 카드형 UI는 Pinterest에…
멀티테넌트 Hadoop 클러스터 운영 경험기 - 등록일 - 2016.09.12 - | - 코멘트 - 26050 네이버의 검색 서비스는 사용자에게 좋은 검색 결과를 제공하기 위해 매일 수억 건 이상의 문서를 처리합니다. 웹 로봇이 수집한 문서나 네이버 사용자가 작성한 문서를 저장하고, 저…
우아한, WoowahanJS 사람들이 행복해하는 소프트웨어를 만드는 프로그래머가 되는 것을 목표로 살아가는 아들 바보 프로그래머. 우아한형제들에서 웹 프런트앤드 프레임워크, 서비스, 제품 등을 만들고 있습니다. 아마도, 많은 웹 프론트앤드 개발 조직은 나름의 자체 프레임워크이 있을 것입…
Happy Code 사람들이 행복해하는 소프트웨어를 만드는 프로그래머가 되는 것을 목표로 살아가는 아들 바보 프로그래머. 우아한형제들에서 웹 프런트 앤드 프레임워크, 서비스, 제품 등을 만들고 있습니다. 우아한형제들에 입사한 후 다른 회사와 많이 다르게 느껴지는 부분은 자발적 나눔이 참…
Anti-OOP: if를 피하는 법 목차 쇼핑몰 할인정책 Step 1. 메서드 추출 Step 2. 핵심 인터페이스 추출 Step 2-2. Factory enum 기반 리팩토링 Step 3. 도메인 객체(Entity) 기반 리팩터링 Bonus Step 3-2. With Mybatis 결론…
KEMI(Kakao Event Metering & monItoring)는 카카오의 전사 리소스 모니터링 시스템 입니다.서버, 컨테이너와 같은 리소스의 메트릭 데이터를 수집해서 보여주고 설정한 임계치에 따라 알림을 보내주는 KEMI-STATS과 ETL을 통해 수집한 log를 대시보드 형태…
어쩌다보니 키스톤! 지난 8월 13일(토)부터 이틀간 코엑스 그랜드에서 열렸던 PyCon 2016 APAC에서 카카오 부스를 지켰던 iolo.fitzowen 입니다. 키스톤 스폰서 자격으로 행사장에서 가장 큰 부스를 운영하게되었는데, 거대한 부스를 어떻게 활용할 것인가를 오랫동안 고민했…
AMP는 어떻게 웹 페이지의 성능을 높일 수 있나 - 등록일 - 2016.08.18 - | - 코멘트 - 19842 사용자는 모바일 웹을 사용하면서 모바일 앱과 같은 성능을 기대합니다. 빠른 페이지 로딩과 부드러운 스크롤, 사용자 액션에 즉시 반응하는 인터랙션, 멋진 그래픽 애니메이션…
쉽고 재밌는 정규식 이야기 PC 주문접수 프로그램에서 개인정보 보호법을 적용하기 위해 취소된 주문의 개인정보를 숨겨야 할 필요가 생겼습니다. ‘앱의 주소검색 모양새를 보아하니 서버에서 두개의 필드를 받아서 처리해야겠군!’ 이라고 생각한 것이 저의 첫번째 착각. 하지만 그런거 없고 주소정…
Generator in Practice [1부] 기본 속성과 Runner 목차 서론 기본 속성 Runner Promise Runner 결론 서론 근래에 자바스크립트 프로그래밍의 패러다임에 큰 변화를 준 명세는 바로 Generator 명세다. 올해 2월 미국 샌프란시스코에서 열렸던 FOR…
첫 Java 프로젝트의 생생한 후기 이번에 처음으로 Java 8 + Spring Boot + JPA 를 이용하여 프로젝트를 진행 하였는데, 그 때 느꼈던 점을 공유 하고자 합니다. 첫 자바 프로젝트 시작과 기대 저는 이전 회사에서는 Java 를 사용했었지만, Spring Framewor…
빠르게 서비스를 개발할 수 있는 Node.js - 등록일 - 2016.08.01 - | - 코멘트 - 98151 2년 전에 Node.js를 사용할까 말까 고민을 많이 했습니다. 그 당시 선택 기준은 세 가지였습니다. - 개발 생산성이 좋아? - 성능이 좋고 안정적이야? - 개발자 커뮤니…
REST API 제대로 알고 사용하기 REST API 제대로 알고 사용하기 목차 - REST API의 탄생 - REST 구성 - REST 의 특징 - REST API 디자인 가이드 - HTTP 응답 상태 코드 어느 날 뜬금없이 대학교 친구에게 전화가 왔습니다. 그러더니 ‘야, REST…
Android Support Annotations 라이브러리를 활용한 결함 탐지 - 등록일 - 2016.07.21 - | - 코멘트 - 35430 컴파일 시점에 프로그램의 잠재적인 결함을 찾아내려는 시도는 매우 다양합니다. 미정의 동작(undefined behavior)이 최소화되도록…
개발자를 힘들게 하는 애플의 IPv6 검수 통과하기 개발자를 힘들게 하는 애플의 IPv6 검수 통과하기 목차 IPv6에 대해서 최소한도로 알아보기 Apple에서 공지한 iOS 앱에 대한 검수 내용 살펴보기 개발자들이 주의해야 할 사항 IPv6 로 인한 App Reject 사례와 참고 자…
- blog 개발자를 위한 SSD (Coding for SSD) - Part 2 : SSD의 아키텍처와 벤치마킹 이 챕터에서는 NAND 플래시 메모리의 기본적인 내용과 셀 타입 그리고 SSD의 기본적인 내부 아키텍처에 대해서 살펴보고,추가로 SSD의 벤치마킹 방법과 벤치마킹 결과를 해석…
생각하라, 객체지향처럼 2년차 쪼랩이가 객체지향을 처음으로 접하고 공부를 하면서 나름대로 정리해보았습니다. 시작 인사 안녕하세요. B2B시스템개발팀 김승영입니다. 먼저, 이 글은 지난 02월에 작성되어 사내 위키에 공유되었던 글임을 미리 알려드립니다. 참고로 현재는 Biz상품개발팀에서…
Front - end 스터디 자료 공유 - 자바카페 - 등록일 - 2016.07.05 - | - 코멘트 - 19461 D2에서 후원하고 있는 커뮤니티인 자바카페의 Front-end 스터디 자료를 공유합니다. 1. HTML 개념 및 특징 HTML이 무엇인지, 지금까지 어떠한 흐름을 거치며…
- blog ADT 활용 예제1: MySQL Shard 데이터 재분배 샤딩의 한계 카카오의 많은 서비스들이 데이터베이스로써 MySQL을 사용합니다. 그리고 서비스 규모가 커지면 대용량 분산을 위해 샤딩을 합니다. 카카오에서 많이 사용하는 샤딩 방법으로 크게 두 가지 방식이 있습니다. -…
우아한형제들의 Baby Steps 우아한형제들은,어제보다 성장함에 의미를 두고, 함께 성장하는 것을 꿈꾸는 조직입니다." 블로그 2016년도 딱 반이 지난 6월 30일. 지난 반 년을 돌이켜 봅니다. 반 년 동안 어떤 일들을 했나 돌이켜 보다가 생각난 것이, 바로 우아한형제들 기술조직…
자바스크립트와 이벤트 루프 자바스크립트와 이벤트 루프 목차 ECMAScript에는 이벤트 루프가 없다 단일 호출 스택과 Run-to-Completion 태스크 큐와 이벤트 루프 비동기 API와 try-catch setTimeout(fn, 0) 프라미스(Promise)와 이벤트 루프 마치…
JPA N+1 쿼리 문제와 해결 JPA N+1 쿼리 문제와 해결 목차 들어가기 전에... JPA N + 1 쿼리 문제 JPQL 실행 시 N + 1 쿼리 문제에 대한 해결방안 들어가기 전에... 이러한 고객/주문 ERD가 있다고 했을 때 JPA Entity로 표현해보면 OrderEntit…
Google Apps Script 사용 이야기 (3/3) 우아한형제들은 협업 도구로 Google Apps를 사용하고 있습니다. 사내 업무를 손쉽게 자동화하기 위하여 Apps Script를 도입한 이야기를 소개합니다. <마지막 이야기> 오늘의 점심은 감자샌드위치 !!! 우리는 사내 알람…
디스플레이 광고의 이해 디스플레이 광고의 이해 목차 디스플레이 광고란? 이 글에서 등장하는 용어 디스플레이 광고의 발전 디스플레이 광고 생태계 안녕하세요. NHN엔터테인먼트 크리에이티브플랫폼팀 신재열입니다. 시스템을 개발하는데 있어서 기술만큼 중요한 것이 도메인 지식입니다. 광고 시스템…
jQuery 애니메이션은 어떻게 작동하는가? - 기본 편 - 등록일 - 2016.05.18 - | - 코멘트 - 51140 웹 개발에서 가장 많이 사용하는 JavaScript 프레임워크는 단연 jQuery일 것입니다. 2006년 6월 30일 존 레식(John Resig)이 jQuery…
TOAST UI Grid를 소개합니다 TOAST UI Grid를 소개합니다 웹개발을 하면서 가장 많이 하게 되는 작업 중 하나는 바로 데이터를 다루는 일입니다. 특히 관리도구를 만들 때는 많은 양의 복잡한 데이터를 화면에 표시하고 편집하는 기능이 필수인데요, 아시다시피 웹에서 그런 기능…
설정 파일의 주석 위치가 일으킨 Apache의 응답 속도 저하 - 등록일 - 2016.05.04 - | - 코멘트 - 44630 코드 배포나 서버 설정 변경 등 서버에 변경된 내용이 없는데 어느 순간부터 서비스의 응답 시간이 느려졌습니다. 게이트웨이 서버와 서비스 서버의 응답 속도와 로…
대용량 스트리밍 데이터 실시간 분석 - 등록일 - 2016.04.27 - | - 코멘트 - 49228 서비스를 운영하다 보면 한 시간이나 하루 단위로 데이터를 분석해 '많이 본 콘텐츠', '남성이 많이 본 콘텐츠', '여성이 많이 본 콘텐츠'와 같은 통계 데이터를 추출하게 됩니다. 하지…
- blog 루빅스(RUBICS) - kakao의 실시간 추천 시스템 루빅스는 실시간으로 사용자 반응을 분석하여 콘텐츠를 추천하는 카카오의 추천 시스템입니다. 2015년 5월에 다음 포털 뉴스 서비스의 일부 사용자를 대상으로 뉴스 기사를 추천하기 시작했고, 한달 뒤인 6월부터 전체 사용…
**Weekly Links**에서는 지난 한 주, 카카오의 기술 블로그 담당자가 구독하는 기술 뉴스레터들에서 “인간의 눈”으로 선별한 링크들을 짧은 코멘트와 함께 공유합니다. 포함된 뉴스레터 목록은 awesome-tech-newsletters에서 확인하실 수 있습니다. 2016년 4월…
oEmbed를 소개합니다 oEmbed를 소개합니다 목 차 - 들어가기전에 - oEmbed란? - Provider 가 되기 - Consumer로써 oEmbed를 활용하고 싶다면 안녕하세요. NHN엔터테인먼트 이수민입니다. 회사내 기술교육의 일환으로 프로젝트를 진행하던 중 웹 콘텐츠를 더욱…
트래픽이 많은 웹 서비스를 운영하다보면 CPU는 여유가 있지만 웹서버가 응답을 제대로 처리하지 못하고 먹통이 되는 경우를 종종 보게 됩니다. 여러가지 이유가 있겠지만, 이 글에서는 가장 대표적인 경우인 CLOSE_WAIT 상태를 재현하고 원인과 문제점 그리고 해결책을 알아봅니다. 나아가…
하나의 모바일 앱이 마켓에 출시되기까지는 수많은 빌드와 배포 과정을 거치게 됩니다. 더 자주, 더 빠르게, 더 높은 품질의 서비스를 출시하기 위해서는 효율적인 빌드와 배포는 필수적입니다.카카오에는 모바일 앱을 지속적으로 통합(Continuous Integration)하고 지속적으로 배포…