[네트워킹 기초 공부] IP Address

  1. 라우터에서의 IP 주소 라우터에는 이더넷 인터페이스와 시리얼 인터페이스를 갖고 있고, 각각 IP 주소를 할당한다. 이더넷 인터페이스: 내부 네트워크에 연결되는 포트 시리얼 인터페이스: 외부(인터넷) 네트워크에 연결되는 포트 라우터는 인터페이스별로 각각 IP 주소를 배정하지만, 스위치나 허브는 IP 주소를 장비별로 하나씩만 배정 스위치나 허브에 IP 주소를 배정하는 이유는 단지 관리 목적, IP 주소를 배정하지 않아도 통신 가능 2. IP 주소 체계 32자리 2진수로 구성 네트워크 부분(Network Part)과 호스트 부분(Host Part)로 구분 네트워크란?
Read more →

[네트워킹 기초 공부] 네트워크 장비들 - 허브(Hub), 브릿지(Bridge), 스위치(Switch), 라우터(Router)

허브 (Hub) 여러개의 포트를 갖고 있으며, 들어온 데이터를 그대로 재전송 하는 단순한 역할 UTP 케이블의 경우 최대 전송거리가 약 100미터, 멀리 떨어진 장비간의 통신을 전달할 수 있음 이더넷 허브는 CSMA/CD(Carrier Sense Multiple Access / Collision Detection) 을 적용 받기 때문에 하나의 콜리진 도메인(Collision Domain) 안에 있게 된다. 따라서 어느 한순간 한 PC만이 데이터를 전송할 수 있음 여러대의 허브를 서로 연결하면 콜리전 도메인이 더욱 커지게 된다. 콜리전 도메인을 나누어 줄 수 있는 장비로는 브릿지와 스위치가 있음 브릿지 (Bridge) 스위치가 나오기 전까지는 브릿지가 주로 사용됨 허브로 만들어진 콜리전 도메인 중간에서 다리 역할을 함 브릿지로 나누어진 콜리전 도메인(세그먼트)마다 속해 있는 PC들끼리는 각각 통신이 가능(물론 CSMA/CD도 적용) 브릿지(스위치) 세부 기능 Learning: 브릿지(스위치)로 전송된 통신 프레임의 맥(MAC) 어드레스를 맥 어드레스 테이블(브릿지 테이블)에 저장 Flooding: 맥 어드레스 테이블에 없는 주소라면 들어온 포트를 제외한 나머지를 모든 포트로 전송 Forwarding: 브릿지가 목적지 맥 어드레스를 자신의 맥 어드레스 테이블에 가지고 있고, 이 목적지가 출발지 맥 어드레이스와 다른 세그먼트에 있는 경우.
Read more →

PHP에서 세션(session)에 대한 주의할 점과 성능 개선 방법

최근에 잘 모르고 있었던 레거시 코드 부분에서 심각한 성능 저하가 있는 것을 발견했다. Request 마다 사용자 인증을 확인하는 함수가 호출 되는데 20 라인도 안되는 그 함수에서 전체 비중에 50% 이상이 오버헤드가 발생하고 있었다. 라인수가 짧다고 심플하고 가볍다고는 볼 수 없지만, 사용한 변수나 호출하는 자식 함수명만 봤을때는 전혀 예상하지 못했던 부분이였다. 하지만 이름에서 풍기는 가벼움과 다르게 자식 함수들은 생각보다 무거운 작업을 하고 있었다. $_SESSION 에 접속한 사용자 정보가 있는지 확인 (1)에서 확인한 사용자 ID로 추가 정보를 DB 에서 조회 후 전역변수에 저장 (2) 와 비슷하게 기타 설정값을 DB 에서 조회 후 같은 전역변수에 저장 일단 (2), (3) 을 제거하고 싶은 마음에 관련된 의존성 코드를 찾기 시작했다.
Read more →

Jenkins 프로젝트(jobs) 설정이 사라지는 오류 및 일단위 백업하기

Jenkins 에서 실행되는 프로젝트(job)들은 ${JENKINS_HOME}/jobs 경로에 프로젝트 이름마다 디렉토리가 존재하며, 안에는 config.xml 과 빌드 히스토리 관련 파일들이 있다. 만약 Jenkins를 다른 서버로 이전하게 된다면 jobs 디렉토리를 백업해서 이전할 서버로 복구하면 된다. 최근에 Jenkins 를 재실행 한 후 일부 프로젝트들의 config.xml 이 삭제되는 이슈가 발생했다. OTL 한참동안 원인 파악이 안되는 상태가 계속되자 수동 복구를 하기로 했고, 기존과 동일한 이름으로 “새로운 Item > Freestyle Project” 를 생성했다. 이렇게 하면 설정은 없지만 빌드 기록은 볼 수 있다.
Read more →

