Browse Source

new posts from wiki

master
sipp11 10 years ago
parent
commit
74c73fcee2
  1. 7
      _layouts/refresh.html
  2. 71
      _posts/2013-10-26-postgres-101.md
  3. 25
      _posts/2013-11-20-python-benchmark.md
  4. 120
      _posts/2014-10-27-django-101.md
  5. 4
      w/Main_Page/index.md

7
_layouts/refresh.html

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url={{ page.refresh_to_post_id }}.html" />
</head>
</html>

71
_posts/2013-10-26-postgres-101.md

@ -0,0 +1,71 @@
---
layout: post
status: publish
published: true
title: 'PostgreSQL 101'
author:
display_name: 'sipp11'
date: '2013-10-26'
categories:
- database
tags: postgresql 101
---
I found that PostgreSQL works differently to MySQL. PostgreSQL will accept command from both command shell ($) and PostgreSQL shell (postgres=#). When you create database, drop database, you can do from command shell:
$ createdb <database-name> -E UTF8
$ dropdb <database-name>
while [charset support listed here](http://www.postgresql.org/docs/8.4/static/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED). or you can create database inside postgres shell.
$ psql
postgres=# create database <database-name>
postgres=# drop database <database-name>
To do some basic query, it's pretty like MySQL. However, it's vastly different when it comes to list/describe
postgres=# \l # show databases
postgres=# \connect <database-name> # use database
<database-name>=# \d # show tables
<database-name>=# \d <table-name> # show columns
<database-name>=# \d+ <table-name> # describe table
Configure for remote connection
### Server side
Edit `/etc/postgres/x.x/main/postgresql.conf`
listen_addresses = '*'
Add line to `/etc/postgres/x.x/main/pg_hba.conf`
host all all 0.0.0.0/0 md5
or you could do things like `192.168.1.1/24` if you want to limit to your subnet.
Creating remote user isn't anything different from what local user is:
$ psql template1
template1=# create user <user-name> with password '<your-password>';
template1=# \connect <database-name>;
<database-name>=> GRANT USAGE ON SCHEMA public to <user-name>;
<database-name>=> GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user-name>;
<database-name>=> GRANT UPDATE ON ALL TABLES IN SCHEMA public TO <user-name>;
<database-name>=> GRANT ALL ON ALL TABLES IN SCHEMA public TO <user-name>;
<database-name>=> ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO <user-name>;
<database-name>=> GRANT USAGE, SELECT ON SEQUENCE <table_name>_id_seq TO <user-name>;
<database-name>=> GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA <schema_name> TO <user-name>;
<database-name>=> \q
### Client side
Pretty much like MySQL
$ psql -h <postgres-server> -d <database-name> -U <user-name>
If you don't have postgresql client yet
# apt-get install postgresql-client-x.x
while x.x means version, e.g. `postgresql-client-9.1`

25
_posts/2013-11-20-python-benchmark.md

@ -0,0 +1,25 @@
---
layout: post
status: publish
published: true
title: 'Python: Performance Benchmark'
author:
display_name: 'sipp11'
date: '2013-11-20'
categories:
- coding
tags: python benchmark
---
`[item for sublist in l for item in sublist] is faster than the shortcuts posted so far.
For evidence, as always, you can use the timeit module in the standard library:
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' '[item for sublist in l for item in sublist]'
10000 loops, best of 3: 143 usec per loop
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'sum(l, [])'
1000 loops, best of 3: 969 usec per loop
$ python -mtimeit -s'l=[[1,2,3],[4,5,6], [7], [8,9]]*99' 'reduce(lambda x, y: x+y,l)'
1000 loops, best of 3: 1.1 msec per loop

120
_posts/2014-10-27-django-101.md

@ -0,0 +1,120 @@
---
layout: post
status: publish
published: true
title: 'การตดตง Django: 101'
author:
display_name: 'sipp11'
date: '2013-10-26'
categories:
- coding
tags: django 101 thai python
---
จรงๆแลวการตดตงกไมไดเดยวครบ แตการตดตงขางลางนจะเปนการตดตงโดยใช `virtualenv`วยซงจะทำให package แยกกนโดยอสระในแตละ project ทเราทำงานครบ เวลาลบกลบงาย เพราะไมเกยวกบระบบเลย จะเปนการตดตงสำหรบแควเราเทาน
* [การตดตง Django สำหรบ OSX](#django-for-osx)
* [การตดตง Django สำหรบ Linux (Debian-based)](#django-for-debian)
### Django for OSX
งทจำเปนตองมอ HomeBrew ถายงไมสามารถตดตงผาน Terminal โดยพมคำสงตามน
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
หลงจากตดตง brew แลว เรากมาเรมลงสงทจำเปนในชตกนคร
$ brew install git mercurial
หลงจากนนกดตง database ตามชอบใจ
าใช MySQL
$ brew install mysql
าใช PostgreSQL
$ brew install postgresql
อมากลงเรองของ python กนตอครบ สงทจำเปนในชตของ python กอตวหาและลง library ทอยเยอะแยะมากมาย
$ sudo easy_install pip
`easy_install` เปน package manager ตวนงของ python ทเดยวกไมอยจะใชนแลวเพราะ `pip` ทำไดกวามากๆ ทเราตองใช `easy_install`นเพราะเราไม package manager อนท `pip`นเลยทเดยวใน OSX กเลยตองใชนลง `pip`อน สวนการใช sudo ผมคดวานาจะเหมาะสมแลวเพราะ `pip`เปน package manager ตวนงไมาทจะตองทำใหแบงตาม user และสงทเราตองทำตอไปคอ เราตองทำตอไปคอ ลง `virtualenv`
$ sudo pip install virtualenv virtualenvwrapper
วนนงลงในระบบกนตอไป เพราะประเดนเราคอแยก แตละ `virtualenv` ตามแตละ project เราจะตองทำให command shell เราร`virtualenv`วยการใสใน `~/.bash_profile`
# python virtualwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
แลวก
$ source ~/.bash_profile
เพอให command shell เรารบสงทเราใสไปครบ เทานเครองของเรากพรอมทจะใชงาน django กนแลว หลงจากนเรากทำการสราง `virtualenv`นคร
$ mkvirtualenv django # จรงๆ จะเปนชออะไรกไดนะครบ ตามใจตรงน
เทานเรากแทบจะเรยกวา เครองเราพรอมกบการใช django แลวครบ ถงเวลาเรมจรงๆแล
$ workon django
(django)$ pip install django
(django)$ mkdir -p project
(django)$ cd project
(django) project$ ./manage.py runserver
เปนอนเสรจสมบรณ
### Django for Debian
จะเปนแคสำหรบ distro ทเปน debian นะครบ เพราะปกตผมกใช debian เปนหลกครบ เชน Debian, Ubuntu, Mint, ... ถาเปน Arch หรอ Fedora หรออยางอนกจะมคำสงตางกนออกไปเลกนอยนะครบ กอนอนกลงโปรแกรมทจำเปนตอช
$ sudo apt-get install build-essential git mercurial python-pip python-dev
นกแลวแตจะใช database อะไรนะคร
* `SQLite`ไมองทำอะไรเพมเต
* `MySQL`
$ sudo apt-get install mysql-server
$ sudo apt-get build-dep python-mysqldb
* `PostgreSQL`
$ sudo apt-get install postgresql
$ sudo apt-get build-dep python-psycopg2
ดตงกนตอ คราวนเป`virtualenv` คร
$ sudo pip install virtualenv virtualenvwrapper
หลงจากนนกองใส `virtualenv` path หนอย เพอใหเราใชงานมนงายๆ
$ vi ~/.bashrc
เพมบรรทดนานลาง
# python virtualwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
จากนนก reload ซกท
$ source ~/.bashrc
จรงๆแลว อาจจะใช `nano` แทน `vi`ไดครบ แตเชอเถอะครบ ถายงไมเคยใช `vi` ลองทนใชแลวจะไมอยากใชอยางอนอกเลย หลงจากนเรากทำการสราง `virtualenv`นคร
$ mkvirtualenv django # จรงๆ จะเปนชออะไรกไดนะครบ ตามใจตรงน
เทานเรากแทบจะเรยกวา เครองเราพรอมกบการใช django แลวครบ ถงเวลาเรมจรงๆแล
$ workon django
(django)$ pip install django
(django)$ mkdir -p project
(django)$ cd project
(django) project$ ./manage.py runserver
เปนอนเสรจสมบรณ

4
w/Main_Page/index.md

@ -0,0 +1,4 @@
---
layout: refresh
refresh_to_post_id: /index
---
Loading…
Cancel
Save