ASH84
Software Engineer focused on turning complexity into simplicity. Co-founder at Payhere. Previously Tech Lead of remit team at Banksalad.
Experience
- Head of tech Payhere.Inc, 2024โpresent
- CTO Payhere.Inc, 2020โ2023
- TechLead, Banksalad, 2018โ2020
- Senior Software Engineer Danal, 2014โ2018
Latest Blog Posts
-
Oct 19, 2022PyCon Korea 2022 ํ๊ธฐ์๋ ํ์ด์ฝ์ ์จ๋ผ์ธ์ผ๋ก ์ด๋ ค์ ๊ทธ๋ฐ์ง ๊ทธ๋ค์ง ์ ์ฒญ์ ํ์ง ์๊ณ ๋ฐ๋ก ๋์์๋ง ์ฑ๊ฒจ๋ดค๋๋ฐ ์ฌํด๋ ์คํ๋ผ์ธ ๋ชจ์๋ ์ด๋ฆฐ๋ค๊ณ ํด์ ์ฐธ์์ ํ๊ฒ ๋์๋ค. ์ฝ์์ค์ ๋๋ฌด ์ต์ํ๋ ๊ฒ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด์ ์ ์ฑ์ ์ฌ๋์์ ํ์ ๋ ์๊ฐ์ด ๋๋ ๊ท๋ชจ์๋ค. ๋ผ์ด๋ธ๋ก ํ๋ ๊ฒ ์๋๋ผ ๋ นํ๋ณธ์ ๋ณด๋ ๋ฐฉ์์ด๋ค๋ณด๋ ์ฝ๊ฐ ๊ทน์ฅ์์ ๋คํ๋ฉํฐ๋ฆฌ๋ฅผ ๋ณด๋ ๋ถ์๊ธฐ์๋ค. ์คํ๋ผ์ธ๋ณด๋ค ์ข ๋ ์กฐ์ฉํ ๋๋? ๋์์ง ์์์ง๋ง ๊ทธ๋๋ ์คํ๋ผ์ธ์ด ๋ ๋์๊ฒ ๊ฐ๊ธดํ๋ค. ๊ฐ๋จํ๊ฒ ์ธ์์ ์ด์๋ ์ธ์ ๋ค์ ์๊ฐํด๋ณด๋ฉด, ## 1์ผ์ฐจ ๋ฐํ **๊ณ ๋ฑํ๊ต์์ ํ์ด์จ๋์คํ๋ก ์ด์๊ฐ๋ค๋๊ฒ...
-
Aug 21, 2022python static method vs. class method์ฌ๋ด์์ ํ์ด์ฌ ์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ฉด static method์ class method๋ฅผ ํผ์ฉํด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ธ๋ณ๋ก ์์๋๋ฐ ์ด ๋ถ๋ถ์ ๋ํด์ ๊ฐ์ธ์ ์ผ๋ก ์กฐ์ฌ๋ฅผ ํด์ ์ ๋ฌํ ๊ธฐํ๊ฐ ์์๋ค. ํ์ด์ฌ ์ฑ ๋ ๋ง์ด ๋ดค๊ณ , ๊ณต์ ๋ ํผ๋ฐ์ค๋ ๋ดค์ง๋ง ๋๋ถ๋ถ ์ฌ์ฉ๋ฒ์ ๋ํด์ ์ ๊ธฐ๊ฐ ๋์ฒด๋ก ์๊ณ , ์ธ์ ๋๊ฐ๋ฅผ ๊ตฌ๋ถํด์ ์ฌ์ฉํด์ผํ๋ ์ง์ ๋ํด์๋ ๋์์์ง ์์์ ๋ช๊ฐ์ ๋ ํผ๋ฐ์ค๋ฅผ ์ ๋ฆฌํด๋ดค๋ค. ### [ํ์ด์ฌ ์ฝ๋ฉ์ ๊ธฐ์ , 108p](http://www.yes24.com/Product/Goods/94197582) ํ์ด์ฌ์๋ ํด๋์ค๋ณ๋ก ์์ฑ์๋ฅผ ...
-
Oct 19, 2019python LDAP, ldap3 ์ฐ๋LDAP ์์ฒด๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์์คํ ์ด๋ผ์ ๋ก๊ทธ์ธ, ํ ํฐ์ด๋ผ๋ ๊ฐ๋ ์ด ์์ด์ id, password ๋ฅผ ๋ฃ์ด์ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ , ์กฐํ๊ฐ ๋๋ฉด ๋ก๊ทธ์ธ์ด ๋์๋ค๋ ๊ฒ์ผ๋ก ์ธ์ํด์ ์ด๋ฅผ ์ฐ๋ํ๋ ์์คํ ์์ ์์ฒด์ ์ผ๋ก ํ ํฐ์ ๋ฐ๊ธํด์ผ ํ๋ค. python ์์ LDAP ์ ์ฐ๋ํ๋ ๋ฐฉ์์ python-ldap, ldap3 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ธ๋ฐ, ์๋์ ๊ฐ์ด ldap3๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ```shell pip install ldap3 ``` ```python from ldap3 import Server, ALL, ...
-
Oct 11, 2018ํ์ด์ฌ ๋ถ๋์์์ ๋งํฌํ์ด์ฌ ๋ถ๋์์์ ๊ด๋ จ ๋งํฌ, ๋ณด๋ฉด ์ดํด๊ฐ ๋๋ค. === [ํ์ด์ฌ ์ฝ๋ฉ ๋์ฅ ๋ฒ ํ: 48.5 ์ค์ ๊ฐ์ ์ค์ฐจ](https://dojang.io/mod/page/view.php?id=1164) [Data Science School](https://datascienceschool.net/view-notebook/148fc57f684c4dc48eeb5048ab0d45f2/) [ํ์ด์ฌ์์ ๋ถ๋ ์์์ ์ค์ฐจ ํด๊ฒฐํ๊ธฐ](https://winterj.me/Floating-Point/) [๊ณ์ฐ๊ธฐ ์ก์ค๋ก - ์ํค๋ฐฑ๊ณผ, ์ฐ๋ฆฌ ๋ชจ๋์ ๋ฐฑ๊ณผ์ฌ...
-
Sep 10, 2018flask ํ์ผ์ ๋ก๋ ๊ฒ์ฆํ๊ธฐํ์ผ ์ ๋ก๋์ ๊ฒฝ์ฐ ์ฃผ์ํ ์ ์ด(์ ๋ก๋๋ฅผ ๋นํ๋ ์ ์ฅ์์) ์ ์ฑํ์ผ ํน์ ์์น ์๋ ํ์ผ๋ค์ด ๋ค์ด์ฌ ์ ์์์ ํญ์ ์ธ์งํด์ผํ๋ค. ๊ทธ๋์ ์ ๋งํ๋ฉด ํ์ผ ์ ๋ก๋๋ฅผ ์ ์๋ง๋ค๊ฑฐ๋ ๋ด๋ถ์์ ๋ช๋ช ์ ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง ๋ฐ๋ก ์ ๋ก๋ ๋ฉ๋ด๋ฅผ ๋ณด์ด๊ฒ ํด์ ์ ๊ณตํ๊ฑฐ๋ ํ๋ ์์ผ๋ก ํ๊ณค ํ์๋ค. ๊ทธ๋๋ ์ ๋ก๋๊ฐ ํ์ํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ ํ ํ ์ ์๋ค. - ํ์ผ ํ์ฅ์ ์ฒดํฌ - ์ฌ์ด์ฆ ์ฒดํฌ - mime type ์ฒดํฌ ๊ทธ๋ ์ง๋ง, **ํ์ผ ํ์ฅ์๋ ์ธ์ ๋ ๋ณ๊ฒฝ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ํํ๋ค.** ์๋ฅผ ๋ค์ด, ์ ์ฑ ์๋ฐ์คํฌ๋ฆฝํธ, ์น์ ๊ฐ์ ํ์ผ๋ค์...
-
Sep 04, 2018SQLAlchemy Join #3 One to One**[One To One](http://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html#one-to-one)** ์ผ๋์ผ ๊ด๊ณ์์๋ ์์ชฝ ๋งคํผ์์ ์ค์นผ๋ผ ์์ฑ์ ํตํ ์๋ฐฉํฅ ๊ด๊ณ๊ฐ ํ์์ ์ด๋ค. ์ด๊ฒ์ ์ํด์ `uselist` flag ๊ฐ ์๋๋ฐ ์ด๊ฒ์ ๋ง์์ชฝ("manyโ side of the relationship.)์ ์ปฌ๋์ ๋์ ์ ์ค์นผ๋ผ ์์ฑ์ ์์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ผ๋๋ค ๋ฅผ ์ผ๋์ผ๋ก ๋ฐ๊พธ๋ฉด, ```python class Parent(Base): ...
-
Aug 31, 2018SQLAlchemy Join #2 Many To One**Many To One** ๋ค๋์ผ ๊ด๊ณ์์ child ๋ฅผ ์ฐธ์กฐํ๋ ์ธ๋ํค๋ parent ํด๋์ค์ ์์นํด์๋ค. `relationship()` ํจ์ ๋ parent ํด๋์ค์ ์์นํด์์ผ๋ฉฐ, scalar-holding ์์ฑ์ด ์์ฑ๋ ๊ฒ์ด๋ค. ```python class Parent(Base): __tablename__ = 'parent' id = Column(Integer, primary_key=True) child_id = Column(Integer, ForeignKey('chi...
-
Aug 29, 2018PyconKR 2018 ํ๊ธฐ 2์ผ์ฐจ# 2์ผ์ฐจ ํ๊ธฐ *** [1์ผ์ฐจ ํ๊ธฐ ๋ณด๋ฌ๊ฐ๊ธฐ](https://ash84.net/2018/08/21/pyconkr2018-day1/) *** **๋๋๊ณ ๋๋๊ธฐ: ํ์ด์ฌ์ผ๋ก ์ฝ๋ ๋ฆฌํฉํ ๋งํ๊ธฐ -Niรฑo R. Eclarin-** ์ธ๊ตญ๋ถ์ด ํ๋ ์ธ๋ฏธ๋๋ ์ฌ์ค ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฃ์ง๋ ์๋๋ฐ ๋ฆฌํฉํ ๋ง์ด๋ผ๋ ํด๋ฌต์ ์ฃผ์ ๋ฅผ ๊ฐ์ง๊ณ ์๊ธธ๋ ํ๋ฒ ๋ค์ด๋ดค๋ค. ์๊ฐ๋ณด๋ค ์ฌ๋ฐ๊ฒ ์ ์ค๋ช ์ ํด์ฃผ์๊ณ ์๋ก ์ ์ธ ์ด์ผ๊ธฐ ๋ณด๋ค๋ ์ค์ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์ค์ฉ์ ์ธ ๋ฆฌํฉํ ๋ง ์์ฃผ๋ก ์ค๋ช ์ ํด์ฃผ์๋ค. ๋จ์ํ ์ค๋ณต์ ์ ๊ฑฐํ๊ฑฐ๋, ํด์ฌํ๋ฅผ ํ๋๊ฒ๋ ์ค์ํ์ง๋ง, ๋ญ๊ฐ ...
-
Aug 21, 2018PyconKR 2018 ํ๊ธฐ 1์ผ์ฐจ๋ช๋ ์งธ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ฐธ์ฌํ๊ณ ์๋ค. ๋์ด๊ฐ ๋ค์ด์ ๊ทธ๋ฐ์ง ์ ์ ๊ฐ์ด ๊ฐ๋ ๋ถ๋ค์ด ๋ณด์ด์ง ์๊ฑฐ๋ ํ๋๊ฒ ๊ฐ์๋ฐ ์ด ์ญ์ ๊ฐ๋ฐ์์ ์๋ช ์ด ์๋๊น ํ๋ ์๊ฐ์ด ๋ ๋ค. ๋๋ ์๋ด๊ฐ ํ์ด์ฝ ๊ฐ๋๊ฒ์ 1๋ ์ ํ๋ฒ์ด๊ธฐ๋๋ฌธ์ ๋ญ๋ผ๊ณ ํ์ง ์์ง๋ง, ์ฃผ๋ง2์ผ ํ์ผ1์ผ์ ์ธ๋ฏธ๋์ ์ด๋ค๋ ๊ฑด์ ์์งํ ์ฝ์ง ์๋ค. ์์ฝ๊ฒ๋ ์ฌํด๋ ๋ผ์ดํธ๋ ํ ํฌ๋ ํจ๊ปํ์ง ๋ชปํ๋ค. ๋ด๋ ์๋ ์์ด๊ฐ ๋์ด๋ผ์ ํ ์์ด๋ฅผ ์์ด๋๋ด์ ๋งก๊ธฐ๊ณ ๋ด์ผํ ๊ฒ ๊ฐ๋ค. # ํํ ๋ฆฌ์ผ ์ฒ์ ๋์ ํด๋ณธ ํํ ๋ฆฌ์ผ์ด์๊ณ , ๊ฐ์ธ์ ์ผ๋ก asyncio, ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์ ๊ถ๊ธํ๋ํฐ๋ผ ์ ์ฒญ...
-
Aug 18, 2018SQLAlchemy Join #1 One To ManySQLAlchemy Join ์ ๋ํด์ ๋ง์ฐํ๊ฒ ์ฐ๋ค๋ณด๋ ์ฌ๋ฌ๊ฐ์ง ๊ด๊ณ ํ ์ด๋ธ์ํฉ์์ ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ๊ณ ์๋ฐ๊ฒํฃ๊ธฐ์์ผ๋ก ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ๊ทธ๋์ ๊ณต์ ๋ฌธ์์์ Join ๊ด๋ จ ๋ถ๋ถ(์๋์ URL)์ ๋ฐ๋ผํ๋ฉด์ ๋งํ๋ ๋ถ๋ถ์ ํ์ด๋ณด๊ณ ์ ํ๋ค. [http://docs.sqlalchemy.org/en/latest/orm/relationships.html](http://docs.sqlalchemy.org/en/latest/orm/relationships.html) ## Basic Relationship Patterns ###...
-
Jul 30, 2018SQLAlchemy autocommit ์ ๋ํด์DB ์์์ autocommit ์ด๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ์ ๋ํ SQL ์์ฒด๊ฐ ๋ฐ๋ก ๋ฐ์๋๋ ๊ฒ์ ์๋ฏธํ๋๋ฐ autocommit ์ด ์๋ ์ํ์์๋ ์ฌ๋ฌ์ค์ ๋ช ๋ น์ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์์๊ฐ ์๋ค.(๊ฐ๋ณ DBMS ์์ง์ด๋ DBํ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ์๋ ์๋ค. ์ฌ๊ธฐ์์๋ MYSQL InnoDB ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ๋ฅผ ์งํํ์๋ค.) **mysql autocommit ํ์ธํ๊ธฐ** ```python SELECT @@AUTOCOMMIT; ``` **mysql autocommit ์ค์ /ํด์ ํ๊ธฐ** ```python SET AUTOCOMM...
-
Jul 25, 2018๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ์๋ฅผ ์ํ NullHandler๋ก๊น ์์ `FileHanlder`, `StreamHandler` ๋ฑ์ ํธ๋ค๋ฌ๋ ๋ก๊ทธ๋ฅผ ์ด๋์ ๋จ๊ธธ๊ฒ์ธ์ง๋ฅผ ์ง์ ํ๋ ์ญํ ์ ํ๊ณ , `Formatter` ๋ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ํ์์ ์ง์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ `Filter` ๋ ๊ทธ ๋ก๊ทธ ์์์ ํํฐ๋ง ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ค. ### ๊ทธ๋ฐ๋ฐ `NullHandler` ๋ ๋ชฐ๊น? ์ค๋ช ์ ๋ฐ๋ฅด๋ฉด **์ด๋ค ํฌ๋งท์ด๋ ์ถ๋ ฅ์ ๊ฐ์ง์ง ์๋๋ค๊ณ ํ๊ณ ์ด๊ฒ์ no-op handler ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ์์๊ฒ ํ์์ **์ด๋ผ๊ณ ํ๋ค. ์ ๋ผ์ด๋ธ๋ฌ ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ผ๊น? ๊ทธ์ ๋ํ ๋ต์ [Configur...
-
Jul 18, 2018dictionary view object`dict.keys()`, `values()`, `items()` ๊ณผ ๊ธฐ์กด์ python2 ์๋ ๋ค๋ฅด๊ฒ ๋ณ๊ฒฝ ๋์๋ค. ๊ธฐ์กด์ ์๋์ ๊ฐ์ด ๋ฆฌ์คํธํ์ ๋ฐํํ๋ค. ```python # python2.x >>> d = {'a':1, 'b':2} >>> keys = d.keys() >>> values = d.values() >>> items = d.items() >>> keys ['a', 'b'] >>> values [1, 2] >>> items [('a'...
-
Jul 13, 2018ChainMap ์ฌ์ฉ๋ฒ ์ ๋ฆฌPython3.3 ์์ ์ฒ์ ๋์จ ChainMap ์ ์ตํ ์ ์๊ณ ์๋ collections ๋ชจ๋์ ์์นํด ์๋ค. 3.3 ์ ๋์์ง๋ง, ์๊ฐ๋ณด๋ค ๋ง์ด ์๋ ค์ง์ง ์์ ์ด์ ๋ ๊ธฐ์กด์ ๋ค๋ฅธ ๋ฐฉ์์ ์ฝ๋ฉ์ผ๋ก ๋์ฒด๊ฐ๋ฅํ ์์ญ์ด๋ผ์ ์ธ๊ฒ ๊ฐ๋ค. ChainMap์ ๊ธฐ๋ณธ์ ์ธ ์ญํ ์ quickly linking a number of mappings ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์๋ค. ์ฆ, ๋งตํ ํ์์ ์ด์ด์ฃผ๋ ์ญํ ๋ก ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ dict ๋ฅผ ์๋ก ์์ฑํ๊ฑฐ๋ ์ฌ๋ฌ๋ฒ `update()` ํจ์๋ฅผ ํธ์ถํ๋๊ฒ ๋ณด๋ค ๋น ๋ฅด๋ค๊ณ ์ค๋ช ํ๊ณ ์๋ค. ๊ฐ๋จํ ...
-
Feb 23, 2018pyinstaller ๋ก ์คํํ์ผ ๋ง๋ค๊ธฐ์๋ณตํธํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ผ์ด ์์๋๋ฐ, ํ์ด์ฌ์ผ๋ก ์์ ์ ํ๊ฒ ๋๋ฉด *.py ํ์ผ ์์ ์๋ณตํํค๊ฐ ๋ณด์ฌ์ง๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ ์ค ์คํํ์ผ๋ก ๋ง๋ค์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋์๋ค. C/C++ ์ ์ด์ฉํด์ ์คํํ์ผ์ ๋ง๋ค๊น ์ถ๋ค๊ฐ pyinstaller ๊ฐ ์๊ธธ๋ ์ฌ์ฉํด ๋ดค๋๋ฐ, ์ฌ์ฉ๋ฒ์ด ๋๋ฌด ๊ฐ๋จํ๋ค. http://www.pyinstaller.org/ ```shell pip install pyinstaller ``` ```shell pyinstaller test.py ``` ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฐ์์ผ๋ก ๋ฆฌ๋ ์ค ์์์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์คํํ์ผ์ด ...
-
Nov 14, 2017PyCurl ์ฌ์ฉํ๊ธฐํ์ด์ค๋ถ ์ฝ๋ฆฌ์์ [requests ๋ณด๋ค pycurl ์ด ๋ ์ฑ๋ฅ์ด ์ข๋ค๋ stackoverflow ๊ธ](https://stackoverflow.com/questions/15461995/python-requests-vs-pycurl-performance)์ด ๊ณต์ ๋์ pycurl ์ด ๋ชฌ์ง requests ์ฝ๋์ ๋น๊ตํด ๋ณด๋ฉด์ ์ตํ๋ณด์๋ค. ์ผ๋จ ์๋์ ์ฝ๋๋ ์ค์ POST ์์ฒญ์ ๋ณด๋ด๊ณ json ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ API๋ฅผ ํธ์ถํ๋ ์ฝ๋์ด๋ค. ...
-
Oct 26, 2017beaker_session MySQL server has gone away๋งค์ผ ์์นจ ์์ ํ์ฌ ๊ฐ๋ฐ์ค์ธ ๋ฐฑ์คํผ์ค๋ฅผ ์ผ๋ฉด Internal Server Error ๋ฐ์. ๋ก๊ทธ๋ฅผ ๋ณด๋ ์๋์ ๊ฐ์ ์ค๋ฅ ๋ฐ์ ``` OperationalError: (pymysql.err.OperationalError) (2006, "MySQL server has gone away (error(32, 'Broken pipe'))") [SQL: u'SELECT beaker_cache.data \\nFROM beaker_cache \\nWHERE beaker_cache.namespace = %(namespace_1)s'] [pa...
-
Oct 21, 20172017๋ 10์ ํ์ด์ฌ ์ธ๋ฏธ๋ - Python & Dataํ์ด์ฝ์์ ์ฃผ์ตํ๋ ์ธ๋ฏธ๋๊ฐ ์์ด์ ์ฐธ์ํ๊ฒ ๋์๋ค. ์ญ์ผ๋์ ์๋ ํ์ด์ค๋ถ ์ฝ๋ฆฌ์์์ ์ด๋ฆฌ๊ฒ ๋์๊ณ ๊ฐ๋จํ๊ฒ ๋ค์๋ ๋ถ๋ถ์ ๋จ๊ฒจ๋ณธ๋ค. http://blog.pycon.kr/2017/10/21/python-seminar/ **๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ํตํ ํ์ด์ฌ ์ ๋ฌธ๊ธฐ - ์ด์์** - ํฌ๋กค๋ง, konply, word-cloud **๋์๊ณตํ๊ณผ์ ํ์ด์ฌ - ์ ๊ฒจ์ธ** - ๋์๊ณตํ : ์ค๊ณ, ๊ธฐํ, ๊ตํต - ํ์์๋ฆฌ๋ฏธ(python + flask) : ๋ก๊ทธ์ ๊ทธ๋ํํ matplotlib ๋ผ์ด๋ธ๋ฌ๋ฆฌ, `plt.xkcd()` - ์ด...
-
Sep 06, 2017flask-sqlalchemy multiple databases### **์ฌ์ฉํ๊ธฐ** flask-sqlalchemy ์์ ๊ธฐ๋ณธ์ ์ผ๋ก `SQLALCHEMY_DATABASE_URI` ์ค์ ์ ํตํด์ mapping class ์ ์ ์๋ ํ ์ด๋ธ๋ค์ด DB์ ์ฐ๊ฒฐ๋๊ฒ ๋๋ค. ๊ทธ๋ฐ๋ฐ 1๊ฐ ์ด์์ DB์ ์ฐ๊ฒฐํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. ๊ธฐ์กด์ ํ์์ ๋ณด๋ฅผ ๊ฐ์ด ์ฐ๋ ๋ค๋ฅธ ์๋น์ค์ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ์ธ ์ผ์ด์ค์ด๋ค. ์ด๋ด๊ฒฝ์ฐ, flask-sqlalchemy ์์๋ `SQLALCHEMY_BINDS` ๋ฅผ ํตํด์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค URI๋ฅผ ์ง์ ํ ์ ์๊ฒ ํด์ฃผ๊ณ ์๋ค. ```python app.config['SQLALCH...
-
Sep 04, 2017python - db stored procedure ํธ์ถ์ generator ํ์ฉํ๊ธฐํ๋ก์์ ํธ์ถ์ ๋ช ๊ฐ์ง ์ ์ฝ์ ๊ฐ์ง๋ค. ์ผ๋จ ํ๋ก์์ ๋ช ์ ์ ๋ฌํด์ผ ํ๊ณ ํ๋ผ๋ฏธํฐ๋ฅผ ์์๋๋ก ์ ๋ฌํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฃผ๋ ๋ฐฉ์์ด ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ค ์๋ ์๊ณ ์ฌ๋ฌ ๊ฒฐ๊ณผ๋ฅผ ์ค ์๋ ์๋ค. ํ๋ก์์ ๋น ํ๋์ ํธ์ถ ํจ์๋ฅผ ๋ง๋ค๋ฉด ๋๋ฌด ๋ง์ ํ๋ก์์ ํธ์ถ ํจ์๊ฐ ์๊ธฐ๋ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋์ ํ๋ก์์ ์ด๋ฆ์ ๋ฐ๋ ํ๋ผ๋ฏธํฐ์ ์ ๋ฌํ ํ๋ก์์ ํ๋ผ๋ฏธํฐ, ๊ทธ๋ฆฌ๊ณ insert, update, delete ์ ๊ฒฝ์ฐ commit ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ commit ์ฌ๋ถ๋ฅผ ์ํ ํ๋ผ๋ฏธํฐ, ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์ฌ๋ถ์ ๋ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ ํธ...
-
Aug 29, 2017PYCONKR2017 ์ ๋ค๋ ์์.[ํ์ด์ฝ2017](https://www.pycon.kr/2017/) ์ ๋ค๋ ์๋ค. [์๋ ์ pyconApac ์ ํ๋ คํจ์ ๋ค๋กํ๊ณ ](https://ash84.net/2016/08/24/pyconapac-2016/) ์ฌํด๋ ํ์ ๋ถํฐ Back to the Basic ์ด์๋ค. ์ธ์ ๋ ํ์ด์ฝ์ ํฐ์ผ ์์ฝ์ ์ ์ํฐ์๋ค. ๋ ๋น ๋ฅธ ์ ์ฌ์ ๋จน๊ณ ๋ค์ด์์ ์์ฝ์ ํ๊ณ , ๋ช๋ถํ ์์ฝ์ ๋ชปํ ์ฌ๋๋ค์ด ์์ถํ๊ธฐ ์์ํ๋ค. ๋ฐํ์ ๋ชจ์ง์ด ์์์ด ๋์๊ณ , ๋ฐํ๋ฅผ ํ๊ณ ์ถ์ ๋ง์๋ ์์์ง๋ง ์ฌํด๋ ํ๋ฐ์๊ตญ ๋ฉ๋ฆฌ์ ์ง์ผ๋ณด๊ฒ ๋์๋ค. 2-3์ฃผ ์ ๋ ๋จ์์ ๋ฌด๋ ต...
-
Aug 28, 2017python sorted ์ ๋ํด์.sorted ์ ๋ํด์ ์ง๋ฌธ์ ๋ฐ์๊ณ ์ ๋๋ต์ ํ์ง ๋ชปํด์ ๋ณต๊ธฐ์ฐจ์์์ ์ด ๊ธ์ ์ด๋ค. ๋๋ถ๋ถ์ ๋ด์ฉ์ [Sorting HOW TO](https://docs.python.org/3/howto/sorting.html) ๋ผ๋ ๊ธ์์ ๊ฐ์ ธ์์์ ๋ฐํ๋ค. ### list.sort() vs sorted() - `list.sort()` ๋ ๋ฆฌ์คํธ ๋ด๋ถ์์ ์ ๋ ฌ๋๋ค. ๊ทธ์ ๋นํด `sorted()` ๋ ์ ๋ ฌ๋ ๊ฐ์ ๋๋ ค์ค๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ ๊ฐ์ ์ ์งํ๋ฉด์ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ถ๋ค๋ฉด `sorted()` ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. `li...
-
Aug 04, 2017flask - request.script_root ์ด์ฉํ๊ธฐํ๋์ ์น์ ์ฌ๋ฌ path ์ ์ฌ๋ ค์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์๋ฅผ ๋ค๋ฉด, ํ ์คํธ๋ฅผ ์ํด์ `/web1`, `/web2` ์ด๋ฐ์์ผ๋ก ๊ตฌ์ฑํด์ ์ฌ๋ฆด ๊ฒฝ์ฐ์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ํ๋ก ํธ๋จ์์ URL๋ก ์ง์ ํด ๋์ ๊ฐ๋ค์ ์์ ํด ์ค์ผ ํ๋ค. ajax ๋ฅผ ํธ์ถํ๋ค๊ณ ์๊ฐํด ๋ณด์. ์๋ `/web/api/room` ์ด๋ฐ์์ผ๋ก ajax ๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค๋ฉด `/web1`, `/web2` ์ ๋ฐ๋ผ์ `/web1/api/room`, `/web2/api/room` ์ด๋ ๊ฒ ๋ณ๊ฒฝํด ์ค์ผ ํ๋ค. ```javascript $.ajax({ url: "...
-
Jul 20, 2017flask - render_template ์ด๋ป๊ฒ ์ฌ์ฉํ ๊น?flask ๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด view ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ๊ทธ ์ค ํ๋๊ฐ views.py ์ route ํจ์๊ฐ ๋ง์์ ธ์ ๊ธธ์ด์ง๋๊ฒ ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ํ๋๋ `render_template()` ํจ์์ ํ๋ผ๋ฏธํฐ๊ฐ ๋ง์์ ธ์ ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ๋ค. ์ ์์ ๊ฒฝ์ฐ blueprint ๋ก ๋ถํ ํ๊ฑฐ๋ resource ๋จ์๋ก ๋ถํ ํ๋ฉด ํด๊ฒฐํ ์ ์๋ค. (์ด๊ฑด ๋ค๋ฅธ ํฌ์คํธ์์ ์์ธํ ์ค๋ช ํ๊ฒ ๋ค.) ํ์์ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด๊ฒฐ ํ ์ ์์๊น? ๋ญ ์ด๋ฐ์์ผ๋ก ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ๋ค. ```python return render_template('web.html'...
-
Jul 12, 2017pymssql nextset() ๋น๊ฐ ์ด์์ต๊ทผ์ ๊ตฌํํ ๋ถ๋ถ์์ ์ด์ํ ๊ฒฝํ์ ํ๋๋ฐ ๊ฐ์ db ํ๋ก์์ ๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ฅผ ์ฐ๊ณ ํ ์คํธ๋ฅผ ํ๋๋ฐ ์ด๋ค ์กฐ๊ฑด์ผ๋ก๋ ๋ฐ์ดํฐ๊ฐ ์์์ ๋ง๊ฒ ์ ๋์ค๊ณ ์๋์ค๊ณ ํ๋ ๊ฒฝ์ฐ์๋ค. ๋ฐ์ดํฐ๋ mssql ์ ์ฅ ํ๋ก์์ ์์ 2๊ฐ์ ๊ฒฐ๊ณผ์ ์ ๋ฐํํ๋๋ฐ ์ฒซ๋ฒ์งธ์์๋ ๋ณด์ฌ์ค ๋ฐ์ดํฐ์ ๊ธ์ก, ๊ฑด์ ํฉ์ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๋๋ฒ์งธ์์๋ ์ค์ ๋ณด์ฌ์ค ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒ์ด์๋ค. ๊ทธ๋์ generator ๋ฅผ ์ด์ฉํด์ `g.next()`, `g.next()` ์ด๋ ๊ฒ 2๋ฒ ํธ์ถํด์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ณ ๊ฐ๊ฐ์ ๋ค๋ฅธ ๋ณ์์ ๋ด์์ ๋ฆฌํดํ๊ณ ์์๋ค. ๋ฆฌํด๋...
-
Jun 15, 2017flask - json_encoder ์ง์ ํ๊ธฐAPI ์์์ JSON ์ผ๋ก ์๋ต์ ๋ด๋ณด๋ด๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ Json Serialize(์ง๋ ฌํ)๋ฅผ ํด์ผํ๋ค. ๊ทธ๋ฐ๋ฐ json ์์ ํํํ ์ ์๋ ๋ฐ์ดํฐ๋ ํ์ ์ด ๋์ด ์์ด์ ๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์๋ ๋ชจ๋ ํ์ ์ ์ง์ํ์ง๋ ๋ชปํ๋ค. Decimal ํ๋ ๊ทธ๋ฐ ์ ์ค ํ๋์ธ๋ฐ ํ์ด์ฌ์์๋ `json.dumps()`๋ฅผ ํตํด์ ์ฃผ๋ก ์ง๋ ฌํ๋ฅผ ํ๊ณ ๊ทธ ํจ์์ ๊ธฐ๋ฅ ์ค์ `cls` ์ธ์๋ฅผ ํตํด์ JSONEncoder ๋ฅผ ๊ตฌํํ ์๋ธ ํด๋์ค๋ฅผ ์ง์ ํด ์ฃผ๋ฉด ํด๋น ์ธ์ฝ๋๋ก json ๋ฌธ์์ด์ ๋ง๋ ๋ค. flask ์์๋ `json.dumps` ...
-
Jun 06, 2017Python - ๋ฆฌ์คํธ ์ํ์ค ์์ ํ๋ ๋ฌธ์ ๋ณธ ๊ธ์ Toptal์ ์ฌ๋ผ์จ [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) ๊ธ์ ๋ณด๊ณ ๊ณต๋ถํ๋ฉด์ ์ด ๊ธ์ด๋ค. ๋ฒ์ญ + ๊ฐ์ธ์ ๊ณต๋ถ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. **Common Mistake #5: Modifying a list while iterating over it** **๋ฆฌ์คํธ ์ํ...
-
May 30, 2017Python - ํ์ด์ฌ ๋ฒ์ ๊ท์น์ ๋ํ ์๋ชป๋ ์ดํด๋ณธ ๊ธ์ Toptal์ ์ฌ๋ผ์จ [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) ๊ธ์ ๋ณด๊ณ ๊ณต๋ถํ๋ฉด์ ์ด ๊ธ์ด๋ค. ๋ฒ์ญ + ๊ฐ์ธ์ ๊ณต๋ถ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. **Common Mistake #4: Misunderstanding Python scope rules** **ํ์ด์ฌ ๋ฒ์ ๊ท์น์ ...
-
May 25, 2017Python - ์์ธ์ฒ๋ฆฌ ๋ธ๋ก์ ๋ํ ์๋ชป๋ ํ๋ผ๋ฏธํฐ ์ง์ ๋ณธ ๊ธ์ Toptal์ ์ฌ๋ผ์จ [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) ๊ธ์ ๋ณด๊ณ ๊ณต๋ถํ๋ฉด์ ์ด ๊ธ์ด๋ค. ๋ฒ์ญ + ๊ฐ์ธ์ ๊ณต๋ถ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. **Common Mistake #3: Specifying parameters incorrectly for an exception blo...
-
May 24, 2017Python - ์๋ชป๋ ํด๋์ค ๋ณ์์ ์ฌ์ฉ๋ณธ ๊ธ์ Toptal์ ์ฌ๋ผ์จ [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) ๊ธ์ ๋ณด๊ณ ๊ณต๋ถํ๋ฉด์ ์ด ๊ธ์ด๋ค. ๋ฒ์ญ + ๊ฐ์ธ์ ๊ณต๋ถ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. **Common Mistake #2: Using class variables incorrectly** **์๋ชป๋ ํด๋์ค ๋ณ์์ ์ฌ์ฉ*...
-
May 22, 2017Python - ํจ์ ๋ํดํธ์ธ์์ ์๋ชป๋ ์ฌ์ฉ๋ณธ ๊ธ์ Toptal์ ์ฌ๋ผ์จ [Buggy Python Code: The 10 Most Common Mistakes That Python Developers Make](https://www.toptal.com/python/top-10-mistakes-that-python-programmers-make) ๊ธ์ ๋ณด๊ณ ๊ณต๋ถํ๋ฉด์ ์ด ๊ธ์ด๋ค. ๋ฒ์ญ + ๊ฐ์ธ์ ๊ณต๋ถ๋ด์ฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. **Common Mistake #1: Misusing expressions as defaults for function arguments**...
-
Apr 17, 2017pycharm - bookmarks ๋ถ๋งํฌpycharm ์๋ ๋ถ๋งํฌ ๊ธฐ๋ฅ์ด ์๋ค. ๋ง์ ํ์ผ๊ณผ ์์ค ํ์ผ๋ด์ ํน์ ์์น๋ฅผ ๋น ๋ฅด๊ฒ ์ด๋ํ๊ธฐ ์ํด์๋ ๋ถ๋งํฌ ๊ธฐ๋ฅ์ด ํ์์ ์ด๋ค. `F11`(์๋์ฐ ๊ธฐ์ค) ํค๋ฅผ ๋๋ฌ์ ํ์ฌ ์๋ ์์น์ ๋ถ๋งํฌ๋ฅผ ์ง์ ํ ์ ์๋ค. ์ค์ํ ์ ์ ์์คํ์ผ ๋ฟ๋ง ์๋๋ผ project ๋ทฐ ์์ ํ์ผ์ ์ ํํ ์ํ์์๋ F11์ ํตํด์ ๋ถ๋งํฌ์ ์ถ๊ฐ ํ ์๊ฐ ์๋ค. ![pycharm-bookmark](https://c1.staticflickr.com/3/2879/33711871000_057eab8a6a_b.jpg) `Shift+F11` ๋ฅผ ๋๋ฅด๋ฉด ํ...
-
Apr 03, 2017flask - jinja2 tojson ํํฐflask ๋ฌธ์๋ฅผ ๋ณด๋ค๋ณด๋ [standard filters](http://flask.pocoo.org/docs/0.12/templating/#standard-filters) ๋ผ๋ ํญ๋ชฉ์ด ์๋๋ฐ `tojson` ์ด ๊ทธ ๋ด์ฉ์ด๋ค.(๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ํํฐ๋ผ๋ ๋ด์ฉ) ๊ฐ๋ตํ๊ฒ ์ ๊ธฐํ์๋ฉด, ์ด๋ค ๋๋๋งํ ๋ณ์์ `tojson` ์ด๋ผ๊ณ jinja2 ํ ํ๋ฆฟ ์์์ `|` ๋ฅผ ์ด์ฉํด์ ๋ถ์ด๊ฒ ๋๋ฉด json์ผ๋ก ๋ณํ๋ ๊ฐ์ ๋๋๋งํด์ค๋ค. ์๋ฅผ๋ค์ด, user ๋ผ๋ dict ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ ์ ๋ฌํ๋ค๊ณ ํ ๋, ```python @a...
-
Mar 27, 2017pycharm - settings.jar ๊ฐ๋ฐํ๊ฒฝ ๊ณต์์ฌ๋ด ํ์์ pycharm ์ ํ์ด์ฌ ๊ฐ๋ฐ ๊ณต์ํด๋ก ์ฌ์ฉํ๊ณ ์๋ค. ์ฒ์์ ์ปค๋ฎค๋ํฐ๋ฒ์ ์์ ์์ํด์, ๊ฐ์ธ ํ๋กํ์ ๋์ ์ฐ๋ค๊ฐ, ์ด์ ๋ ํ์ฌ์์ ๋ผ์ด์ผ์ค๋ฅผ ๋์ด์(๊ธฐ์ ์ฉ) ์ฌ์ฉํ๊ณ ์๋ค. ๊ฐ์ธ ๊ฐ๋ฐ์ฉ์ผ๋ก๋ ๊ตฌ์ ํด์ ์ฌ์ฉํ๊ณ ์๋๋ฐ, ํ์ฌ์ ๋ด ๊ฐ์ธ์ฉ ์ปดํจํฐ(๋งฅ) ๊ฐ์ pycharm ํ๊ฒฝ์ ๋์ผํ๊ฒ ๋ง์ถ๊ณ ์ถ์๋ค. ํ ๋ง, ํฐํธ, ์๊น ๊ฐ์ ์ธํฅ์ ์ธ ๋ถ๋ถ์ด ๊ฐ์ฅ ํฌ๊ฒ ๋ง์ถ๊ณ ์ถ์ ๋ถ๋ถ์ด์๊ณ ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๋ ์๋ฒ๋ ๊ทธ๋ฐ๊ฒ๋ค๋ ๋ค์ ์ค์ ํ๊ธฐ๋ ๊ท์ฐฎ์๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํด๋ณด์ง ์์์ง๋ง, ์ข๋ ๋์ ๋ฐฉ๋ฒ์ settings.jar...
-
Mar 07, 2017pipreqs - requirements ๋ฝ๊ธฐ`virtualenv` ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ค ์ข๊ธด ํ๋ฐ, ๊ทธ๊ฒ ์๋ ๊ฒฝ์ฐ์ ๋ํด์ ๊ฐ๋ฐ ์๋ฒ์์ ์์ ํ์๋ **requirements.txt** ๋ฅผ ๋ฝ๊ธฐ๊ฐ ์ด๋ ต๋ค. **requirements.txt** ๊ฐ ํ์ํ ์ด์ ๋ ์๋ฒ์ ์ธํ ์ pip install -r ์ต์ ์ ํตํด์ ํ๋ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ ์๊ธฐ๋๋ฌธ์ ํ์์ด๋ค. pipreqs ๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ํ๋ก์ ํธ ํ์์์ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆฌ์คํธ๋ฅผ ์ถ์ถํ ์ ์๋ค. `virtualenv` ๋ฅผ ๋์ ํ๊ธฐ ํ๋ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ฉด ์ข์ ๋ฏ. ```shell $> pip install p...
-
Dec 20, 2016๊ธฐ์ ๋งํฌ ์ ๋ฆฌ #3 - 2016/12/28####**ํ์ด์ฌ ๊ด๋ จ**#### **ํ์ด์ฌ ์ฝ๋ฆฌ์ ๊ฒฉ์ ์ธ๋ฏธ๋** - ํ์ด์ฌ ์ฝ๋ฆฌ์์ ์ธ๋ฏธ๋๋ ์์ฃผ ์ด๋ฆฌ์ง ์๋ ํธ์ธ๋ฐ, 12/17์ผ์ ๊ฒฉ์ ์ธ๋ฏธ๋๊ฐ ์ด๋ ธ์๋ค. ๋ค์๋ฒ ๊ฒฉ์ ์ธ๋ฏธ๋๋ฅผ ๊ธฐ๋ค๋ ค๋ณธ๋ค. - [์น ๊ฐ๋ฐ, ์ ์ด๋ ค์ด๊ฐ?](http://www.slideshare.net/perhapsspy/ss-70211786) - [์คํ์์ค ๋ค์ด๋ฐ ํน์ง๋ค](http://www.slideshare.net/ssuser2fe594/python-70220360) - [ํ์ด์ฌ์ ๋ง๋์ง 100์ผโฅ์งธ](http://www.slideshare.n...
-
Dec 16, 2016๊ธฐ์ ๋งํฌ ์ ๋ฆฌ #2 - 2016/12/20####**ํ์ด์ฌ ๊ด๋ จ**#### [**Python 3.6: A quick look**](https://blog.jetbrains.com/pycharm/2016/12/python-3-6-a-quick-look/) - ์ง๋์ฃผ Python3.6.0 RC1 ์ด ๋์๋ค๊ณ ํ๋๋ฐ, Pycharn 2016.3 ๋ฒ์ ์์ Python3.6์ ์ด๋ป๊ฒ ์ง์ํ๊ณ ์๋์ง์ ๋ํด์ ์ค๋ช ํ๊ณ ์๋ค. ํนํ f-string ์ ๋ํด์ Pycharm์์ ์ฐ๊ธฐ ์ฝ๊ฒ ์ง์ํ๊ณ ์๋๊ฒ์ ๋ณด์ฌ์ค๋ค. [**PYCON PH 2017 CDO**](https://py...
-
Dec 06, 2016๊ธฐ์ ๋งํฌ ์ ๋ฆฌ #1 - 2016/12/09####**ํ์ด์ฌ ๊ด๋ จ**#### [**Python 3.6.0 RC1**](https://docs.python.org/3.6/whatsnew/3.6.html) - Python3.6.0 Release Candidate1 ์ ๋ํ ๋ด์ฉ์ ๋ด๊ณ ์๋ค. ์ ๊ฐ๋ฉด ์ข๋ ์์ธํ ๋ด์ฉ์ ๋ณผ ์ ์๋ค. - CPython ๊ตฌํ ๊ฐ์ ์ ๋ํ ๋ด์ฉ์ด ์๋๋ฐ, dict ํ์ ์ ์ฌ๊ตฌํํด์ PyPy์ ๋น๊ตํด์ ๋ ๋น ๋ฅด๋ค๊ณ ํ๊ณ , Python3.5 ์ ๋น๊ตํด์ 20% ~ 25% ํฅ์ ๋์๋ค๊ณ ํ๋ค. - ํฌ๋งท ๋ฌธ์์ด์ด ์๋์ ๊ฐ์ด ๊ฐ๋ฅํด์ง๋ค. ```...
-
Dec 06, 2016(flask) JSON ๋ฐ์ดํฐ ๋ฐ๊ธฐ ๋ฐ ์์ธ์ฒ๋ฆฌflask ์์ json ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ ๋ reqeust.get_json() ํน์ request.json ์ ์ด์ฉํ ์ ์๋๋ฐ, mime type์ application/json ํ์ ์ผ๋ก ๋ณด๋ด๋๋ฐ, {} ์์ด ๋น JSON ๋ฌธ์์ด ์กฐ์ฐจ๋ ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ๊ฐ ์์์๊ฐ ์๋ค. ```python from flask import Flask from flask import request app = Flask(__name__) @app.route("/test", methods=['POST']) def test(): pri...
-
Nov 18, 2016(flask) jsonschema ๋ฅผ ์ด์ฉํด์ request.json ๊ฒ์ฌํ๊ธฐAPI์์ ํ๋ผ๋ฏธํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ ํ์์ ์ธ ์์์ด๊ธด ํ์ง๋ง, ๊ฐ๋ฐ์๋ก์ ์ฌ๊ฐ ๊ท์ฐฎ์ ์ผ์ด ์๋ ์ ์๋ค. API์ ์์ด ๋ง์์๋ก ํ ์ผ์ ๋ง์์ง๋ค. ์ธ์ธํ๊ฒ ์ฒดํฌํ ๋ถ๋ถ์ ํด์ผํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ผ๋ฏธํฐ ์ ๋ฌด, ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ ํ์ ์ฒดํฌํ๋ ๋ถ๋ถ์ด ํ์ํ๋ค. API๋ ๊ธฐ๋ณธ์ ์ผ๋ก JSON ์ `POST`๋ก ๋ฐ๋ ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด์ JSON์ ๊ฒ์ฆํ๋ ๋ถ๋ถ์ด ํ์ํ๋ค. JSON ๊ฒ์ฆ์ ์ํด์ [jsonschema](https://pypi.python.org/pypi/jsonschema) ๋ฅผ ํ์ฉํ ์ ์๋ค๋ ๊ฒ์ ์์๋๋ฐ, ๋ฌธ...
-
Aug 24, 2016SQLAlchemy with StoreProcedure...
-
Aug 23, 2016PyconAPAC 2016 ํ๊ธฐ ์ฌ๋ผ์ด๋...
-
Aug 03, 2016flask-runnerFlask ์์ ๊ฐ๋ฐ์ ํ ๋, Debug ์ต์ ์ ํค๊ณ app ์ ๊ธฐ๋ณธ ๋ด์ฅ๋ ๊ฐ๋ฐ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฐ๋ฐ ํ์ผ์ ์์ ํ๋ฉด ์ฌ์์ํ๋ ๊ธฐ๋ฅ์ ์ข์๋ฐ, `host` ๋ `port` ๋ฅผ ์ง์ ํด ๋๊ณ ์ฌ์ฉํ๋ค๊ฐ ๋ณ๊ฒฝํ ๋ ๊ท์ฐฎ์ ๋ถ๋ถ์ด ์๋ค. ํนํ `port` ๊ฐ์ ๊ฒฝ์ฐ ํน์ ํฌํธ๋ฅผ ์ง์ ํด๋๋ฉด ๊ผญ ๋ค์๋ ์ ๋๊ตฐ๊ฐ ์ฐ๊ณ ์์ด์ ๋ค์ ์์ ํด์ ์คํํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๋ค. [flask-runner](https://github.com/miguelgrinberg/Flask-Runner) ๋ ์ปค๋งจ๋๋ผ์ธ์ผ๋ก Flask ์ฑ์ ์คํํ ๋ ์ต์ ๋ค์ ์ค...
-
Jul 27, 2016Python flake8 ์ฌ์ฉํ๊ธฐ[pep8](https://pypi.python.org/pypi/pep8), [flake8](http://flake8.pycqa.org/en/latest/) ๋ฑ์ ํด์ด ํ์ด์ฌ ์ฝ๋์ ์ ์ ๊ฒ์ฌ๋ฅผ ํ๋ ํด์ด๋ค. ```python $ python -m pip install flake8 flake8 --count --exclude ./tests,./docs --ignore E501,F401 # --count : ์๋ฐ ๊ฐ์ ํ์ # --exclue : ํน์ ๋๋ ํ ๋ฆฌ ์ ์ธ, ์ผํ๋ก ๊ตฌ๋ถ # --ignore : ๋ฌด์ ๊ท์น ๋ช ์, ...
-
Jul 15, 2016docxtpl ๋ฅผ ์ด์ฉํ ๋ฌธ์ ์๋ํ์์ ์ ๊ฒฝ์ฐ, ๋ฐฑ์คํผ์ค๋ CMS ๋ฑ์์ import/export ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ๊ตฌํ ํ ๋ [XlsWriter](https://github.com/jmcnamara/XlsxWriter) ๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๋ ์ ์ด ์์๋ค. ๊ทธ์ ๋นํด์ ์๋ ๋ฌธ์๋ฅผ ์์ฑํด ๋ด๋ ์์ ์ ๋ณ๋ก ์์๋ค. ###๋ฐ๋จ์ ์ด๋ ๋ค. ๋ก๊ทธ ๋ถ์์ ํด์ ํต๊ณ๋ฅผ ๋ด๊ณ , ์๋ ๋ฌธ์ํ์ผ์ ๋ณด๊ณ ์ ํ์์ผ๋ก ๋ง๋ค์ด์ ์ฌ๋ฆฌ๋ ์์ ์ ๋งค์ ํ๊ณ ์๋๋ฐ, ํต๊ณ๋ฅผ ๋ด๋๊ฑด ์คํฌ๋ฆฝํธ๋ก ํด๊ฒฐ์ ํด์๋๋ฐ, ๊ทธ ์๊ฐ๋ณด๋ค ๋ณด๊ณ ์๋ฅผ ์์ฑํ๋ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ ธ๋ค. ๋ฌผ๋ก ์ฌ๋ด...
-
Jun 03, 2016[python] MySQL-Python ์ค์น์ค๋ฅ, mysql_config not found...
-
Mar 29, 2016tailon ์ผ๋ก ๋ก๊ทธํ์ผ ์น์์ ๋ณด๊ธฐ์๋ฒ์ ์๋ ๋ก๊ทธ๋ฅผ ์น์์ ํ์ธ์๊ฒ ๋ณด์ฌ์ค์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ(๊ฐ๊ธ์ ์ด๋ฐ ๊ฒฝ์ฐ๋ ์ข์ง ์์ ์ํฉ์ธ ๊ฒฝ์ฐ์ด๋ค.) ์ด๋ป๊ฒ ํ ๊น ์ฐพ์๋ณด๋ค๊ฐ python ์ผ๋ก ๋ tailonย ์ด๋ผ๋ ์ฝ๊ฒ ์ปค๋งจ๋ ๋ช ๋ น์ด๋ก ๋์ธ ์ ์๋ ํด์ด ์์ด์ ์๊ฐํ๋ค. https://github.com/gvalkov/tailon http://tailon.rtfd.org/ ํน๋ณํ ์๋ก๊ณ ์นจ ์์ด ์๋์ผ๋ก ๋ก๊ทธ๊ฐ ์ฌ๋ผ์ค๊ณ **GREP** ์ด๋ **AWK**๋ฅผ ํญ๋ชฉ์ด UI์์ ์๊ธฐ ๋๋ฌธ์ ์ํ๋ ๊ฒ์ ํค์๋๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฐ๋ก ๊ฒ์ํด์ ๋ณด์ฌ์ค๋ค. ํ๊ฐ์ง ๋จ์ ์ ์ด์ํ๊ฒ ...
-
Jan 11, 2016celery states์๋๋ celery ์ state ์ธ๋ฐ, ๋ณดํต celery-flower ์กฐํฉ์ผ๋ก ๋ง์ด ์ฐ๊ธฐ ๋๋ฌธ์ [flower](https://github.com/mher/flower)๋ฅผ ์ฐ๋ค๋ณด๋ฉด ์กฐํ ์กฐ๊ฑด์ค์ states ๊ฐ ์์ด์ ์๋์ ๊ฐ์ด ์ ๋ฆฌํด๋ณธ๋ค. ์ฆ์ ์คํํ๋ผ๊ณ ๋ช ๋ นํ๋ฉด STARTED-SUCCESS ๋๋ FAILURE ๋ก ํ์๋๊ฒ ์ง๋ง, `countdown`์ ์ฃผ์ด์ ์คํํ ๊ฒฝ์ฐ์๋ ์ฆ, ์ด๋ค ์์ฝ์ ๊ฑฐ๋ ๊ฒฝ์ฐ์๋ ํด๋น task๊ฐ RECEIVED ๋ก ํ์๋๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ [flower](https://github.com/mher/f...
-
Sep 03, 2015python csv and encoding in csv file.ํ์ด์ฌ์ csv ๋ชจ๋์ ์ด์ฉํด์ MS Excel2010 ์์ ๋ง๋ csv ํ์์ ๊ฐ์ ธ์ค๋ ์ฝ๋์ด๋ค. ๋ณ๊ฒ ์๋ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๋ ์ด์ ๋ ๋จ์ฐ ์ธ์ฝ๋ฉ ๋๋ฌธ์ธ๋ฐ csv ๋ชจ๋์ ํ์ด์ฌ2.7 ์์ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ์๋ค. > **Note This version of the csv module doesnโt support Unicode input. Also, there are curre...
-
Jul 16, 2015euc-kr data in flask### **ํ์ด์ฌ์์์ unicode์ str** - ์ ๋์ฝ๋๋ ํ๋ฌธ์ด๊ณ , str์ ์ํธํ๋ ์ ๋์ฝ๋๋ผ๊ณ ์๊ฐํ์. - charset ์ str ์ ๋ง๋ค๊ธฐ ์ํ ํค์ด๋ค. ์ฆ, unicode ์์ str ์ ๋ง๋ค๋ ค๋ฉด charset์ด ํ์ํ๊ณ , str์์ unicode ๋ฅผ ๋ง๋ค๋ ค๋ฉด charset์ด ํ์ํ๋ค. [![image2015-6-25 16 29 58](https://farm1.staticflickr.com/353/19544431756_5af01e9694_z.jpg...
-
Jun 01, 2015mod_wsgi libpython2.7.a could not read symbols bad value...
-
May 13, 2015Python - Sum the elements for the indices of each list๋ฆฌ์คํธ ์์ ๋ฆฌ์คํธ๊ฐ ์๊ณ ๊ฐ index ๋ณ๋ก ํฉ๊ณ๋ฅผ ๊ตฌํ ์ผ์ด ์์ด์ stack overflow ๋ฅผ ๋ณด๊ณ ์ง ์ฝ๋์ธ๋ฐ ์๋ ๊ธฐ์กด์ ์ ๊ณต๋ ์ฝ๋์์ None ์ด ์๋ ๊ฒฝ์ฐ์ ํํด์ 0 ์ฒ๋ฆฌํ๊ฒ ๋ฟ์ด๋ค. ์ฝ๋๊ฐ ์ฝ๊ฐ ๊ธธ์ด์ง ๋๋์ด ์๋๋ฐ ์งง๊ฒ ๊ณ ์ณ์ฃผ์ค ๋ถ์ ์์ gist์ ๋ค์ด๊ฐ์ ์ ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌ(. .) ...
-
Apr 22, 2015Python: Tips, Tricks and Idioms์๋ฌธ : [Python: Tips, Tricks and Idioms](https://codefisher.org/catch/blog/2015/01/27/python-tips-tricks-and-idioms/?utm_source=Python+Weekly+Newsletter&utm_campaign=8416b188e6-Python_Weekly_Issue_176_January_29_2015&utm_medium=email&utm_term=0_9e26887fc5-8416b188e6-312692397 "Python: Tips, Tricks an...
-
Mar 27, 2015[python] home(~) ๊ฒฝ๋ก ๊ฐ์ ธ์ค๊ธฐ#### python get user home path ...
-
Feb 12, 2015python json ๊ธฐ๋ฐ conf ํ์ผ ๋ก๋ํ๊ธฐ(object_hook)conf ๋ฅผ json ํ์ผ๋ก ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ฃผ๋ก ๊ฐ์ธ ํ๋ก์ ํธ ํ ๋ ๋ง์ด ์ฐ๋ ํธ์ธ๋ฐ ๊ฒฐ๊ตญ conf ๋ผ๋๊ฒ์ ํ๊ฒฝ์ค์ ํ์ผ์ด๊ธฐ ๋๋ฌธ์ ํ์ผ๋ก ๊ฐ์ ธ์์ ์ฝ์ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด ๊ฒฝ์ฐ json ์ ๋ฐ๋ก dict ์ผ๋ก loads ํด์ ์ฌ์ฉํ๊ฒ ๋๋ฉด conf[โportโ] ์ด๋ฐ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋๋ฐ object_hook ๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ์ฒด์ ํํ๋ก ์ ๊ทผํ ์๊ฐ ์๋ค. ์ข๋ ์ฝ๋๊ฐ ๊น๋ํด ์ง๋ค๋๊น.ย ...
-
Feb 02, 2015python 3ํญ ์ฐ์ฐ์์ด๊ฑธ ์ธ์ ์ฐ๋๋ผ๊ณ ์๊ฐํ์ง๋ง, ๋ด๊ฐ ์ค๋ ์ด ๊ธ์ ์ ๊ฒ ๋ ์ค์ โ๋โ์กฐ์ฐจ๋ ๋ชฐ๋๋ค. 3ํญ ์ฐ์ฐ์, ์ผ๋ช if ์ถ์ฝ ์ด๋ผ๊ณ ๋ ํ๋๋ฐ ์ฌ์ค ๊ทธ๋ฆฌ ์ธ์ผ์ด ๋ง์ง๋ ์์๋ฐ flask ์์ ์ ๋ ์ง์ฆ๋๋ ๋ถ๋ถ์ด ์์ด์ ์ฐ๊ฒ ๋์๋ค. flask ์์ ํจ์๋ฅผ ๊ตฌ์ฑํ๋ค ๋ณด๋ฉด ์ด๋ฐ์ ํ๋ ๊ฒ์ค ํ๋๊ฐ request ๊ฐ์ฒด์์ get ํน์ post ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์ ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก get ์ ๊ฒฝ์ฐ `request.args.get("id", None)` ์ด๋ฐ์์ผ๋ก ๊ฐ์ ธ์ค๋๋ฐ get ...
-
Jan 30, 2015python response data for flaskflask ๋ก ์์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋๊ฐ์ง์ธ๋ฐ, view ๋ฅผ ๋ง๋ค๊ฑฐ๋ ์๋๋ฉด json ํํ๋ก api ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ง๋ค๊ฑฐ๋. ๊ทธ๋ฐ๋ฐ ์ฒซ๋ฒ์จฐ๋ ๋จธ `render_template` ์ฌ์ฉํ๋ ๊ฑฐ๊ณ , ๋๋ฒ์งธ api ๊ฒฐ๊ณผ์ ๊ฒฝ์ฐ ๋ณดํต ๊ณตํต์ ์ธ api ๊ฒฐ๊ณผ ํ์/ํฌ๋งท์ ๋ง๋ค์ด์ ๋ฐํํ๊ธฐ ๋ง๋ จ์ด๋ค. ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ์์ด ์๊ฒ ์ง๋ง, ์ ํธํ๋ ๋ฐฉ์์ meta ์ data ๋ก ๋๋๋ ๊ฒ์ธ๋ฐ meta ์๋ code ๊ฐ ๋ค์ด๊ฐ๋๋ฐ http status code ํน์ ํ์ฅํ ๊ฒฝ์ฐ ํ์ฅ์ฝ๋๊ฐ ๋ค์ด๊ฐ๊ณ message ๋ ๋ณดํต ์๋ฌ์ ๊ฒฝ์ฐ ์์ธ ์๋ฌ๋ฉ์์ง๊ฐ ๋ค์ด...
-
Jan 29, 2015python mysqldb DictCursor ์ด์ฉํ๊ธฐ์๋ฌด๋๋ ์ ์ผ๋ง์ด ์ฌ์ฉํ๋๊ฒ mysql ์ด๊ณ python ์ผ๋ก ์ฐ๋ํ๊ธฐ ์ํด์ย MySQLdb ๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋งจ๋ ๊ธฐ์กด cursor๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณค ํ๋ค.ย ...
-
Jan 21, 2015python create excel, add sheetํ์ด์ฌ์์ ์์ (csv ํ์์ด ์๋) ํ์ผ์ ๋ง๋ค๊ณ ์ํธ๋ฅผ ์ถ๊ฐํ๋ ์ฝ๋์ธ๋ฐย openpyxl ์ ์ฌ์ฉํ๋ ์ฝ๋์ด๋ค. ํ๋ผ๋ฏธํฐ๋ก ์ ์ก๋๋ ๊ตฌ์กฐ์ ์ข ์์ ์ธ ํจ์์ด๊ธด ํ๋ฐ, ๊ฐ๋จํ๊ฒ ์ฌ์ฉ๋ฒ์ ์ ์ด๋๋ ๋ชฉ์ ์ด๊ธฐ์. ์ข ์ ๋งคํ ๋ถ๋ถ๋ค์ค ํ๋๋ ์ฒซ ์ํธ๋ฅผ ์ง์ฐ์ง ์์ผ๋ฉด ์ํธ ์ถ๊ฐ์ Sheet ๋ผ๋ ์ด๋ฆ์ ์ฒซ ์ํธ๊ฐ ๋จ์ ์๋ ๋ฌธ์ ๊ฐ ์...
-
Dec 26, 2014[svn] svn log with diff yesterday๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์๋ฌด๋๋ ์ดํด๋ฅผ ๋ ์ ํ ์ ์๋ ํนํ ๊ฐ์ ํ๋ก์ ํธ๋ ๊ฐ์ ํ์ด๋ผ๋ฉด ์ธ์ด๊ฐ ๋ค๋ฅด๋๋ผ๋ ๋ณด๋๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ๋๋ฐ ์์ฒญ ๋ง์ ์ ์ฅ์๋ฅผ ์ผ์ผํ ๋ค์ ธ๊ฐ๋ฉฐ ๋ณผ์๋ ์๋ค. ์๋์ ์คํฌ๋ฆฝํธ๋ ํ๋ฃจ์ ์ ์ปค๋ฐ๋ก๊ทธ์ ํจ๊ป ๊ทธ์ ๋ํ diff ๋ฅผ ๋ ์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ฌ ์คํฌ๋ฆฝํธ์ด๋ค. ํ์ผ์ ์ ์ฅ์ ์ด๋ฆ๋ณ๋ก ๋ง๋ค๋๋ก ํ๋๋ฐ ํ๋์ ํ์ผ์ ๋ง๋ค์ด๋ ๋๊ธด ํ์ง๋ง diff ๋ฅผ ๋จ๊ฒ ๋๋ฉด ์์ด ์์ฒญ ๋ง์์ง๋ค. ...
-
Dec 18, 2014flask logger decorator(๋ฐ์ฝ๋ ์ดํฐ)์ ํจ๊ป ์ฌ์ฉํ๊ธฐ###๊ธฐ๋ณธ๋ก๊ทธ ์ธํ ํ๊ธฐ### ๋ก๊ทธ์ ๋ํ ๋ถ๋ถ์ด ๋ ๊ฑฑ์ ์ด๊ธด ํ๋ฐ, ์ฌ์ค ๋ฐ๋ก python logger ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ๋ก๊ทธ๋ ๋จ๊ธฐ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ๋ง๋๋ ํ๋ก์ ํธ ๋ง๋ค ๋ถ์ฌ์ ์ฌ์ฉํ๋ ์์ผ๋ก ํ์๋๋ฐย ์ด๋ฒ์ flask ์ ์๋ logger ๋ฅผ ์ด์ฉํด ๋ณด๊ธฐ๋ก ํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ช๊ฐ์ ํธ๋ค๋ฌ๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.ย - FileHandler ย โ ๋ก๊ทธ ๋ฉ์์ง๋ฅผ ํ์ผ์ ๋จ๊ธด๋ค.ย - RotatingFileHandler โ ๋ก๊ทธ๋ฉ์์ง๋ฅผ ํ์ผ์ ๋จ๊ธฐ๊ณ , ํน์ ์ ์ด์์ด๋ฉด ๋ค์ํ์ผ๋ก ๋๊ฒจ์ ๋ก๊ทธ๋ฅผ ๋ง๋๋ ํธ๋ค๋ฌ, maxByt...
-
Dec 02, 2014python ๋ฆฌ๋ ์ค ํ๋์จ์ด ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ์๋ฒ๊ฐ ๋ค์ด์์๋ ์ฒ์์ผ๋ก ํด์ผํ๋ ์์ ์ด ์๋ฒ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ๋จ๊ฒจ๋๋ ์์ ์ธ๋ฐ, ์์งํ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด๋ก ํ๋๊ฒ ๋ ํธํ๊ธด ํ์ง๋ง, ๋ด๊ฐ ๊ทธ๋ฐ ๋ช ๋ น์ด์ ์ต์ํ์ง ์๊ณ , ํ์ด์ฌ์ด ๋ ์ต์ํ ์ง๋ผ ์๋์ ํ์ด์ฌ ์ฝ๋๋ฅผ ๋๋ ค์ ์ํํ๋ฉด ๋๋ค. ๊ธฐํ ๋ฆฌ๋ ์ค ํ๋์จ์ด ๊ด๋ จ ์ ๋ณด ํ์ด์ฌ์ผ๋ก ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐย [http://amitsaha.github.io/site/notes/articles/python_linux/article.html](http://amitsaha.github.io/site/notes/articles/python_linux/...
-
Dec 01, 2014flask file download์์ฃผ ๊น๋จน๋์ง๋ผ, ์๋ฒ์ ํ์ผ๋๊ณ ๋จ์ ๋ค์ด๋ก๋์ `send_from_directory` ํจ์ ์ฌ์ฉ. ...
-
Nov 30, 2014python Celery ๊ธฐ๋ณธ ์ธํ์์ ๋ถํฐ ์จ๋ณด๊ณ ์ถ์๋๋ฐ ๊ด๋ จ ์ ๋ฌด๊ฐ ์ฃผ์ด์ ธ์(์ ํํ๋ ๊ทธ๋ฅ ๋ด๊ฐ ์ฐ๊ณ ์ถ์๋ฐ ์ ๋ฌด์๊ฐ์ ํ ์คํธ ํ๊ณ ์ถ์ด์) ์ ๋ฆฌํด ๋ณธ๋ค. ๊ทธ๋ฅ ์์ฃผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ ค๋ณด๋ ์ ๋.ย **Broker ์ธํ (Redis)** โ [redis.io](redis.io) ์์ ์ค์นํ๋ฉด ๋ย โ ํํ์ด์ง์ ๋์์๋ ๋ณ๋์ ์ธํ ์ redis.conf์์ ํ๋๊ฒ์ด ์๋.ย **Task ๋ง๋ค๊ธฐ** โ ํ๊ณ ์ ํ๋ ์ผ์ ์ ์ํ๋๋ฐ `@app.task` ๋ผ๊ณ ์จ๋๋ค.ย ...
-
Nov 29, 2014python 1000 ๋จ์ ์ผํ ์ฐ๊ธฐ์ก๋คํ๊ธฐ ๋ฌธ์์ด ์ ์ธ์ ์ฐ์์๋ ์๊ฒ ์ง๋ง. ใ ใ ย ...
-
Nov 27, 2014๋ฆฌ๋ ์ค์์ pyodbc ์ด์ฉํด์ mssql๊ณผ ์ฐ๋ํ๊ธฐ์ผ๋ฐ์ ์ผ๋ก python-mssql ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์๋์ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.ย ์ด๋ pyodbc๋ pymssql ๋ค์ ๋ด๋ถ์ ์ผ๋ก ์๋์ฐ์ ์ค์น๋ SqlClient ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๊ฒ ๋๋ค.ย **๋ฌธ์ ย : ๋ฆฌ๋ ์ค ํ๊ฒฝ์์๋ SqlClient ์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ฐ ์ด๋์ ์์กดํด์ผ ํ ๊น?** pyodbc ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ์๋ฉด, ๋ฆฌ๋ ์ค ํ๊ฒฝ. CentOS, Ubuntu, MAC OSX ๋ฑ์ ํ๊ฒฝ์์๋ย unixODBC ์ FreeTDS ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค. ย ย **[ unixODBCย ](http://ww...
-
Nov 26, 2014[python] ์ด๋ฉ์ผ๋ณด๋ด๊ธฐ, unable to relay ๋ฌธ์ ํด๊ฒฐํ์ด์ฌ์์ ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ์ ๋ํ ์์ค์ธ๋ฐ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋๋ค. SMTP ๋ฅผ ์ด์ฉํด์ ์ง์ ๋ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด๋ ์์ค์ฝ๋์ธ๋ฐ ๊ฐ๋จํ๊ฒ ์ฌ๋ด์์ ์์คํ ์์ ๋ญ๊ฐ ๋ฐ์์ด ๋์์๋ ์ฝ๊ฒ ์๋ฒ๊ด๋ฆฌ์์ ๋ฉ์ผ๋ก ๋ณด๋ผ์๊ฐ ์๋ค.(์์ฆ์ ๋ฉ์ ์ ๋ก ๋ณด๋ด๋๊ฒ ์ผ๋ฐ์ ์ด์ด์) ย ย ๊ทธ๋ฐ๋ฐ ์์ ์์ค์ฝ๋์์ ์ฌ๋ด ์๋ฒ๊ฐ ์๋๋ผ gmail, naver...
-
Nov 25, 20148.18. pprint โ Data pretty printer โ Python 2.7.8 documentation# [8.18. pprint โ Data pretty printer โ Python 2.7.8 documentation](https://docs.python.org/2/library/pprint.html) ์ฐ์ฐํ json ์ ...
-
Nov 25, 2014[flask] robots.txt, sitemap.xmlstatic ๋๋ ํ ๋ฆฌ์ robots.tx, sitemap.xml ํ์ผ์ด ์๋ค๋ ๊ฐ์ ํ์ ์ฌ์ฉํ๋ฉด ๋๋ค.ย robots.txt ์ ๋ํ ์ค๋ช ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ์กฐ.ย [ https://support.google.com/webmasters/answer/6062608?hl=ko](https://support.google.com/webmasters/answer/6062608?hl=k...
-
Nov 24, 2014Ansible ๊ฐ๋จ์ดํด#๊ฐ์ - ๊ฐ๋จํ ์ ๊ธฐํ์๋ฉด ๋ด ์ปดํจํฐ์์ ์๋ฒ์ ์๊ฒฉ์ ์ ํน์ ์ง์ ์ ์ธ ssh ์ ๊ทผ์ ํ์ง ์๊ณ ๋ญ๊ฐ ์์ , ํน์ ๋ฐฐํฌ๋ฅผ ํ ๋ ์ฌ์ฉํ๋ ํด์ด๋ค. - ํ์ด์ฌ ๊ธฐ๋ฐ์ผ๋ก ๋์ด ์๋ค. ### ์ค์น - python 2.6 ์ด์ ๊ถ์ฅ, ๊ทธ ์ดํ ๋ฒ์ ์์ ์ค์นํ๋ฉด ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผ ํ๋ค.ย ```bash sudo pip install ansibleย ``` ### ์๋์ฐ ์๋ ๊ด๋ จ - Ansible 1.7 ๋ฒ์ ์ดํ์์๋ ์๋ ์๋์ฐ ์ง์ํ์ง ์์๋ค. - 1.7์ด์๋ถํฐ ์กฐ๊ฑด๋ถ ์ง์์ ํ๊ณ ์๋๋ฐ ssh ๋์ ์ Pow...
-
Oct 07, 2014Python Weekly 159ํ์ด์ฌ ์ํด๋ฆฌ์์ ๊ฐ์ธ์ ์ผ๋ก ๊ด์ฌ์๋๊ฒ๋ค๋ง ์ ๋ฆฌํ์์.ย [**memory_util**](https://github.com/jtushman/memory_utils) โย [https://github.com/jtushman/memory_utils](https://...
-
Oct 02, 2014Deview2014 Review9/29์ผ(์) 9:00 ~ 18:00ย **1.ย ํ๋ณตํ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ ์ฒ ํย : ์ ์๋ฌธ** - ์ธ๋ถ์๊ฑด๋ค์ ์ด์ฉ์๊ฐ ์๋ค. ๊ฒฐ๊ตญ ๋ด๋ถ โ๋โ์ ์ง์คํด๋ผ. ...
-
Feb 24, 2014pypi ์ฌ๋ฆฌ๊ธฐ ์ ๋ฆฌ์ฌ๋ฆด๋ ๋ง๋ค ๊ณ ์ํ๋๋ฐ ๊ฐ๋จ ์ ๋ฆฌย **** **1. pypi.python.org ์ ๋ก๊ทธ์ธ** **2. setup.py๊ฐ ์ค๋น๋ ์ํ** ```shell python setup.py registerย ``` **3. ์ฌ๋ฆฌ๊ธฐ**ย ```shell python setup.py sdist upload ``` ** ์ฃผ์...
-
Feb 19, 2014[python] Wand๋ฅผ ์ด์ฉํ ์ธ๋ค์ผ(Thumbnail)์ด์ ํฌ์คํ ์์ [PIL](http://lab.ash84.net/1071) ์ ์ธ๊ธํ๋ฉด์ ํผ์์ wand๊ฐ ์ธ๋ค์ผ ๋ง๋ค๊ธฐ์ ๋ ํธํ๋ค๊ณ ์จ๋จ๋๋ฐ, ํ๋ฒ ๋ฉํํ ํด๋์ค์ด๋ค. ๊ณต๊ฐํ๊ธฐ๋ ๋ฏผ๋งํ๊ธด ํ๋ฐ. ์ฌ๋ฌ๊ณณ์ ์ด์ฉํ๋๋ฐ, ์ด๋ฏธ์ง ๋ค์ด๋ก๋ ์ํค๊ณ ์ธ๋ค์ผ ๋ง๋๋ ์์ ์ด๋ ์ต๊ทผ์ ํ์ฌ์์ ๋ฉ๋ด์ผ ์ด๋ฏธ์ง๋ฅผ ์๋ํํ๋ ์์ ์ ํ๋๋ฐ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค. ...
-
Jan 22, 2014django-endless-pagination ์ ์ด์ฉํ ํ์ด์ง๊ตฌํํ์ด์ง ๊ธฐ๋ฅ์ ์ฌ์ค ๊ฒ์ํ์ ์์ด์ ํ์์ ์ธ ๊ธฐ๋ฅ์ธ๋ฐ ๊ตฌํํ๋๋ฐ ์์ด์ ๊ฒ์ ๋จน๊ฒ ๋๋๊ฒ ๊ฐ๋ค. (๋๊ฐ์ ์ด๋ณด ์น์์ด๋ ๋ ๊ทธ๋ ์ง) django ์์ ํ์ด์ง ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๊ฒ์ด ์์๊น ์ถ์ด์ [djangopackages](https://www.djangopackages.com/) ์์ ์ฐพ์ ๋ดค๋๋ฐ pagination ์ด๋ผ๋ ๋จ์ด๋ก ๊ฒ์ํ์๋ search weight ๊ฐ 78%์ธ [django-endless-pagination](http://django-endless-pagination.readthedocs.org/) ๋ฅผ...
-
Jan 13, 2014(django) djangopackage.com![](http://ash84.net/wp-content/uploads/1/cfile30.uf.257F4C5052D3A44C267839.png) maven, pypi, npm ๋ฑ์ ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ๊ฒ ๊ฒ์, ์ค์น, ์ฐ๋, ๊ด๋ฆฌํ ์ ์๋ ํด๋ค์ด ์๋๋ฐ djangopackage.com ์ pypi ์์ ์๋ django ๋ถ๋ถ์ ํนํ์์ผ๋์ ๋ถ๋ถ์ด๋ผ๊ณ ๋ณด์ฌ์ง๋ค. ์ฌ์ค ํ๋์ ๊ฐ๋ฐ์ด๋ผ๊ณ ํ๋ ๋ถ๋ถ์ด ๋น ๋ฅด๊ฒ ๊ฐ๋ฐ๋๋๊ฒ์ด ์๊ตฌ๋๊ณ ๊ทธ๋ฌ๋ ค๋ฉด ํ์๋ถ๊ฐ๊ฒฐํ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ...
-
Dec 26, 2013python travis-ci ์ github repository ์ฐ๋ํ๊ธฐ๋ณ๊ฑฐ ์๋ค. ํ์ด์ฌ ๊ธฐ์ค์ผ๋ก ์ค๋ช [travis-ci](https://travis-ci.org) ๋ github ์ ์ฐ๊ฒฐ๋์ด์ ๊ฐ๋ฐ์๊ฐ ์ด๋ค commit์ ํ ๋๋ง๋ค ์ํ๋ ํ ์คํธ ํน์ ๋น๋๋ฅผ ํ ์ ์๋ ์๋น์ค๋ผ๊ณ ๋ณด๋ฉด ์ดํด๊ฐ ์ฌ์ธ๊ฒ ๊ฐ๋ค. ์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๋์ ํ๊ณ , python ์ unitttest ๋ฅผ travis-ci ๋ก ์คํ์ํค๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ github README.md ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช ํ๊ฒ ๋ค. #### 1. ๊ธฐ๋ณธ ์ฐ๋ ...
-
Dec 17, 2013(Django) Aptana Studio3 Django Not found ์ค๋ฅ ํด๊ฒฐ๋ฒDjango ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋๋ฐ pip install django ๋ก django๋ฅผ ์ค์นํ์์๋ ๋ถ๊ตฌํ๊ณ Django not found ๋ผ๋ ์ค๋ฅ์ฐฝ๊ณผ ํจ๊ป ํ๋ก์ ํธ๊ฐ ์์ฑ๋์ง ์๋๋ค. ํ์ฐฝ ์ฝ์ง์ ํ๋๋ฐ ๋ฌธ์ ๋ path ๋ถ๋ถ์์ site-packages ๋ฅผ ์ก์์ฃผ์ง ์์์ ์๊ธฐ๋ ๋ฌธ์ ์ด๋ค. APTANA STUDIO3 ์์ preference ์ ๋ค์ด๊ฐ์ pydev=> interpreter-python ์ ๋ค์ด๊ฐ๋ฉด ์๋์ ํ๋ฉด์ ๋ณผ์ ์๋ค...
-
Dec 16, 2013(python) daum_openapi ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ๊ธฐ[Daum Open API](http://dna.daum.net/apis/dashboard) ์ค์์ ๋ฐ์ดํฐํ API ๋ฅผ ์ฝ๊ฒ ์ธ ์ ์๋ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ pypiย ์ ๋ฑ๋ก์ ํ์๋ค. ์ด๋ฏธ Daum ์ชฝ์์ python ์ผ๋ก api๋ฅผ ํธ์ถํ ์ ์๋ ์์ ์ฝ๋๋ฅผ ์ ๊ณตํ๊ณ ์๋๋ฐ,ย ๋ง๋ค๊ฒ๋ย ๊ณ๊ธฐ๋ ์๋์ ๊ฐ๋ค.ย ...
-
Nov 11, 2013(flask) Pluggable View, Class ์์ ์์ฒญ์ฒ๋ฆฌํ๊ธฐ[Pluggable View](http://flask.pocoo.org/docs/views/?highlight=as_view) ๋ผ๊ณ ๋ง์ด ์ด๋ ค์ด๋ฐ, ๊ฐ๋จํ๊ฒ ๋งํ์๋ฉด flask ๋ ๊ธฐ๋ณธ์ ์ผ๋ก url ๊ณผ ํจ์์ ๋งตํ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ์๋์ย Quick Start ์์๋ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, url โ/ โ ๋ hello_world() ๋ผ๋ ํจ์์ ๋งตํ์ด ๋์ด ์์ด์ / ๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด hello_world() ํจ์๋ก ๋ค์ด์ค๊ฒ ๋๋ค.ย ...
-
Nov 04, 2013(python) usage loggingflask ๊ด๋ จ ์์ ์ ํ๋ฉด์ ๋ก๊น ์ ์ด๋ป๊ฒ ํ ๊น ํ๋ ์๊ฐ์ด ์์๋๋ฐ python ์ ๊ธฐ๋ณธ์ ์ผ๋ก logging์ ํ์ฌํ๊ณ ์์ด์ ์ด๋ ๊ฒ ์ฌ์ฉ๋ฒ์ ์ฌ๋ฆฐ๋ค. ๋ณ ๋ค๋ฅธ ๊ฑด ์๊ณ , basicConfig ๋ผ๋ ๊ฒ์ ํตํด์ filename, filemode, level ์ ์ค์ ํ ์ ์๋๋ฐ file ๊ด๋ จ ์ค์ ์ ํ์ง ์์ผ๋ฉด stdout ์ผ๋ก ์ถ๋ ฅ๋๊ฒ ๋๋ค. ์์ธํ ์ฌํญ์ย [http://docs.python.org/2/library/logging.html](http://docs.pytho...
-
Oct 29, 2013(python) try ~ except and trace์ด์ํ๊ฒ ํ์ด์ฌ์ ๋นจ๋ฆฌ ๋นจ๋ฆฌ ๋๋ฑ ๋ง๋๋ ์ธ์ด๋ก ๋ง์ด ์ฐ๋๋ฐ(์ฌ์ค ๋๋ ๊ทธ๋ ๊ฒ ์ด๋ค.) ๊ทธ๋ฐ๋ฐ ๊ฐํธ pypi ์ ์ฌ๋ ค์ ์์ ์๋จน์ผ๋ ค๋ฉด ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ค. ๋น์ฐํ ์ ๊ธด๋ฐ. ใ ใ ์๋ฌดํผ ์์ ์์ค์ฝ๋๋ฅผ ๋ณด๋ฉด try: ~ except: ๋ฌธ์ผ๋ก ๋ฌถ๋ ๊ฒ์ด ๊ธฐ๋ณธ์ด๋ค. catch ์ ํด๋นํ๋ ๊ฒ์ด except ๋ผ๊ณ ๋ณด๋ฉด ๋๋๋ฐ, Javaย ์ฒ๋ผ ์์ธํ ๋...
-
Oct 28, 2013(flask) jinja2 {% include %} ํ์ฉ๋๋จํ๊ฑด ์๋๊ณ , flask ๋ ๊ธฐ๋ณธ์ ์ผ๋ก jinja2 ๋ฅผ ํ ํ๋ฆฟ ์ธ์ด๋ก ์ฌ์ฉํ๋๋ฐ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ํ๋์ template์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋์ด ์ง๋ ๋ถ๋ถ์ด ์๋ค. ์๋ฅผ ๋ค๋ฉด, ๊ฐ์ css ๋, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ์ ธ์ค๋ header์ ๋ถ๋ถ์ด๋ ์๋จ์ navigation ๋ถ๋ถ, ํ๋จ์ footer ๋ถ๋ถ์ด ๊ทธ๋ฌํ๋ฐ ์ผ์ผํ ๋ชจ๋ ํ ํ๋ฆฟ์ ๋ฃ์ด ์ฃผ๊ธฐ๋ ๊ท์ฐฎ๋ค. ๊ทธ๋์ jinja2 ์์๋{% ย include %} ๋ฅผ ํตํด์ ํ๋์ html ์์ ๋ค๋ฅธ html ์ ๊ฐ์ ธ์ฌ์ ์๋๋ก ํด์ค๋ค....
-
Oct 23, 2013(flask) tornado ์๋ฒ ์ ์ฉ๋ค๋ค ์์๊ฒ ์ง๋ง flask ๋ด์ฅ ์๋ฒ๋ ๊ตฌ๋ฆฌ๊ณ , ์ฌ์ค ์ด์ฉ๋๋1๋ฒ ์ดํ์ ์ ์์ด ์๋ ๋๋ ๋ง๋ค. ๊ทธ๋์ flask ๋ฌธ์์์๋ ๋ฐฐํฌ์์๋ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ๊ถ์ฅํ๊ณ ์๊ธฐ ๋๋ฌธ์ tornado ์๋ฒ๋ฅผ ๋ถ์ผ์๊ฐ ์๋ค. ์ฌํ์ ๋ค๋ฅธ ์๋ฒ๋ฅผ ๋ถ์ผ์๊ฐ ์๋๋ฐย ๋งํฌ๋ฅผ ํ์ธํ๋ฉด ๋๋ค.ย ์ผ๋จ tornado๋ฅผ ์ค์นํ๋ ๋ฒ์ ์๋์ ๊ฐ๋ค. ๋น์ฐ pip. ...
-
Oct 06, 2013(flask) static ํ์ผ ์ง์ gist ํ๋์ ๋ค ๋ฃ์ด์ ์ค๋ช ํ์๋ฉด, main.py ์์ ๋จผ์ static_folder ๋ฅผ static ์ผ๋ก ์ง์ ํด ์ฃผ๊ณ ์ค์ ํ๋ก์ ํธ ํด๋ ๋ด์ static ์ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ css, js ํด๋๋ฅผ static ํ์์ ๋ง๋ค๊ณ ๊ด๋ จ ํ์ผ๋ค์ ๋ฐฐ์นํ๋ค. ๊ทธ๋ฆฌ๊ณ html ๋ด์์๋ url_for ๋ฅผ ์ด์ฉํด์ ์ง์ ํด ์ฃผ๋ฉด ๋๋ค.ย ...
-
Sep 06, 2013(flask) http get url ์ฒ๋ฆฌ๋น์ฐํ ์ต๊ทผ์๋ ์คํAPI๋ ํน์ ๊ฐ๋จํ๊ฒ ์น ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ค๊ณ ํ๋ฉด Http Get ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋๋ฐ flask ์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ ํ ์ ์๋ค. `@app.route()`ํจ์์์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ์ง์ ์ ํด์ฃผ๊ณ ๋๋ฉด `request.args.get()` ํจ์๋ฅผ ํตํด์ ํด๋น url ๋ก ๋์ด์จ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.ย ...
-
Aug 28, 2013(python) image download conv base64base64๋ก ๋ณํ์ ํด์ผํ๋ ์ด์ ๋ถํฐ ์ค๋ช ํ์๋ฉด ๊ฐ๋จํ๋ค. ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ, ํ์ผ์๋ฒ์ ์ ์ฅํ๋ ๊ฒ์ด ์ต๊ณ ์ ๋ฐฉ๋ฒ์ด๊ธด ํ์ง๋ง ๋ค๋ค ์๋ค์ํผ ์๋ฒ์ ์ฉ๋ ๋ฌธ์ ๊ฐ ์์ด์ OpenAPI๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋๋...
-
Aug 08, 2013(flask) helloworld.pypip install flaskย ย ...
-
Jul 16, 2013(python) opengraph ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆฌ๋ทฐ์ฌ์ค [์คํ๊ทธ๋ํ](http://ogp.me)๋ผ๋ ๊ฒ์ ๋ํด์ ์๊ฒ ๋๊ฒ์ [์ ํฌ์คํ ](http://ash84.tistory.com/1000)์์ ๋งํ์ง๋ง ์ฐ์ฐํ ๊ธฐํ์๋ค. ๋ ๊ทธ๋๋ง ํด๋ ์ฌ์ ํ ์คํ๊ทธ๋ํ์ ๋ํด์ ์ ๊ธฐํดํ๊ณ ์๋ ํฐ๋ผ ๊ตฌ๊ธ ๊ฒ์์ ํด๋ณด์๋๋ฐ ํ์ด์ฌ ๊ธฐ๋ฐ ์คํ...
-
Jul 13, 2013(python) html unescapeHTML ๊ฐ์ ธ์จ ๊ฒ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ํ ๋ ๋ฐ๋์ ํด์ผํ๋ ์์ ์ค์ ํ๋๊ฐ ๋ฐ๋ก ์ธ์ด์ค์ผ์ดํ์์ (Unescape) ์ด๋ค. HTML ์์ ํน์ ๋ฌธ์๋ค์ ์ด๋ค ์ผ๋ จ์ ๋ฌธ์์ด๋ก ํํ์ด ๋๋ค. ์๋ฅผ ๋ค๋ฉด, โ โ ๊ณต๋ฐฑ์ ย ย <, > ์ < > ์ด๋ฐ์์ผ๋ก ๋ง์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ ๋ฌธ์๋ค์ด ์๋ ์ฐ๋ฆฌ๊ฐ ์ดํดํ๋ ํน์๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๋ ์์ ์ ํ๋๋ฐ ๊ทธ๊ฒ์ unescape ์์ ์ด๋ผ๊ณ ํ๋ค. ๋ฐ๋๋ก ํน์๋ฌธ์๋ค์ ์ผ๋ จ์ ์ฝ์๋ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋๊ฒ์ escape ์์ ์ด๋ค.ย ...
-
Jul 12, 2013(python) ์ฌ์ ์ ๋ ฌ dictsort.py์ฌ์ ๊ตฌ์ถ์์ ๊ฐ์๊ฒ์ ย ์๋๋ฐ, ์ฌ์ค ์ ๋ ฌ์ ํ๊ณ ๋ญ๊ฐ ํํฐ๋ง ์์ ์ด์งํ์๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฐพ๋๊ฒ์ด ๋น ๋ฅด๊ธด ํ๋ค. ๋๋ฌธ์ ์ฌ์ ๊ตฌ์ถ์์ ์์ ์๋ฌด๋๋ ์ ๋ ฌ์ ํ๋๊ฒ ์ข๊ธด ํ๋ฐ, ์ฌ๋์์ผ๋ก ํ๊ธฐ์ ์ฌ์ ์ ์์ด ๋ง์์ง๋ฉด ๋ง์ ์ง์๋ก ํ๋ค๋ค. ์๋์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, `-f file `๋๋ `-d directory` ๋ฑ์ ์ต์ ์ผ๋ก ํ์ผํ๋ ํน์ ์ฌ์ ์ด ์๋ ๋๋ ํ ๋ฆฌ ์์ฒด๋ฅผ ์ง์ ํ ์ ์๋๋ก ํ์๋ค.ย ...
-
Jul 10, 2013(python) webkit2png, webpage screenshot์๋๋ ์ด๊ฒ์ ์ฐพ์ผ๋ ค๊ณ ํ๊ฒ ์๋๊ณ , ์น ํ์ด์ง์์ ์ฌ๋ฌ๊ฐ์ง ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐพ๋์ค์ ์ฐพ์ ์ฌ๋ฐ๋ ์ผ์ข ์ ํด์ธ๋ฐ,ย **ํ์ด์ฌ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ํ ์น ํ์ด์ง์ ์คํฌ๋ฆฐ์ท์ ๋จ๋ ์์ **์ ํด์ค๋ค.ย ...
-
Jan 15, 2013(Python) ๊ฐ๋จํ๊ฒ ํ ์คํธ ํ์ผ ๋ง๋ค๊ธฐ์ ์ฒด ํน์ฑ์ ํ ์คํธ ํ์ผ์ ๋ง์ด ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ผ์ผํ ๋ค ๋ง๋ค๊ธฐ๋ ๊ท์ฐฎ๊ณ ๋๋ก๋ ์ฌ์ด์ฆ๋ฅผ ์ ํด์ ๋ง๋ค์ด์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์๋ฅผ๋ค์ด, 1MB ๋จ์๋ก 10๋ง๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด์ ๋ฃ์ด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ด์ฉ ์ญ์๋ ์ค์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ๋ฅ ์๋ฌธ์๋ง ๊ฐ๋ ์ฑ์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ ์๋ฒฝํ ํ๊ตญ์ ๋ฌธ์ฅ์ด ๋ค์ด๊ฐ์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.ย ํ์ด์ฌ์ผ๋ก ๋ง๋ ์๋์ ์ฝ๋๋ ์ฌ์ฉ์๋ก ๋ถํฐ ๋ง๋ค ๊ฐ์...
-
Dec 26, 2012[Python] newline๊ณผ tab ์ผ๋ก split ๋ฌธ์์ด ํ์ฑย ํ์ด์ฌ ๋ง์์์ ์กฐ๊ธ์ฉ ํ์ด์ฌ์ ๋ํด์ ์ง๋ต๊ฒ์ํ์์ ํ๋ฒ์ฉ ์๊ฐํด ๋ณผ์ ์๋ ๊ฒ๋ค์ ๊ฐ์ด ๋ น์ฌ์ง ์๊ธฐ ์ํด์ ํด๊ฒฐํ ์์ ์ด๋ค. ๊ธฐ์กด์ ๊ฒ์ํ ํํ์์ Stack Overflow ์ ํํ๋ก ๋ณ๊ฒฝ์ด ๋์๋ค. ์ฌ์ดํธ ์ฃผ์๋ ์๋์ ๊ฐ๋ค.ย ...
-
Dec 14, 2012[Python] base64 ์ธ์ฝ๋ฉ ๋์ฝ๋ฉํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก base64๋ฅผ ์ง์ํ๋ค. ๊ฐ๋จํ๊ฒ ์ฌ๋ฆผ.ย ...
-
Oct 11, 2012[Python] sqlite3 ๋ฅผ ์์ฝ๊ฒ ์ฐ๋๋ก ๋ง๋ ํด๋์คํ์ด์ฌ(python)์์๋ sqlite3 ๋ฅผ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ง์ํ๊ณ ์๋ ๊ฒ์ ๋๊ตฌ๋ ๋ค ์๋ ์ฌ์ค์ผํ ๋ฐ, ์ข๋ ์ฐ๊ธฐ ํธํ ํํ๋ก CRUD ์ ๋ํด์ ํด๋์ค ๋ฉํ์ ํด๋ดค๋ค. ํจ์์์ ํ ์ด๋ธ ์ด๋ฆ, Where ๋ฌธ, ํน์ ์ปฌ๋ผ์ด๋ ๋ฃ์ ๋ฐ์ดํฐ ๋ฐ์ผ๋ฉด ๊ทธ์ ๋ฐ๋ผ์ ์ฟผ๋ฆฌ ๋ง๋ค์ด์ ์ฟผ๋ฆฌ ์คํํ๋๋ก ํ์๋ค. ๋ณ๋์ ์์ธ์ฒ๋ฆฌ๋ ์ํ๊ธฐ ๋๋ฌธ์ ํ์ํ ๋ถ๋ค์ด ๊ฐ์ ธ๋ค๊ฐ ์ปค์คํ ํด์ ์ฐ์๊ธธ ๋ฐ๋๋ค.ย ...
-
Oct 03, 2012[Python] enum ์ ์ํ๊ธฐ์ฌ์ค ํ์ด์ฌ์ ๋ค๋ฅธ ์ธ์ด์ฒ๋ผ enum ์ด๋ผ๋ ํ์ ์ ๋ฑ ์ ์๋ ๊ฒ์ ์์ผ๋ ์ฐพ์๋ณด๋ ๋ค์๊ณผ ๊ฐ์ด range ํจ์๋ฅผ ์ด์ฉํด์ ์ซ์๋ฅผ ์ฒ์์ ํ ๋นํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ์ต๊ทผ์ ์ฌ์ฉํ ๊ฒ์ ์คํ์ธ์๋ก ์ด๋ค ๋ฌธ์์ด์ ๋ฐ์์ ํ๋ก๊ทธ๋จ๋ด์์ ๋ชจ๋(mode) ๋ฅผ ์ ์ ํ์๋ค.ย ๋ค์๊ณผ ๊ฐ์ด.ย ...
-
Oct 03, 2012[Python] ํ์ ํ๊ธ ๋ณํ ํ์ด์ฌ ์์คํ์์ด๊ฐ ์์ธ ๊ธ ์์์ ํ์์ด๋ฅผ ํ๊ธ๋ก ๊ต์ฒดํด์ ๋ฐํํ๋๋ก ํ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ์๋๋ C๋ก ์์ฑ๋ ๋ชจ๋์ ๋ดค์๋๋ฐ ๋๋ฌด ๋ณต์ก์ค๋ฝ๊ฒ ๋์ด์๋ ๋ฌธ์ ๊ฐ ์์ด์, ์ข๋ ์ฝ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น ์ฐพ๋ค๊ฐ ํ์ด์ฌ(Python)์ผ๋ก ์ง ๋ณด์๋๋ฐ ํจ์ฌ ๊ฐ๊ฒฐํ๋ค. ๋ถ๊ฐ์ ์ผ๋ก qsort() ์ ์ด์งํ์์ ์ฌ์ฉํ๋ค๋ฉด ์ข๋ ๋น ๋ฅด๊ฒ๋ ๊ฐ๋ฅํ์ง ์์๊น ์ถ๋ค.ย ์คํ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.ย ...
-
May 24, 2012[Python] ํน์ ๋ก๊ทธ ํ์ผ ์ด๋ฉ์ผ๋ก ์ ๋ฌํ๊ธฐ์์ง์ชฝ์์ ๋ชจ๋์ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ์ฌ๋ฌ๊ฐ์ง ์ผ์ด ์๊ธฐ๋๋ฐ ๊ทธ์ค ํ๋๊ฐ ๋ฐ๋ก ์์ง ์ฌ๊ธฐ๋์ ๊ดํ ๋ถ๋ถ์ด๋ค. ์์ง ์ฌ๊ธฐ๋์ ์ฌ๋ฌ๊ฐ์ง ๊ฒฝ์ฐ์ ์ผ์ด๋๋๋ฐ ์ฃผ๋ก ๋ด๋ถ ๋ชจ๋์ด ์๋ชป๋ ๋์์ ์ํํ๊ณ ์์ธ์ฒ๋ฆฌ๊ฐ ์๋์๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ชป๋ ์ฐธ์กฐ๋ก ์ธํด์ ๋ฐ์์ด ๋๋ค.ย ๋ฌธ์ ๋ ์ฌ๊ธฐ๋์ด ๋๋ค๋ ์ ์ด๋ค. ๋ฌผ๋ก ์์ง์ด ๋ค์ ์ผ์ง๋ ๊ฒ์ ๋ง์ง๋ง ์์ง์ด...
-
Dec 23, 2011[Python] ์ฅ๊ณ (Django) ์ค์น ๋ฐ ์ดํด๋ฆฝ์ค(eclipse) ์ธํ์ผ๋จ ์ฅ๊ณ (Django) ์ ๊ฐ๋ ์ด๋ ํ์์ฑ์ ๋ํด์๋ ํ์๋ ์์ง ์ด๊ธ์์ด๋ฏ๋ก ์ ๊ธฐํ์ง ์๊ณ ์ฐจํ์ ๋ณธ ๋ธ๋ก๊ทธ๋ฅผ ํตํด์ ํด๋น ๋ถ๋ถ์ ๋ํด์ ์์ธํ ์๊ฐ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ทธ๋๋ ์ผ๋จ ์ฅ๊ณ (Django) ๋ฅผ ์ค์นํด ๋ณด๊ณ , ์ ๋ํ ํ์ด์ฌ(python) ๊ด๋ จ๋ ์ชฝ์ด ๊ฐ๋ฐํ๊ฒฝ(IDE)๊ฐ ์ ๋ง๋ จ๋์ด ์์ง ์์๋ฐ, ์ฅ๊ณ (Djan...
-
Dec 20, 2011[Python] ํ์ผ๋ด์ฉ ์ฐพ๊ธฐํน์ ํด๋ ์์ ์๋ ํ ์คํธ ํ์ผ์ ์ฝ์ด์ ํด๋น ๋ด์ฉ์ ๊ฒ์ํ๋ฉด ๋ณด์ฌ์ฃผ๋ ํ์ด์ฌ ์์ค์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํฌ๋ฆฝํธ์ฒ๋ผ ๋ํํ์ผ๋ก ๋ง๋ค์๊ตฌ์. !start ๋ช ๋ น์ ์น์๋ฉด ์ง์ ํ ํด๋๋ด ํ์ผ์ ์ฝ์ด์์ ๊ฒ์์ ์์ํ ์ ์์ต๋๋ค. ์์ค๋ ๊ฐ๋จํ๋๊น ๋ณด์๋ฉด ๊ธ๋ฐฉ ์ดํด๋ ๊ฒ ๊ฐ๋ค์.^^ ์ถ๊ฐ์ ์ผ๋ก ํด๋ ์ง์ ์ ํ๋ค๋๊ฐ ํ๋ ๋ถ๋ถ์ ์ถ๊ฐํ๋ ๋ฑ์ ํ์ฅ์ ๋ํ ์ฌ์ง๋ ๋จ์ ์์ผ๋, ์ ํ์ฉํ๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค. **ps) ์ฐธ๊ณ ๋ก ํ๊ธ์ ๋ํ ๋ถ๋ถ์ ๊ฒ์์ ์ง์ํ์ง ์์ต๋๋ค.** ...