안드로이드 런처와 위젯 톺아보기 (4) - 페이코 앱 위젯/숏컷 이슈 일대기 (완) 소개 안녕하세요. PAYCO 앱기술개발팀 유상현입니다. 주로 런처와 위젯, 숏컷 3가지에 관한 주제로 공유를 시작하여 어느덧 마지막 공유 글이 되었습니다. 이번 편에서는 페이코 안드로이드 앱에서 실제 발…
안드로이드 런처와 위젯 톺아보기 (3) - 위젯과 숏컷, 런처와의 상관관계 소개 안녕하세요. PAYCO 앱기술개발팀 유상현입니다. 1편과 2편에 이어서, 주로 안드로이드 런처와 위젯에 관한 주제로 공유를 하고 있습니다. 이번 편 역시 1편과 2편을 읽지 않으셔도 큰 지장은 없지만, 궁금…
안드로이드 런처와 위젯 톺아보기 (2) - 설치된 앱들은 어디에? 소개 및 주제 안녕하세요. PAYCO 앱기술개발팀 유상현입니다. 지난 편에 이어 안드로이드 런처와 위젯에 관한 주제로 공유를 하고 있습니다. 생각보다 많은 분들이 1편을 재밌게 봐주셔서 이번 편은 재미가 없으면 어쩌나 시…
안드로이드 런처와 위젯 톺아보기 (1) - 홈 화면도 앱이었다? 소개 안녕하세요, PAYCO 앱기술개발팀에서 PAYCO 안드로이드 앱을 개발하고 있는 유상현이라고 합니다. 대략 작년 초부터 간간히 업무의 일환으로 안드로이드 시스템 및 위젯에 관한 검토(a.k.a 숙제)를 해왔습니다. 검…
Vehicle Plate Recognizer 서비스 소개 TOAST Meetup 블로그 Vehicle Plate Recognizer 서비스 소개 Vehicle Plate Recognizer는 NHN Cloud의 OCR(광학 문자 인식) 기술을 활용한 두 번째 상품입니다. 머신러닝을 통해…
Document Recognizer 서비스 소개 Document Recognizer 서비스 소개 Document Recognizer는 NHN Cloud의 OCR(광학 문자 인식) 기술을 활용한 첫 번째 상품입니다. 머신러닝을 통해 사업자등록증 분석을 학습하였으며, 이미지의 문자 영역을…
JavaScript Proxy. 근데 이제 Reflect를 곁들인 JavaScript Proxy. 근데 이제 Reflect를 곁들인 필자는 Vue 3 Reactivity Proxy 의 트랩 내에서 Reflect 가 사용된 이유가 궁금했었다. 구글링을 해봐도 Proxy 의 핸들러나 여러…
Vue.js 3 반응형 동작 원리 살펴보기 Vue.js 3 반응형 동작 원리 살펴보기 2020년 1월 Vue.js 3.0.0 alpha가 발표된 이후, 2020년 9월 vue-next 에 코드네임 "One Piece"(그 만화 맞다.)로 3.0이 공식 릴리즈 되었다. Vue.js 3에는…
AI Fashion 서비스 소개 AI Fashion 서비스 소개 AI Fashion은 다양한 카테고리 상품 데이터를 학습하여 패션 분야에 특화된 서비스를 제공합니다. 상품명이나 속성을 몰라도 이미지만으로 쉽고 빠르게 유사한 상품을 검색할 수 있어서, 다양한 가격대의 유사 상품을 제시하거…
NHN Kubernetes Service(NKS) 쿠버네티스 클러스터 업그레이드 기능 쿠버네티스 클러스터 버전 쿠버네티스는 고유의 버전으로 관리되고 있는 소프트웨어입니다. 쿠버네티스 버전은 x.y.z 형식으로 구성되며, x 는 메이저 버전, y 는 마이너 버전, z 는 패치 버전이라 부…
삽질하기 싫으면 꼭 읽어봐야 할 Canvas 트러블 슈팅 삽질하기 싫으면 꼭 읽어봐야 할 Canvas 트러블 슈팅 2021년 1월, 우리는 TOAST UI CHART 4.0을 공개했다. 큰 변화 중 하나는 기존에 SVG를 사용해서 차트를 생성했다면 4.0에서는 Canvas를 이용해 개발…
NHN AppGuard 서비스 소개 서비스 소개 NHN AppGuard는 Android와 iOS 모바일 앱을 다양한 보안 위협으로부터 안전한 실행 환경을 유지하도록 도와주는 모바일 앱 보호 서비스입니다. 악의적인 공격을 통해 기업 매출에 영향을 줄 수 있는 사항들을 소스코드 보호, 메모…
국제화(i18n) 자동화 가이드 국제화(i18n) 자동화 가이드 글로벌을 무대로 서비스하는 웹 애플리케이션은 국제화(i18n)가 필수다. 이를 위하여 국제화 라이브러리를 사용하거나 직접 구현하기도 한다. 이 글은 국제화 지원을 위한 개발과 번역 과정에서 이른바 "복붙"이나 반복적인 수작…
모킹 통합관리와 cypress의 모킹 on/off 기능 모킹 통합관리와 cypress의 모킹 on/off 기능 모킹 데이터는 테스트를 실행하기 위해 실제 데이터가 아닌 개발자가 필요에 의해서 만든 데이터를 말한다. 그렇다면 모킹 데이터를 사용하는 목적은 무엇일까? - e2e 테스트 환경…
Chromium이 발표한 RenderingNG가 무엇인가? Chromium이 발표한 RenderingNG가 무엇인가? 필자는 현재 프런트엔드 개발자지만 Webkit 기반의 브라우저를 개발한 적이 있다. 주로 HTML5 스펙 지원과 각종 CSS 기능을 지원하기 위해 렌더링 엔진을 다양한…
EasyCache의 Multi Replica 기능 소개 EasyCache 서비스는 사용자가 직접 Redis 를 설치하지 않고도 클라우드 환경에서 쉽게 이용할 수 있도록 해주는 NHN Cloud 의 KVS 서비스입니다. 이번에 EasyCache 서비스에 새롭게 추가된 멀티 레플리카 기능에…
우리의 Thread는 왜 이렇게 부자가 되었을까? 안녕하세요. NHN Cloud 서비스에서 공통적으로 사용되는 Framework(결제, 인증, 권한 등)를 개발하고 있는 프레임워크개발팀 박시우입니다. 최근 저희 팀에서 OOM 이슈 관련하여, 분석해 본 결과 병렬 처리 진행을 위해 For…
게으른 개발자의 코딩 방법: AI주도 개발방법론 프롤로그 4차 산업혁명시대로 불리는 현재, 우리는 AI가 대중화된 시대에 살고 있다. 그리고 업무에도 깊숙하게 AI는 적용되고 있다. 과거부터 사무 처리 업무의 자동화는 관심거리였고, 매크로, RPA(Robotic Process Autom…
뼈대 있는 가문의 데이터로 만들기 데이터 처리, 집계, 모델링 업무를 수행하다 보면 인지하지 못하는 복잡한 상관관계가 만들어지게 됩니다. 특히 테이블이라고 표현되는 Relational Database의 DataSet들은 조회 용으로 쓰이는 경우도 있지만 많은 경우 다른 DataSet의…
NAT 게이트웨이 기능 소개 등록일 2021.07.02 조회수 3717 NAT 게이트웨이 기본 사항 - NAT 게이트웨이를 이용하면 인터넷 게이트웨이가 연결되지 않은 인스턴스들이 특정 CIDR에 대해서 인터넷 액세스를 할 수 있습니다. - NAT 게이트웨이는 고정된 소스 IP로 인터넷을…
System Monitoring 서비스의 Advanced Monitoring(OpenMetrics) 기능 소개 Advanced Monitoring (OpenMetrics) 기능 소개 소개 다양한 오픈소스 설루션에서 발생하는 지표들을 모아서 모니터링하기 위해 가장 널리 사용되고 있는 것이…
VSCode의 Jupyter Extension을 사용하여 간단하게 Python으로 데이터 시각화하기 VSCode의 Jupyter Extension을 사용하여 간단하게 Python으로 데이터 시각화하기 안녕하세요, 모델연구팀 김세회입니다. 기존에는 Python으로 데이터 분석을 할 경우…
RDS for MS-SQL: 고가용성 기능 소개 개요 TOAST Cloud Relational Database Service for SQL Server (RDS for MS-SQL)는 Microsoft SQL Server를 클라우드 환경에서 제공하는 서비스입니다. 복잡한 설정 없이 고가…
Face Recognition 서비스 소개 얼굴 인식(Face Recognition) 기술은 컴퓨터 비전(Computer Vision)의 주요 분야로 기계학습(Machine Learning)을 이용해 시스템에 입력된 이미지 속 인물이 내부 데이터베이스(DB)에 미리 저장된 인물 중 누구…
구매 데이터를 이용한 고객 세분화 기법 - RFM 시작에 앞서... 근래의 마케팅은 모든 고객에게 일관된 전략을 수립하고 운영하기보다는 고객을 세분화하고 그 구분에 따라 최적의 정책을 만들어 나가는 방향으로 진행되고 있으며 이것들을 여러분들도 많이 들어본 타깃 마케팅이라고 부르고 있는…
웹로그 히스토리 데이터를 이용한 데이터 분석 꼼수 뉴딥기술랩에서 수행하고 있는 여러 유형의 데이터 처리/분석 작업들 중 간단하지만 다른 분야에서도 유용하게 활용할 만한 내용인 듯하여 공유해 드립니다. 안녕하십니까? 뉴딥기술랩/데이터테크랩/BI분석서비스팀을 담당하고 있는 임지홍입니다. 오…
Docker Compose와 버전별 특징 Docker Compose What is Docker Compose? Docker Compose란? 무엇일까요. 많은 곳에서 Docker Compose를 검색한다면 다음과 같은 설명을 많이 접할 수 있습니다. Docker Compose는 다중 컨…
mongoDB Story 3: mongoDB 데이터 모델링 지난 글에서는 활용 측면에서의 mongoDB 특징과 구성요소에 대해 살펴보았으며, 이번 글에서는 mongoDB 구성요소 중 간략히 설명드렸던 mongoDB 데이터 모델링에 대해 자세히 알아보도록 하겠습니다. - mongoDB S…
mongoDB Story 2: mongoDB 특징과 구성요소 지난 글에서는 mongoDB를 이해하기 위한 첫걸음으로 mongoDB의 정의와 NoSQL에 대해 살펴보았으며, 이번 글에서는 활용 측면에서의 mongoDB 특징과 구성요소에 대해 알아보도록 하겠습니다. - mongoDB Sto…
mongoDB Story 1: mongoDB 정의와 NoSQL "mongoDB"라는 데이터베이스를 들어보셨나요? 이미 잘 아시는 분들도 있겠지만 Oracle, Microsoft SQL Server, DB2, MySQL과 같은 관계형 데이터베이스 제품으로 생각하시는 분들도 있을 겁니다.…
GraalVM, Spring Native 맛보기 몇 년 전부터 Oracle에서 GraalVM 이란 jvm을 소개하기 시작했습니다. 위 그림은 공식 사이트에 있는 건데요. 기동 시간이 50배!, 메모리도 5배 작게 사용한다는데 확인을 안 할 수가 없었습니다. 우선 GraalVM이 무엇인지…
Security Compliance 서비스 소개 Security Compliance 서비스는 정보보호 인증과 컴플라이언스에 효과적으로 대응할 수 있도록 정보보호 인증서와 상세 가이드를 제공하는 서비스입니다. [그림1] 서비스 제공 목적 주요 기능 - 정보보호 인증서 제공 - NHN이 보…
ShortURL 서비스 소개 ShortURL 서비스는 단축 URL을 생성해 주는 서비스입니다. 긴 URL을 짧게 줄여서 글자 수 제한이 있는 SMS 메시지에 실어 보내거나 사용자가 눈으로 읽고 쉽게 옮겨 적을 수 있도록 도와줍니다. 또한, 사용자에게 이미 공개된 URL이 있으나 실제 서…
API Gateway 서비스 알아보기 - API Gateway는 여러 백엔드 엔드 포인트 서비스들의 게이트웨이 역할을 하여 API의 엔드 포인트를 하나로 통합할 수 있는 서비스입니다. - API Gateway를 이용하면 다음과 같은 이점이 있습니다. - API Gateway에서 제공하는…
PostgreSQL Instance 서비스 소개 postgresql.org 공식 사이트에 방문하면 다음과 같이 표현되어 있습니다. "세상에서 가장 진보된 오픈소스 관계형 데이터베이스" 30년 이상의 활발한 개발로 안정성과 신뢰성이 높고 상용 DB에 버금가는 기능의 다양함과 견고함을 갖추…
Spock 살펴보기 Spock이란? - Spock은 BDD(Behaviour-Driven Development) 프레임워크입니다. - TDD 프레임워크인 JUnit과 비슷한 점이 많으나, 기대하는 동작과 테스트의 의도를 더 명확하게 드러내주고 산만한 코드는 뒤로 숨겨주는 등의 큰 장점이…
LogViewer를 사용하여 더 편한 테스트 환경 만들기 필요성 게임을 빌드 후 실제 디바이스에서 테스트를 하는 것은 당연한 일입니다. 디바이스에서 문제가 발생하는 경우 원인을 추적해야 하는 상황이 발생하는데 문제가 되는 디바이스가 항상 개발자의 손에 있을 수 없으며 디바이스를 연결해서…
쉽지만 어려운 WebView! 이젠 그만, 쉽기로 하자! Unity 개발자들의 한줄기 빛이 되리라! Unity 개발자들은 일이 너무 많습니다. 게임만 잘 만들면 될 줄 알았는데. 플랫폼 연동(인증, 결제, 푸시), 다양한 언어 학습, 그리고 WebView 연동 등. 게임 개발 외에 해야…
Unity Plugin을 Communicator 하나로 통합하기 Unity Native 개발 시 Plugin의 필요성 유니티로 개발된 게임들은 출시하기 위해 많은 네이티브 기능들은 연동해야 합니다. Push, Purchase, WebView등 모바일 플랫폼에서 제공하는 다양한 기능들을…
Unity 의존성을 통한 에셋 관리로 생산성 향상 에셋 관리의 필요성 유니티에서 작업할 때 어떤 에셋이 있고 에셋이 어디에 있는지 찾고 수정하는 과정이 수없이 발생합니다. 스크립트, 텍스쳐, 모델링 등 주 작업 후 에셋에 대한 작업이 이루어지는데 기존에 어떤 에셋을 사용하는지 에셋이 어…
AutoScale with Application Deployment 기능 설명 AutoScale로 인해 새로 생성된 인스턴스에 고객이 정의한 애플리케이션을 자동으로 배포할 수 있게 돼서 진정한 의미의 AutoScale을 경험하실 수 있게 됐습니다. 이전 IaaS 서비스 소개글 ( 오토스…
gRPC 훑어보기 안녕하세요. NHN EDU 아이엠클래스팀 이광신입니다. 이번에 컴퓨터비전팀과 함께 시험용 OMR 인식 및 판독기 기능을 신규 개발하면서 컴퓨터비전팀에서는 딥러닝을 활용하여 python으로 개발이 되었고, 제가 익숙한 언어는 자바였기 때문에 OMR 문서 스캔/업로드는 자…
Network Interface 소개 등록일 2020.12.17 조회수 1921 기본사항 Network Interface는 VPC에서 가상 네트워크 카드를 나타내는 논리적 네트워킹 구성 요소입니다. 다음 속성이 포함될 수 있습니다. * 이름 * VPC의 IPv4 주소 범위 중 프라이빗…
Server Security Check 서비스 소개 Server Security Check는 신규 또는 운영 중인 시스템의 보안 취약점을 점검하고, 발견된 취약점에 대한 대응 방법을 제공하는 서비스입니다. 시스템의 주요 보안 설정 값을 점검하고 조치해 잠재적 취약점을 제거할 수 있습니다…
Ansible & AWX (설치부터 기본 활용 및 NHN Cloud Deploy 연동까지) awx 15.0.0 버전 이준으로 작성된 글입니다. 2021년 3월 TCD(TOAST Cloud Deploy)의 명칭이 NCD(NHN Cloud Deploy)로 변경되었습니다. 아래 게시글은 20…
TOAST SMS와 Email 서비스의 webhook 기능 소개 소개 TOAST SMS와 Email 서비스에서는 광고 메시지 수신거부 등록에 대한 webhook 기능을 제공하고 있습니다. 일반적으로 webhook이란 "사용자가 정의한 HTTP callback"입니다. 풀어서 설명하자면,…
Docker Buildx로 Multi-Archtecture Image 빌드하기 뭘 하려고 했나? 최근 구글 클라우드 프로젝트에 쿠버네티스 클러스터를 생성했다가 과금 폭탄을 맞고 나서, 금전적 비용없이 멀티 노드 클러스터를 실습할 수 있는 환경을 구성하기 위해 집에서 놀고있는 네 대의 개…
TOAST Log&Crash Search의 데이터 무결성 검증 기능 사용하기 금융사는 전자금융 거래법이나 전자금융 감독규정에 따라 운영 시스템에서 발생하는 로그가 위·변조되지 않도록 로그 데이터에 대한 무결성을 검증하고 감시하는 기능이 필요합니다. TOAST Log&Crash Searc…
TOAST Network ACL 소개 Network ACL은 내부와 외부의 트래픽을 제어하기 위한 선택적 보안 기능입니다. 보안그룹과 유사한 방식으로 ACL Rule을 설정하여 VPC 및 Instance 에 대한 보안 기능을 제공합니다. 기본사항 - 기본상태의 ACL Rule은 모든 트…
게임 제작을 위한 TOAST Kit TOAST Kit이란 NHN에서 게임 제작에 필요한 서비스들을 무료로 제공하는 브랜드입니다. 그중에서도 오늘은 유니티 엔진을 위한 TOAST Kit for Unity를 소개 드리겠습니다. TOAST Kit for Unity 2017년 12월 기준 유니…
캐시 성능 향상기 (Improving Cache Speed at Scale) Improving Cache Speed at Scale 안녕하세요! 데이터운영팀 김가림입니다.🙇🏻♀️ 올해 레디스 컨퍼런스는 코로나로 인해 온라인으로 진행되었습니다. 오늘은 그 중 제가 가장 흥미롭게 들었던 세…
GPU 인스턴스 알아보기 GPU 인스턴스는 인스턴스에 GPU(Graphics Processing Unit)가 추가 구성된 가상서버입니다. 과학적 발견부터 딥러닝에 이르는 다양한 분야에서 사용합니다. GPGPU 란 - GPGPU (General-Purpose computing on Gra…
컨테이너 서비스 소개 지난 6월 말, TOAST에서는 컨테이너 기반의 서비스 구축에 필요한 두 가지 상품을 출시하였습니다. 하나는 컨테이너 이미지를 개인화된 비공개 저장소를 통해 사용할 수 있도록 해주는 컨테이너 레지스트리 서비스이며, 또 하나는 컨테이너 운용을 위해 널리 사용되는 쿠버…
이메일 보안 강화 기능 소개 - 도메인 보호, DKIM, DMARC 머리말 지난 글 '이메일 보안 강화 기능 소개 - SPF'에 이어 이번 글은 자기가 소유한 메일 도메인을 보호하는 메일 도메인 보호 기능과 이메일 인증 방법인 DKIM(DomainKeys Identified Mail),…
타입스크립트 4.0 Beta 릴리즈 내용 타입스크립트 4.0 beta 버전이 릴리즈되었다. 어떤 기능이 새롭게 지원되고, Breaking Change에는 어떤 사항들이 있는지 알아보자. 설치 npm install typescript@beta 목차 - 가변 인자 튜플 타입 - 이름을 붙일…
유용한 테스트 케이스를 위한 개발자의 자세 각종 커뮤니티에 주기적으로 등장하는 "private 메서드를 테스트하려면 어떻게 하나요?" 혹은 "private 메서드를 테스트해야 하나요?" 와 같은 질문을 보면서 언젠가는 관련해서 정리해봐야겠다고 생각했었는데 꽤 시간이 흘러 이 내용으로 글…
레디스 버전6 뉴피처와 주요 기능 테스트 안녕하세요. 데이터운영팀 김가림입니다. 얼마 전 4월 30일에 레디스 뉴 피처가 발표됐습니다. 레디스 오픈소스의 창시자인 Antirez는 이번 6버전이 그동안의 릴리즈중 가장 큰 변화라고 공식적으로 말했고, 도대체 얼마나 큰 변화인가! 궁금해져서…
Email 보안 강화 기능 소개(SPF) 머리말 NHN Cloud Email은 이메일 보안 강화를 위한 다양한 기능을 제공합니다. 총 두 번에 걸쳐 이메일 보안 강화 기능에 대해 살펴봅니다. 이번 글은 이메일 보안을 강화할 수 있는 방법 중 하나인 SPF (sender policy fr…
prettier 2.0에서 달라진 옵션 살펴보기 prettier 2.0은 얼마 전(2020.3) 정식 릴리즈되었습니다. 바로 적용을 하려다 조금 기간을 두고 적용하자는 의견이 있어 쪼-금 두고 봤습니다. 두 달 정도 시간이 지나 Chart 4.0 개발에 Prettier2.0을 적용했고,…
라이트하우스 6.0에서 바뀐 성능 지표변화 지난 번역 글에서 라이트하우스의 향상된 기능들이 업데이트될 것이라고 소개하였다. 그리고 최근 5월에 이르러 라이트하우스 6.0이 정식으로 릴리즈되었고 최신 크롬 84에도 적용될 예정이다. 바로 써보고 싶은 사람은 크롬 나이틀리 빌드(카나리아)를…
깃헙 액션을 마켓에 등록해보자 지난 글에서는 github actions를 이용해 workflow를 만드는 법을 소개했다. 이번 시간은 Github Market place에 등록되어있는 액션들처럼 쉽게 가져다가 쓸 수 있는 액션을 만들어보려고 한다. 마켓에 등록하는 액션을 만드는 것은 기…
Big things in JDK 13 Java 13 6개월마다 GA 배포되는 신규 버전으로, openjdk13은 2019년 9월 17일에 배포되었습니다. 주요 기능은 아래와 같습니다. - JEP350: Dynamic CDS Archives - JEP351: ZGC: Uncommit Un…
JWT를 소개합니다. 머리말 토스트 클라우드 메시징 플랫폼 서비스 중 하나인 푸시에 추가될 APNs(Apple Push Notification service) JWT 인증 기능을 개발하면서 진행한 기술 조사 내용을 공유합니다. 이 글에서는 크게 'JWT 소개'와 'JWT 더 알아보기'…
Log&Crash Search의 로그 외부 보관 설정 기능 (TOAST Service 들여다 보기) 소개 로그 외부 보관 설정 기능은 Log&Crash Search로 수집한 로그를 외부 오브젝트 스토리지에 저장할 수 있는 기능입니다. Log&Crash Search로 수집된 로그를 받아서…
Secure Key Manager 서비스 소개 (TOAST Service 들여다 보기) SecureKey Manager란 ? 지난 12월 말에 Secure Key Manager 서비스가 새롭게 출시되었습니다. 사용자의 중요 데이터(대칭키, 비대칭키, 기밀 데이터)를 안전하게 관리하고 사…
EasyCache 서비스 소개 (TOAST Service 들여다 보기) EasyCache 란? 2019년 12월에 출시된 EasyCache는 Redis(REmote DIctionary Server)를 클라우드 환경에서 제공하는 상품으로 간단한 설정으로 고가용성의 Redis 서버를 사용할…
GSLB 서비스 소개(TOAST Service 들여다 보기) Global Server Load Balancing(GSLB)는 DNS 서비스 기반으로 사용자가 원하는 엔드포인트(서버 or 도메인) 및 정책을 이용해 안정적으로 트래픽을 로드밸런싱 해주는 서비스입니다. TOAST DNS Pl…
서머타임과 배치작업 흔히 서머타임으로 불리지만 공식 명칭은 일광절약시간제(Daylight saving time)로 하절기에 표준시를 원래 시간보다 한 시간 앞당긴 시간을 쓰는 것을 말합니다. '여름엔 해가 기니까, 겨울보다 1시간씩 일찍 당겨서 생활하면 해가 떠 있는 동안 더 많은 일을…
Service Monitoring 서비스 소개 (TOAST Service 들여다 보기) 2019년 7월 말에 출시된 TOAST Service Monitoring 서비스에 대해 소개합니다. 서비스 개발자에게 중요한 도구 중의 한 가지는 모니터링 도구일 것입니다. 서비스가 안정적으로 동작하…
Maps 서비스 소개 (TOAST Service 들여다 보기) Maps API는 오랫동안 내비게이션 기술을 축적해 온 아이나비의 25년간의 자체 기술력과 노하우가 집적된 지도, LBS 솔루션을 기반으로 쉽고 정확한 지도, 통합 검색, 경로탐색 등 다양한 기능을 HTTP REST API로…
새로운 마크다운 파서가 필요한 이유 최근 개발자들이 가장 선호하는 문서 형식을 하나 꼽으라면 단연 마크다운일 것이다. 마크다운은 깃허브(GitHub), 깃랩(GitLab), Bitbucket등 업무나 이슈 관리를 지원하는 대부분의 서비스에서 기본 문서 형식으로 사용되고 있다. 또한 In…
은닉을 향한 자바스크립트의 여정 ECMAScript 클래스 필드(class field) 명세중에 Private field 즉 Private Property (이하 Private 속성) 가 있다. 클래스 필드 스펙은 Stage 3(Candidate)까지 올랐으니 아마 곧 Stage 4(F…
개발자를 위한 레디스 튜토리얼 04 이것만은 하지 마세요! 이제 많은 분이 요청주셨던 레디스의 장애 포인트에 대해서 말씀드리려고 합니다. 레디스, 잘 몰라도 괜찮으니 요구사항 파악하기 (캐시용? 저장소용?) 서비스에서 레디스의 도입을 고민할 때, 캐시용으로 사용할 것인지, 혹은 저장소용…
개발자를 위한 레디스 튜토리얼 03 Replication 지금부터는 레디스의 HA (High Availability)에 대해서 알아보겠습니다. 레디스는 Master - Replica 형태의 복제를 제공합니다. 복제 연결이 되어있는 동안 마스터 노드의 데이터는 실시간으로 리플리카 노드에…
개발자를 위한 레디스 튜토리얼 01 레디스? 레디스는 REmote DIctionary Server 의 약자입니다. 아마 이 글을 읽으시는 대부분의 분들은 레디스를 사용해보신 경험이 있을 것이고, 적어도 어떤건지 들어는 보셨을 것이라고 생각합니다. Who uses Redis? 레디스는 오…
Validation 어디까지 해봤니? 머리말 애플리케이션을 개발할 때, 데이터의 유효성을 검사하는 것은 일반적으로 애플리케이션 전체에서 발생합니다. TOAST Cloud의 메시징 플랫폼 상품인 Notification은 메시지, 이메일 주소 형식, 수신/발신자의 번호 등 클라이언트의 입력…
TOAST UI Grid에 Github Actions가 함께한다면? Github Actions란? Github Actions는 Github에서 작년 말 전체 공개되었으며 개발 workflow를 깃헙 자체적으로 자동화할 수 있게 도와주는 도구이다. 코드 버전 관리, 리뷰뿐만 아니라 테스트…
[TOAST FORWARD] '프런트엔드 테스팅 - 기초부터 실습까지' 지난 1월 15일 열다섯 번째 TOAST FORWARD를 개최했습니다. 2020년 첫 교육으로는 '프런트엔드 테스팅 - 기초부터 실습까지'라는 과정명으로 FE개발랩의 김동우 책임이 진행했습니다. 교육 내용과 이번 교…
트리 쉐이킹 되는 UI 라이브러리 만들기 ㄱ부터 ㅎ까지 웹 페이지를 만들 때 풍부한 기능을 제공하기 위해서 잘 만들어진 UI라이브러리를 사용한다. 필자는 TOAST UI의 라이브러리 중 하나를 개발하고 있고 그동안 쌓은 경험과 노하우를 대방출하고자 한다. 이 글은 UI 라이브러리를 만들…
지속 가능한 소프트웨어를 위한 코딩 방법 - 세 번째 앞서 이야기한 것들. 앞서 이야기한 것들을 정리해보겠습니다. - DRY 원칙으로 중복 코드를 줄여봅시다. - 중복 코드가 있으면, 비즈니스 로직이 여러 군데 흩어진 것과 같습니다. - 그래서 버그를 수정해도, 여전히 존재하는 같은 버…
지속 가능한 소프트웨어를 위한 코딩 방법 - 마지막 맺음말. 멱등성 (Idempotent) 전산학이나 수학에서 사용하는 용어입니다. 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다. 함수 f(x)를 예를 들면 다음과 같은 등식이 성립됩니다. 즉 메서드가 여러 번 실행…
지속 가능한 소프트웨어를 위한 코딩 방법 - 못다한 이야기 가끔 개발자들과 이야기하다 보면, 요즘엔 RDBMS를 저장소로 사용하는 프로젝트는 대부분 JPA를 사용한다고 합니다. 저도 마찬가지고요. 그런데 몇몇 분들은 JPA에 대한 오해를 하고 계시더군요. 그리고 JPA를 잘못 사용하는…
지속 가능한 소프트웨어를 위한 코딩 방법 - 네 번째 불변 클래스 (Immutable Class) 불변 클래스는 객체가 생성된 후에는 그 값을 변경할 수 없는 것을 의미합니다. 자바에서는 대표적인 불변 클래스는 String입니다. Integer, Double 같은 프리미티브 타입을 감싸…
지속 가능한 소프트웨어를 위한 코딩 방법 - 두 번째 디미터의 법칙 DIY 원칙이 지켜진 코드는 중복 코드를 최소화하고, 직교성이 있는 클래스들은 서로 결합도가 줄어듭니다. 그러면 도대체 직교성이 있는 코드를 만들려면 어떻게 해야 하는가?라고 되물을 수 있습니다. 디미터의 법칙을 이용하…
지속 가능한 소프트웨어를 위한 코딩 방법 - 첫 번째 서론 소프트웨어 시스템의 모든 함수 및 메서드는 어떤 일을 합니다. 8비트 페미콤 시절에는(너무 아재스럽나요?) 함수 하나로 화면에 * 를 출력하는 소프트 웨어를 만들었습니다. 하지만 지금은 롤 플레임 게임이나 상품 추천과 같은 복잡…
Object Mapping 어디까지 해봤니? 머리말 TOAST Notification에서는 API 버전 별 객체와, 비즈니스 로직, 레이어 간 객체와 객체 간 매핑(Mapping) 시 MapStruct를 사용하고 있습니다. 이 글에서는 Object Mapping 라이브러리인 MapStr…
Github PR을 올리면 자동으로 테스트가? 심지어 멀티 프로젝트에도 가능하다! 안녕하세요. 메세징플랫폼개발팀의 한병익 사원입니다. 저희 팀을 비롯하여 많은 분들이 사내에서 Jenkins를 CI/CD 도구로 사용하고 있습니다. 저희는 그중에서도 GitHub Pull Request Bu…
DBA와 개발자가 모두 행복해지는 Hibernate의 in_clause_parameter_padding 옵션 Java ORM 기술의 표준 명세인 JPA가 소개된 지 참 오래되었지만, 국내 현실상 대규모 시스템에서 적용되어 사용된 운영 경험이 충분히 쌓이지 않고 공유되지도 않는 것 같습니…
반응형 시스템 개선하기(feat. TOAST UI Grid) TOAST UI Grid는 자체적인 반응형 시스템을 구축하여 데이터의 상태 관리를 하고 있다. 데이터가 변경되면 반응형 시스템이 변경을 감지하고 있는 다른 데이터 속성들도 자동으로 갱신해주기 때문에 데이터의 변경 관리를 편리하…
브라우저 싸움에 등 터지는 개발자들을 위한 HTTP쿠키와 톰캣 쿠키 프로세서 이야기 무심코 프로젝트의 라이브러리를 버전 업하다가 예상치 못한 에러가 발생한 경험이 다들 있을 것입니다. 주로 이런 에러는 성가신 호환성 문제이거나 버전 별 버그가 원인이지만, 가끔은 버전과 세월을 따라 발전…
당신의 자바스크립트 API 문서는 안녕하신가요? 이 글을 읽고 있을 개발자라면 적어도 한 번쯤 API 문서를 작성해 본 경험이 있으리라 생각한다. "오전까지 100개 함수에 대한 API 문서를 만들어주세요."라는 업무가 주어졌다고 가정해보자. 이때 어떤 그림이 그려지는가? 워드 또는 엑…
[K8S] kubernetes POC를 위한 portainer, rancher 소개 및 설치 등록일 2019.10.16 조회수 12107 들어가는 말 - docker와 kubernetes(이하 k8s)를 간단하게 활용해 보기 위한 portainer와 rancher를 소개합니다. 대상 -…
WEB Firewall 서비스 소개 (TOAST Service 들여다 보기) WEB Firewall은 웹 공격을 전문적으로 탐지/방어하는 보안 설루션으로, 고객의 웹서비스로 공격이 인입될 경우, 전용 설루션을 통해 탐지/방어함으로써 즉각적인 대응이 가능하도록 지원하는 서비스입니다. TO…
Zombie 프로세스를 좀처럼 볼 수 없는 이유? 새로운 프로세스를 만들 때 리눅스에서는 fork() 를 사용합니다.fork() 를 통해서 부모 프로세스는 자식 프로세스를 생성하고, 자식 프로세스에서 실제 실행하려는 프로그램을 exec() 을 통해서 실행합니다. 자식 프로세스가 exit…
대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 ACL이나 보안 그룹(security group)으로 포트가 막혀 있는지 확인하고 싶을 때가 많습니다. 보통은 ping 같은 명령어로 ICMP 패킷을 쏴보고 해당 서버가 살아있는지 먼저 확인합니다. 그러나 ping으로는 살아 있는데,…
System Monitoring 서비스 소개 (TOAST Service 들여다 보기) System Monitoring이란? 지난 7월 말에 System Monitoring 서비스가 새롭게 출시되었습니다. 클라우드에서 VM 인스턴스를 생성하여 그 위에 서비스를 구축하게 되면 가장 중요한…