mongodb admin tools - Robomongo

2015. 1. 9. 18:50 from Dev/mongodb

새해를 맞아 새 프로젝트를 진행하고 있는데, 작년부터 고민고민하다 이번 프로젝트는 mongodb로 진행하기로 하였습니다. 따져보고 따져보다, 아무래도 아이템 진행이 되면서 기능 추가나 요구사항 변경 등이 계속 될 것 같아(agile development 라고 쓰고 hell 이라고 읽는..) 그동안 눈팅만 하던 mongodb를 실제로 이용해보고 있습니다.

실제 이용하고 해본지는 얼마 안되지만, 그동안 mongodb 경험으로 느낌을 써보자면.. query문 만드느라 고생합니다. 대충 맘대로 INSERT, SELECT 하고, 조금 복잡해지면 stored procedure 정도? 로 때우다가 query 조건 정의하고 조건들을 구조화하고 하다 보니 장난이 아니네요. 익숙해지면 좀 되려나..

개인적으로는 새로운 걸 공부할 때는 밤 새워 가면서 해도 재미있어하는 성격인지라, mongodb 공부는 재미 있습니다. 오랫만에 밤늦게까지 가지고 놀아보고 있네요. ㅋㅋ 비즈니스 로직은 python으로 짜고 있는데 python + mongodb 조합도 좋아보이네요.

