- ์ฅ๊ณ ํ ์คํธ ๋ฌธ์ ๋ง๋ค๊ธฐ
- ํ ์คํธ ์ฝ๋ ์์ฑํ๊ธฐ
- ์ฑ๊ตฌ ๊ฒ์ ๋๋น ์์ฑํ๊ธฐ
- ํ์ ์ํ ํฌ๋กค๋ฌ ์ฃผ์ ๋ฐ ์ ๋ฆฌํด์ ๋ณด๋ด์ฃผ๊ธฐ
- ๋ธ๋ก๊ทธ ํ๊ธฐ
- ์ฅ๊ณ ๋ฒ์ญ๋ฌธ์ ์ปค๋ฐํ๊ธฐ
- ์๊ฒฝ์ด ํ๋ก ํธ ๊ฐ์ ๋ฃ๊ธฐ
ํ์ด์ฌ์ ํจ์จ์ฑ์ ์ํด ๊ฐ๋จํ ๋ฌธ์์ด ๋๋ ์ซ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฅํด๋๋ค. ์ด๋ฅผ interning์ด๋ผ๊ณ ํ๋ค.
intern: ์ ์ ๋๋ ์ ์น์ ์ธ ์ด์ ๋ก, ๋ฒ์ฃ์ฌ์ค์ ์ฆ๋ช ์ด ์์์๋ ์ฌ๋์ ๊ฐ๋์ด ๋๋ค.interning์ ํ์ด์ฌ์ ๊ตญํ๋์ง ์๊ณ , ํ๋ ๊ฐ์ฒด ์งํฅ ์ธ์ด์์ ๋๋ฃจ ์ฌ์ฉ๋๋ ๋ฐฉ์์ด๋ค. ( Python, PHP(5.4์ด์), Lua, Ruby, Java etc.)
interning์ ํ์ธํ๊ธฐ ์ํด์ , ๋ณ์์ ์ฃผ์๊ฐ์ ํ์ธํด์ผ ํ๋ค. ์๋ก ๋ค๋ฅธ ๋ณ์๊ฐ ๊ฐ์ ๋ ๊ฐ์ ๊ฐ์ง๊ณ ์์ ๋, ๊ฐ ๋ณ์์ ์ฃผ์๊ฐ์ด ์ผ์นํ๋ ๊ฒ์ผ๋ก์จinterning์ ํ์ธํ ์ ์๋ค.- python ์์ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ํ์ธํ ์ ์๋ ํจ์๋
id()์ด๋ค. (์ด ํจ์๋ c ํ์ ์ ์ฃผ์, ๊ณง ์ง์ง ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐํํ๋ค.)- ๋ช ์์ ์ธ ์ฃผ์๊ฐ์ ํ์ธ ์์ด๋, ์ฐ์ฐ์
is๋ฅผ ํตํด ์ฃผ์๊ฐ์ ์ผ์น๋ฅผ ํ์ธํ ์ ์๋ค.
# ๊ฐ๋จํ ๋ฌธ์์ด์ ์ผ์น
a = 'asdf'
b = 'asdf'
hex(id(a))
>>> '0x10ecbb420'
hex(id(b))
>>> '0x10ecbb420'
a is b
>>> True
# ๊ฐ๋จํ ์ซ์์ ์ผ์น
a = 123
b = 123
hex(id(a))
>>> '0x10b6e14e0'
hex(id(b))
>>> '0x10b6e14e0'
a is b
>>> Truea = 'asdf!'
b = 'asdf!'
a is b
>>> False
a = 1.23
b = 1.23
a is b
>>> Falseimport sys
a = sys.intern('asdf!')
b = sys.intern('asdf!')
a is b
>>>True- ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
- ๋น๊ต ์ฐ์ฐ ํจ์จ์ฑ ์ฆ๊ฐ (
O(n)->O(1))
๋ฌธ์์ด์ ๋น๊ตํ ๋, ๋ฐ์ดํธ ๋จ์๋ก ๋น๊ตํ ํ์ ์์ด, ํฌ์ธํฐ๋ง ๋น๊ตํ๋ฉด ๋๋ค.
immutable value ์ฆ, ๋ถ๋ณ๊ฐ์ด์ด์ผ ํ๋ค.
: [-5, 256] ์ ์ ์
-
๊ธธ์ด๊ฐ
0๋๋1์ธ ๋ชจ๋ ๋ฌธ์์ด -
NAME_CHARS์ด์ธ์ ๋ฌธ์๋ฅผ ํฌํจํ ๊ฒฝ์ฐ ์ ์ธNAME_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz' 'foo' is 'foo' # True 'foo!' is 'foo!' # False
-
์ปดํ์ผ์ด ์๋ ์คํ์ ์ ์ธ๋๋ ๋ณ์ ์ ์ธ
'foo' is ''.join(['f', 'o', 'o']) # False 'a' * 20 is 'aaaaaaaaaaaaaaaaaaaa' # True # ์ฐ์ฐ ํ ๋ฌธ์์ด ๊ธธ์ด๊ฐ 20์ด ๋์ด๊ฐ๋ฉด ์ ์ธ๋๋ค. 'a' * 21 is 'aaaaaaaaaaaaaaaaaaaaa' # False # ๊ทธ๋ฅ ๋ฌธ์์ด ๊ธธ์ด๊ฐ 20์ด ๋๋ ๊ฒ์ ๊ด์ฐฎ๋ค. 'foooooooooooooooooooooooooooooo' is 'foooooooooooooooooooooooooooooo'
facebook django group ์ ์ง๋ฌธํ๋ ๋ด์ฉ
- google 'django difference between TestCase and TransactionTestCase'
- django doc - TransactionTestCase, django doc - TestCase
- django tutorial - Part5: testing
- facebook answer: google 'django initial data'
- providing initial data for models ์ providing initial data with migrations
- data migration
์ฒ์ migration ์๋ default ๊ฐ์ด ํ์๊ฐ ์๋ค. ๊ทธ ๋ค์ ๋ง์ด๊ทธ๋ ์ด์ ๋ถํฐ๋ ๊ธฐ๋ณธ๊ฐ์ด ํ์ํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฑ์ฌ๋ถ๋ ์ค์ํ์ง ์๋ค.
์ค๊ฐ์ ์ค๋ฅ๊ฐ ์๊ธฐ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ฐ๊ณ ๋ค์ ์์ฑํ๋ ์ผ์ด ๋น๋ฒํ๋ฐ, migrate ๋ฅผ ์์ผ๋ฉด ํ ์ด๋ธ์ด ์๋ค๋ ๋ง์ด ๋ฌ๋ค.
OperationalError: no such table: scripture_verse
OperationalError: no such column: scripture_verse.book_name๋ณ๊ฒฝ๋ ์ฌํญ์ด ์ ๋ง์ด๊ทธ๋ ์ด์
๋์๋์ง ํ์ธํ์. ๊ทธ๋ฆฌ๊ณ shell_plus๋ฅผ ๋ค์ ์คํํ๋ ๊ฒ๋ ์์ง ๋ง์. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ์๋ ๋ค์ ๋ง์ด๊ทธ๋ ์ด์
ํด์ฃผ์ด์ผ ํ๋ค.
PermissionError at /admin/post/image/3/change/
[Errno 13] Permission denied: '/srv/pdxen-homepage-pj/pdxenhomepage/media'
nginx user์ธ deploy๊ฐ media ํด๋์ ์ ๊ทผ ๋๋ ๋ณ๊ฒฝ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. media ํด๋๊ฐ ์์ผ๋ฉด ๋ง๋ค์ด์ฃผ๊ณ , ๋๋ ํ ๋ฆฌ ์ ์ ๋ฅผ recursiveํ๊ฒ ๋ณ๊ฒฝํ์.
sudo chown -R deploy:deploy /srv/pdxen-homepage-pj/pdxenhomepage/mediaububtu nginx user ํ์ธํ๊ธฐ:
sudo vi /etc/nginx/nginx.conf
OperationalError at /todo/add/
attempt to write a readonly database
db.sqlite ์ user ๊ฐ ubuntu ์ด๊ณ , ์ ์ ๋ง ์ฐ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋๋ก ์ค์ ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. (-rw-r--r--) ๋ค์๊ณผ ๊ฐ์ด db.sqlite ์ ์ ์ ๋ฅผ uwsgi ์ ์ ์ธ deploy ๋ก ๋ณ๊ฒฝํด์ฃผ๋ฉด ๋๋ค.
sudo chown deploy:deploy /srv/todo-management/todo/db.sqlite3์ด๊ฒ์ ๋ง์ณ๋ ์๋์ ์๋ฌ๊ฐ ๋ ๊ฒ์ด๋ฏ๋ก, db.sqlite์ ์์ ํด๋์ ์ ์ ๋ ๋ณ๊ฒฝํด์ฃผ์.
sudo chown deploy:deploy /srv/todo-management/todo/OperationalError at /todos/add/
unable to open database file
์ ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ฉด ๋ฐ์ํ๋ ์ค๋ฅ๋ก, db.sqlite ์ ์์ ํด๋์ ์ ๊ทผ๊ถํ์ด ์๋ ๊ฒฝ์ฐ์ด๋ค. ์ด ๊ฒฝ์ฐ, ํด๋น ์์ ํด๋์ ์ ์ ๋ฅผ ๋ณ๊ฒฝํด์ค๋ค.
sudo chown deploy:deploy /srv/todo-management/todo/- ์์ฑ๋ html ๋ฌธ์๊ฐ ์นํ์ค์ ๋ง๋์ง ๊ฒ์ฌํด์ค๋ค.
- ๊ฒ์ฌ ๋๊ตฌ (Validator): validator.w3.org
HTML ์ด๋ XML ๊ณผ ๊ฐ์ ๋งํฌ์ ๋ฌธ์์์, ์ผ๋ จ์ ํน์ํ ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์ ์กฐํฉ์ผ๋ก, Character Reference ๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ์ด๊ฒ์ ๋ค์์ ๋ ๊ฐ์ง๋ก ๋๋๋ค:
- numeric character reference: ์ซ์๋ก ๊ธฐํธ๋ฅผ ๋ํ๋ด๋ ๊ฒ (
<=<) - character entity reference: ๋ฌธ์๋ก ๊ธฐํธ๋ฅผ ๋ํ๋ด๋ ๊ฒ (
<=<)
entity code table: entitycode.com
img: ์ด๋ฏธ์ง ํ๊ทธsrc: ์ด๋ฏธ์ง ์ฃผ์alt: ์ด๋ฏธ์ง๊ฐ ์์ ๋ ๋์ฒดํ๋ ํ ์คํธ. ์๊ฐ์ฅ์ ์ธ์๊ฒ ์ ๊ณต๋๋ ์ ๋ณด์ด๊ธฐ๋ ํ๋ค.
figure: ๋ํ, ์ฐจํธ, ์ด๋ฏธ์ง, ํ ๋ฑ์ ๊ฐ์ ๋ ์ฌ์ฉ๋๋ ์์figcaption: ํด๋น ํผ๊ท์ด์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ๊ทธ
transaction ์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ ์์ ์ ๋จ์์ด๋ค. transaction ์ ๋ค์ ๋ค ๊ฐ์ง ์ง์์ด(sql) ์์ฒญ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค:
- select
- insert
- update
- delete
transaction ์ ๋ค์ ๋ค ๊ฐ์ง ํน์ฑ์ ์ง๋๋ค:
- ๋น๋ถ๋ฆฌ์ฑ (Atomicity): ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ transaction ๋จ์๋ก ๋ณ๊ฒฝ๋๋ค. transaction ์ ๊ตฌ์ฑํ๋ ์ผ๋ถ ์ฟผ๋ฆฌ๋ง ๋ฐ์๋๋ ๊ฒฝ์ฐ๋ ์๋ค. transaction ์ ์ฒด๊ฐ ๋ฐ์๋๊ฑฐ๋ ๋ฐ์๋์ง ์๊ฑฐ๋์ด๋ค.
- ์ผ๊ด์ฑ (Consistency): transaction ์ด ๋์์ผ๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๊ด์ ์ด์ด์ผ ํ๋ค. transaction ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ด ์์ด๋, ๊ทธ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์๋์ง ์๋๋ค.
- ๋ ๋ฆฝ์ฑ (Isolation): ํ transaction ์ด ๋ค๋ฅธ transaction ์ ์ฐ์ฐ์ ๋ผ์ด๋ค ์ ์๋ค.
- ์๊ตฌ์ฑ (Durability): ํ๋ฒ ๋ฐ์๋ transaction ์ ์๊ตฌํ ๋ฐ์๋๋ค.
๊ฐ๊ฐ์ ์ฒซ ๊ธ์๋ฅผ ๋ชจ์, ์ด ์ฑ์ง์ ACID ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. ์ด๋ก ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ฐ๊ฐ์ transaction ์ ๋ํด ์๊ธฐ ์ฑ์ง๋ค์ ๋ณด์ฅํ์ง๋ง, ์ค์ ๋ก๋ ์ฑ๋ฅ์ ์ํด ์ข ์ข ๋ฌด์๋๊ธฐ๋ ํ๋ค. transaction ์ ์ง์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ transactional database ๋ผ๊ณ ํ๋ค. ๋๋ถ๋ถ ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด๋น๋๋ค.
- Begin the transaction
- Execute several queries: ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ์ง๋ ์๋๋ค.
- Commit the transaction: ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ๋ค.
transaction ์ด ์๋ฃ๋๋ฉด commit, ์ค๊ฐ์ ์ทจ์๋๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ฒ์์ผ๋ก ๋๋๋ฆฌ๋ ๊ฒฝ์ฐ์๋ Rollback.
- commit: transaction ์ ์ฟผ๋ฆฌ๊ฐ ์ฑ๊ณตํ๋ฉด, ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ๋ ์ฐ์ฐ.
- rollback: transaction ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋ ๊ฒฝ์ฐ, transaction ์ ์ฒ์๋ถํฐ ๋ค์ ์์ํ๊ฑฐ๋, ์งํ๋ transaction ์ ์ทจ์ํ๋ ์ฐ์ฐ. ์ด๊ฒ์ DBMS ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค. ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒฝ์ฐ, transaction ์ commit ์ ์ ์ธ์ ๋ ์ง rollback ์ ์งํํ ์ ์๋ค.
DBMS: Database Management System ์ ์ฝ์๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ ํ๊ณ ์ ์ฅ, ๊ด๋ฆฌํ ์ ์๋ ์ํํธ์จ์ด์ด๋ค. Mysql, Postgresql ๋ฑ์ด ์๋ค.
- Active
- Failed: ์ค๋ฅ๊ฐ ๋์ ์คํจ
- Aborted: ์ค์ง๋์ด rollback ์ฐ์ฐ ์คํ
- Partially committed: transaction ์ด ์๋ฃ๋์์ผ๋ commit ๋์ง ์์ ์ํ
- Committed: ์๋ฃํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ๊น์ง ๋ ์ํ
โ wikipedia, ๊ฐ๋ฐ์ ํ๋ก ์๊ธฐ, limkydev
Big-O notation: refers to the complexity of a given algorithm. In computer science, big O notation is used to classify algorithms according to how their running time or space requirements grow as the input size grows.
์ธํ ์์ํ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋งํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.