전체 글 552

엘라스틱 서치 클러스터 상태 확인

엘라스틱 서치 클러스터 상태 확인 엘라스틱 서치는 curl 명령을 사용하여 조회할수 있습니다.상태확인을 위해서는 아래와 같이 실행하면 됩니다.1curl -XGET 'localhost:9200/_cat/health?v&pretty'cs 1234[ya@localhost ~]$ curl -XGET 'localhost:9200/_cat/health?v&pretty'epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1531196084 13:14:44 elasticsearch yellow 1 1 14 14 0 0 10 0 -..

소행성이야기 2018.07.10

javascript 익명함수

javascript 익명함수란? 함수를 정의함과 동시에 바로 실행되는 함수를 즉시 실행 함수라고 한다. 이 함수도 익명 함수를 응용한 형태. 익명 함수를 정의함과 동시에 결과가 출력. 1234567(function(name){ alert(name); })('naya'); cs 즉시 실행 함수를 만드는 방법은 간단.우선 함수 리터럴을 괄호() 로 둘러싼다.이때 함수 이름이 있든 없든 상관없다.함수가 바로 호출될수 있게 ()괄호 쌍을 추가한다.이때 괄호 안헤 값을 추가해 즉시 실행 함수 인자로 넘길수 있다.예제의 경우 ('naya')로 즉시 실행 함수를 호출했으며 이때 'naya' 를 인자로 넘겼다.이값은 즉시 실행 함수의 name 매개변수로 넘겨지게 된다. 이렇게 함수가 선언되자마자 실행되게 만든 즉시 실..

소행성이야기 2018.07.10

php 에서 다차원 배열 정열하기

다차원 배열 정렬하기1차원 배열은 알파벳 순서라든가 크기 순으로 정렬할 수 있었지만 다차원 배열에서는 배열 자체를 비교해야 하기 때문에 좀 더 복잡해진다.사용자 정의 정렬 usort()1234// 2차원 배열$products = array( array('TIR', 'Tires', 100), array('OIL', 'Oil', 10), array('SPK', 'Spark Plugs', 4) );위의 배열을 어떻게 정렬해야 할까? 여러 가지 방법이 있겠지만 물품의 설명을 알파벳 순서로 정렬한다거나 가격을 기준으로 정렬하는 방법 등을 생각해 볼 수 있다. 어떤 쪽이든 usort() 함수를 사용하기 위해서 우리가 직접 비교 함수를 만들어 주어야 한다. 여기서는 두 번째 데이터(설명)을 기준으로 알파벳 순으로 정..

소행성이야기 2018.07.10

객체지향의 사실과 오해 를 읽고

객체지향의 사실과 오해 실생활의 예를 들어서 개념적이고 알기쉽게 설명해준 책입니다. 객체지향이란 말처럼 정말 객체를 지향하는데 필요한 내용을 담고 있습니다. 데이터의 관점에서 본 것이 아닌 역할, 책임, 협력의 관점에서 본 객제지향의 전체 그림을 그려볼수있도록 설명한 책입니다. Roles, Responsibilities, Collaborations from YoungHo Cho 애플리케이션 아키텍처와 객체지향 from YoungHo Cho 참고 : https://www.slideshare.net/lahuman1/ss-64383169

소행성이야기 2018.07.09

[part 4] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. 부제: 가장 약한 링크를 받아 들이자(느슨한 결합)

[part 4] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. 부제: 가장 약한 링크를 받아 들이자(느슨한 결합) 느슨하게 모듈을 연결 하는 것은 좋은 일입니다.변경 사항을 캡슐화 할 수 있는 속성 중 하나입니다.느슨하게 클래스를 연결하려면 클래스의 종속성을 낮추는 습관을 구축하여 최종 목적을 개발하세요. 도데체 이게 무슨 말이냐!하나의 클래스 에서는 하나의 역할만 하는걸 말하는것 같습니다. 나쁜 습관 : 밀접한 결합 아래 예제는 주소를 출력하는 부분에 대해서 타이트하게 연결되어 있습니다.객체의 format() 메소드 를 호출하는 아래 코드는 멋지게 보일 수 있습니다.Address 클래스 호출을 사용하면 format() 됩니다. 반대로 다른 포맷을 적절하게 사용되는 다양한 포맷터에 대해 알아야 합니..

소행성이야기 2018.07.09

엘라스틱 서치 + 키바나 설치 및 설정