이제 슬슬 본격적으로 코딩을 하기 전에, 오늘은 mongodb admin tool들을 몇 가지 둘러보았습니다. 여태까지는 크게 손대지 않아서 genghis로 때우고 있었는데 ( 사실 이름이 멋있어서. 징기스칸이 생각이 나서 냉큼 설치해 보았습니다 ), web based라 그런지 레코드가 슬슬 늘어나면서는 여는 게 점점 느려지더군요. 그리고 admin 기능은 좀 제한적이기도 하고.. 설치가 간편하기 때문에(따로 설치라고 할 것도 없지요) 써보았는데 조금 한계가 있어서 mongodb 홈페이지에서 툴들을 살펴보던 중에, Robomongo라는 app이 눈에 띄더군요.(http://robomongo.org/)


genghis 실행화면

< genghis 실행화면 - HTML5로 깔끔하게 내용만(!) 보여주고, 인터페이스도 단순한 맛이 있습니다 >


Robomongo는 실제로 management tool을 표방하고 있기 때문에 기능도 다양하고, mongo shell 기능도 바로바로 사용할 수 있습니다. 몇 시간 안써보았지만 오늘 이것저것 깔아본 툴 중에서는 가장 나은 것 같습니다.


< Robomongo - Mac용 실행화면입니다 >

windows용, mac용, linux용 모두 배포되고 있습니다. 조금 더 써보고 시간날 때 사용팁도 써보도록 하겠습니다.

Posted by banasun :

[python] 1시간 전 datetime 구하기

2015. 1. 7. 08:46 from Dev/python

지난번 포스팅에서 어제, 그저께 날짜를 datetime 포맷으로 구하여 보았습니다: (date format을 datetime format으로)

이번에는 짧게, 1시간 전은 어떻게 구할까요?



import datetime

now = datetime.datetime.now()
delta = datetime.timedelta(hours = 1)

print (now - delta)
Posted by banasun :

[ubuntu] 개인 디렉토리(public_html)에서 php 사용하도록 세팅하기

2015. 1. 4. 17:13 from Dev/Linux

지난번 포스팅에서는 개인 유저 디렉토리를 apache2에서 이용할 수 있도록 하는 방법을 정리하였습니다. 이제는 php도 이용가능하도록 세팅을 해야겠습니다. ubuntu에서는 기본적으로 개인 폴더에서 php를 이용할 수 없도록 되어 있습니다.

관련된 설정 모듈은 /etc/apache2/mods-available에서 찾아볼 수 있습니다. php5.conf 설정을 보시면, 다음과 같은 부분이 있습니다 :



# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from  to .) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

    
        php_admin_flag engine Off
    



이 부분을 주석처리(라인 앞에 # 삽입) 해주신 다음에 service apache2 restart 해주시면 개인 폴더에서도 php가 실행되는 것을 알 수 있습니다.

Posted by banasun :

[python] version별로 module import 하기.. (python2 VS python3)

2015. 1. 4. 02:21 from Dev/python

Python 2에서 Python 3으로 넘어가면서 이것저것 많이 바뀌고 해서 익숙하게 사용하던 것도 바꾸어 주어야 하는 경우가 생깁니다.

아직까지 호스팅 하는 서버들은 Python2.7 정도를 서비스 하는 곳이 많은데.. 사실 개발용 PC에는 Python3을 쓰게 되지요. 계속 2를 붙잡고 있을 수는 없는 노릇이라.. -0-

웬만하면 3에 맞추어서 코딩을 하면서 어쩔 수 없는 부분이 바로 module 부분입니다. 오늘은 간단하게 버전별로 모듈을 따로 써보겠습니다. 정확히 하면 하나로 import 했다가 에러나면 '에구구' 하고 다른 버전용을 import하는 꼼수지요.

Python 3에서는 urldecode를 하려면 urllib.parse.unquote을 써야 하고, Python 2에서는 urllib.unquote를 사용해야 합니다. 이럴 경우에 다음과 같이 정의해주면 됩니다 :



try:
    from urllib import unquote
except ImportError:
    from urllib.parse import unquote


물론 명시적으로 version을 불러서 하는 방법도 생각해볼 수는 있겠지만, 이렇게 하는게 더 적당하지 않을까.. 하는 생각입니다. ^^

'Dev > python' 카테고리의 다른 글

MySQL-python 설치하기 (Ubuntu)  (1) 2015.01.21
[python] 1시간 전 datetime 구하기  (0) 2015.01.07
[python] date format을 datetime format으로  (0) 2015.01.03
[python] MySQL 연결  (0) 2014.09.05
[Algorithmic Thinking] Project 1  (0) 2014.09.05
Posted by banasun :

[python] date format을 datetime format으로

2015. 1. 3. 03:21 from Dev/python

개인적으로 코딩을 할 때 제일 재미없는 부분이 날짜, 문자열, 포맷변환 등등입니다. 이거만 누가 다해준다면 정말 빨리 일 끝낼텐데.. ^^

python에서 date --> datetime으로 변환하는 꼼수를 소개해드립니다 :

datetime.datetime에는 combine이라는 메소드가 있습니다. date와 time을 인수로 받아서 이에 맞는 datetime를 반환해주지요. 이걸 활용하는 방법입니다. 예로 어제 날짜에서 하루 전(그저께)를 받아보겠습니다



from datetime import datetime
from datetime import date

yesterday = date.today() - datetime.timedelta(1)
datetime.combine(yesterday, datetime.min.time())
Posted by banasun :

[nginx] nginx windows version에서 php 세팅 - fastCGI 설정하기

2014. 12. 31. 10:07 from Dev/etc

오늘은 지난 포스팅(http://banasun.tistory.com/entry/ngix-%EC%84%A4%EC%B9%98Windows)에 이어서 php 설정을 해보도록 하겠습니다. 요새는 WAMP니, LAMP니 하는 패키지처럼, apache를 쓰면 당연히 MySQL, PHP가 따라오는 거로 생각하고 있었는데, nginx에서는 php를 이용하려면 다른 설정을 해주어야 합니다. 바로 FastCGI라는 부분이지요.

FastCGI는, 기존 CGI가 web server가 request가 들어오면 CGI process를 생성해서 이를 처리하고 하면 번거로우니, 차라리 Fast CGI server가 CGI process를 처리하고(process를 생성하고 없애고 하는게 아니라 persistent process가 있는 거지요) web server는 request를 Fast CGI server로 넘겨주기만 하면 된다는 개념입니다. 이렇게 함으로써 웹서버의 부담이 줄어들고 한번에 더 많은 request를 처리할 수 있게 된다는 거지요.

1. nginx 설치하기

linux 명령어 가운데 거의 안쓰는 명령어가 있는데, 바로 touch라는 명령어지요. 설치는 지난번 포스팅에서 'touch' 하였습니다. ㅋㅋ (이래 놓으면 touch가 뭐지? 하고 찾아보시는 분들 생길 것 같네요)

안 보신 분들은 http://banasun.tistory.com/entry/ngix-%EC%84%A4%EC%B9%98Windows 보시기 바랍니다.

2. php 설치하기

이것도 binary 다운받으시면 바로 설치가 됩니다. 다운로드는 여기서(http://windows.php.net/download/) 받으시고요.

3. 설정하기

일단 php에서 별도로 cgi 처리를 위해서는 php-cgi.exe라는 파일을 돌려주어야 합니다. 아래와 같이 batch file을 만들어 놓으시면 편하게 이용하실 수 있습니다.

저는 지난번에 wamp를 깔아보면서 같이 설치된 파일이 있어서 디렉토리를 저렇게 해놨는데, 디렉토리 설정은 알맞게 바꿔주세요. 그리고 FASTCGI용 포트는 9123으로 해놓았습니다 :

@ECHO OFF
ECHO Starting PHP FastCGI...
set PATH=C:\wamp\bin\php\php5.5.12;%PATH%
C:\wamp\bin\php\php5.5.12\php-cgi.exe -b 127.0.0.1:9123

이제 nginx의 해당 부분 설정을 바꾸어줍니다.

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9123;
            fastcgi_index  index.php;
	    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

이제 위에서 만든 batch 실행하신 다음에 nginx를 돌리면 됩니다. ^^

Posted by banasun :

nginx 설치(Windows)

2014. 12. 29. 17:04 from Dev/etc

세계에서 가장 많이 이용하는 웹서버는 무엇일까요? 그러면 어떤 웹서버를 이용하는게 좋을까요? (물론 이 두 질문이 같은 질문은 아닙니다)

이 질문에 대해서 예전에는 당연히 Apache라는 대답을 떠올렸지만 이제는 다소 고민을 하게 됩니다.

물론 아직까지 가장 많이 이용하는 웹서버는 Apache입니다. 하지만 몇 년 전까지 70%에 육박하던 점유율이 이제는 반토막이 되어서 M$ 서버와 비슷한 수준이 되어 버렸고, 대신에 nginx(이렇게 쓰고 '엔진X'라고 읽습니다)가 20% 가까이 올라오고 있습니다(IT World 기사, Choosing a Linux web server: Nginx vs. Apache).



오늘은 시간이 조금 남는 관계로, 윈도우즈로 돌아가는 PC에 한번 설치를 해보도록 하겠습니다.

먼저 다운로드입니다. nginx 사이트(http://nginx.org/en/download.html)에 가면 윈도우즈 버전을 다운받을 수 있습니다. 1.6.2가 최근 stable 버전입니다.

윈도우즈 버전은 설치하고 말고 할 것도 없네요. 압축 풀고 실행하면 바로 서비스가 실행되는군요. 블로그 쓸 내용이 없네요 ㅋㅋ 할 수 없습니다. 가지고 놀아보고 설정하는 방법 등은 다른 포스팅으로 넘겨야겠습니다.

하여튼 실행파일을 실행하고 브라우져에서 http://localhost로 접속해서 아래 화면이 나오면 돌아가고 있는 겁니다.


명령어는 -s 옵션으로 줍니다(signal). PATH 설정이 안되었다면, 해당 폴더로 가셔서 아래와 같이 command 창에서 해줄 수 있습니다 :



nginx -s quit
nginx -s reload


설정은 설치 폴더의 conf 안에 있습니다. nginx.conf가 주요 설정들인데.. apache를 사용해보았다면 그냥 알 수 있도록 직관적으로 되어 있네요.

원래 설치한 목적은 역시 요새 유행하는 framework인 Laravel을 설치해서 테스트해보려는 것이었는데 언제나 일을 시작하다 보면 곁가지로 새버리는 것 같습니다. 어렸을 때 시험치기 전에 책상 정리하던 기억이 나는 이유는 무엇일까요.

Laravel 역시 다음 포스팅으로 넘기고 오늘은 이만 또 일로 복귀해야겠습니다.

Posted by banasun :

[Ubuntu] user 디렉토리의 public_html 연결하기

2014. 12. 27. 00:52 from Dev/etc

오늘은 UBUNTU에서 개인 유저의 home에 있는 public_html 폴더를 apache에서 접근할 수 있도록 (http://www.sample.com/~foo 이런 형식으로) 세팅하는 방법입니다.


사실 오랜 옛날 사업한다고 그 비싼 서버(HP였나.. 이젠 기억도 가물가물..)를 돈 주고 사서 애지중지 세팅하고 개발하고 했던 이후로는 서버 관리를 할 일이 없었지요. 분업화가 되어서 서버관리, DBA, 개발이 다 전문성을 띄고 분화가 되니 한두명이 모여서 하는 회사가 아니면 웹 쪽 개발을 한다고 해서 서버 세팅까지 다 알기는 힘들지요. 하물며 저처럼 프로그래밍쪽을 해도 주로 알고리즘이나 내부 로직 쪽만 몇 년 동안 하다가 다시 손수(!) 해야 하는 상황이면 어쩔 수 없이 구글링에 의존할 수밖에 없습니다.


이런.. 이 부분도 역시 겁나(?) 많이 바뀌었군요. 옛날에는 유저 홈의 public_html은 기본적으로 보여주었던 것 같은데..


각설하고, 일단 public_html 이라는 디렉토리를 만들어줍니다.


mkdir public_html

apache2의 설정이 있는 /etc/apache2 디렉토리를 보면 mods-enabled가 있고, mods-available이 있습니다. 눈치를 보아하니 mods-available에 있는 애들 중에 이용할 mods를 mods-enabled에다 sybolic link로 걸어주는 거네요.


cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/userdir.conf userdir.conf
sudo ln -s ../mods-available/userdir.load userdir.load
sudo service apache2 restart 

이렇게 해주면 그림처럼 경고(!)가 나옵니다(전 root로 들어가서 sudo를 쓰지 않았습니다). 보아하니 도메인 네임이 안정해져있어서 나오는 거라 가볍게 무시해줍니다.



이제 public_html 디렉토리에 index.html을 만들고 웹브라우져에서 http://localhost/~USER_NAME 이렇게 해주시면 접속이 가능합니다.

Posted by banasun :

[javascript/tip] a tag에 onclick event 설정해서 이동 전에 이용자 확인 받는 방법

2014. 11. 27. 02:42 from Dev/javascript

알고 보면 간단한 팁이지만, 원스텝으로 이용자 확인 받고 다른 링크로 넘어가는 과정을 보여드리겠습니다.

당연히 다른 페이지로 넘어가는 데에는 a tag을 이용합니다.

여기에 onclick event를 설정해서 이용자 input을 받는 거지요.

예를 들어, delete.php로 이동하기 전에 삭제 확인을 받으려면 다음과 같이 합니다.

삭제
Posted by banasun :

[wamp server] 윈도우즈 환경에서 apache, mysql, php 개발환경 한번에 셋업해주는 wamp server

2014. 11. 24. 15:56 from Dev/etc


오늘은 wamp 서버 설치를 해보도록 하겠습니다.

wamp는 윈도우즈 환경에서 Apache + mysql + php를 셋으로 구성해서 간단하게 개발환경을 구축해주고, 서비스 할 수 있도록 도와주는 kit입니다. 물론 이 세 가지는 설치도 그다지 어렵지 않아서 따로따로 설치해도 잘되지만, 저처럼 윈도우즈 별로 안좋아하는 사람도 쉽게 설치 및 관리를 할 수 있도록 해줍니다.

1. 설치파일 다운받기

먼저 wamp server 페이지(http://www.wampserver.com/en/)로 가서 설치파일을 다운받습니다.


OS가 32비트인지 64비트인지 확인해서 받으셔야 됩니다. 클릭하면 sourceforge에서 설치파일을 다운로드 받습니다.


2. setup 파일 실행

셋업과정은 단순합니다. 설치 경로와 기본 브라우져, 그리고 SMTP에 이용할 메일 주소만 확인해주면 알아서 잘 설치가 되는군요.




3. 설치 완료

어떻게 생각해보면 허무하게 세팅이 끝나버렸습니다. ㅋㅋ

브라우져에서 http://localhost 해서 아래 화면이 나오면 정상적으로 설치가 완료된 것입니다. 제 컴에서는 트레이에 아이콘은 server offline으로 표시되어서 문제가 있나 했는데, php나 mysql 모두 정상적으로 잘 작동을 하는 걸 보면 제 컴의 문제이거나 트레이의 정보와는 상관이 없거나 한 것 같습니다.


4. 설정하기

아파치 설정은 bin/apache 밑의 conf 디렉토리에 있습니다. 입맛대로 설정하시면 되고요..



mysql은 그래도 root 패스워드 설정은 해놔야 쓰겠지요? 위 3의 화면에서 phpmyadmin으로 가서 사용해도 되겠지만, console에서 이용하려면 PATH에 다음을 추가합니다 :

C:\wamp\bin\mysql\mysql5.6.17\bin

그 다음에는 root 패스워드 설정을 해줍니다.


자.. 이제 끝났습니다. 사실 워드프레스 한번도 안써보았는데 아는 분이 부탁을 하셔서 한번 깔아보고 하느라 익숙하지 않은 윈도우즈에 설치를 해 보았네요. 가능하면 다음에는 wordpress 설치를 주제로 다시 포스팅 해보도록 하겠습니다.

혹시 wamp 설치하면서 안되거나, 궁금하신 점이 있으시면 답글 달아주세요.


Update (11/26/2014)

저는 mysql을 console에서 많이 이용하는 것도 있고 해서 위와 같이 root 패스워드 설정하고 이것저것 하는데.. 이렇게 하면 phpmyadmin 접속이 안됩니다.

확인해보니 wamp server와 같이 배포되는 phpmyadmin은 local 설정이 되어 있어서 local에서만 접속이 됩니다. phpmyadmin 이용이 더 익숙하신 분은 (어차피 wamp 자체가 서비스용이라기 보다는 간단하게 개발환경을 만들어 주는 용도이니) 굳이 설정 변경을 안하고 그냥 이용하시는게 더 낫지 않을까 싶네요. ^^

Posted by banasun :