프로그래밍 93

[JS] 구글 맵을 이용하여, 주소를 Geolocation(위도, 경도)로 바꾸기

구글 맵을 이용하여, 주소를 Geolocation(위도, 경도)로 바꾸기 웹 개발을 하다보면, 지도에 위치를 찍어야할 때가 있다. 그런데 이 주소라는게 사람마다 쓰는 방식이 제각각이다. 예를 들어 서울특별시가 표준이지만 서울시로 쓴다던지, 어떤 사람들은 아예 상세 주소를 쓰지않는 경우가 있다. 이런 문제를 한방에 해결해주는게 Geolocation인데, 사실 문제는 주소를 어떻게 Geolocation으로 바꾸는지 사실 그것도 문 제다. 그리고 주소를 바꾸는 과정에서 가장 유사한 위치 정보를 autocomplete (자동완성)해주는 기능도 있으면 더 좋지 않을까? 이런 문제를 해결하는데 구글 맵이 최고다. 구글 맵에서는 다양한 기능을 제공하는데 그중 위치(Place) 라이브러리를 이용하면, 손쉽게 해결할 수..

[서버] 우분투 아파치 가상호스트 및 프록시 설정

프록시를 모른다면? [웹 서버] Proxy 서버와 Forward, Reverse 프록시 오늘 드디어 인터넷이 연결되면서, 고정 아이피를 받았다. 그래서 근 2주간 끊겨있던 웹 서버와 기타 서버들을 가동했다. 물론 컴퓨터는 달랑 2대인데 돌려야할 웹 사이트는 여러개고 추가적으로 몇 도메인을 구매하여 계속해서 늘릴 예정이라서, 반드시 한 컴퓨터에 여러 웹사이트를 운영해야한다. 학부 과정일 때(물론 가르쳐준 사람이 없지만..), 80번 포트 == 웹 서버 포트라고 생각해서 항상 1대에 1 사이트만 운영될 수 있는줄 알았다. 물론 깨달은지는 좀 꽤 지났지만, 추가적으로 사용하기 위해 "별도의 노력"이 필요한 상황이 그닥 달갑지 않아서 1 컴퓨터 1 서버를 고수했다. 아무튼 각설하고, 한 컴퓨터에서 여러 서버를 ..

[윈도우즈] 최신 윈도우즈 10, Windows Defender 끄기 (레드스톤3)

최근 윈도우즈 10이 레드스톤 3버전으로 업데이트되면서, 윈도우즈 내장 백신인 Windows defender 설정 창 UI가 달라졌다. 처음에 어떻게 해야지 실시간 보호를 끄는지 정말 맨땅에 헤딩을 20분정도하고, 다른 사람들도 어려울것 같아서 포스팅을 별도로 한다. 1. 우선 우측 하단에 Windows Defender의 설정을 켜자. 2. 다음으로 Windows Defender 보안 센터 창에서 좌측 하단의 톱니바퀴를 클릭하자 3. 그 다음 중앙부에 있는 "바이러스 및 위협 방지 설정"을 클릭하자. 4. 그러면 바이러스 및 위협 방지 설정 탭이 열리고, 실시간 보호 설정 버튼이 나타난다. 여기서 실시간 보호를 "끔"으로 설정해주면 된다. 5. 정상적으로 보호가 꺼졌다면, "실시간 보호가 꺼져 있어 디바..

[리눅스] C9.io Remote SSH authorized_keys 설정

까먹지 말자 Ubuntu를 설치하고, 가장 기본적으로 설치하는 openssh-server 이후, config 파일을 설정해야하는데, 지금까지 대충하다가 그냥 기록해두고 써먹으려고한다. 대부분의 default 세팅이 그러하듯, 거의 수정할 것이 없다. sudo apt-get update sudo apt-get install openssh-server --yes sudo apt-get install vim --yes sudo vim /etc/ssh/sshd_config 이후 sshd_config에서 설정해야 할 것은 RSAAuthoentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthenticati..

[리눅스] 다중 NIC에서 다중 Network 라우팅 문제 해결하기

