Thrift 쓰리프트는 다양한 언어를 지원하는 RPC 프레임워크이다. 페이스북에서 개발했고, 현재는 오픈소스 아파치 프로젝트로 등록되어 있다. 쓰리프트는 RPC 프레임워크라서, 원격 메소드를 호출하여 개발자는 비지니스 로직에만 신경 쓸 수 있다는 RPC 특징을 똑같이 가진다. 정의된 인터페이스(또는 스키마)를 가지고, 다양한 언어로 코드를 생성해주는 엔진을 가지고 있고 아래와 같은 언어를 지원해준다. C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi 예시로 아래와 같은 쓰리프트 파일을 각 언어에 맞게 코드를 생성해준다. enum PhoneType { HOME,..
아스키코드 ASCII 아스키코드는 현재도 많이 사용되는 인코딩 방식 중 하나로, 영어 대/소문자 숫자, 공백, 특수 문자들을 표현 할 수 있음 총 표현할 수 있는 문자는 0 ~ 127로 총 128개의 문자를 표현할 수 있음 과거에는 7비트를 이용해서 아스키코드를 표현했지만, 현대에는 편의를 위해 8비트(1Byte)로 표현 Java로 출력해보면 어떤 문자들을 표현 할 수 있는지 확인 할 수 있음 아래에서 일부 안보이는 문자들도 존재 for(int i=0; i
문자 인코딩 (charater encoding) 컴퓨터는 Hello, World와 같이 인간의 언어를 이해할 수 없음. 컴퓨터가 이해할 수 있는 언어는 2진수뿐이다보니, 위와 같은 인간의 언어를 이해 할 수 있도록 문자를 2진수로 변환하는 작업이 필요함 2진수와 문자를 1대1로 대응하는 규칙을 통해 문자를 처리하는데, 이러한 대응 규칙에는 ASCII, EUC-KR, UTF-8, UTF-16, UTF-32 등 여러개의 규칙이 존재함 예를들어, 아스키코드에서는 2진수 01000001 (10진수로 65)는 문자 A로 표현 됨 JAVA 예시 코드 int num = 65; System.out.println(Integer.toBinaryString(num)); // 2진수 System.out.println((cha..
MySQL 설치 Zabbix를 설치하기 전에 MySQL을 먼저 설치해야 함 # sudo apt update # sudo apt upgrade -y # sudo apt install -y mysql-server # sudo mysql_secure_installation 설치를 할때 보안 설정을 해줘야 하는데, 아래 참고 암호 검증 여부 VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to set..
JFrog에는 Pro와 OSS 2가지 버전이 존재 Pro는 유로이면서, 지원해주는 기능이 더 많음 OSS는 오픈소스솔루션으로 무료버전이지만, 기본적인 기능만 제공해줌 설치하는 방법은 둘 다 동일하다. 본 글에서는 OSS 버전 설치하는 방법을 다룬다. JFrog OSS 버전 설치본 다운로드 아래 사이트에서 tar.gz를 다운로드받는다. jfrog.com/open-source/ JFrog Open Source Solutions for Developers and DevOps Experts JFrog provides open source solutions like package management, IDE plugins, and free centers for Java, Go, and C/C++, and supp..
VirtualBox 설치 아래 사이트에서 Virtual Box를 설치 www.virtualbox.org/ Oracle VM VirtualBox Welcome to VirtualBox.org! News Flash New January 19th, 2021VirtualBox 6.1.18 released! Oracle today released a 6.1 maintenance release which improves stability and fixes regressions. See the Changelog for details. Important November 16th, 2020We're hiring www.virtualbox.org 우분투 이미지 다운로드 releases.ubuntu.com/20.04/ Ub..
vscode에서 prettier 플러그인을 설치 했지만, 적용이 안되는 경우가 있다. 버그는 아니고, 제대로 설정하지 않아서 발생하는 문제다 플러그인 설치 플러그인 검색창에 prettier 검색 install 버튼을 누르고 설치 진행 설정 (settings.json 수정) File > Preferences > Settings 메뉴 선택 (단축키: Ctrl + ,) 설정 검색창에 defualt formatter 검색하여 esbenp.prettier-vscode 선택 아래 옵션은 선택이지만, 설정해두면 편리하다. ctrl + s를 눌러서 저장을 하게 되면 바로 prettier가 동작하는 옵션이다
Elasticsearch Apache Lucene 기반의 오픈소스 검색엔진 Apache Lucene이 Java로 개발되어 있다 보니, Elasticsearch로 Java로 개발 됨 특징 오픈소스 elastic 제품들은 오픈소스로 제공되며, 깃 헙 저장소에 소스를 공유하고 있다. https://github.com/elastic elastic elastic has 447 repositories available. Follow their code on GitHub. github.com 역정규화 (inverted index) RDB는 테이블 형태로 데이터를 저장하며, 열을 기준으로 인덱스를 생성한다. 검색 시에는 like 검색을 하여 한 줄씩 검사하여 결과값을 가지고 온다. 하나씩 검사하다 보니 데이터가 많아질..
Elastic Search 설치 아래 사이트에서 설치를 진행한다. www.elastic.co/kr/downloads/elasticsearch Download Elasticsearch Free | Get Started Now | Elastic | Elastic Want it hosted? Deploy on Elastic Cloud. Get Started » www.elastic.co Mac 용 tar.gz 다운로드를 받아서 설치해도 되지만, 본 글에서는 패키지를 쉽게 관리하기 위해 Homebrew를 사용한다. 아래 명령어 수행 먼저, Homebrew로 설치하려면, elasic/tap 저장소에 탭(Tap) 해야 한다. 그리고, eleasticsearch를 인스톨한다. $ brew tap elastic/tap..
원인 git의 계정을 변경하여 git 명령어를 수행하게되면, 아래와 같은 에러가 발생한다. fatal: Authentication failed for 'https://~~' 해결 시스템에 등록된 credential 설정값을 초기화 시켜주면 해결된다. $ git config --system --unset credential.helper Username for 'https://github.com': 자신의 계정 username Password for 'https://~@github.com': 자신의 계정 password 참고. 자동 로그인 만약, 매번 로그인하는것이 귀찮다면, 아래 명령어로 로그인 정보를 저장할 수 있다. 저장을 하게되면, 저장된 계정 정보로 알아서 로그인을 수행한다. $ git confi..
HTTPie는 기존 curl과 같이 HTTP 요청을 보낼때 사용하는 CLI 기반의 툴이다. 설치 방법 설치 방법은 공식 사이트에 가면 친절히 설명되어있다. httpie.io/ HTTPie – command-line HTTP client for the API era CLI HTTP that will make you smile. JSON and sessions support, syntax highlighting, wget-like downloads, plugins, and more. httpie.io Homebrew를 이용하여 설치하는 방법을 소개하면, 아래와 같이 명령어를 수행한다. $ brew install httpie 설치 후 아래와 같이 명령어를 수행하여, 버전이 나오면 정상적으로 설치가 된것이다. ..
settings.json 파일 삭제 아래 경로의 settings.json 파일을 삭제한다. 윈도우 %APPDATA%\Code\User\settings.json MacOS $HOME/Library/Application Support/Code/User/settings.json Linux $HOME/.config/Code/User/settings.json MacOS 예시 $ cd $HOME/Library/Application\ Support/Code/User $ rm -rf settings.json Reference stackoverflow.com/questions/36108515/how-to-reset-settings-in-visual-studio-code How to reset settings in Vis..
카카오 광고 AdFit 최근에 카카오 AdFit이 생겼다. 카카오에서 운영하는 광고 수익 플랫폼인데, 한번 사용해보려고 한다. STEP 1. 관리자 화면 > 수익 관리자 화면에서 메뉴에 '수익'이 생겼다. 눌러서 KakaoAdFit을 클릭한다. (아래 사진은 못찍어서, 연동 신청하고 심사 대기중인 사진이다) STEP 2. 회원 가입 카카오 AdFit을 사용하기 위해 회원 가입이 필요하다. STEP 3. 심사 대기 회원 가입을 하면 끝. 심사는 대충 3~5일 정도 소요된다고 한다. 구글 애드센스와 비교했을때, 단가가 어느정도 차이나는지 모르겠지만 한번 사용해보려고한다. 심사 승인 승인이 완료된 후 대략 어느정도 수입이 들어오는지 확인했다. 현재는 클릭수가 없어서 그런지 수입이 되지 않는다. 이건 구글 애드..
객체 지향 프로그래밍, Object Oriented Programming (OOP) - 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나 - 프로그램을 명령어의 목록으로 보지않고, 여러 개의 독립된 단위인 '객체(Object)'들의 모임으로 파악하고자 하는 것 - 각각의 객체는 메시지를 주고받고, 데이터 처리가 가능 - 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 함 객체 지향적 설계 원칙 1. SRP(Single Reponsibility Principle) 단일 책임 원칙 - 클래스는 단 하나의 책임을 가져야 함. - 클래스를 변경하는 이유는 단 하나의..
Virtual Box 설치 실패 아래와 같이 Mac OS에서 설치 실패하는 경우가 발생함. '시스템 환경 설정' > '보안 및 개인 정보 보호' > 하단의 자물쇠 클릭 아래와 같이 Mac OS에서 차단을 하는 바람에 설치가 정상적으로 이루어지지 않는다. '허용'을 누른다. 다시 설치를 하면, 정상적으로 설치가 된다. 다른 글 2020/07/21 - [OS/Linux] - Virtual Box에 CentOS7 설치 Virtual Box에 CentOS7 설치 참고. CentOS 란? 레드햇(RedHat)에서 개발한 리눅스 계열의 운영체제(Operating System)이다. 무료로 제공하고 있어서 기업에서도 많이 사용하는 운영체제이다. (부를때는 센트OS, 센토스 등등 사람마다 � memostack.tist..
CI Continuous Integration의 약자로 '지속적인 통합'이란 뜻 그래서, 지속적인 통합이란? 정기적으로 짧은 시간에 빌드하고 테스트, 병합하는 것을 뜻한다 상대적으로 짧은 시간동안 병합하므로, 개발자들 간의 코드 충돌을 피할 수 있다. 단점이라고 한다면 자주 병합하므로 번거로울 수 있다는 점. 테스트의 종류 - 단위 테스트 (Unit Test) - 통합 테스트 (Integration Test) CD Continuous Delivery 또는 Continuous Deploy의 약자로 '지속적인 배포'란 뜻 지속적인 배포란? 서비스 배포의 자동화라할 수 있다. 빌드, 테스트, 배포를 자동화하기 때문에 번거롭게 개발자가 개입할 필요 없어 비용 줄일 수 있고, 사람에 의한 실수를 방지할 수 있어서..
클래스 다이어그램, Flow chart 와 같이 문서 작성에 도움을 주는 그래프를 그려주는 사이트 https://app.diagrams.net/ Flowchart Maker & Online Diagram Software Flowchart Maker and Online Diagram Software diagrams.net (formerly draw.io) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPM app.diagrams.net
리펙토링이란? 리펙토링은 기존의 코드를 외부의 동작 방식에는 변화 없이 내부 구조를 변경해서 재구성하는 작업 또는 기술을 말한다. 리펙토링을 통해 얻을 수 있는 이점 코드를 이해하기 편해짐 변화에 효율적으로 대응할 수 있음 생산성이 높아짐 코드의 품질이 좋아짐 유지 보수하기 편함 Example (적절한 예인지 모르겠으나, 한가지 예를 만들어봤다) 예를들어서, 정보를 담고 있는 A.txt, B.txt 파일 2개를 만들고, text_dir 라는 특정 디렉토리에 복사하는 프로그램을 작성했다. import os import shutil dir_path = "~/text_dir" # A.txt a_file_path = "~/A.txt" with open(a_file_path, "w") as f: f.write("..
결론부터 얘기하면 병행성: 동시에 실행되는것 처럼 보인다. 병렬성: 실제로 동시에 실행이 된다. 병행성(Concurrency) 병행성(Concurrency)은 동시성이라고 부르기도 함 논리적인 개념 (프로그램 성질) 보통 싱글 코어에서 멀티 스레드를 동작시키기위해 사용. 하지만, 멀티 코어에서도 실행이 가능하다. (싱글, 멀티 코어 둘 다 실행 가능) 보기에는 스레드들을 동시에 병렬적으로 실행하는 것처럼 보이지만, 사실은 번갈아가면서 실행을 시켜 동시에 실행되는것처럼 보이게 함 병렬성(Parallelism) 병렬성은 실제로 동시에 실행 물리적인 개념 (하드웨어 성질) 멀티코어에서 멀티 스레드를 동작시킴 (멀티코어에서만 실행 가능) 병렬성은 데이터 병렬성(Data Parallelism), 작업 병렬성으로 ..
Git 을 사용하는 개발자마다 Commit 형식을 다르게 사용하다보니, 통일성이 없고 가독성이 떨어진다. 효율적인 의사소통을 위하여 커밋 메세지를 작성하는 방법도 통일할 필요가 있다. 좋은 메시지 작성하기 동명사(~ing)보단 명사를 사용한다. 부정문을 사용한다. 관사(a, an, the)는 사용하지 않는다. 자주 사용하는 영문구 Fix 수정, 고치다 버그 등 기능상에 문제가 있거나 수정해야하는 부분이 있을때 주로 사용한다. Fix A A 를 수정한다. Fix A in B B 안의 A 를 수정한다. Fix A witch B 또는 Fix A that B B 절의 A를 수정한다. Fix incorrect type which makes animated gifs not loop forever on device ..