엘라스틱 서치 + 키바나 설치 및 설정 1.엘라스틱 서치 설치1234567 cd /home/계정명https://www.elastic.co/kr/downloads/elasticsearch 최신버전 확인 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gztar zxvfp ./elasticsearch-6.3.1.tar.gz cd elasticsearch-6.3.1/cd bin/./elasticsearchColored by Color Scriptercs주의할점 : ./elasticsearch 실행시에는 root 가 아닌 일반 계정으로 실행해야 합니다.123456 방화벽 설정firewall-cmd --permane..

소행성이야기 2018.07.09

코드이그나이터에서 JWT 사용하기

코드이그나이터에서 JWT 사용하기 php 의 firebase/php-jwt 사용하여 JWT 를 사용해봅시다.루트 경로에 third_part 를 만들고third_part 에서 아래 명령어를 입력합니다. 123 composer require firebase/php-jwtcs 그러면 아래와 같이 설치됩니다. 이제 로그인 시스템에 붙여야겠죠?해당 controllers 의 상단에 아래와 같이 추가해주시구요.12345require_once APPPATH."third_party/vendor/autoload.php";use Firebase\JWT\JWT;define('JWT_SECRET', 'this-is-the-secret');cs 아이디와 패스워드를 검증확인이 되었으면토큰을 발급해줍니다. 1234$jwtResult..

소행성이야기 2018.07.09

JWT의 구조는 어떻게 생겼을까?

JWT의 구조는 어떻게 생겼을까? JWT의 구조JWT는 API 인증 등에 사용하는 토큰이므로 스펙에 인증하는 방법에 대한 내용은 적혀있지 않고토큰을 어떻게 만들고 검증하는지에 대해서 나와 있습니다. 일단 JWT 로 만들어진 토큰은 아래와 같습니다.eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyaWQiOiJrZXJpYXMiLCJpYXQiOjE1MzEwOTQ0MDMsImV4cCI6MTUzMTA5NDQ2M30.aq-Y2xsjljM72LIqCz8i1Tm4FSTqdnGZ_OBtOkbuA3A 자세히 보면 마침표(.)를 구분자로 세 부분으로 나누어져 있는데 이 3가지 부분을 각각 JOSE 헤더(JSON Object Signing and Encryption)JWT Claim SetSi..

소행성이야기 2018.07.09

JWT 왜 사용할까요 ?

JWT 왜 사용할까요 ? 항상 새로운 개념이 생길때 이런게 왜 생겼을까?무었때문에 만들어졌을까를 먼저 생각하게 됩니다.그러면 쉽게 이해할수 있으니깐요. JWT 는 회원인증/API 여러곳에서 사용할수 있습니다.예를 들어 쿠키/세션을 사용하는 한대의 머신이 있다고 생각해봅시다.그 한대의 머신에서는 로그인 시스템이 있습니다.즉 허락된 사용자만 접근할수 있는 페이지가 있습니다.그런데 한대의머신에서 또하나의 머신이 추가됩니다.도메인도 다르게 추가가 됩니다.그러면 첫번째 머신에서 로그인한 사람이 두번째 머신 접속시 로그인하게 하려면 어떻게 해야될까요 ?여러가지 방법을 생각해봐야 겠지만 이러한 환경에서 JWT 를 사용하면 좋습니다. 1. 유저가 아이디와 비밀번호로 로그인합니다.2. 첫번째 머신에서 계정정보를 검증합니..

소행성이야기 2018.07.09

[part 3] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. 부제: 메두사를 바라 보지 마라

[part 3] PHP로 좋은 객체 지향(OOP) 습관을 가집시다. 부제: 메두사를 바라 보지 마라 OO 개념을 처음 배울 때 인터페이스가 정말 도움이되었는지 의심스러웠습니다.머 아직도 계속 공부중이구요.어떤분은 인터페이스를 사용하지 않는 것이 메두사의 머리를 보는 것과 같은 비유를 이끌어 냈습니다.그리스 신화에서 메두사는 머리카락에 뱀이있는 여성 캐릭터였습니다. 그녀를 직접 본 사람은 돌로 변했습니다.메두사를 죽인 페르세우스는 자신의 방패를 들여다 보면서 그녀와 마주 할 수 있었고 돌로 변하는 것을 피할 수 있었습니다. 인터페이스는 메두사를 다루는 당신의 거울입니다.구체적이고 구체적인 구현을 사용하면 구현 코드가 변경되면 코드가 변경되어야합니다.구현을 사용하면 본질적으로 클래스를 돌로 만들었 기 때문에..

소행성이야기 2018.07.09