다중 NIC(=네트워크 인터페이스 카드, 랜카드, RJ45...)에서 다중 Network를 사용할때 문제가 발생한다. 엄청 당연하게 랜카드가 여러개면, 해당 랜카드로 들어온 데이터를 당연히 그쪽으로 다시 보내는줄 알았지만, 그렇지 않단다. 대부분의 운영체제에서는 별도의 설정이 없으면, default gateway로 응답을 보낸다. 지금 내가 운영중인 서버 컴퓨터에는 NIC가 4개있고, 그중에서 1개는 공인 IP(고정), 나머지 1개는 내부망 라우터에서 제공하는 동적 IP를 적용했다. 근데 조금 특이한 환경이다. 우선 다른말로 하면, 내부망 IP Netmask가 2개이다. 192.168.0.X과 192.168.1.X처럼 [ 공인 동적 IP Router 1 Router2 Server #1 공인 고정 IP ]..

[SSL] 아파치에 Let's encrypt 인증서 설치 및 certbot을 이용한 자동 갱신

굉장히 멀고 먼 이야기 같았던 SSL을 설치하는게 정말 쉬워졌다. Let's Encrypt에서 제공되는 인증서를 certbot을 이용하면, 몇번 정보 입력으로 설정이 된다. 세상 참 좋아졌다. 우분투 LTS 16.04와 아파치를 이용한 경우로, 그 외의 경우에는 홈페이지에 들어가면 상세히 나와있으니, 쓸데없이 검색하지 말자. 사실 무료 SSL이라고, 성능이 떨어지는 것은 아니다. 단순히 돈 내고 가입하는 SSL의 경우에는 보험금과 같은 역할이 크고, 더욱이 보험금을 받기도 힘들다는 루머가 있다. 따라서 필요에 따라서는 구매하는 것도 좋은 방법이다. 우선 Certbot을 설치하자. 아래의 명령어들을 실행하자sudo apt-get update sudo apt-get install software-proper..

[리눅스] 우분투에서 Postgresql 9.5 저장 위치 변경하기

DB 서버에 RAID로 구성한 디스크를 준비하였으니, 이제는 데이터 베이스를 RAID 디스크에 옮겨서 보관해야한다. OS 가 깨질 수도 있으니.. 항상 데이터 영역과 OS 영역은 구분하자. 데이터를 저장할 디스크의 마운트 위치가 /db라고하자. [1] 기존 디비 저장 위치 확인 sudo -u postgres psql SHOW data_directory; 먼저 sudo 명령으로 postgres 사용자를 실행한다. 이후 SHOW data_directory;를 입력하여 현재 위치를 확인한다. 아마도 아래처럼 나올 것이다. data_directory ------------------------------ /var/lib/postgresql/9.5/main (1 row) [2] postgresql 멈추기 이제 시..

[서버] Node.js Redis Only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context 오류 해결

Socket.io를 이용하여 데이터 크롤링 결과를 실시간으로 뿌려주는 기능을 구현하였다. 물론 Node.js를 두개로 나누어 웹 서비스용과 데이터 크롤링 및 전송용으로 나눠서 사용했지만, Node.js http request 모듈이 특정 사이트에 가면 timeout이 생기는 문제가 발생했다.(Node.js가 Non-blocking이 아니었나..) 그래서 서버를 웹 서비스 / 데이터 크롤링 / 데이터 전송 세가지로 나누고, 데이터 크롤링 서버가 데이터를 redis 상에 업데이트 하면 이 정보를 데이터 전송 서버에 전달하도록 구현하는데 redis publish, subscribe를 사용했다. 우선 데이터 크롤링에서 얻은 데이터는 실시간 데이터기 때문에 소실되어도 문제가 크게 없어서, redis pub/sub..

[자바스크립트] Associative array 정렬하기

Javascript에서 Associative array는 C++의 map이나 Python의 dictionary와 같은 데이터 타입이다. Javascript의 Array의 경우 손쉽게 prototype에 정의된 sort를 사용할 수 있으나, Associative array의 경우 사용자 정의 데이터 타입에 가깝기 때문에 Compare 함수를 만들어 줘야한다. Associative array가 key : value 타입으로 정의되어 있다면, 아래와 같이 만들면 된다. function aasort(arr){ var tuples = []; for (var key in arr) tuples.push([key, arr[key]]); tuples.sort(function(a, b) { a = a[1]; b = b[1..

[티스토리] 티스토리 OPEN API 이용하여, Access token 발급받기 (2020.12.10 업데이트)

티스토리 OPEN API를 이용하면, 사용자가 직접 로그인하지 않아도 글을 쓰거나, 수정, 삭제, 조회할 수 있습니다. 이런 CRUD 작업을 REST API를 바탕으로 수행하기 위해서는, 작업을 수행하는 자가 본인임을 인증해야 합니다. 이러한 인증을 Authentication이라고하며, 그중 티스토리는 OAuth2.0을 지원합니다. OAuth 2.0 인증 절차의 끝은 Access token을 발급받는 과정이고, 이 Access token을 이용하여 현재 Rest API를 사용하는 자가 본인임을 증명하는 것입니다. 우선 Tistory의 Access token을 발급 받는 방법은 두가지로 나뉩니다. 자신이 직접 웹 서버나, 응용 프로그램을 만들고 이를 지원하거나 누군가 만들어 놓은 서버를 이용하여 사용하거나..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사