인터넷강의 사이트 제작하는 방법

HYEONG HWAN, MUN/ 9월 20, 2016/ 미분류/ 0 comments

  우리나라는 교육에 매우 많은 돈을 투자한다. 초등학교때부터 (요즘엔 유치원부터) 학원을 다니고, 무언가의 시험(test)가 있을때마다 사교육을 찾는다. 사교육 열풍이기 때문에 자연스럽게 돈이 이 분야로 흘러들고, 관련 산업이 많이 발전하였다. 최근 5년간 급격한 스마트폰 보급으로 인해 이러한 교육쪽에도 많은 변화가 생겼다. 대중교통, 티비, 라디오등을 이용하면서 한번쯤 시원스쿨이나 문정아중국어 광고를 본적이 있을 것이다. 이것은 최근의 인터넷을 통한 강의소비 형태를 반영한 것으로 볼 수 있다.   이러한 상황이므로 인터넷강의 사이트 구축의 수요가 증가하고 있는 추세이다.   시스템 구성 다이어그램 대강 위와 같은 시스템을 만들어야 한다. 5대의 서버가 필요하다. 각 서버의 역할은 다음과 같다. 1) 웹서버 : 웹사이트, 가입, 결제, 안내등 2) DB서버 : 웹서버의 데이터를 저장한다. 3) CDN1, CDN2 : 미디어 데이터 (mp4등)의 배포 서버이다. 미디어 서버는 부하가 일어나기 때문에 두대를 준비한다. 4)…

[머신러닝] a-Priori algorithm 을 활용하여 규칙기반 추천시스템 만들기

HYEONG HWAN, MUN/ 9월 20, 2016/ 미분류/ 0 comments

** 초고(작성중) 입니다 ** 우리가 사용하는 컴퓨터는 원래 계산기(Compute + er) 이었다.   정해진 규칙에 맞추어 답을 내는 도구인 것이다. 프로그래밍언어론 학문에서는 프로그램의 의의가 “상태를 변화시키는것” 이며, 그 이외의 효과는 side effect 라고 말한다.   현재 시대는 저장장치의 가격이 저렴하고, CPU의 성능이 비약적으로 쌓여서 모든 산업에 걸쳐서 다양한 데이터를 저장한다. 하지만 그 데이터를 가공하여 유의미한 결론을 얻는 방법이 어렵기 때문에 대부분 활동로그 정도의 역할로만 사용한다.   이러한 – 방대한 유기체적 데이터-를 가지고 유의미한 통계적 추론을 하는 것을 빅데이터 처리(Big data processing) 학문이라고 말한다.   빅데이터 처리에는 데이터 마이닝과 머신러닝으로 나뉜다. 데이터 마이닝은 데이터로 부터 유의미한 결론을 얻는 것을 말한다. 머신러닝은 데이터로부터 학습하여 활동제안(action) 을 하는 것을 말한다.   대부분 데이터마이닝 + 사람의 판단이 많이 쓰인다. 머신러닝은 데이터 학습에 의한 활동을 말하는데,…

즐거운 추석연휴 되세요~

HYEONG HWAN, MUN/ 9월 13, 2016/ 미분류/ 0 comments

추석 연휴 기간 동안 블로그는 쉽니다.   연휴 이후에는 작성중인 미완성 글 마저 완성시키고, 그 다음 글로 R 언어로 a-Priori algorithm 을 활용한 빅데이터 규칙기반 추천시스템 만드는 법을 써볼까 해요.   < 그림 : 구매 예측 plot > WordCloud 예제 <연관도와 빈도를 분석한 WordCloud> 인기 상품과 함께 구매할 상품을 알 수 있다.   개인적인 생각으로 요즘 기술 트랜드는 데이터의 통계적 분석 인 것 같습니다.   글 기획 잘해서 빨리 써보도록 할께요~

요즘 드는 생각

HYEONG HWAN, MUN/ 9월 5, 2016/ 미분류/ 4 comments

최근 바쁜 일도 다 끝났고 요즘엔 여러 산재된 인터넷 강의를 들어보고 있다. (주로 경제학) 가장 많이 듣는게 최진기 쌤의 생존경제학 강의.   가성비라는 관점에서 봤을때 (내 생각에) 음악 미술 하는 사람들이 가장 노력대비 벌이가 어렵고, 반면에 부동산 하는 사람의 노력대비 벌이가 엄청나게 크다. (투자자 and 공인중개사) 현재 한국이 서브프라임 모기지론 터질까봐 금리는 못올리고 계속 내릴것이다(그러니까 부동산이 주요 경기 부양책). 이러면 시장에 돈이 풀리고, 이 돈은 부동산에 들어갈거고 부동산은 상승하게 될 것이다.   내가 본 경제는 열심히 공부하는 20-30대 문과, 예체능 보다 땅 중계하고 수수료받는 50-60대 부동산 중개사 분들이 더 잘벌고 잘살고 노동의 질도 좋더라.   어느 인터넷 게시판의 “힘들게 왜 일하나 모르겠다.” 라는 중개사분의 글을 보고 딱히 납득이가서 반박의 댓글을 달지 않았다.   성장이 침체되는걸 막는건 정치인이 할일이고 개인은 개인의 대응을…

