HackerLand 대학은 아래와 같은 학점 정책을 가지고 있다. 모든 학생은 0부터 100 사이의 점수를 가진다. 학점이 40점 이상이라면 과락이다.이 대학의 대학교수인 샘은 아래와 같이 점수에 대한 올림 정책을 만들어서 학생들의 점수를 평가한다. 1. 해당 점수의 다음 5 배수 점수와의 차이가 3보다 작다면, 이 점수는 다음 점수의 5배수로 올림을 한다. 1. 만약 학점이 38 보다 작다면, 과락이 된다. 38 이상이면, 1의 정책에 의해서 40점이 되고 과락을 면할 수 있기 때문이다.
PHP를 사용하지 않은지 10년은 된 것 같지만, 어쩌다 보니 nginx 서버에 php를 조합해야 할 일이 생겨서 정리한다. 예전에는 LAMP(Linux,Apache,Mysql,PHP)였는데, nginx의 사용이 늘어나면서 LEMP(Linux, nginx, MySQL, PHP)가 대세인 것 같다. 나도 요즘에는 nginx만 사용한다. 처음에는 성능 때문에 사용하다가, 가벼움, 단순함 때문에 계속사용하게 됐다. 대략 DevOps 적인 일을 하다보니, 컨테이너와 같은 동적이고 가벼운 환경에 잘 적응 할 수 있는 reverse proxy가 필요했는데, nginx가 필요를 잘 충족시켜줬다.
메모리에 올린다고 하면 의 ZADD 가 적당하겠다. 하지만 데이터양이 많아진다면, 메모리에는 높은 중요도를 가지는 데이터들을 올리고 그렇지 않은 데이터는 SQL 혹은 NoSQL에 저장을 해야 할거다. 프로세스는 아래와 같다. 1. 요청을 하면 에서 먼저 검색한다. 1. REDIS에서 찾을 수 없다면, 원본이 저장된 DB에서 읽는다.REDIS의 경우 아래의 command를 사용할 수 있을 것이다.이제 위치정보를 포함한 데이터를 어떤 DB에 저장할지를 선택해야 한다. 굳이 R-Tree를 사용 할 필요가 없을 것이다. 그냥 B-Tree를 사용하면서 스케일링이 자유로운 데이터베이스를 선택하면 된다.
두마리의 캥거루가 있다. 이 캥거루들은 양의 방향으로 고정된 정수 크기만큼 점프를 할 수 있다. 캥거루들의 출발위치가 다르고 점프할 수 있는 크기가 다르다고 가정하다. 같은 횟수만큼 점프를 했을 때, 캥거루가 만나는 지점이 있는지 확인 하라.캥거루의 위치와 점프크기를 한 줄에 입력한다. x1 v1 x2 v2 이다. 0 3 4 2 캥거루 x1은 0에서 시작 3칸씩 이동한다. 캥거루 x2는 4에서 시작해서 2칸씩 이동한다.
샘의 집은 양 옆으로 사과나무와 오렌지 나무가 있어서, 과일이 풍부하다. 아래 그림에서 빨간색 영역은 집을 기리킨다. 집의 영역은 s에서 부터 t 까지다. 사과나무는 집 왼쪽에 있고, 오렌지 나무는 오른쪽에 있다. 사과나무의 위치는 a 오랜제나무의 위치는 b라고 가정하자.땅을 x축이라고 할 때, 과일이 땅에 떨어지면 x축의 위치에 값을 가질 것이다. 이때 과일이 떨어졌던 나무와의 거리 d를 계산 할 수 있을 것이다. 그림에서 사과의 경우 오른쪽방향으로 떨어졌으므로 양의 정수 값을 가진다.
MySQL은 오픈소스 관계형 데이터베이스 관리 시스템(Relation Database Management System - RDBMS)이다. 이름은 설립자인 Michael Widenius의 딸 이름인 My 와 Structured Query Language의 약자인 SQL의 조합이다. 제작사는 MySQL AB로 이후 썬 마이크로시스템즈에 인수 됐다. 이후 오라클이 2010년 썬을 인수하면서 MYSQL도 넘어갔다. 현재 MySQL의 실질적인 소유주는 오라클이다.MySQL은 LAMP 스택으로 특히 유명하다. LAMP는 "Linux, Apache, MySQL, PHP"의 머리글자를 따서 만든용어인데, 인터넷이 급격한 성장을 이루던 1990년대 웹 서비스 개발을 주도하면서 가장 널리 사용되는 RDBMS가 됐다. WordPress, phpBB, MyBB, Drupal, Joomla등의 굵직 굵직한 오픈소스 솔류션들이 MySQL을 기반으로 하고 있다. 또한 Google, Facebook, Twitter, Flickr 등 수 많은 기업들이 주요 데이터베이스로 사용하고 있다.
라즈베리파이 3 모델 B를 기준으로 한다. 2017년 11월 현재 최신버전은 go1.9.2.linux-armv6l.tar.gz이다. 에서 다운로드 했다.# wget https/usr/local에 복사해서 압축을 푼다.# mv go1.9.2.linux-armv6l.tar.gz /usr/local# cd /usr/local# tar -xvzf go1.9.2.linux-armv6l.tar.gzPATH에 추가한다.# cat .bashrc ......export PATH=$PATHgo version을 확인해보자.# go version go1.9.2 linux/armpackage mainimport "fmt"func main() { fmt.Println("Hello World")}실행# go run hello.go
Raspberry Pi 3 스타터키트를 구매했다.구성품 목록이다. Memorette M2 MicroSD Reader Raspberry Pi 3 Model B Raspberry Pi 3 케이스 사각 방열판 15x15x10, 10x10x10 HDMI 케이블 LAN 케이블 2.5A 어댑터 클리어 케이스 MicroSD 카드 16GB MicroSD카드 USB 리더기설치를 끈낸 후 모습이다. 아담하다.라즈베리파이 3 모델 B의 주요 사양은 아래와 같다. Quad core 1.2GHz Broadcom BCM2837 CPU (64-bit ARM Cortex A53) 1GB RAM BCM43143 WiFi (802.11n)
R-Tree는 지리 좌표, 직사각형, 폴리곤과 같은 다차원 정보를 색인하기 위해서 사용하는 트리 데이터 구조다. R-Tree는 1984년 Antonin Guttman이 제안 했으며, 이론은 실제 상황에서도 중요하게 사용하고 있다. R-Tree의 일반적인 사용 용도는 해안선, 건물, 호수, 도로 등을 포함한 지도내에서 특정 객체의 위치를 신속하게 찾는 것이다. "현재 위치에서 2km 이내의 식당 찾기", "가장 가까운 주유소 찾기"등이 전형적인 예다.
사용 가능한 버전 시간 복잡도 위도(latitude)와 경도(longitude)를 포함하는 지리정보 데이터를 지정된 키에 추가한다. 저장된 지리정보 데이터는 GEORADIUS, GEORADIUSBYMEMBER명령을 이용해서 검색 할 수 있다. 이 x, y를 인수로 취한다. 반드시 경도,위도 순서로 설정해야 한다. 유효 경도는 -180에서 180 유효 위도는 -85.05112878에서 85.05112878범위를 벗어난 위/경도 값을 입력하는 경우 에러를 반환한다. 지리색인 구조는 정렬된 집합(sorted set)이다.
31 POSTS HERE
Grading Students
HackerLand 대학은 아래와 같은 학점 정책을 가지고 있다. 모든 학생은 0부터 100 사이의 점수를 가진다. 학점이 40점 이상이라면 과락이다.이 대학의 대학교수인 샘은 아래와 같이 점수에 대한 올림 정책을 만들어서 학생들의 점수를 평가한다. 1. 해당 점수의 다음 5 배수 점수와의 차이가 3보다 작다면, 이 점수는 다음 점수의 5배수로 올림을 한다. 1. 만약 학점이 38 보다 작다면, 과락이 된다. 38 이상이면, 1의 정책에 의해서 40점이 되고 과락을 면할 수 있기 때문이다.
NginX를 이용한 PHP-FPM 서비스 구성
PHP를 사용하지 않은지 10년은 된 것 같지만, 어쩌다 보니 nginx 서버에 php를 조합해야 할 일이 생겨서 정리한다. 예전에는 LAMP(Linux,Apache,Mysql,PHP)였는데, nginx의 사용이 늘어나면서 LEMP(Linux, nginx, MySQL, PHP)가 대세인 것 같다. 나도 요즘에는 nginx만 사용한다. 처음에는 성능 때문에 사용하다가, 가벼움, 단순함 때문에 계속사용하게 됐다. 대략 DevOps 적인 일을 하다보니, 컨테이너와 같은 동적이고 가벼운 환경에 잘 적응 할 수 있는 reverse proxy가 필요했는데, nginx가 필요를 잘 충족시켜줬다.
GeoHash 디버거
메모리에 올린다고 하면 의 ZADD 가 적당하겠다. 하지만 데이터양이 많아진다면, 메모리에는 높은 중요도를 가지는 데이터들을 올리고 그렇지 않은 데이터는 SQL 혹은 NoSQL에 저장을 해야 할거다. 프로세스는 아래와 같다. 1. 요청을 하면 에서 먼저 검색한다. 1. REDIS에서 찾을 수 없다면, 원본이 저장된 DB에서 읽는다.REDIS의 경우 아래의 command를 사용할 수 있을 것이다.이제 위치정보를 포함한 데이터를 어떤 DB에 저장할지를 선택해야 한다. 굳이 R-Tree를 사용 할 필요가 없을 것이다. 그냥 B-Tree를 사용하면서 스케일링이 자유로운 데이터베이스를 선택하면 된다.
Kangaroo
두마리의 캥거루가 있다. 이 캥거루들은 양의 방향으로 고정된 정수 크기만큼 점프를 할 수 있다. 캥거루들의 출발위치가 다르고 점프할 수 있는 크기가 다르다고 가정하다. 같은 횟수만큼 점프를 했을 때, 캥거루가 만나는 지점이 있는지 확인 하라.캥거루의 위치와 점프크기를 한 줄에 입력한다. x1 v1 x2 v2 이다. 0 3 4 2 캥거루 x1은 0에서 시작 3칸씩 이동한다. 캥거루 x2는 4에서 시작해서 2칸씩 이동한다.
Apple And Orange
샘의 집은 양 옆으로 사과나무와 오렌지 나무가 있어서, 과일이 풍부하다. 아래 그림에서 빨간색 영역은 집을 기리킨다. 집의 영역은 s에서 부터 t 까지다. 사과나무는 집 왼쪽에 있고, 오렌지 나무는 오른쪽에 있다. 사과나무의 위치는 a 오랜제나무의 위치는 b라고 가정하자.땅을 x축이라고 할 때, 과일이 땅에 떨어지면 x축의 위치에 값을 가질 것이다. 이때 과일이 떨어졌던 나무와의 거리 d를 계산 할 수 있을 것이다. 그림에서 사과의 경우 오른쪽방향으로 떨어졌으므로 양의 정수 값을 가진다.
MySQL
MySQL은 오픈소스 관계형 데이터베이스 관리 시스템(Relation Database Management System - RDBMS)이다. 이름은 설립자인 Michael Widenius의 딸 이름인 My 와 Structured Query Language의 약자인 SQL의 조합이다. 제작사는 MySQL AB로 이후 썬 마이크로시스템즈에 인수 됐다. 이후 오라클이 2010년 썬을 인수하면서 MYSQL도 넘어갔다. 현재 MySQL의 실질적인 소유주는 오라클이다.MySQL은 LAMP 스택으로 특히 유명하다. LAMP는 "Linux, Apache, MySQL, PHP"의 머리글자를 따서 만든용어인데, 인터넷이 급격한 성장을 이루던 1990년대 웹 서비스 개발을 주도하면서 가장 널리 사용되는 RDBMS가 됐다. WordPress, phpBB, MyBB, Drupal, Joomla등의 굵직 굵직한 오픈소스 솔류션들이 MySQL을 기반으로 하고 있다. 또한 Google, Facebook, Twitter, Flickr 등 수 많은 기업들이 주요 데이터베이스로 사용하고 있다.
라즈베리파이에 GO 개발환경 만들기
라즈베리파이 3 모델 B를 기준으로 한다. 2017년 11월 현재 최신버전은 go1.9.2.linux-armv6l.tar.gz이다. 에서 다운로드 했다.# wget https/usr/local에 복사해서 압축을 푼다.# mv go1.9.2.linux-armv6l.tar.gz /usr/local# cd /usr/local# tar -xvzf go1.9.2.linux-armv6l.tar.gzPATH에 추가한다.# cat .bashrc ......export PATH=$PATHgo version을 확인해보자.# go version go1.9.2 linux/armpackage mainimport "fmt"func main() { fmt.Println("Hello World")}실행# go run hello.go
라즈베리파이 3 모델 B 설치
Raspberry Pi 3 스타터키트를 구매했다.구성품 목록이다. Memorette M2 MicroSD Reader Raspberry Pi 3 Model B Raspberry Pi 3 케이스 사각 방열판 15x15x10, 10x10x10 HDMI 케이블 LAN 케이블 2.5A 어댑터 클리어 케이스 MicroSD 카드 16GB MicroSD카드 USB 리더기설치를 끈낸 후 모습이다. 아담하다.라즈베리파이 3 모델 B의 주요 사양은 아래와 같다. Quad core 1.2GHz Broadcom BCM2837 CPU (64-bit ARM Cortex A53) 1GB RAM BCM43143 WiFi (802.11n)
Rtree
R-Tree는 지리 좌표, 직사각형, 폴리곤과 같은 다차원 정보를 색인하기 위해서 사용하는 트리 데이터 구조다. R-Tree는 1984년 Antonin Guttman이 제안 했으며, 이론은 실제 상황에서도 중요하게 사용하고 있다. R-Tree의 일반적인 사용 용도는 해안선, 건물, 호수, 도로 등을 포함한 지도내에서 특정 객체의 위치를 신속하게 찾는 것이다. "현재 위치에서 2km 이내의 식당 찾기", "가장 가까운 주유소 찾기"등이 전형적인 예다.
GEOADD
사용 가능한 버전 시간 복잡도 위도(latitude)와 경도(longitude)를 포함하는 지리정보 데이터를 지정된 키에 추가한다. 저장된 지리정보 데이터는 GEORADIUS, GEORADIUSBYMEMBER명령을 이용해서 검색 할 수 있다. 이 x, y를 인수로 취한다. 반드시 경도,위도 순서로 설정해야 한다. 유효 경도는 -180에서 180 유효 위도는 -85.05112878에서 85.05112878범위를 벗어난 위/경도 값을 입력하는 경우 에러를 반환한다. 지리색인 구조는 정렬된 집합(sorted set)이다.