Hive UDF - ngrams

N-gram 이란? 전체 문자열을 N개의 기준 단위만큼 절단해서 사용하는 방법 N개는 문자 단위가 될 수도 있고, 단어 단위가 될 수도 있다. 만들어진 N-gram 은 나오는 빈도를 분석하거나, 키워드를 뽑아내는 용도로도 사용될 수 있다. 예를들어 “hive” 에 대한 2-gram의 결과는 다음과 같다. ["hi", "iv", "ve"] ngrams(array, int N, int K, int pf) 당연히 N-gram 을 계산하기 위함 3개의 입력 파라미터 (Input) 첫번째, String 타입의 Array of Array 형태, 각 element 는 word (ex.
Read more →

DEVIEW2016 첫째날(DAY 1) 참석 후기 - Part1

처음으로 개발자 컨퍼런스 후기를 남겨볼까 한다. (후기라기 보다 일기라고 해야할까) 후기를 써봐야겠다는 생각을 하게된 이유를 들자면 최근 4년동안은 몇몇 개발자 컨퍼런스를 다녀봤었는데 굉장히 즐거웠고, 많은 영감과 아이디어를 받았던 기억이 있지만, 돌이켜보면 짤막한 단편 기억들이 엉켜있는 느낌이라 당시를 구체적으로 떠올리기가 어려웠다. 그리고 또 한가지 이유는 지난 8월에 개최된 Pycon APAC 2016 에서 어느 여성 개발자의 후기를 읽어봤는데 현장의 분위기와 들은 세션의 메모나 생각들을 남겨놓으니 나중에 다시 보면 좋을 것 같다는 생각이 들었고, 나도 좀 더 가벼운 마음으로 여유를 가지고 행사에 참여 해봤으면 어땠을까 하는 아쉬움이 들었다.
Read more →

DEVIEW2016 첫째날(DAY 1) 참석 후기 - Part2

첫번째 세션 “Web payments API의 미래와 현재” 이 세션은 작년에 파이썬 스터디 모임에서 하면서 알게된 친구가 발표를 한다는 사실을 행사장 와서 알게 되었는데 엄청 반갑기도 했지만, 한편으로 대단하고 멋져보였다. 주제는 W3C Web Payments API 표준에 대한 소개와 샘플 코드를 보고, API 의 상세 스펙을 살펴보는 순서로 진행 되었다. 발표는 이해하기 쉽도록 작은 소주제로 잘 분리하면서 각각은 짜임새 있게 구성 되었다고 느꼈다. 동기 고객이 장바구니에서 이탈되는 비율 68%!! 모바일에서 장바구니에서 PC보다 이탈율이 66% 더 높음 이유는 form 을 입력하기 귀찮아서;; 컥 (키보드 화면 많이 차지함, 계정도 만들어야되고.
Read more →

Golang - nil 비교하기

아래 코드를 실행하면 checkEggOneSet() 함수에서 파라미터 p 와 nil 을 비교할 때 에러가 발생한다. _compare_pointer_to_niltest.go|13| cannot convert nil to type Person package main import "fmt" type Age int type Person struct { age Age gender string } func checkEggOneSet(p Person) bool { if p != nil && p.age >= 30 { return true } return false } func Example_compare_to_nil() { me := Person{age: 32, gender: "man"} if checkEggOneSet(me) { fmt.
Read more →

Golang - go install 과 go build 의 차이

Read more →

Redux 공식 사이트에서 학습한 내용 정리

액션 : 무엇이 일어날지… 애플리케이션에서 스토어로 보내는 데이터 묶음. 액션은 반드시 어떤 형태의 액션이 실행될지 나타내는 type 속성을 가져야 한다 액션 생성자: 액션을 만드는 함수 flux 에서는 액션 생성자가 액션을 전달해서 dispatcher 를 호출 하지만, redux 에서는 액션을 반환 액션은 어떤 일이 일어났는지는 알려주지만, 애플리케이션 상태를 어떻게 바꿔야 하는지는 알려주지 않는다 액션을 다루기 전에.. 애플리케이션의 상태(데이터)가 어떤 모양이 될 지 설계해야 한다 리듀서 : 액션에 따라 상태를 수정 액션을 보냈을때 상태가 어떻게 변하는지 명시 이전 상태와 액션을 받아서 다음 상태를 반환하는 순수 함수 리듀서는 반드시 순수 해야만 한다.
Read more →