2013년 10월 27일 일요일

CentOS svn apache 연동

설치해야할 패키지
# yum install subversion mod_dav_svn

svn 경로 설정
# mkdir /var/www/svn

svn 계정 생성
# svnadmin create /var/www/svn/project1

계정 비밀번호 설정
# vi /var/www/svn/project1/conf/passwd
[users]
project1 = password

권한설정
# vi /var/www/svn/project1/conf/authz
[repo:/project1]
project1 = rw

아파치 계정 설정
# htpasswd -c /etc/httpd/conf/.htpasswd project1

디렉토리 권한 설정
# chown -R apache:apache /var/www/svn/project1


아파치 연동
# vi /etc/httpd/conf.d/subversion.conf
<Location /svn>
   DAV svn
   SVNParentPath /var/www/svn

   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL

      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /etc/httpd/conf/.htpasswd
      SVNPathAuthz on
      AuthzSVNAccessFile "/var/www/svn/project1/conf/authz"
      Require valid-user
   </LimitExcept>
</Location>

아파치 재시작
# service httpd restart


접속경로  http://ipaddr/svn/project1

2013년 9월 2일 월요일

크롬 브라우저 HTTP Debugger Plugin - POSTMAN

HTTP 디버깅툴
Fiddler 대용으로 쓸만한 툴

[링크]
https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm


python json dict 변경시 에러 발생

python에서 json string을 dict로 변경하려는데 아래와 같은 에러가 발생했다.

ValueError: Extra data: line 1 column 316 - line 1 column 320 (char 316 - 320)

원인은 json string 의 마지막에 \0x00 이란 문자열이 뒤에 붙어 있어서 였다.


<example>

#!/usr/bin/python
# -*- coding:utf-8 -*-

import json, simplejson

# 문자열에 \x00이 있다고 가정
str = '{"json_key":"json_value"}\x00'

# \x00 으로 에러가 발생할 것이다.
print json.loads(str)

>>>>
Traceback (most recent call last):
  File "a.py", line 10, in <module>
    print json.loads(str)
  File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.6/json/decoder.py", line 322, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 25 - line 1 column 26 (char 25 - 26)





#!/usr/bin/python
# -*- coding:utf-8 -*-

import json, simplejson

# print 로 확인하면 보이지 않아 repr로 확인해 보면\x00 이 보일 것이다.
str = '{"json_key":"json_value"}\x00'
print repr(str)

>>>
'{"json_key":"json_value"}\x00'





#!/usr/bin/python
# -*- coding:utf-8 -*-

import json, simplejson

# 0x00이 들어간 것을 치환하여 dict로 변환하자
str = '{"json_key":"json_value"}\x00'
str = str.replace('\x00', '')

# 0x00을 빈문자로 치환하여 변환하면 정상적으로 변환이 될 것이다.
print json.loads(str)
>>>
{u'json_key': u'json_value'}


2013년 8월 17일 토요일

jquery tablesorter module

github url : https://github.com/Mottie/tablesorter

사용방법

[html]
<script type="text/javascript" src="jquery.tablesorter.min.js"></script>
<link rel="stylesheet" href="theme.blue.css" />

<table id="myTable> <tr> <th>No</th> <th>Grade</th> <th>Price</th> </tr> <tr> <td>1</td> <td>C</td> <td>$0.50</td> </tr> <tr> <td>2</td> <td>B</td> <td>$3.75</td> </tr> <tr> <td>3</td> <td>G</td> <td>$1.5</td> </tr> <tr> <td>4</td> <td>F</td> <td>$12.0</td> </tr> <tr> <td>5</td> <td>A</td> <td>$10.5</td> </tr> </table>



<script>

$(function(){ $("#myTable").tablesorter({ theme : 'blue', widgets : ['zebra', 'columns'], usNumberFormat : false, sortReset : true, sortRestart : true, headers: { 0: { sorter : false } } }); });
</script>

커피 브로잉가이드 - 핸드드립

커피 브로잉가이드 - 프렌치프레스

커피 브로잉가이드 - 모카포트

커피 브로잉가이드 - 사이폰

커피 브로잉가이드 - 더치

커피 브로잉가이드 - 커핑 cupping

2013년 8월 8일 목요일

mysql db schema dump php script

<?php
// Delete the tables if they exists?
$drop = true;
$dumpdata = false;

$user = 'user';
$passwd = 'password';
$host = '127.0.0.1';
$port = 3306;
$db = 'dbname';
db($host, $user, $passwd, $db, $port, $drop, $dumpdata);