HTML5 Fullscreen API 응용 및 Video 네이티브 컨트롤 제어하기 (hide control css)

HYEONG HWAN, MUN/ 8월 18, 2016/ 미분류/ 0 comments

명확하게 정리된 해설이 없길래, 내가 직접 이곳에 요약 정리해 본다.   나에게 “기존 사용하고 있는 HTML5 플레이어를 유튜브 플레이어 같이 작업해달라” 라는 요청사항이 왔다. 이에 맞추어 기술조사를 하였고 처리하였다.   1. UserAgent StyleSheet 의 이해 웹브라우저를 컴퓨터 용어로 UserAgent 라고 부른다. 웹브라우저는 HTML 태그를 해석하고 화면에 그리기(나타내기) 위해서 자체적인 StyleSheet 를 내장하고 있다. 이것을 웹브라우저-스타일시트 라고 부르며 UserAgent StyleSheet 라고 쓴다. 이 웹브라우저-스타일시트는 브라우저 화면 표시 규칙으로써 거의 비슷하나, 브라우저별로 조금씩 다르다. (95%쯤 동일)   2. FullScreen 사용 먼저 FullScreen 을 사용할 객체를 선택해야합니다. 이 객체가 video 라면 특별히 브라우저의 자체의 비디오 플레이어가 실행된다.   video 객체의 fullscreen 의 경우 다음의 css 핵을 사용하여 비디오UI 디자인을 변경할 수 있습니다.     브라우저마다 네이티브 컨트롤의 클래스명이 다르기 때문에 작업 후 확인해 주어야 합니다.…

항상 최상의 속도로 국제데이터를 이용하는방법(리눅스 데이터 포워딩)

HYEONG HWAN, MUN/ 6월 12, 2016/ 미분류/ 20 comments

알면 쉽고 모르면 어려운 것이다. 엄청 대단한건 아니지만 알아두면 유용한 지식을 공유하고자 한다. [노하우] + [상황에 맞는 적절한 프로그램 사용] 으로 문제를 해결할 것이다. 먼저 몇가지 이론을 알고 가도록 하자.   몇가지 이론 1. TCP 와 UDP 장황한 컴퓨터공학 이론 말고 대강의 뜻만 이해하도록 하자. 그림 및 내용 참조 : https://www.pluralsight.com/blog/it-ops/networking-basics-tcp-udp-tcpip-osi-models TCP 는 신뢰된 데이터 전송을 위한 프로토콜이다. 100개의 데이터를 올바르게 순서대로 모두 전송할 때 쓰는 것이다. UDP 는 신뢰되지 않은 데이터 전송을 위한 프로토콜이다. 100개의 데이터를 보내지만 도착여부등을 전혀 신경쓰지 않는다. TCP 는 웹문서(예를들어 HTML) 등을 읽을때 사용한다. UDP 는 인터넷 동영상 재생시에 사용한다. (손실을 허용하는 통신) 라고 배웠으나, 인터넷 동영상도 TCP 통신하더라. (99.99% 이상) DNS 서비스는 UDP 를 사용한다. (0.01% 이하) 아무튼 “통신한다” 라는 말을 듣게되면 모두 TCP 라고 추정하면 된다. 참고로…

서버 성능측정

HYEONG HWAN, MUN/ 3월 28, 2016/ 미분류/ 0 comments

다음은 https://blog.lael.be/post/44 에서 각 상품군의 성능 벤치마크시 사용했던 지표입니다. Ubuntu 기준. Windows 는 Novabench(https://novabench.com/) 를 사용하도록 하자. 벤치마크 점수에 너무 신경쓰지 말아야 한다. 점수는 점수일 뿐 당신의 체감 속도가 가장 중요하다. 아래 스크린샷은 라엘이가 개인용도로 사용하고 있는 직접 구축한 클라우드 서버에서 Sysbench 를 실행한 것이다. 서버는 Hyper-V 기반이며, 6코어 5GB RAM, 100GB SSD 사양이다. # 제 서버를 기준 지표로 설정하지 마시고, https://blog.lael.be/post/44 의 업체를 기준 지표로 삼으세요.   1. 벤치마크 프로그램 설치 apt-get install sysbench 2. CPU 테스트 sysbench –test=cpu –cpu-max-prime=20000 run total time 을 계산한 후 100을 곱한다. 22.3451s -> 2234점 (걸린 시간이기 때문에 낮을 수록 좋다.)   3. 메모리 테스트 Read Test sysbench –test=memory –memory-block-size=1K –memory-scope=global –memory-total-size=100G –memory-oper=read run 2779점 Write Test sysbench –test=memory –memory-block-size=1K –memory-scope=global –memory-total-size=100G –memory-oper=write run…