function db($host, $user, $passwd, $db, $port, $drop, $dumpdata) {
    // DB Connection
    $mysqli = new Mysqli($host, $user, $passwd, $db, $port);
    if($mysqli->connect_error) die("Can't connect to MySql server: " . $mysqli->connect_errno .' => '. $mysqli->connect_error);
    $mysqli->set_charset('utf8');
    // Search the table in the database
    $tables = array();
    $query = "SHOW TABLES FROM $db;";
    $rs = $mysqli->query($query, MYSQLI_STORE_RESULT) or die("Can't execute the query: ".$mysqli->error);
    while ($row = $rs->fetch_array(MYSQLI_NUM)){
            $tables[] = $row[0];
    }
    // Create the header archive
    $info['date'] = date("d-m-Y");
    $info['time'] = date("h:m:s A");
    $info['mysqlver'] = $mysqli->server_info;
    $info['phpver'] = phpversion();
    print_r($info);
    // Dump variable
    $dump= "";
    foreach ($tables as $table){
        $drop_table_query = "";
        $create_table_query = "";
        $insert_into_query = "";
        // Start the query that create the db.
        if ($drop){
                $drop_table_query .= "DROP TABLE IF EXISTS `$table`;" . PHP_EOL;
        } else {
                $drop_table_query .= "# No specified." . PHP_EOL;
        }
        $query = "SHOW CREATE TABLE $table;";
        $rs = $mysqli->query($query, MYSQLI_STORE_RESULT) or die("Can't execute the query: ".$mysqli->error);
        while ($row = $rs->fetch_array(MYSQLI_NUM)){
                $create_table_query .= $row[1].";";
        }
        // This query insert the datas.
        $query = "SELECT * FROM $table;";
        $rs = $mysqli->query($query, MYSQLI_STORE_RESULT) or die("Can't execute the query: ".$mysqli->error);
        while ($row = $rs->fetch_array(MYSQLI_NUM)){
                $columns = array_keys($row);
                foreach ($columns as $column){
                        if ( gettype($row[$column]) == "NULL" ){
                                $values[] = "NULL";
                        } else {
                                $values[] = "'".$mysqli->real_escape_string($row[$column])."'";
                        }
                }
                $insert_into_query .= "INSERT INTO `$table` VALUES (".implode(", ", $values).");" . PHP_EOL;
                unset($values);
        }
    $dump .= "# | Empty Table '$table'" . PHP_EOL;
    $dump .= "# +------------------------------------->" . PHP_EOL;
    $dump .= $drop_table_query . PHP_EOL;
    $dump .= PHP_EOL;
    $dump .= "# | Structure of table '$table'" . PHP_EOL;
    $dump .= "# +------------------------------------->" . PHP_EOL;
    $dump .= $create_table_query . PHP_EOL;
    $dump .= PHP_EOL;
    if($dumpdata) {
        $dump .= "# | Data loading of table '$table'" . PHP_EOL;
        $dump .= "# +------------------------------------->" . PHP_EOL;
        $dump .= $insert_into_query . PHP_EOL;
        $dump .= PHP_EOL;
    }
    }
    createdumpfile($dump, $db);
    $mysqli->close();
}
function createdumpfile($dump, $db) {
    $myFile = $db.'.sql';
    // if the backup exists we delete and rewrite it
    if (file_exists($myFile)){
    unlink($myFile);
    }
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $dump);
    fclose($fh);
}

2013년 2월 5일 화요일

Linux 프로세스별 메모리 사용량

메모리 사용률 ( Mbyte 단위 )
# free -m


             total       used       free     shared    buffers     cached
Mem:          3833       2885        947          0         49         59
-/+ buffers/cache:       2776       1056
Swap:         8499          0       8499



프로세스별 메모리 사용량
# ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss


USER       PID  PPID   RSS    SZ    VSZ %MEM %CPU     TIME CMD
mysql    12546 12037 88156 848516 885520  2.1 0.0 00:01:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/qsh-0097.cafe24.com.err --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
apache   17194  3235 30856  6720 312200  0.7  0.0 00:00:15 /usr/sbin/httpd
apache   19429  3235 30828  8592 314072  0.7  0.0 00:00:09 /usr/sbin/httpd
apache   24921  3235 30772  8528 314008  0.7  0.0 00:00:09 /usr/sbin/httpd
apache    6633  3235 30616  8576 314056  0.7  0.0 00:00:06 /usr/sbin/httpd
apache   19106  3235 30556  9112 314592  0.7  0.0 00:00:07 /usr/sbin/httpd
apache    8155  3235 30172  8552 314032  0.7  0.0 00:00:08 /usr/sbin/httpd
apache   26047  3235 29676  8332 313812  0.7  0.0 00:00:07 /usr/sbin/httpd
apache   24299  3235 29560  8308 313788  0.7  0.0 00:00:07 /usr/sbin/httpd


2013년 2월 1일 금요일

linux 네트워크 alias 장치명 보기

# ls /sys/class/net
eth1 lo

랜설정시 아래와 같은 메세지를 만난적이 있는데 eth1로 할당되어 있는데 eth0으로 설정을 해서 그런 것이었습니다.

device eth0 does not seem to be present delaying initialization