Windows RDP 보안 인증서 설정하기 (install Certificate)

HYEONG HWAN, MUN/ 3월 3, 2016/ 미분류/ 0 comments

윈도우 서버 (또는 데스크탑)에 원격 연결을 사용할 때 보안인증서를 사용하는 방법에 대해 알아보자. 물론 이 작업(보안인증서 설정)을 하지 않아도 원격연결은 보안통신을 한다. 가장 편한 방법은 보안경고를 무시하는 것이다.   1. pk12 인증서 생성 Windows 에서 인증서를 사용하려면 .p12(.pfx) 확장자의 파일이 필요하다. openssl 툴을 사용해서 인증서와 개인키를 조합하여 .p12(.pfx) 파일을 만들도록 하자. 나의 경우 인증서 발급 회사에서 제공하는 온라인 p12 생성기를 사용한다.   2. mmc 에서 인증서 설정 후 개인용 > 인증서 > 에 import. 원격데스크톱 > 인증서 > 는 할 필요 없음.     3. cmd 에서 명령입력. 인증서 경로 검사를 하기 때문에 인증서가 없거나 인증서 지문(thumb)을 잘못쓰면 invalid parameter error 가 나온다. 레지스트리를 통해 강제로 변경하는 방법도 있긴한데, 실수하면 서버가 먹통이된다. 따라서 어려운 레지스트리 변경 하지 말고 유효성 체크까지 하는…

리눅스 부팅시 프로그램/명령어 실행하기 (Linux Init script)

HYEONG HWAN, MUN/ 2월 19, 2016/ 미분류/ 0 comments

서버가 완전히 부팅된 후에 무언가 자신만의 특별한 작업을 하고 싶을 때가 있다. Windows 서버의 경우 [관리 도구]의 [작업 스케줄러]를 이용하면 된다. (자세한 설정 방법은 구글 검색을 이용해 보도록 하자.) 리눅스의 경우 다음과 같은 방법으로 설정 할 수 있다.     리눅스는 매우 다양한 설정지점(hooking point)이 있다. 부팅 시작시, 서비스 시작 (전, 중 후), 네트워크 연결 (전, 후), 부팅 후 등이 대표적인 설정지점이다.   이 중에서 가장 많이 쓰이는 “서버가 완전히 부팅된 후” 특정 작업을 실행하는 것을 실습해 보도록 하겠다. Run init-script when server fully startup.   예제는 root 계정에서 실행한다. Ubuntu 14.04 LTS 기준으로 작성되었으며, CentOS나 Fedora 등에서는 명령어가 다를 수 있다. (대략적인 방법은 동일)   1. 예제 실행을 위해 몇가지 프로그램 확인 a) 시간 동기화 프로그램 확인 # ntpdate 만약…

MariaDB 10.0 의 이유 (MariaDB 유래)

HYEONG HWAN, MUN/ 2월 17, 2016/ 미분류/ 0 comments

잡담입니다.   MySQL-Company 가 Oracle-Company에 인수되면서 기대치만큼 발전하지 않자, MySQL 창업자인 마이클 와이드니어스는 Oracle(에 팔린 MySQL 회사)를 나와서, 동료 개발자들과 함께 MariaDB-Company를 설립합니다.   마이클 와이드니어스의 첫째딸 이름이 My, 막내딸이름이 Maria, 첫째아들 이름이 Max 입니다. 실제로 이 때문에 MySQL, MariaDB, MaxDB가 있습니다. (네이밍 참 쉽죠?) 참조 : https://en.wikipedia.org/wiki/Michael_Widenius   그는 MariaDB 초기에는 API 인터페이스만 호환되도록 하고 내부엔진을 바꾸었으며, 이후에는 공격적인 기능 도입을 위해 버전을 많이 건너뜁니다. 그래서 MySQL 5.5 다음 버전은 -> MySQL 5.6 이지만, MariaDB 5.5 다음 버전은 -> MariaDB 10.0 입니다.   MariaDB 10.0 과 MySQL 5.6 은 완전히 다른 것이 아니고 호환 안되는 기능이 있음을 의미합니다.(MariaDB가 훨씬 빠르고, 기능도 더 많습니다.) 일부는 MariaDB 10.0 이 MySQL 5.6 보다 꽤 많이 (버전 번호상 두배쯤?) 좋을 것이라고 하는데, 그렇지는 않습니다. 그냥 버전 번호를 다르게 가는 것일뿐. MariaDB…

대용량 검색 처리를 위한 inverted index (역색인) 설명

HYEONG HWAN, MUN/ 1월 11, 2016/ 미분류/ 0 comments

나름 쉽게 설명한다고 적었는데, 비전공자에게는 어려울 수도 있다. – 빅데이터 먼저 “빅데이터“란 무엇일까? http://en.wikipedia.org/wiki/Big_data 위키피디아에서는 “매우 양이 많고 복잡해서 기존에 사용하던 분석방식으로는 처리하기 힘든 데이터들(Data-Set)” 이라고 정의되어 있다. 과거에 비해서 인터넷이 비약적인 성장을 하였고, 언제 어디서나 인터넷에 접속할 수 있는 “유비쿼터스”의 시대 도래로 인해 우리는 항상 인터넷에 연결되어 있다.그러다 보면 많은 종류, 많은 수의 document 를 생성하게 된다.“빅 데이터”(=BIG DATA)(=HIGH VOLUME DATA) 라고 함은 보통 million(백만) document 이상의 data-set을 말하는데 이런 환경에서 사람들은 useful 한 information 을 찾으려고 한다. (중요한 단어는 영어로 쓰겠다.) 따라서 데이터 덩어리(Data-Set)에서 유용한 정보(Useful-Information)을 채굴하는(찾아내는,mining) 것이 중요한 영역이 되었고, 이것에 대해 주로 연구하는 “데이터마이닝(Data Mining)” 분야가 발전하게 되었다. 사용자들은 백만개가 넘게 쌓여진 document 에서 자신에게 필요한 document를 찾고자 한다. 예를들어 100만개의 글(documents)이 있는 게시판에서 User가  “Buying a Home” 이라고…

Ubuntu 16.04 LTS 웹서버 세팅방법 (Nginx + PHP7-FPM + MariaDB)

HYEONG HWAN, MUN/ 11월 28, 2015/ 미분류/ 67 comments

Last updated : 2016-08-08 [주의] 기존의 Ubuntu 14.04 세팅방법 글은 : https://blog.lael.be/post/4886 로 이전되었습니다. 글 비밀번호는 ubuntu 입니다. [주의] 이 글은 Ubuntu 16.04 LTS 에 맞추어 작성되었습니다. – English version is also available. [Bing Translator] * Nginx 가 아닌 Apache 로 PHP 웹서버를 구축하시려면 https://blog.lael.be/post/73 글로 이동하세요. (쉽고 편함) * Ubuntu 에서 JSP 웹서버 세팅을 원하시면 https://blog.lael.be/post/858 글로 이동하세요. * Ubuntu 에서 PHP와 JSP를 동시 구동하고 싶으시면 https://blog.lael.be/post/1023 글로 이동하세요. * Ubuntu 가상서버호스팅을 찾는 중이라면 https://blog.lael.be/post/44 글로 이동하세요. Nginx 공식사이트는 http://nginx.org/ 이다. 엔진엑스 라고 부른다. Igor Sysoev (이고르 시소에브) 라는 러시아 개발자가 개발했으며, 이 소프트웨어의 주요 개발 목표는 “동시접속 처리에 특화된 웹서버 프로그램” 이다.   – Nginx 가 Apache 보다 동시접속 처리에 좋은 이유 Nginx 는 Apache 에서 널리 사용되는 기능만 구현하였다. 즉 기능이 많지 않다. 동작이 단순하다. Nginx 자체는 별로 많은…

Laravel 이해 시작단계. Static 호출로 객체 사용하기.

HYEONG HWAN, MUN/ 11월 17, 2015/ 미분류/ 2 comments

Laravel(라라벨) 이라는 프레임웍을 뜯어보고 있다. 대세 트랜드 코드를 보면 “이런 것도 되는구나” 라는 것을 느낀다.   프로그래밍 언어에 따라서 규칙이 약간씩 다른데, 불변의 진리라고 알고 있었던 것들이 바뀌는 것을 보면 혼란이 일어나곤 하더라. PHP의 경우 선언 안한 메소드를 호출할 수 있고 (정적호출, 객체호출 등의 분기도 가능하다), 선언되지 않은 프로퍼티(속성값)에 값을 할당할 수 있는 등 신기한 것들이 되더라. 나중에 다룰 것인데 먼저 이론을 보고 싶은 사람은 PHP Magic Method 를 살펴보아라. (http://php.net/manual/en/language.oop5.magic.php)   Laravel 의 주요 사용 방법인 Facade(파사드)에 대해 이해하려면 몇가지를 알아야 한다. 먼저 Facade 의 의미를 알아보도록 하자. 길고 장황하고 정확한 설명이 있겠지만 내가 의역하고 요약해서 Facade 를 설명하자면 static 함수 호출을 객체의 클래스(=서비스 라고 부르더라)와 연결시켜 주는 것 이다.       아무튼 Facade 이해의 첫번째 단계인 “static 호출로…