├── practices ├── Python │ ├── 220712 │ │ ├── 02.py │ │ ├── 01.py │ │ ├── 07.py │ │ ├── 05.py │ │ ├── 06.py │ │ ├── 04.py │ │ ├── 03.py │ │ └── 08.py │ ├── 220713 │ │ ├── 10.py │ │ ├── 09.py │ │ ├── ex_01.py │ │ ├── 11.py │ │ ├── 12.py │ │ ├── 13.py │ │ └── ex_02.py │ ├── 220714 │ │ ├── 17.py │ │ ├── 14.py │ │ ├── 16.py │ │ ├── 18.py │ │ └── 15.py │ ├── 220718 │ │ ├── ex_05.py │ │ ├── 19.py │ │ ├── ex_03.py │ │ ├── ex_04.py │ │ ├── ex_08.py │ │ ├── ex_06.py │ │ ├── ex_07.py │ │ ├── ex_10.py │ │ └── ex_09.py │ ├── 220719 │ │ ├── 21.py │ │ └── 20.py │ ├── 220809 │ │ ├── 21_무방향그래프.txt │ │ ├── 22_유방향그래프.py │ │ └── 21_무방향그래프.py │ └── codeup │ │ ├── codeup_6001.py │ │ ├── codeup_6009.py │ │ ├── codeup_6046.py │ │ ├── codeup_6017.py │ │ ├── codeup_6032.py │ │ ├── codeup_6003.py │ │ ├── codeup_6007.py │ │ ├── codeup_6008.py │ │ ├── codeup_6052.py │ │ ├── codeup_6005.py │ │ ├── codeup_6006.py │ │ ├── codeup_6014.py │ │ ├── codeup_6016.py │ │ ├── codeup_6053.py │ │ ├── codeup_6095.txt │ │ ├── codeup_6020.py │ │ ├── codeup_6023.py │ │ ├── codeup_6002.py │ │ ├── codeup_6011.py │ │ ├── codeup_6015.py │ │ ├── codeup_6018.py │ │ ├── codeup_6004.py │ │ ├── codeup_6019.py │ │ ├── codeup_6024.py │ │ ├── codeup_6042.py │ │ ├── codeup_6013.py │ │ ├── codeup_6034.py │ │ ├── codeup_6036.py │ │ ├── codeup_6037.py │ │ ├── codeup_6038.py │ │ ├── codeup_6040.py │ │ ├── codeup_6041.py │ │ ├── codeup_6047.py │ │ ├── codeup_6089.py │ │ ├── codeup_6035.py │ │ ├── codeup_6039.py │ │ ├── codeup_6045.py │ │ ├── codeup_6054.py │ │ ├── codeup_6055.py │ │ ├── codeup_6056.py │ │ ├── codeup_6057.py │ │ ├── codeup_6033.py │ │ ├── codeup_6048.py │ │ ├── codeup_6049.py │ │ ├── codeup_6050.py │ │ ├── codeup_6051.py │ │ ├── codeup_6012.py │ │ ├── codeup_6010.py │ │ ├── codeup_6022.py │ │ ├── codeup_6021.py │ │ ├── codeup_6043.py │ │ ├── codeup_6025.py │ │ ├── codeup_6063.py │ │ ├── codeup_6058.py │ │ ├── codeup_6075.py │ │ ├── codeup_6094.py │ │ ├── codeup_6088.py │ │ ├── codeup_6026.py │ │ ├── codeup_6073.py │ │ ├── codeup_6091.py │ │ ├── codeup_6093.py │ │ ├── codeup_6064.py │ │ ├── codeup_6076.py │ │ ├── codeup_6044.py │ │ ├── codeup_6072.py │ │ ├── codeup_6081.py │ │ ├── codeup_6087.py │ │ ├── codeup_6077.py │ │ ├── codeup_6065.py │ │ ├── codeup_6068.py │ │ ├── codeup_6070.py │ │ ├── codeup_6078.py │ │ ├── codeup_6071.py │ │ ├── codeup_6074.py │ │ ├── codeup_6069.py │ │ ├── codeup_6067.py │ │ ├── codeup_6086.py │ │ ├── codeup_6092.py │ │ ├── codeup_6090.py │ │ ├── codeup_6079.py │ │ ├── codeup_6066.py │ │ ├── codeup_6080.py │ │ ├── codeup_6083.py │ │ ├── codeup_6082.py │ │ └── codeup_6095.py ├── Web │ ├── 220829 │ │ ├── 01_html_기초.html │ │ └── 02_css.html │ ├── 220830 │ │ ├── desk.webp │ │ ├── profile.webp │ │ ├── 02_selector.html │ │ ├── 02_box.html │ │ ├── 04_card.html │ │ ├── 03_block_inline.html │ │ ├── 00_복습.html │ │ └── 01_unit.html │ ├── 220831 │ │ ├── 01_flex.css │ │ ├── 01_flex.html │ │ ├── 02_flex.html │ │ ├── 02_flex.css │ │ ├── 01_float.html │ │ └── 00_index.html │ ├── 220901 │ │ ├── navi.html │ │ └── navi.css │ ├── 220907 │ │ ├── .vscode │ │ │ └── settings.json │ │ ├── README.md │ │ └── 02_media_query.html │ ├── 220915 │ │ ├── 02_iteration.js │ │ ├── 01_bom.js │ │ └── 03_dom.js │ ├── 220916 │ │ ├── 02_identifier.js │ │ ├── 03_datatype.js │ │ ├── 04_operator.js │ │ ├── 06_iteration.js │ │ └── 05_conditional.js │ ├── 220919 │ │ ├── 02_input.html │ │ ├── 01_button.html │ │ ├── 03_prevent.html │ │ ├── 04_modal.html │ │ └── 05_carousel.html │ ├── 221026 │ │ ├── axios.html │ │ └── axios2.html │ ├── assignment │ │ ├── 220830 │ │ │ ├── 실습1 │ │ │ │ ├── README.PNG │ │ │ │ ├── images │ │ │ │ │ ├── 1.webp │ │ │ │ │ └── 2.webp │ │ │ │ ├── README.md │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ │ └── 실습2 │ │ │ │ ├── README.png │ │ │ │ ├── images │ │ │ │ └── product.webp │ │ │ │ ├── README.md │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ ├── 220831 │ │ │ ├── flexbox_froggy_완료.png │ │ │ ├── 실습1(flex수정) │ │ │ │ ├── README.PNG │ │ │ │ ├── images │ │ │ │ │ ├── 1.webp │ │ │ │ │ └── 2.webp │ │ │ │ ├── README.md │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ │ └── 실습2(flex수정) │ │ │ │ ├── README.png │ │ │ │ ├── images │ │ │ │ └── product.webp │ │ │ │ ├── README.md │ │ │ │ ├── style.css │ │ │ │ └── index.html │ │ ├── 220902 │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── images │ │ │ │ ├── logo.png │ │ │ │ ├── 163788.jpg │ │ │ │ ├── 164907.jpg │ │ │ │ ├── 169637.jpg │ │ │ │ ├── 174903.jpg │ │ │ │ ├── 178544.jpg │ │ │ │ ├── 180374.jpg │ │ │ │ └── background.jpg │ │ │ └── README.md │ │ ├── 220906 │ │ │ ├── images │ │ │ │ ├── 1.jpg │ │ │ │ ├── 2.jpg │ │ │ │ └── 3.jpg │ │ │ ├── README.md │ │ │ └── style.css │ │ ├── 220907 │ │ │ ├── images │ │ │ │ ├── 01.jpg │ │ │ │ ├── logo.jpg │ │ │ │ ├── banner.jpg │ │ │ │ ├── card1.jpeg │ │ │ │ ├── card2.jpeg │ │ │ │ └── card3.jpg │ │ │ └── README.md │ │ ├── 220908 │ │ │ ├── images │ │ │ │ ├── logo.png │ │ │ │ ├── banner1.png │ │ │ │ ├── banner2.jpg │ │ │ │ ├── banner3.png │ │ │ │ ├── card1.jpg │ │ │ │ ├── card2.jpg │ │ │ │ ├── card3.jpg │ │ │ │ ├── card4.jpg │ │ │ │ ├── card5.jpg │ │ │ │ ├── card6.jpg │ │ │ │ ├── card7.jpg │ │ │ │ └── card8.jpg │ │ │ └── README.md │ │ ├── 220913 │ │ │ ├── images │ │ │ │ ├── logo.png │ │ │ │ ├── ban1.jfif │ │ │ │ ├── ban2.jfif │ │ │ │ ├── ban3.jfif │ │ │ │ ├── movie1.jpg │ │ │ │ ├── movie2.jpg │ │ │ │ ├── movie3.jpg │ │ │ │ ├── movie4.jpg │ │ │ │ ├── movie5.jpg │ │ │ │ └── movie6.jpg │ │ │ └── README.md │ │ ├── 220919 │ │ │ ├── README.assets │ │ │ │ └── 190984610-c3c6326c-87ba-4fb4-8d21-01130500edc2.gif │ │ │ ├── 02_input.html │ │ │ ├── 01_button.html │ │ │ ├── 03_prevent.html │ │ │ ├── README.md │ │ │ ├── 06_form.html │ │ │ ├── 04_modal.html │ │ │ └── 05_carousel.html │ │ ├── 220922 │ │ │ ├── basicpjt │ │ │ │ ├── __init__.py │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── urls.cpython-39.pyc │ │ │ │ │ ├── wsgi.cpython-39.pyc │ │ │ │ │ ├── __init__.cpython-39.pyc │ │ │ │ │ └── settings.cpython-39.pyc │ │ │ │ ├── asgi.py │ │ │ │ ├── wsgi.py │ │ │ │ └── urls.py │ │ │ ├── practice │ │ │ │ ├── __init__.py │ │ │ │ ├── migrations │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── __pycache__ │ │ │ │ │ │ └── __init__.cpython-39.pyc │ │ │ │ ├── models.py │ │ │ │ ├── tests.py │ │ │ │ ├── admin.py │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── apps.cpython-39.pyc │ │ │ │ │ ├── admin.cpython-39.pyc │ │ │ │ │ ├── models.cpython-39.pyc │ │ │ │ │ ├── views.cpython-39.pyc │ │ │ │ │ └── __init__.cpython-39.pyc │ │ │ │ ├── apps.py │ │ │ │ ├── views.py │ │ │ │ └── templates │ │ │ │ │ └── today-dinner.html │ │ │ ├── .gitignore │ │ │ └── manage.py │ │ ├── 220923 │ │ │ └── README.md │ │ ├── 220928 │ │ │ ├── todopjt │ │ │ │ ├── __init__.py │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── urls.cpython-39.pyc │ │ │ │ │ ├── wsgi.cpython-39.pyc │ │ │ │ │ ├── __init__.cpython-39.pyc │ │ │ │ │ └── settings.cpython-39.pyc │ │ │ │ ├── asgi.py │ │ │ │ ├── wsgi.py │ │ │ │ └── urls.py │ │ │ ├── todos │ │ │ │ ├── __init__.py │ │ │ │ ├── migrations │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── __pycache__ │ │ │ │ │ │ ├── __init__.cpython-39.pyc │ │ │ │ │ │ └── 0001_initial.cpython-39.pyc │ │ │ │ │ └── 0001_initial.py │ │ │ │ ├── tests.py │ │ │ │ ├── admin.py │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── admin.cpython-39.pyc │ │ │ │ │ ├── apps.cpython-39.pyc │ │ │ │ │ ├── urls.cpython-39.pyc │ │ │ │ │ ├── views.cpython-39.pyc │ │ │ │ │ ├── models.cpython-39.pyc │ │ │ │ │ └── __init__.cpython-39.pyc │ │ │ │ ├── apps.py │ │ │ │ ├── urls.py │ │ │ │ ├── models.py │ │ │ │ └── views.py │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── manage.py │ │ │ └── templates │ │ │ │ └── base.html │ │ └── 220829.md │ └── README.md └── DB │ ├── assignment │ ├── ERD1.png │ ├── 220823.md │ └── 220816.md │ ├── 13_join_music.sql │ ├── 00_create.sql │ ├── README.md │ ├── 00_intro.sql │ ├── 10_last.sql │ ├── 01_hello.sql │ ├── 04_autoincrement.sql │ ├── 11_CREATE.sql │ ├── 08_case.sql │ ├── 02_classmates.sql │ ├── 05_users.sql │ ├── 07_group.sql │ └── 06_function.sql ├── .gitignore └── notes ├── images ├── js_ecma.png ├── py_ctrl.png ├── py_final.png ├── dj_axios_1.png ├── dj_axios_2.png ├── dj_axios_3.png ├── dj_axios_4.png ├── dj_axios_5.png ├── dj_crud2_1.png ├── dj_intro_1.png ├── dj_intro_2.png ├── dj_intro_3.png ├── dj_intro_4.png ├── dj_intro_5.png ├── dj_intro_6.png ├── dj_intro_7.png ├── dj_intro_8.png ├── dj_intro_9.png ├── dj_views_1.png ├── dj_views_2.png ├── dj_views_3.png ├── js_ecma_1.png ├── js_ecma_2.png ├── js_ecma_3.png ├── markdown1.png ├── markdown2.png ├── markdown3.png ├── markdown4.png ├── markdown5.png ├── markdown6.png ├── py_OOP2_1.png ├── py_OOP2_2.png ├── py_OOP2_3.png ├── py_final_1.png ├── py_final_2.png ├── dj_intro_10.png ├── dj_intro_11.png ├── dj_intro_12.png ├── dj_rdbms1_1.png ├── dj_rdbms1_2.png ├── dj_rdbms3_1.png ├── dj_rdbms3_2.png ├── dj_rdbms3_3.png ├── dj_rdbms4_1.png ├── dj_rdbms4_2.png ├── dj_rdbms4_3.png ├── dj_rdbms4_4.png ├── dj_rdbms4_5.png ├── py_function.png ├── sxQSQrmO_400x400.jpg └── py_final_3(실습1288_접근방법).png ├── js_ecma.assets ├── js_ecma.png ├── js_ecma_1.png ├── js_ecma_2.png └── js_ecma_3.png ├── py_OOP2.assets ├── py_OOP2_1.png ├── py_OOP2_2.png └── py_OOP2_3.png ├── py_final.assets ├── py_final.png ├── py_final_1.png ├── py_final_2.png └── py_final_3(실습1288_접근방법).png ├── dj_axios.assets ├── dj_axios_1.png ├── dj_axios_2.png ├── dj_axios_4.png └── dj_axios_5.png ├── dj_crud2.assets └── dj_crud2_1.png ├── dj_intro.assets ├── dj_intro_1.png ├── dj_intro_10.png ├── dj_intro_11.png ├── dj_intro_12.png ├── dj_intro_2.png ├── dj_intro_3.png ├── dj_intro_4.png ├── dj_intro_5.png ├── dj_intro_6.png ├── dj_intro_7.png ├── dj_intro_8.png ├── dj_intro_9.png ├── image-20220921170749749.png └── dj_intro_7-16637446203486.png ├── dj_views.assets ├── dj_views_1.png ├── dj_views_2.png ├── dj_views_1-16666742280311.png ├── dj_views_1-16666743032683.png └── dj_views_2-16666743125965.png ├── dj_rdbms1.assets ├── dj_rdbms1_1.png └── dj_rdbms1_2.png ├── dj_rdbms3.assets ├── dj_rdbms3_1.png ├── dj_rdbms3_2.png └── dj_rdbms3_3.png ├── dj_rdbms4.assets ├── dj_rdbms4_1.png ├── dj_rdbms4_2.png ├── dj_rdbms4_3.png ├── dj_rdbms4_4.png ├── dj_rdbms4_5.png └── dj_rdbms4_5-16666740226291.png ├── markdown_gram.assets ├── markdown1.png ├── markdown2.png ├── markdown3.png ├── markdown4.png ├── markdown5.png ├── markdown6.png ├── sxQSQrmO_400x400.jpg ├── sxQSQrmO_400x400-16571594177531.jpg ├── sxQSQrmO_400x400-16574168376311.jpg └── sxQSQrmO_400x400-16574305202471.jpg ├── py_function.assets └── py_function.png ├── python_ctrl_state.assets └── py_ctrl.png ├── markdown_practice.md ├── fastapi_AOP1.md ├── deploy.md ├── github_upstream.md ├── py_OOP2.md ├── shortcuts.md ├── dj_member_logic.md ├── fastapi.md ├── algo_intro.md └── py_final.md /practices/Python/codeup/codeup_6001.py: -------------------------------------------------------------------------------- 1 | print('Hello') -------------------------------------------------------------------------------- /practices/Web/assignment/220922/basicpjt/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todopjt/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite3 2 | *.csv 3 | venv/ 4 | secrets.json -------------------------------------------------------------------------------- /practices/Web/assignment/220922/.gitignore: -------------------------------------------------------------------------------- 1 | secrets.json -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6009.py: -------------------------------------------------------------------------------- 1 | a = input() 2 | print(a) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6046.py: -------------------------------------------------------------------------------- 1 | print(int(input())<<1) -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6017.py: -------------------------------------------------------------------------------- 1 | s = input() 2 | print(s, s, s) -------------------------------------------------------------------------------- /practices/Web/assignment/220928/.gitignore: -------------------------------------------------------------------------------- 1 | secrets.json 2 | *.venv -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6032.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | print(-n) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6003.py: -------------------------------------------------------------------------------- 1 | print('Hello') 2 | print('World') 3 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6007.py: -------------------------------------------------------------------------------- 1 | print("\"C:\\Download\\'hello'.py\"") -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6008.py: -------------------------------------------------------------------------------- 1 | print('print("Hello\\nWorld")') 2 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6052.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | print(bool(n)) -------------------------------------------------------------------------------- /practices/Python/220809/21_무방향그래프.txt: -------------------------------------------------------------------------------- 1 | 6 5 2 | 1 2 3 | 2 5 4 | 5 1 5 | 3 4 6 | 4 6 -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6005.py: -------------------------------------------------------------------------------- 1 | # 큰 따옴표 출력하기 2 | 3 | print('"Hello World"') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6006.py: -------------------------------------------------------------------------------- 1 | # 특수문자 출력하기 2 | 3 | print('"!@#$%^&*()\'') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6014.py: -------------------------------------------------------------------------------- 1 | a = input() 2 | 3 | print(3 * (a + '\n')) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6016.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | print(b, a) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6053.py: -------------------------------------------------------------------------------- 1 | a = bool(int(input())) 2 | 3 | print(not a) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6095.txt: -------------------------------------------------------------------------------- 1 | 5 2 | 1 1 3 | 2 2 4 | 3 3 5 | 4 4 6 | 5 5 -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6020.py: -------------------------------------------------------------------------------- 1 | f, b = input().split('-') 2 | print(f, b, sep='') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6023.py: -------------------------------------------------------------------------------- 1 | H, M, S = input().split(':') 2 | 3 | print(M) -------------------------------------------------------------------------------- /practices/Web/220907/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6002.py: -------------------------------------------------------------------------------- 1 | print('Hello World') 2 | print('Hello', 'World') 3 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6011.py: -------------------------------------------------------------------------------- 1 | n = input() 2 | n = float(n) 3 | print(n) 4 | 5 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6015.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | print(a) 4 | print(b) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6018.py: -------------------------------------------------------------------------------- 1 | a, b = input().split(':') 2 | print(a, b, sep=':') 3 | -------------------------------------------------------------------------------- /notes/images/js_ecma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/js_ecma.png -------------------------------------------------------------------------------- /notes/images/py_ctrl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_ctrl.png -------------------------------------------------------------------------------- /notes/images/py_final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_final.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6004.py: -------------------------------------------------------------------------------- 1 | # 작은 따옴표 출력하기 2 | 3 | print(" ' ") 4 | print('\'Hello\'') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6019.py: -------------------------------------------------------------------------------- 1 | a, b, c = input().split('.') 2 | print(c, b, a, sep='-') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6024.py: -------------------------------------------------------------------------------- 1 | w1, w2 = input().split() 2 | s = w1+w2 3 | 4 | print(s) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6042.py: -------------------------------------------------------------------------------- 1 | n = float(input()) 2 | 3 | print(format(n, '.2f')) 4 | -------------------------------------------------------------------------------- /notes/images/dj_axios_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_axios_1.png -------------------------------------------------------------------------------- /notes/images/dj_axios_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_axios_2.png -------------------------------------------------------------------------------- /notes/images/dj_axios_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_axios_3.png -------------------------------------------------------------------------------- /notes/images/dj_axios_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_axios_4.png -------------------------------------------------------------------------------- /notes/images/dj_axios_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_axios_5.png -------------------------------------------------------------------------------- /notes/images/dj_crud2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_crud2_1.png -------------------------------------------------------------------------------- /notes/images/dj_intro_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_1.png -------------------------------------------------------------------------------- /notes/images/dj_intro_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_2.png -------------------------------------------------------------------------------- /notes/images/dj_intro_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_3.png -------------------------------------------------------------------------------- /notes/images/dj_intro_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_4.png -------------------------------------------------------------------------------- /notes/images/dj_intro_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_5.png -------------------------------------------------------------------------------- /notes/images/dj_intro_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_6.png -------------------------------------------------------------------------------- /notes/images/dj_intro_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_7.png -------------------------------------------------------------------------------- /notes/images/dj_intro_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_8.png -------------------------------------------------------------------------------- /notes/images/dj_intro_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_9.png -------------------------------------------------------------------------------- /notes/images/dj_views_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_views_1.png -------------------------------------------------------------------------------- /notes/images/dj_views_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_views_2.png -------------------------------------------------------------------------------- /notes/images/dj_views_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_views_3.png -------------------------------------------------------------------------------- /notes/images/js_ecma_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/js_ecma_1.png -------------------------------------------------------------------------------- /notes/images/js_ecma_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/js_ecma_2.png -------------------------------------------------------------------------------- /notes/images/js_ecma_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/js_ecma_3.png -------------------------------------------------------------------------------- /notes/images/markdown1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/markdown1.png -------------------------------------------------------------------------------- /notes/images/markdown2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/markdown2.png -------------------------------------------------------------------------------- /notes/images/markdown3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/markdown3.png -------------------------------------------------------------------------------- /notes/images/markdown4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/markdown4.png -------------------------------------------------------------------------------- /notes/images/markdown5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/markdown5.png -------------------------------------------------------------------------------- /notes/images/markdown6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/markdown6.png -------------------------------------------------------------------------------- /notes/images/py_OOP2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_OOP2_1.png -------------------------------------------------------------------------------- /notes/images/py_OOP2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_OOP2_2.png -------------------------------------------------------------------------------- /notes/images/py_OOP2_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_OOP2_3.png -------------------------------------------------------------------------------- /notes/images/py_final_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_final_1.png -------------------------------------------------------------------------------- /notes/images/py_final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_final_2.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6013.py: -------------------------------------------------------------------------------- 1 | a = input() 2 | b = input() 3 | 4 | print(b) 5 | print(a) 6 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6034.py: -------------------------------------------------------------------------------- 1 | A, B = input().split() 2 | C = int(A) - int(B) 3 | 4 | print(C) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6036.py: -------------------------------------------------------------------------------- 1 | word, cycle = input().split() 2 | 3 | print(word*int(cycle)) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6037.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | str = input() 3 | 4 | print(str * n) 5 | -------------------------------------------------------------------------------- /practices/Web/assignment/220902/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "liveServer.settings.port": 5501 3 | } -------------------------------------------------------------------------------- /notes/images/dj_intro_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_10.png -------------------------------------------------------------------------------- /notes/images/dj_intro_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_11.png -------------------------------------------------------------------------------- /notes/images/dj_intro_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_intro_12.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms1_1.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms1_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms1_2.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms3_1.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms3_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms3_2.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms3_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms3_3.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms4_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms4_1.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms4_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms4_2.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms4_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms4_3.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms4_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms4_4.png -------------------------------------------------------------------------------- /notes/images/dj_rdbms4_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/dj_rdbms4_5.png -------------------------------------------------------------------------------- /notes/images/py_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_function.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6038.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = int(a)**int(b) 4 | 5 | print(c) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6040.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = int(a)//int(b) 4 | 5 | print(c) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6041.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = int(a)%int(b) 4 | 5 | print(c) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6047.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | a = int(a) 3 | b = int(b) 4 | print(a << b) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6089.py: -------------------------------------------------------------------------------- 1 | 2 | a, r, n = map(int, input().split()) 3 | 4 | print(a*r**(n-1)) -------------------------------------------------------------------------------- /practices/Web/220830/desk.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/220830/desk.webp -------------------------------------------------------------------------------- /notes/js_ecma.assets/js_ecma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/js_ecma.assets/js_ecma.png -------------------------------------------------------------------------------- /practices/DB/assignment/ERD1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/DB/assignment/ERD1.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6035.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = float(a)*float(b) 4 | 5 | print(c) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6039.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = float(a)**float(b) 4 | 5 | print(c) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6045.py: -------------------------------------------------------------------------------- 1 | a, b, c = map(int, input().split()) 2 | print(a+b+c, round((a+b+c)/3, 2)) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6054.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | print(bool(int(a)) and bool(int(b))) 4 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6055.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | print(bool(int(a)) or bool(int(b))) 4 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6056.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | print(bool(int(a)) != bool(int(b))) 4 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6057.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | print(bool(int(a)) == bool(int(b))) 4 | -------------------------------------------------------------------------------- /notes/images/sxQSQrmO_400x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/sxQSQrmO_400x400.jpg -------------------------------------------------------------------------------- /notes/js_ecma.assets/js_ecma_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/js_ecma.assets/js_ecma_1.png -------------------------------------------------------------------------------- /notes/js_ecma.assets/js_ecma_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/js_ecma.assets/js_ecma_2.png -------------------------------------------------------------------------------- /notes/js_ecma.assets/js_ecma_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/js_ecma.assets/js_ecma_3.png -------------------------------------------------------------------------------- /notes/py_OOP2.assets/py_OOP2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_OOP2.assets/py_OOP2_1.png -------------------------------------------------------------------------------- /notes/py_OOP2.assets/py_OOP2_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_OOP2.assets/py_OOP2_2.png -------------------------------------------------------------------------------- /notes/py_OOP2.assets/py_OOP2_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_OOP2.assets/py_OOP2_3.png -------------------------------------------------------------------------------- /notes/py_final.assets/py_final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_final.assets/py_final.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6033.py: -------------------------------------------------------------------------------- 1 | a = input() 2 | b = ord(a)+1 3 | 4 | result = chr(b) 5 | 6 | print(result) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6048.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | a = int(a) 4 | b = int(b) 5 | 6 | print(a < b) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6049.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | a = int(a) 4 | b = int(b) 5 | 6 | print(a == b) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6050.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | a = int(a) 4 | b = int(b) 5 | 6 | print(a <= b) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6051.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | a = int(a) 4 | b = int(b) 5 | 6 | print(a != b) -------------------------------------------------------------------------------- /practices/Web/220830/profile.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/220830/profile.webp -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /notes/dj_axios.assets/dj_axios_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_axios.assets/dj_axios_1.png -------------------------------------------------------------------------------- /notes/dj_axios.assets/dj_axios_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_axios.assets/dj_axios_2.png -------------------------------------------------------------------------------- /notes/dj_axios.assets/dj_axios_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_axios.assets/dj_axios_4.png -------------------------------------------------------------------------------- /notes/dj_axios.assets/dj_axios_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_axios.assets/dj_axios_5.png -------------------------------------------------------------------------------- /notes/dj_crud2.assets/dj_crud2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_crud2.assets/dj_crud2_1.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_1.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_10.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_11.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_12.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_2.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_3.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_4.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_5.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_6.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_7.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_8.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_9.png -------------------------------------------------------------------------------- /notes/dj_views.assets/dj_views_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_views.assets/dj_views_1.png -------------------------------------------------------------------------------- /notes/dj_views.assets/dj_views_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_views.assets/dj_views_2.png -------------------------------------------------------------------------------- /notes/py_final.assets/py_final_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_final.assets/py_final_1.png -------------------------------------------------------------------------------- /notes/py_final.assets/py_final_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_final.assets/py_final_2.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6012.py: -------------------------------------------------------------------------------- 1 | a = input() 2 | b = input() 3 | a = int(a) 4 | b = int(b) 5 | print(a) 6 | print(b) -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /notes/dj_rdbms1.assets/dj_rdbms1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms1.assets/dj_rdbms1_1.png -------------------------------------------------------------------------------- /notes/dj_rdbms1.assets/dj_rdbms1_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms1.assets/dj_rdbms1_2.png -------------------------------------------------------------------------------- /notes/dj_rdbms3.assets/dj_rdbms3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms3.assets/dj_rdbms3_1.png -------------------------------------------------------------------------------- /notes/dj_rdbms3.assets/dj_rdbms3_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms3.assets/dj_rdbms3_2.png -------------------------------------------------------------------------------- /notes/dj_rdbms3.assets/dj_rdbms3_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms3.assets/dj_rdbms3_3.png -------------------------------------------------------------------------------- /notes/dj_rdbms4.assets/dj_rdbms4_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms4.assets/dj_rdbms4_1.png -------------------------------------------------------------------------------- /notes/dj_rdbms4.assets/dj_rdbms4_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms4.assets/dj_rdbms4_2.png -------------------------------------------------------------------------------- /notes/dj_rdbms4.assets/dj_rdbms4_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms4.assets/dj_rdbms4_3.png -------------------------------------------------------------------------------- /notes/dj_rdbms4.assets/dj_rdbms4_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms4.assets/dj_rdbms4_4.png -------------------------------------------------------------------------------- /notes/dj_rdbms4.assets/dj_rdbms4_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms4.assets/dj_rdbms4_5.png -------------------------------------------------------------------------------- /notes/images/py_final_3(실습1288_접근방법).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/images/py_final_3(실습1288_접근방법).png -------------------------------------------------------------------------------- /notes/markdown_gram.assets/markdown1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/markdown1.png -------------------------------------------------------------------------------- /notes/markdown_gram.assets/markdown2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/markdown2.png -------------------------------------------------------------------------------- /notes/markdown_gram.assets/markdown3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/markdown3.png -------------------------------------------------------------------------------- /notes/markdown_gram.assets/markdown4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/markdown4.png -------------------------------------------------------------------------------- /notes/markdown_gram.assets/markdown5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/markdown5.png -------------------------------------------------------------------------------- /notes/markdown_gram.assets/markdown6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/markdown6.png -------------------------------------------------------------------------------- /notes/py_function.assets/py_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_function.assets/py_function.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6010.py: -------------------------------------------------------------------------------- 1 | n = input() 2 | n = int(n) 3 | print(n) 4 | 5 | # 다른풀이 6 | n = int(input()) 7 | print(n) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6022.py: -------------------------------------------------------------------------------- 1 | YWD = input() 2 | Y = YWD[:2] 3 | M = YWD[2:4] 4 | D = YWD[4:] 5 | 6 | print(Y, M, D) -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /notes/python_ctrl_state.assets/py_ctrl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/python_ctrl_state.assets/py_ctrl.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6021.py: -------------------------------------------------------------------------------- 1 | s = input() 2 | print(s[0]) 3 | print(s[1]) 4 | print(s[2]) 5 | print(s[3]) 6 | print(s[4]) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6043.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = float(a)/float(b) 4 | 5 | print(format(c, '.3f')) 6 | -------------------------------------------------------------------------------- /practices/Web/assignment/220906/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220906/images/1.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220906/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220906/images/2.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220906/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220906/images/3.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220907/images/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220907/images/01.jpg -------------------------------------------------------------------------------- /notes/markdown_gram.assets/sxQSQrmO_400x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/sxQSQrmO_400x400.jpg -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6025.py: -------------------------------------------------------------------------------- 1 | num1, num2 = input().split() 2 | num1 = int(num1) 3 | num2 = int(num2) 4 | 5 | print(num1 + num2) 6 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6063.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | a = int(a) 3 | b = int(b) 4 | c = (a if (a >= b) else b) 5 | print(int(c)) -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습1/README.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220830/실습1/README.PNG -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습2/README.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220830/실습2/README.png -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/logo.png -------------------------------------------------------------------------------- /practices/Web/assignment/220907/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220907/images/logo.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/logo.png -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/logo.png -------------------------------------------------------------------------------- /notes/dj_intro.assets/image-20220921170749749.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/image-20220921170749749.png -------------------------------------------------------------------------------- /notes/py_final.assets/py_final_3(실습1288_접근방법).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/py_final.assets/py_final_3(실습1288_접근방법).png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6058.py: -------------------------------------------------------------------------------- 1 | a, b = input().split() 2 | 3 | c = bool(int(a)) 4 | d = bool(int(b)) 5 | 6 | print(not c and not d) 7 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6075.py: -------------------------------------------------------------------------------- 1 | 2 | n = int(input()) 3 | count = 0 4 | 5 | while count <= n: 6 | count += 1 7 | print(count - 1) -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습1/images/1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220830/실습1/images/1.webp -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습1/images/2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220830/실습1/images/2.webp -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/163788.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/163788.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/164907.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/164907.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/169637.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/169637.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/174903.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/174903.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/178544.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/178544.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/180374.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/180374.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220907/images/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220907/images/banner.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220907/images/card1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220907/images/card1.jpeg -------------------------------------------------------------------------------- /practices/Web/assignment/220907/images/card2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220907/images/card2.jpeg -------------------------------------------------------------------------------- /practices/Web/assignment/220907/images/card3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220907/images/card3.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/banner1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/banner1.png -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/banner2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/banner2.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/banner3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/banner3.png -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card1.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card2.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card3.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card4.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card5.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card6.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card7.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220908/images/card8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220908/images/card8.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/ban1.jfif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/ban1.jfif -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/ban2.jfif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/ban2.jfif -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/ban3.jfif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/ban3.jfif -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/movie1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/movie1.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/movie2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/movie2.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/movie3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/movie3.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/movie4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/movie4.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/movie5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/movie5.jpg -------------------------------------------------------------------------------- /practices/Web/assignment/220913/images/movie6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220913/images/movie6.jpg -------------------------------------------------------------------------------- /notes/dj_intro.assets/dj_intro_7-16637446203486.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_intro.assets/dj_intro_7-16637446203486.png -------------------------------------------------------------------------------- /notes/dj_views.assets/dj_views_1-16666742280311.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_views.assets/dj_views_1-16666742280311.png -------------------------------------------------------------------------------- /notes/dj_views.assets/dj_views_1-16666743032683.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_views.assets/dj_views_1-16666743032683.png -------------------------------------------------------------------------------- /notes/dj_views.assets/dj_views_2-16666743125965.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_views.assets/dj_views_2-16666743125965.png -------------------------------------------------------------------------------- /notes/dj_rdbms4.assets/dj_rdbms4_5-16666740226291.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/dj_rdbms4.assets/dj_rdbms4_5-16666740226291.png -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6094.py: -------------------------------------------------------------------------------- 1 | 2 | import math 3 | 4 | n = int(input()) 5 | 6 | random = list(map(int, input().split())) 7 | 8 | print(min(random)) -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습2/images/product.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220830/실습2/images/product.webp -------------------------------------------------------------------------------- /practices/Web/assignment/220831/flexbox_froggy_완료.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220831/flexbox_froggy_완료.png -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습1(flex수정)/README.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220831/실습1(flex수정)/README.PNG -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습2(flex수정)/README.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220831/실습2(flex수정)/README.png -------------------------------------------------------------------------------- /practices/Web/assignment/220902/images/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220902/images/background.jpg -------------------------------------------------------------------------------- /practices/DB/assignment/220823.md: -------------------------------------------------------------------------------- 1 | # 2022-08-23 / DB 6일차 실습 2 | 3 | 4 | 5 | ![ERD1](C:\Users\chu02\Desktop\TIL\practice\220816-220826(DB)\assignment\ERD1.png) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6088.py: -------------------------------------------------------------------------------- 1 | 2 | a, d, n = map(int, input().split()) 3 | 4 | for i in range(1, n+1): 5 | result = a + d*(n-1) 6 | 7 | print(result) -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습1(flex수정)/images/1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220831/실습1(flex수정)/images/1.webp -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습1(flex수정)/images/2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220831/실습1(flex수정)/images/2.webp -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6026.py: -------------------------------------------------------------------------------- 1 | a = input() 2 | b = input() 3 | 4 | a = float(a) 5 | b = float(b) 6 | 7 | result = a + b 8 | 9 | print(result) 10 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6073.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | while n != 0: 4 | n -= 1 5 | print(n) 6 | 7 | # 1만큼씩 줄이면서 카운트다운 수가 0이 될 때까지 한 둘에 1개씩 출력 8 | -------------------------------------------------------------------------------- /notes/markdown_gram.assets/sxQSQrmO_400x400-16571594177531.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/sxQSQrmO_400x400-16571594177531.jpg -------------------------------------------------------------------------------- /notes/markdown_gram.assets/sxQSQrmO_400x400-16574168376311.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/sxQSQrmO_400x400-16574168376311.jpg -------------------------------------------------------------------------------- /notes/markdown_gram.assets/sxQSQrmO_400x400-16574305202471.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/notes/markdown_gram.assets/sxQSQrmO_400x400-16574305202471.jpg -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6091.py: -------------------------------------------------------------------------------- 1 | 2 | a, b, c = map(int, input().split()) 3 | 4 | d = 1 5 | while d % a != 0 or d % b != 0 or d % c != 0: 6 | d += 1 7 | 8 | print(d) -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습2(flex수정)/images/product.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220831/실습2(flex수정)/images/product.webp -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6093.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | n = int(input()) 4 | random = list(map(int, input().split())) 5 | 6 | for i in range(n-1, -1, -1): 7 | print(random[i], end = ' ') -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/__pycache__/admin.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todos/__pycache__/admin.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/__pycache__/apps.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todos/__pycache__/apps.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todos/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/__pycache__/views.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todos/__pycache__/views.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220922/basicpjt/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220922/basicpjt/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220922/basicpjt/__pycache__/wsgi.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220922/basicpjt/__pycache__/wsgi.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/__pycache__/apps.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220922/practice/__pycache__/apps.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todopjt/__pycache__/urls.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todopjt/__pycache__/urls.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todopjt/__pycache__/wsgi.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todopjt/__pycache__/wsgi.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/__pycache__/models.cpython-39.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-sum/TIL/HEAD/practices/Web/assignment/220928/todos/__pycache__/models.cpython-39.pyc -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6064.py: -------------------------------------------------------------------------------- 1 | a, b, c = input().split() 2 | a = int(a) 3 | b = int(b) 4 | c = int(c) 5 | 6 | d = a if a= 90: 5 | print('A') 6 | elif n >= 70: 7 | print('B') 8 | elif n >= 40: 9 | print('C') 10 | elif n >= 0: 11 | print('D') 12 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6070.py: -------------------------------------------------------------------------------- 1 | month = int(input()) 2 | 3 | if month // 3 == 1: 4 | print('spring') 5 | elif month // 3 == 2: 6 | print('summer') 7 | elif month // 3 == 3: 8 | print('fall') 9 | else: 10 | print('winter') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6078.py: -------------------------------------------------------------------------------- 1 | # 문자들이 1개씩 계속해서 입력된다. 2 | # 영문 소문자 'q'가 입력될 때까지 입력한 문자를 계속 출력한다. 3 | 4 | 5 | while True: 6 | word = input() 7 | if word == 'q': 8 | print(word) 9 | break 10 | print(word) 11 | -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습2/README.md: -------------------------------------------------------------------------------- 1 | # 실습 2 2 | 3 | > 아래의 내용을 참고하여 만들어봅시다. 색상, 크기 및 문구는 변경 가능합니다. 4 | 5 | ![이미지](./README.PNG) 6 | 7 | ## 카드 8 | 9 | * 카드의 너비는 300px입니다. 10 | 11 | * 상품명은 `h3` 태그를 활용하며 나머지 모든 글씨는 자유롭게 활용합니다. 12 | 13 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6071.py: -------------------------------------------------------------------------------- 1 | # https://codeup.kr/problem.php?id=6071 2 | 3 | 4 | n = 1 # n의 초기값을 임의로 define(꼭 1이 아니어도 됨) 5 | 6 | while n != 0: # n이 0이 아닌한 작업 반복한다 7 | n = int(input()) 8 | if n != 0: 9 | print(n) 10 | -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습2(flex수정)/README.md: -------------------------------------------------------------------------------- 1 | # 실습 2 2 | 3 | > 아래의 내용을 참고하여 만들어봅시다. 색상, 크기 및 문구는 변경 가능합니다. 4 | 5 | ![이미지](./README.PNG) 6 | 7 | ## 카드 8 | 9 | * 카드의 너비는 300px입니다. 10 | 11 | * 상품명은 `h3` 태그를 활용하며 나머지 모든 글씨는 자유롭게 활용합니다. 12 | 13 | -------------------------------------------------------------------------------- /practices/Web/220907/README.md: -------------------------------------------------------------------------------- 1 | # ✅Bootstrap Grid System 2 | 3 | > 2022-09-07 오전 수업내용을 복습했습니다 4 | > 5 | > 소스코드는 01_grid.html 파일을 참조해주세요 6 | 7 | 8 | 9 | ![220907_1](https://user-images.githubusercontent.com/106902415/188814652-75887bd5-8fbe-44ab-882d-ac938d26bf43.gif) -------------------------------------------------------------------------------- /practices/Web/220915/01_bom.js: -------------------------------------------------------------------------------- 1 | // 탭 창 2 | window.open() 3 | 4 | // 인쇄 창 5 | window.print() 6 | 7 | // 메세지 및 확인, 취소 버튼이 있는 대화상자 창 8 | window.confirm() 9 | 10 | // document도 브라우저 내에 종속되어 있기 때문에 window 전역 객체에 포함 11 | window.document 12 | // 이 경우 작성된 HTML 문서가 반환됨 -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6074.py: -------------------------------------------------------------------------------- 1 | alpha = input() 2 | alpha = ord(alpha) 3 | start = ord('a') 4 | 5 | while start <= alpha: 6 | print(chr(start), end = ' ') 7 | start += 1 8 | 9 | # 알파벳 문자 a의 정수값은 ord('a')로 알아낼 수 있다. 10 | # chr(정수값)을 이용하면 다시 유니코드 문자를 출력할 수 있다. -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6069.py: -------------------------------------------------------------------------------- 1 | grade = input() 2 | 3 | if grade == 'A': 4 | print('best!!!') 5 | elif grade == 'B': 6 | print('good!!') 7 | elif grade == 'C': 8 | print('run!') 9 | elif grade == 'D': 10 | print('slowly~') 11 | else: 12 | print('what?') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6067.py: -------------------------------------------------------------------------------- 1 | n = input() 2 | 3 | n = int(n) 4 | 5 | if n < 0: 6 | if n % 2 == 0: 7 | print('A') 8 | else: 9 | print('B') 10 | if n > 0: 11 | if n % 2 == 0: 12 | print('C') 13 | else: 14 | print('D') 15 | 16 | -------------------------------------------------------------------------------- /practices/Python/220713/10.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 리스트의 요소 중에서 5의 개수를 출력하시오. 3 | # numbers = [7, 17, 10, 5, 4, 3, 17, 5, 2, 5] 4 | 5 | # 접근방법 6 | # '5'를 특정해서 그 수를 세기: .count 활용하기! 7 | 8 | # 코드 9 | 10 | numbers = [7, 17, 10, 5, 4, 3, 17, 5, 2, 5] 11 | count_5 = numbers.count(5) 12 | 13 | print(count_5) -------------------------------------------------------------------------------- /practices/Web/assignment/220902/README.md: -------------------------------------------------------------------------------- 1 | # 2022-09-02 / 5일차 실습 2 | 3 | > 3인 1조 페어 프로그래밍 [2-14조] 4 | 5 | 6 | 7 | ### 💡실습 후기 8 | 9 | - nevigation bar, article/aside/section, footer 를 적절히 배치하여 웹페이지를 작성했습니다. 10 | - hover 를 활용해 이미지나 텍스트에 오버레이 효과를 주었습니다. 11 | - 좋은 팀원들과 유쾌한 분위기 속에 협업 할 수 있어서 좋았습니다. -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6086.py: -------------------------------------------------------------------------------- 1 | # 1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데, 2 | # 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자. 3 | 4 | 5 | n = int(input()) 6 | 7 | num = 0 8 | sum = 0 9 | 10 | while True: 11 | sum += num 12 | num += 1 13 | if sum >= n: 14 | break 15 | 16 | print(sum) -------------------------------------------------------------------------------- /practices/Python/220712/02.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 문자열 word의 길이를 출력하는 코드를 3 | # 작성하시오 4 | # 주의 ! len() 함수 사용 금지 5 | # 입력: word = 'happly!' 6 | # 출력: 6 7 | 8 | # 코드 9 | word = 'happy!' 10 | count = 0 11 | 12 | for char in word: # 모든 문자를 돌면서 1씩 증가시킨다. 13 | count = count + 1 # count += 1 14 | print(count) -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6092.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | a = input().split() 3 | 4 | for i in range(n): 5 | a[i] = int(a[i]) 6 | 7 | d = [] 8 | for i in range(24): 9 | d.append(0) 10 | 11 | for i in range(n): 12 | d[a[i]] += 1 13 | 14 | for i in range(1, 24): 15 | print(d[i], end=' ') -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6090.py: -------------------------------------------------------------------------------- 1 | a, m, d, n = map(int, input().split()) 2 | 3 | # 1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만듬 4 | # n번째 수를 출력하자 5 | 6 | # 1(시작값a) * (-2)(곱할값m) + 1(더할값d) ... 몇번째인지 나타내는 정수 8(n) 7 | 8 | for i in range(1, n): 9 | cycle = (a * m) + d 10 | a = cycle 11 | 12 | print(a) -------------------------------------------------------------------------------- /practices/DB/13_join_music.sql: -------------------------------------------------------------------------------- 1 | -- 0822 오후 실습 코드 예제 2 | 3 | -- INNER JOIN 4 | SELECT * 5 | FROM albums JOIN artists 6 | ON albums.ArtistId = artists.ArtistId 7 | LIMIT 5; 8 | 9 | -- LEFT OUTER JOIN 10 | SELECT * 11 | FROM albums LEFT JOIN artists 12 | ON albums.ArtistId = artists.ArtistId 13 | LIMIT 5; -------------------------------------------------------------------------------- /practices/Web/assignment/220906/README.md: -------------------------------------------------------------------------------- 1 | # 2022-09-06 / 7일차 실습 2 | 3 | > Bootstrap 이용해서 웹페이지 만들기 4 | 5 | 6 | 7 | ![220906](https://user-images.githubusercontent.com/106902415/188581503-da4ce2ec-2a89-4b00-bcce-1b9f551db71f.gif) 8 | 9 | 10 | 11 | --- 12 | 13 | 14 | 15 | ### 💡실습 후기 16 | 17 | - 너무 재밌어요 〰️ ❤️ -------------------------------------------------------------------------------- /practices/Web/assignment/220906/style.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'SUIT-Regular'; 3 | src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_suit@1.0/SUIT-Regular.woff2') format('woff2'); 4 | font-weight: normal; 5 | font-style: normal; 6 | } 7 | 8 | * { 9 | font-family: 'SUIT-Regular'; 10 | } -------------------------------------------------------------------------------- /practices/Web/assignment/220907/README.md: -------------------------------------------------------------------------------- 1 | # 2022-09-07 / 8일차 실습 2 | 3 | > Bootstrap 이용해서 웹페이지 만들기 4 | 5 | 6 | 7 | ![220907_2](https://user-images.githubusercontent.com/106902415/189019624-763173bd-8714-4fb9-9134-5b21e9edfed8.gif) 8 | 9 | 10 | 11 | --- 12 | 13 | 14 | 15 | ### 💡실습 후기 16 | 17 | - 즐거운 실습시간 ^_^ -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6079.py: -------------------------------------------------------------------------------- 1 | # 정수 1개가 입력된다. 2 | # 1, 2, 3, 4, 5 ... 를 순서대로 계속 더해 합을 만들어가다가, 3 | # 입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다. 4 | 5 | n = int(input()) 6 | count = 0 7 | sum = 0 8 | 9 | while True: 10 | sum += count 11 | if sum >= n: 12 | print(count) 13 | break 14 | count += 1 15 | -------------------------------------------------------------------------------- /practices/Python/220712/01.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 수 n이 3의 배수이면서 짝수인 경우 ‘참’을 3 | # 거짓인 경우 ‘거짓'을 출력하시오. 4 | 5 | # 접근방법 6 | # 1. 주어진 수 n 을 입력 7 | # 2. 참/거짓을 판별하는 if-else 조건문 작성 8 | # 3의 배수이면서 짝수: 6, 12, 18, 24, 30 ... (6의 배수) 9 | 10 | # 코드 11 | n = int(input()) 12 | if n % 6 == 0: 13 | print('참') 14 | else: 15 | print('거짓') 16 | 17 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6066.py: -------------------------------------------------------------------------------- 1 | a, b, c = input().split() 2 | 3 | a = int(a) 4 | b = int(b) 5 | c = int(c) 6 | 7 | if a%2==0 : 8 | print("even") 9 | else : 10 | print("odd") 11 | 12 | if b%2==0 : 13 | print("even") 14 | else : 15 | print("odd") 16 | 17 | if c%2==0 : 18 | print("even") 19 | else : 20 | print("odd") 21 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6080.py: -------------------------------------------------------------------------------- 1 | # 서로 다른 주사위 2개의 면의 개수 n, m이 공백을 두고 입력된다. 2 | # 단, n, m은 10이하의 자연수 3 | 4 | # 나올 수 있는 주사위의 숫자를 한 세트씩 줄을 바꿔 모두 출력한다. 5 | # 첫 번째 수는 n, 두 번째 수는 m으로 고정해 1부터 오름차순 순서로 출력하도록 한다. 6 | 7 | n, m = map(int, input().split()) 8 | 9 | for i in range(1, n+1): 10 | for j in range(1, m+1): 11 | print(i, j) 12 | 13 | -------------------------------------------------------------------------------- /practices/Web/220831/01_flex.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | .item-container { 6 | display: flex; 7 | height: 500px; 8 | flex-direction: row; 9 | align-items: center; 10 | justify-content: center; 11 | } 12 | 13 | .card { 14 | width: 100px; 15 | height: 200px; 16 | border: 1px solid black; 17 | margin: 1rem; 18 | } -------------------------------------------------------------------------------- /practices/Web/220915/03_dom.js: -------------------------------------------------------------------------------- 1 | console.log('hello, js!') 2 | 3 | alert('js 학습이 시작되었습니다.') 4 | 5 | // h1 요소(element)를 만들고 6 | const title = document.createElement('h1') 7 | 8 | // 텍스트를 추가하고 9 | title.innerText = 'JS 기초' 10 | 11 | // 선택자로 body태그를 가져와서 12 | const body = document.querySelector('body') 13 | 14 | // body태그에 자식 요소로 추가 15 | body.appendChild(title) -------------------------------------------------------------------------------- /practices/Python/220713/09.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 리스트가 반장 선거 투표 결과일 때 이영희의 총 득표수를 출력하시오. 3 | # Input 4 | # students = ['이영희', '김철수', '이영희', '조민지', '김철수', '조민지', '이영희', '이영희'] 5 | 6 | # 접근방법 7 | # '이영희'를 특정해서 그 수를 세기: .count 이용하기! 8 | 9 | # 코드 10 | 11 | students = ['이영희', '김철수', '이영희', '조민지', '김철수', '조민지', '이영희', '이영희'] 12 | 13 | votes_lee = students.count('이영희') 14 | print(votes_lee) 15 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/README.md: -------------------------------------------------------------------------------- 1 | # 🗂️ Django - CRUD 2 | 3 | > 기간: 2022.09.28 ~ 2022.09.29 4 | > 5 | > 내용: CRUD 기능을 가진 Todo 서비스 개발 6 | 7 | 8 | 9 | ![220929](https://user-images.githubusercontent.com/106902415/193028588-e359d5fe-7b31-4fc6-a785-b8c836016a83.gif) 10 | 11 | 12 | 13 | --- 14 | 15 | 16 | 17 | ### 💡 실습 후기 18 | 19 | - Django 를 활용해서 CRUD 기능을 구현할 수 있게 되었습니다 ^_^ -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from . import views 3 | 4 | app_name = "todos" 5 | 6 | urlpatterns = [ 7 | path("", views.index, name="index"), 8 | path("create/", views.create, name="create"), 9 | path("delete/", views.delete, name="delete"), 10 | path("update/", views.update, name="update"), 11 | ] 12 | -------------------------------------------------------------------------------- /practices/Python/220713/ex_01.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 숫자 n을 받아 세제곱 결과를 반환하는 함수 cube를 정의하시오 3 | # cube 함수를 호출하여 12의 세제곱 결과를 출력하시오 4 | 5 | # 접근방법 6 | # 1. 숫자 n을 받아: input 7 | # 2. 세제곱 결과를 반환하는 함수 cube를 정의하시오: def 8 | # 3. cube 함수를 호출하여: return 9 | # 4. 12의 세제곱 결과를 출력하시오: print 10 | 11 | # 코드 12 | 13 | def cube(n): 14 | return n*n*n # n**3 으로 제곱근 표현하는 것도 가능 15 | 16 | print(cube(12)) 17 | 18 | # 출력값: 1728 -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6083.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 2 2 2 3 | 4 | 0 0 0 5 | 0 0 1 6 | 0 1 0 7 | 0 1 1 8 | 1 0 0 9 | 1 0 1 10 | 1 1 0 11 | 1 1 1 12 | 8 13 | 14 | ''' 15 | r, g, b = map(int, input().split()) 16 | 17 | cnt = 0 18 | 19 | for i in range(r): 20 | for j in range(g): 21 | for k in range(b): 22 | cnt += 1 23 | print(i, j, k) 24 | 25 | print(cnt) 26 | 27 | 28 | -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습1/README.md: -------------------------------------------------------------------------------- 1 | # 실습 1 2 | 3 | > 아래의 내용을 참고하여 만들어봅시다. 색상, 크기 및 문구는 변경 가능합니다. 4 | 5 | ![이미지](./README.PNG) 6 | 7 | ## 상단 문구 8 | 9 | * 상단 문구는 `h2` 태그를 활용하여 작성합니다. 10 | 11 | * ALL ABOUT의 글씨 크기만 12px로 변경하고 줄바꿈을 합니다. 12 | 13 | ## 카드 14 | 15 | * 카드들의 전체 영역의 너비는 900px입니다. 16 | 17 | * 개별 카드 아이템(이미지 및 텍스트)의 너비는 300px입니다. 18 | 19 | * 이미지는 `images` 폴더를 활용합니다. 20 | 21 | 22 | -------------------------------------------------------------------------------- /practices/Python/220718/ex_05.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 숫자의 길이를 구하는 코드입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Output: 8 5 | 6 | # 오류 코드 7 | # number = 22020718 8 | # print(len(number)) 9 | 10 | # 오류 원인 11 | # TypeError: object of type 'int' has no len() 12 | # len()는 문자열의 길이를 변환하는 함수 13 | # 따라서 정수값을 문자열로 변환하여 len() 적용 14 | 15 | # 수정 코드 16 | number = 22020718 17 | result = len(str(number)) 18 | print(result) -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습1(flex수정)/README.md: -------------------------------------------------------------------------------- 1 | # 실습 1 2 | 3 | > 아래의 내용을 참고하여 만들어봅시다. 색상, 크기 및 문구는 변경 가능합니다. 4 | 5 | ![이미지](./README.PNG) 6 | 7 | ## 상단 문구 8 | 9 | * 상단 문구는 `h2` 태그를 활용하여 작성합니다. 10 | 11 | * ALL ABOUT의 글씨 크기만 12px로 변경하고 줄바꿈을 합니다. 12 | 13 | ## 카드 14 | 15 | * 카드들의 전체 영역의 너비는 900px입니다. 16 | 17 | * 개별 카드 아이템(이미지 및 텍스트)의 너비는 300px입니다. 18 | 19 | * 이미지는 `images` 폴더를 활용합니다. 20 | 21 | 22 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6082.py: -------------------------------------------------------------------------------- 1 | # 문제가 좀 이상한듯 2 | # 아래의 답안 코드대로 작성하면 33이 등장했을 때 XX 가 아닌 X만 뜸 3 | 4 | # 30 보다 작은 정수 1개가 입력된다. 5 | n = int(input()) 6 | 7 | # 1 부터 n까지 '공백을 두고' 순서대로 출력하되 8 | # 3 or 6 or 9 가 포함되어 있는 수라면 9 | # 그 수 대신 영문 대문자 X 를 출력 10 | 11 | for i in range(1, n+1): 12 | 13 | if (i%10==3 or i%10==6 or i%10==9): 14 | print('X',end=' ') 15 | continue 16 | 17 | print(i,end=' ') -------------------------------------------------------------------------------- /practices/Python/220714/17.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 소문자로 구성된 문자열 word가 주어질 때, 모두 대문자로 바꾸어 표현하시오. 3 | # .upper(), .swapcase() 사용 금지 4 | # Input: banana 5 | # Output: BANANA 6 | 7 | # 접근방법 8 | # 1. 알파벳을 숫자로 바꾸고 9 | # 2. 그 숫자를 -32 하고 10 | # 3. 다시 숫자를 알파벳으로 바꿈 11 | 12 | # 코드 13 | word = 'banana' 14 | result = '' 15 | 16 | for i in word: 17 | number = ord(i) 18 | number = number-32 19 | result += chr(number) 20 | print(result) -------------------------------------------------------------------------------- /practices/Python/220719/21.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 숫자를 뒤집은 결과를 출력하시오. 3 | # * 문자열이 아닌 숫자로 활용해서 풀어주세요. str() 사용 금지 4 | # Input: 1234 5 | # Output: 4321 6 | 7 | # 코드 8 | number = 1234 9 | result = 0 10 | while number: 11 | result *= 10 # 이전 결과에 10을 곱하고 12 | result += number%10 # 나머지를 더해주고 13 | number //= 10 # number를 깎는다. 14 | print(result) 15 | 16 | # 다른 코드 17 | number = 1234 18 | print(int(str(number)[::-1])) 19 | -------------------------------------------------------------------------------- /practices/Python/220714/14.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 문자열 word가 주어질 때, 3 | # 해당 문자열에서 a 개수를 구하세요. count() 메서드 사용 금지 4 | # Input: apple 5 | # Output: 1 6 | # 아래의 테스트 케이스로도 확인 해보세요. 7 | # banana # 3 8 | # kiwi # 0 9 | 10 | # 접근방법 11 | # 1. 개수를 세주는 변수 count 생성 12 | # 2. word 는 반복하되, 끝이 정해져있는 구조: for 문 13 | 14 | # 코드 15 | word = 'apple' 16 | count = 0 17 | 18 | for letter in word: 19 | if letter == 'a': 20 | count += 1 21 | print(count) 22 | 23 | 24 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/models.py: -------------------------------------------------------------------------------- 1 | from email.policy import default 2 | from django.db import models 3 | 4 | # Create your models here. 5 | 6 | 7 | class Todo(models.Model): 8 | priority = models.CharField(max_length=5) 9 | content = models.CharField(max_length=80) 10 | created_at = models.DateField(auto_now_add=True) 11 | deadline = models.DateField(null=True) 12 | completed = models.BooleanField(default=False) 13 | -------------------------------------------------------------------------------- /practices/Web/assignment/220913/README.md: -------------------------------------------------------------------------------- 1 | # 2022-09-13 / 10일차 실습 2 | 3 | > Bootstrap 이용해서 반응형 웹페이지 만들기 4 | 5 | 6 | 7 | ![220913](https://user-images.githubusercontent.com/106902415/189899794-2cd63e40-019d-4d4f-857f-e2a2ffc1b7c4.gif) 8 | 9 | 10 | 11 | --- 12 | 13 | 14 | 15 | ### 💡실습 후기 16 | 17 | - Navbar 에 Modal 을 추가해서 로그인 창을 생성했습니다. 18 | - List group, Table, Pagination 으로 구성된 Community 페이지를 작성했습니다. 19 | - container - row - col 구조를 활용해 반응형 레이아웃을 구성했습니다. -------------------------------------------------------------------------------- /practices/Python/220718/19.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # > 양의 정수 number가 주어질 때, 숫자의 길이를 구하시오. 3 | # **양의 정수number를 문자열로 변경하는 것은 금지입니다. str() 사용 금지** 4 | # Input: 123 5 | # Output: 3 6 | 7 | # 접근 방법 8 | # while문 이용하기 9 | 10 | # 코드 11 | number = 123 12 | count = 0 13 | # 몫이 0이 되면 종료해야하니까! 14 | # int: 0이 아닌 다른 수면 무조건 True! -- while문 15 | while number != 0: 16 | number //= 10 17 | count += 1 18 | print(count) 19 | 20 | # 파이써닉한 코드: 문자열로 형 변환 21 | number = 123 22 | print(len(str(number))) -------------------------------------------------------------------------------- /practices/Python/220718/ex_03.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 두 수를 Input으로 받아 합을 구하는 코드이다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Input: 10 20 5 | # Output: 30 6 | 7 | # 오류 코드 8 | # numbers = input().split() 9 | # print(sum(numbers)) 10 | 11 | # 오류 원인 12 | # TypeError: unsupported operand type(s) for +: 'int' and 'str' 13 | # sum 은 리스트, 튜플 등을 연산하는 내장함수이기 때문에 14 | # 정수 10, 20의 합을 구하고 싶다면, + 이용해야함 15 | 16 | # 수정 코드 17 | a, b = input().split() 18 | a = int(a) 19 | b = int(b) 20 | print(a + b) 21 | -------------------------------------------------------------------------------- /practices/DB/00_create.sql: -------------------------------------------------------------------------------- 1 | -- 테이블 만들기 2 | CREATE TABLE healthcare ( 3 | id PRIMARY KEY, 4 | sido INTEGER NOT NULL, 5 | gender INTEGER NOT NULL, 6 | age INTEGER NOT NULL, 7 | height INTEGER NOT NULL, 8 | weight INTEGER NOT NULL, 9 | waist REAL NOT NULL, 10 | va_left REAL NOT NULL, 11 | va_right REAL NOT NULL, 12 | blood_pressure INTEGER NOT NULL, 13 | smoking INTEGER NOT NULL, 14 | is_drinking BOOLEAN NOT NULL 15 | ); 16 | 17 | -- csv import 하기 18 | .mode csv 19 | .import health.csv healthcare -------------------------------------------------------------------------------- /practices/Python/220718/ex_04.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 문자열을 입력받아 단어별로 나누는 코드입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Input: I'm Tuotur 6 5 | # Output: ["I'm", 'Tutor', '6'] 6 | 7 | # 오류 코드 8 | # words = list(map(int, input().split())) 9 | # print(words) 10 | 11 | # 오류 원인 12 | # ValueError: invalid literal for int() with base 10: "I'm" 13 | # Input 과 Output 이 int type 이 아니라 문자열이기 때문에 14 | # map 으로 int 변환을 진행할 필요가 없음 15 | 16 | # 수정 코드 17 | words = list(input().split()) 18 | print(words) 19 | 20 | -------------------------------------------------------------------------------- /practices/Python/220712/07.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 리스트 numbers에서 최솟값을 구하여 출력하시오. 3 | # min() 함수 사용 금지 4 | # numbers = [0, 20, 100] 5 | 6 | # 접근방식 7 | # !. 처음부터 끝까지 돌아야하니까 for문 쓴다. 8 | # 2. 비교할 변수 이름 지정(min_num) 9 | # 3. 비교가 참인 경우는 min_num > n 10 | # 거짓인 경우는 min_num = n 11 | 12 | # 코드 13 | numbers = [0, 20, 100] 14 | min_num = numbers[0] # 주어진 수 가운데 가장 작은 수를 초기값에 입력 15 | 16 | for n in numbers: # 반복 17 | if min_num > n: # 만약, min값이 n보다 크면 바꾼다. 18 | min_num = n 19 | print(min_num) -------------------------------------------------------------------------------- /practices/Web/assignment/220922/basicpjt/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for basicpjt project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'basicpjt.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/basicpjt/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for basicpjt project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'basicpjt.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todopjt/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for todopjt project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'todopjt.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todopjt/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for todopjt project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'todopjt.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /practices/Web/220830/02_selector.html: -------------------------------------------------------------------------------- 1 | 20 | 21 |

-------------------------------------------------------------------------------- /practices/DB/README.md: -------------------------------------------------------------------------------- 1 | # 📑데이터베이스 실습 2 | 3 | > SQLite 를 활용하여 다양한 쿼리를 작성했습니다. 4 | 5 | 6 | 7 | - [2022-08-16-TUE](assignment/220816.md) 8 | - [2022-08-17-WED](assignment/220817.md) 9 | - [2022-08-18-THU](assignment/220818.md) 10 | - [2022-08-19-FRI](assignment/220819.md) 11 | - [2022-08-22-MON](assignment/220822.md) 12 | 13 | - [2022-08-23-TUE](assignment/220823.md) 14 | - [2022-08-24-WED](assignment/220824.md) 15 | - [2022-08-25-THU](assignment/220825.md) 16 | 17 | - [2022-08-26-FRI](assignment/220826.md) 18 | -------------------------------------------------------------------------------- /practices/Python/220712/05.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 숫자의 평균을 구하는 코드를 작성하시오. 3 | # sum(), len() 함수 사용 금지 4 | # numbers = [3, 20, 100] 5 | 6 | # 접근방식 7 | # result, count 의 2가지 변수를 만들어 기록하는 것이 핵심! 8 | 9 | # 코드 10 | 11 | numbers = [3, 10, 20] # 문제제공 12 | 13 | result = 0 # 값 초기화 14 | count = 0 # 값 초기화 15 | 16 | for number in numbers: # 반복 17 | result = result + number 18 | count = count + 1 19 | 20 | print(result/count) 21 | 22 | # 쉬운 풀이: print(sum(numbers)/len(nembers)) -------------------------------------------------------------------------------- /practices/Web/assignment/220908/README.md: -------------------------------------------------------------------------------- 1 | # 2022-09-08 / 9일차 실습 2 | 3 | > Bootstrap 이용해서 웹페이지 만들기 4 | 5 | 6 | 7 | ### 1. shop-homepage 8 | 9 | ![220908_1](https://user-images.githubusercontent.com/106902415/189092993-4fc15efa-28fb-4645-8893-7b9b328550b7.gif) 10 | 11 | 12 | 13 | ### 2. shop-item 14 | 15 | ![220908_2](https://user-images.githubusercontent.com/106902415/189146469-9e027173-e3eb-49eb-a308-42ee85659579.gif) 16 | 17 | 18 | 19 | --- 20 | 21 | 22 | 23 | ### 💡실습 후기 24 | 25 | - 추석 연휴 잘 보내세요 (⁎ᵕᴗᵕ⁎) ♡ -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습1/style.css: -------------------------------------------------------------------------------- 1 | /* 아래에 CSS를 작성해주세요. */ 2 | * { 3 | box-sizing: border-box; 4 | } 5 | 6 | .title { 7 | text-align: center; 8 | } 9 | 10 | .sub-text { 11 | display: block; 12 | font-size: 16px; 13 | } 14 | 15 | .item-list { 16 | width: 900px; 17 | } 18 | 19 | .item { 20 | width: 300px; 21 | display: inline-block; 22 | margin: 4px; 23 | } 24 | 25 | .item-img { 26 | width: 100%; 27 | border-radius: 1rem; 28 | } 29 | 30 | .item-subtitle { 31 | color: rgb(132, 128, 128); 32 | font-weight: bold; 33 | } -------------------------------------------------------------------------------- /practices/Python/220712/06.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 리스트 numbers에서 최댓값을 구하여 출력하시오. 3 | # 주의 ! max() 함수 사용 금지 4 | # numbers = [0, 20, 100] 5 | 6 | # 접근방식 7 | # !. 처음부터 끝까지 돌아야하니까 for문 쓴다. 8 | # 2. 비교할 변수 이름 지정(max_num) 9 | # 3. 비교가 참인 경우는 max_num < n 10 | # 거짓인 경우는 max_num = n 11 | 12 | # 코드 13 | numbers = [0, 20, 100] 14 | max_num = float("-inf") # 파이썬에서 가장 작은 수를 초기값에 입력 15 | # 혹은 max_num = numbers[0] 하면 편하다! 16 | for n in numbers: # 반복 17 | if max_num < n: # 만약, max값이 n보다 작으면 바꾼다. 18 | max_num = n 19 | print(max_num) 20 | 21 | -------------------------------------------------------------------------------- /practices/Python/220718/ex_08.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 문자열에서 모음의 개수를 찾는 코드입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Output: 3 5 | 6 | # 오류 코드 7 | # word = "HappyHacking" 8 | # count = 0 9 | # for char in word: 10 | # if char == "a" or "e" or "i" or "o" or "u": 11 | # count += 1 12 | # print(count) 13 | 14 | # 오류 원인 15 | # if char == "a" or "e" or "i" or "o" or "u": 코드에서 16 | # == 연산이 or 연산보다 먼저 처리되기 때문에 수정해야 함 17 | 18 | # 수정 코드 19 | word = "HappyHacking" 20 | count = 0 21 | 22 | for char in word: 23 | if char in "aeiou": 24 | count += 1 25 | print(count) 26 | 27 | -------------------------------------------------------------------------------- /practices/Web/220831/01_flex.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /practices/Python/220719/20.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 정수 number가 주어질 때, 각 자릿수의 합을 구해서 출력하세요. 3 | # Input: 123 4 | # Output: 6 5 | 6 | # 접근방법 7 | # 10으로 나눈 나머지의 합을 더해나가기 8 | 9 | # 코드 10 | number = 123 11 | result = 0 12 | while number: # number가 0일 때 Stop <- int 는 0일 때 False 니까 13 | result += number%10 # 몫은 다음 number 14 | number //= 10 # 나머지는 더해나가기 15 | print(result) 16 | 17 | # 다른 코드 18 | number = 123 19 | result = 0 20 | while number: 21 | number, remainder = divmod(number, 10) # divmod(x, y)는 x 를 y로 나누고, 22 | result += remainder # 결과를 튜플로 반환 23 | print(result) 24 | -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습2/style.css: -------------------------------------------------------------------------------- 1 | /* 아래에 CSS를 작성해주세요. */ 2 | * { 3 | box-sizing: border-box; 4 | } 5 | 6 | .card { 7 | width: 300px; 8 | } 9 | 10 | .card-img { 11 | width: 100%; 12 | border-radius: 1rem; 13 | } 14 | 15 | .card-brand { 16 | display: block; 17 | color: rgb(132, 128, 128); 18 | } 19 | 20 | .card-price { 21 | display: block; 22 | font-size: 1.5rem; 23 | } 24 | 25 | .card-price-per { 26 | color:rgb(57, 214, 249); 27 | } 28 | 29 | .card-rank { 30 | font-size: 1rem; 31 | color:rgb(132, 128, 128); 32 | } 33 | 34 | .black { 35 | color: black; 36 | } -------------------------------------------------------------------------------- /practices/Python/220713/11.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 2단부터 9단까지 반복하여 구구단을 출력하세요. 3 | # * 문자열 출력시 f-string을 활용하면 편하게 작성할 수 있습니다. 4 | 5 | # 접근방법 6 | # 1. 2단, 3단, 4단 ... 문자열 안에 변수 넣기 : f-string 7 | # 2. 2x1=2 2x2=4 2x3=6 ... nx(1,2,3 ...) = 결과값 8 | # : n, 1~9의 정수부, 두 변수의 곱부 = 변수 3개 필요 9 | # for 문으로 반복되는 작업 실행 10 | 11 | # 코드 12 | 13 | # 만들고 싶은 구조 14 | # 2단 15 | # 2 x 1 = 2 16 | # 2 x 2 = 4 17 | # 2 x 3 = 6 18 | # ... 19 | # 2 x 9 = 18 20 | 21 | for n in range(2, 10): 22 | print(f'{n}단') 23 | for n_plus in range(1, 10): 24 | print (f'{n} x {n_plus} = {n * n_plus}') 25 | 26 | -------------------------------------------------------------------------------- /practices/Python/220714/16.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 문자열 word가 주어질 때, 해당 문자열에서 모음의 갯수를 출력하시오. 3 | # 모음 : a, e, i, o, u count() 사용 금지 4 | # Input: apple 5 | # Output: 2 6 | # 아래의 테스트 케이스로도 확인 해보세요. 7 | # aeiou # 5 8 | # zxcvb # 0 9 | 10 | # 접근방법 11 | # 모음 값들을 하나씩 지정 12 | 13 | # 코드 14 | word = 'apple' 15 | count = 0 16 | 17 | for i in range(len(word)): 18 | if word[i] == 'a' or word[i] == 'e' or word[i] == 'i' or word[i] == 'o' or word[i] == 'u': 19 | count += 1 20 | print(count) 21 | 22 | # 다른 코드 23 | word = 'apple' 24 | count = 0 25 | 26 | for i in word: 27 | if i in 'aeiou': 28 | count += 1 29 | print(count) -------------------------------------------------------------------------------- /practices/Python/220718/ex_06.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 1부터 N까지의 숫자에 2를 곱해서 변수에 저장하는 코드입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Output: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20] 5 | 6 | # 오류 코드 7 | # N = 10 8 | # answer = () 9 | # for number in range(N + 1): 10 | # answer.append(number * 2) 11 | # print(answer) 12 | 13 | # 오류 원인 14 | # AttributeError: 'tuple' object has no attribute 'append' 15 | # 주어진 for문 실행은 튜플 생성으로 이어지는데, 16 | # .append 는 리스트에 값을 추가하는 함수라서 오류 17 | # 따라서 answer 을 리스트로 변환하기 18 | 19 | # 수정 코드 20 | N = 10 21 | answer = [] 22 | for number in range(N + 1): 23 | answer.append(number * 2) 24 | print(answer) -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습1(flex수정)/style.css: -------------------------------------------------------------------------------- 1 | /* 아래에 CSS를 작성해주세요. */ 2 | * { 3 | box-sizing: border-box; 4 | } 5 | 6 | .title { 7 | text-align: center; 8 | } 9 | 10 | .sub-text { 11 | display: block; 12 | font-size: 16px; 13 | } 14 | 15 | .item-list { 16 | display: flex; 17 | flex-direction: center; 18 | justify-content: center; 19 | } 20 | 21 | .item { 22 | width: 300px; 23 | display: inline-block; 24 | margin: 4px; 25 | } 26 | 27 | .item-img { 28 | width: 100%; 29 | border-radius: 1rem; 30 | } 31 | 32 | .item-subtitle { 33 | color: rgb(132, 128, 128); 34 | font-weight: bold; 35 | } -------------------------------------------------------------------------------- /practices/Web/220831/02_flex.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 |
13 |
1
14 |
2
15 |
3
16 |
17 |
위로
18 | 19 | -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습2(flex수정)/style.css: -------------------------------------------------------------------------------- 1 | /* 아래에 CSS를 작성해주세요. */ 2 | * { 3 | box-sizing: border-box; 4 | } 5 | 6 | .card { 7 | display: flex; 8 | flex-direction: column 9 | } 10 | 11 | .card-img { 12 | width: 50%; 13 | border-radius: 1rem; 14 | } 15 | 16 | .card-brand { 17 | display: block; 18 | color: rgb(132, 128, 128); 19 | } 20 | 21 | .card-price { 22 | display: block; 23 | font-size: 1.5rem; 24 | } 25 | 26 | .card-price-per { 27 | color:rgb(57, 214, 249); 28 | } 29 | 30 | .card-rank { 31 | font-size: 1rem; 32 | color:rgb(132, 128, 128); 33 | } 34 | 35 | .black { 36 | color: black; 37 | } -------------------------------------------------------------------------------- /practices/Python/220713/12.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 문자열 word가 주어질 때, 3 | # 해당 단어에서 ‘a’를 모두 제거한 결과를 출력하시오. 4 | # Input : apple 5 | # Output : pple 6 | 7 | # 접근방법 8 | # 1. 주어진 문자열 : Input() 9 | # 2. for문으로 한바퀴 돌리기 10 | # 3. a 삭제 명령 11 | # 4. 최종 출력 print 12 | 13 | # 코드 14 | 15 | word = input() 16 | result = word 17 | 18 | for i in word: 19 | if i in 'a': 20 | result = result.replace(i,'') 21 | print(result) 22 | 23 | 24 | # 선생님 코드 25 | # 시퀀스를 끝까지 가는 거니까 while 보다 for 가 좋다! 26 | 27 | word = 'apple' 28 | result = '' 29 | 30 | for char in 'apple': 31 | if char != 'a': 32 | result = result + char 33 | print(result) 34 | -------------------------------------------------------------------------------- /practices/Python/220809/22_유방향그래프.py: -------------------------------------------------------------------------------- 1 | # https://www.notion.so/hphk-edu/22-edea5d6c9e9946c1924dbee716cb9df7 2 | 3 | from pprint import pprint 4 | import sys 5 | sys.stdin = open("21_무방향그래프.txt") 6 | 7 | # 첫째 줄에 정점의 개수 N과 간선의 개수 M 8 | N, M = map(int, input().split()) 9 | 10 | # 인접 행렬 만들기 11 | graph = [[0] * (N+1) for _ in range(N+1)] 12 | 13 | for _ in range(M): 14 | v1, v2 = map(int, input().split()) 15 | graph[v1][v2] = 1 16 | 17 | pprint(graph) 18 | 19 | # 인접 리스트 만들기 20 | graph = [[] for _ in range(N+1)] 21 | 22 | for _ in range(M): 23 | v1, v2 = map(int, input().split()) 24 | graph[v1].append(v2) 25 | 26 | pprint(graph) -------------------------------------------------------------------------------- /practices/DB/00_intro.sql: -------------------------------------------------------------------------------- 1 | -- 데이터베이스 생성하기 2 | $ sqlite3 tutorial.sqlite3 3 | .database 4 | 5 | -- csv 파일을 table로 만들기 6 | .mode csv 7 | .import hellodb.csv examples 8 | .table 9 | -- examples 10 | 11 | -- SELECT 확인하기 12 | SELECT * FROM examples; 13 | -- 1,"길동","홍",600,"충청도",010-0000-0000 14 | 15 | -- 터미널 view 변경하기 16 | .headers on 17 | SELECT * FROM examples; 18 | -- id,first_name,last_name,age,country,phone 19 | -- 1,"길동","홍",600,"충청도",010-0000-0000 20 | .mode column 21 | SELECT * FROM examples; 22 | -- id first_name last_name age country phone 23 | -- -- ---------- --------- --- ------- ------------- 24 | -- 1 길동 홍 600 충청도 010-0000-0000 -------------------------------------------------------------------------------- /practices/DB/10_last.sql: -------------------------------------------------------------------------------- 1 | -- AC/DC의 모든 앨범 2 | -- AC/DC (artists) 3 | -- 앨범(album) 4 | 5 | -- 앨범 검색하려고 했는데 6 | -- 아티스트는 id로 저장되어 있네요 7 | -- AC/DC는 아는데 ID를 모르네요? 8 | 9 | -- ID 조회 10 | SELECT ArtistId 11 | FROM artists 12 | WHERE Name = 'Nirvana'; 13 | -- ArtistId 14 | -- -------- 15 | -- 110 16 | 17 | -- 서브쿼리 18 | SELECT * 19 | FROM albums 20 | WHERE ArtistId = (SELECT ArtistId 21 | FROM artists 22 | WHERE Name = 'Nirvana'); 23 | -- AlbumId Title 24 | -- ArtistId 25 | -- ------- ---------------------------- 26 | -- -------------- -------- 27 | -- 163 From The Muddy Banks Of The 28 | -- Wishkah [Live] 110 29 | -- 164 Nevermind 30 | -- 110 -------------------------------------------------------------------------------- /practices/Python/220718/ex_07.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 평균을 구하는 논리적으로 오류가 있는 코드입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Output: 5.5 5 | 6 | # 오류 코드 7 | # number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 8 | # total = 0 9 | # count = 0 10 | # for number in number_list: 11 | # total += number 12 | # count += 1 13 | # print(total // count) 14 | 15 | # 오류 원인 16 | # (평균)=(전체 합계)/N 의 논리여야 하는데 17 | # 위의 코드는 (평균)=(전체 합계) 결과가 도출됨 18 | # // 는 소수점 이하 부분을 표기하지 않으므로 / 로 수정 19 | 20 | # 수정 코드 21 | number_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 22 | total = 0 23 | count = 0 24 | 25 | for number in number_list: 26 | total += number 27 | count += 1 28 | 29 | average = total / count 30 | print(average) -------------------------------------------------------------------------------- /practices/Web/220907/02_media_query.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 11 | 12 | 20 | 21 | 22 |

안녕하세요

23 | 24 | -------------------------------------------------------------------------------- /practices/Python/220809/21_무방향그래프.py: -------------------------------------------------------------------------------- 1 | # https://www.notion.so/hphk-edu/21-bb38e88c331a46628d5c6ee33ddcd50c 2 | 3 | from pprint import pprint 4 | import sys 5 | sys.stdin = open("21_무방향그래프.txt") 6 | 7 | # 첫째 줄에 정점의 개수 N과 간선의 개수 M 8 | N, M = map(int, input().split()) 9 | 10 | # 인접 행렬 만들기 11 | graph = [[0] * (N+1) for _ in range(N+1)] 12 | 13 | for _ in range(M): 14 | v1, v2 = map(int, input().split()) 15 | graph[v1][v2] = 1 16 | graph[v2][v1] = 1 17 | 18 | pprint(graph) 19 | 20 | # 인접 리스트 만들기 21 | graph = [[] for _ in range(N+1)] 22 | 23 | for _ in range(M): 24 | v1, v2 = map(int, input().split()) 25 | graph[v1].append(v2) 26 | graph[v2].append(v1) 27 | 28 | pprint(graph) -------------------------------------------------------------------------------- /practices/Python/220713/13.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 문자열 word가 주어질 때, 3 | # 해당 단어를 역순으로 뒤집은 결과를 출력하시오. 4 | # Input : apple 5 | # Output : elppa 6 | 7 | # 접근방법 8 | # 1. 주어진 문자열 : Input() 9 | # 2. for문으로 한바퀴 돌리기 10 | # 3. 문자열 순서 뒤집도록 명령 11 | # 4. 최종 출력 print 12 | 13 | # 코드 14 | 15 | word = input() 16 | result = '' # 기존 문자열을 역순으로 담아줄 빈 문자열 선언 17 | 18 | for i in word: 19 | result = i + result 20 | print(result) 21 | 22 | 23 | # 선생님 코드 24 | 25 | word = 'apple' 26 | result - '' 27 | 28 | for char in word: 29 | result = char + result 30 | print(result) 31 | 32 | # 선생님 코드2(index 활용): 알고리즘 코드 풀기 좋음! 33 | word = 'apple' 34 | 35 | for i in range(len(word)): 36 | print(word[len(word)-i-1], end='') -------------------------------------------------------------------------------- /practices/DB/01_hello.sql: -------------------------------------------------------------------------------- 1 | -- classmates 라는 이름의 테이블 생성 2 | CREATE TABLE classmates ( 3 | id INTEGER PRIMARY KEY, 4 | name TEXT 5 | ); 6 | 7 | -- 테이블 목록 조회 8 | .tables 9 | -- classmates examples 10 | 11 | -- 특정 테이블 스키마 조회 12 | .schema classmates 13 | -- CREATE TABLE classmates ( 14 | -- id INTEGER PRIMARY KEY, 15 | -- name TEXT 16 | -- ); 17 | 18 | -- 값 추가 19 | INSERT INTO classmates VALUES (1, '조세호'); 20 | 21 | -- 테이블 조회 22 | SELECT * FROM classmates; 23 | -- 1|조세호 24 | 25 | -- 값 추가2 & 테이블 조회 26 | INSERT INTO classmates VALUES (2, '이동희'); 27 | SELECT * FROM classmates; 28 | -- 1|조세호 29 | -- 2|이동희 30 | 31 | -- 테이블 삭제 & 남은 테이블 목록 조회 32 | DROP TABLE classmates; 33 | .tables 34 | -- examples -------------------------------------------------------------------------------- /practices/Python/220712/04.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 1부터 n까지의 곱을 구하여 출력하는 코드를 3 | # 1) while 문 2) for 문으로 각각 작성하시오. 4 | 5 | # 접근방법 6 | # 1. while 문 7 | # 1) 시작 값 초기화 8 | # 2) 사용자 입력 변수 지정(b_input) 9 | # 3) 매 회 거듭될수록 n 는 1씩 증가해야하고 10 | # 4) result 에 n 을 곱해가야 함 11 | # 5) 종료조건은 n = b_input 12 | # 2. for 문 13 | # 1) 시작 값 초기화 14 | # 2) 숫자의 나열인 range 활용 15 | 16 | # 코드 17 | 18 | # 1. while 문 19 | n = 1 20 | result = 1 21 | b_input = int(input()) 22 | 23 | while n <= b_input: 24 | result *= n 25 | n += 1 26 | print(result) 27 | 28 | # 2. for 문 29 | n = 1 30 | result = 1 31 | b_input = int(input()) 32 | 33 | for n in range(b_input): 34 | n += 1 35 | result *= n 36 | print(result) 37 | -------------------------------------------------------------------------------- /practices/Python/codeup/codeup_6095.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | sys.stdin = open("codeup_6095.txt") 4 | 5 | d=[] #대괄호 [ ] 를 이용해 아무것도 없는 빈 리스트 만들기 6 | for i in range(20) : 7 | d.append([]) #리스트 안에 다른 리스트 추가해 넣기 8 | for j in range(20) : 9 | d[i].append(0) #리스트 안에 들어있는 리스트 안에 0 추가해 넣기 10 | # 리스트 컴프리헨션 써서 11 | # d = [[0 for j in range(20)] for i in range(20)] 12 | # 이와 같이 간단히 작성할 수도 있음 13 | 14 | n = int(input()) 15 | 16 | for i in range(n) : 17 | x, y = input().split() 18 | d[int(x)][int(y)] = 1 19 | 20 | for i in range(1, 20) : 21 | for j in range(1, 20) : 22 | print(d[i][j], end=' ') #공백을 두고 한 줄로 출력 23 | print() #줄 바꿈 -------------------------------------------------------------------------------- /practices/Python/220714/18.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 문자열 word가 주어질 때, Dictionary를 활용해서 3 | # 해당 문자열에서 등장한 모든 알파벳 개수를 구해서 출력하세요. 4 | # Input: banana 5 | # Output: 6 | # b 1 7 | # a 3 8 | # n 2 9 | 10 | # 접근방법 11 | # 1. 결과를 나타내는 딕셔너리에 키가 없을 때: 키-값을 0으로 초기화 12 | # 2. 결과를 나타내는 딕셔너리에 키가 있을 때 13 | 14 | # 코드 15 | word = 'banana' 16 | result = {} 17 | 18 | for i in word: 19 | if not i in result: 20 | result[i] = 1 # 초기값 1 21 | else: 22 | result[i] = result[i] + 1 23 | print(result) 24 | 25 | # 다른 코드 26 | word = 'banana' 27 | result = {} 28 | 29 | for i in word: 30 | result[i] = result.get(i, 0) + 1 31 | print(result) 32 | 33 | # 출력 부분 34 | for key in result: 35 | print(key, result[key]) -------------------------------------------------------------------------------- /practices/Python/220712/03.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 1부터 n까지의 합을 구하여 출력하는 코드를 3 | # 1) while 문 2) for 문으로 각각 작성하시오. 4 | # 주의 ! sum() 함수 사용 금지 5 | 6 | # 접근방법 7 | # 1. while 문 8 | # 1) 시작 값 초기화 9 | # 2) 사용자 입력 변수 지정(a_input) 10 | # 3) 매 회 거듭될수록 n 는 1씩 증가해야하고 11 | # 4) result 에 n 을 더해가야 함 12 | # 5) 종료조건은 n = a_input 13 | # 2. for 문 14 | # 1) 시작 값 초기화 15 | # 2) 숫자의 나열인 range 활용 16 | 17 | # 코드 18 | 19 | # 1. while 문 20 | n = 0 21 | result = 0 22 | a_input = int(input()) 23 | 24 | while n <= a_input: 25 | result += n 26 | n += 1 27 | print(result) 28 | 29 | # 2. for 문 30 | n = 0 31 | result = 0 32 | a_input = int(input()) 33 | 34 | for n in range(a_input): 35 | n += 1 36 | result += n 37 | print(result) 38 | -------------------------------------------------------------------------------- /practices/Web/220919/02_input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 23 | 24 | -------------------------------------------------------------------------------- /practices/Python/220713/ex_02.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 가로와 세로의 길이를 각각 a, b로 받아 3 | # 사각형 넓이와 둘레를 함께 반환하는 함수 rectangle을 정의하시오. 4 | # 사각형이 가로가 20, 세로가 30일 때의 결과를 출력하시오. 5 | # * 사각형 넓이 : 가로 * 세로 6 | # * 사각형 둘레 : (가로 + 세로) * 2 7 | 8 | # 접근방법 9 | # 1. 가로와 세로의 길이를 각각 a, b로 받아 : input 10 | # 2. 사각형 넓이와 둘레를 함께 반환하는 함수 rectangle을 정의하시오. : def, return 11 | # 3. 사각형이 가로가 20, 세로가 30일 때의 결과를 출력하시오. : print 12 | 13 | # 코드 14 | a = int(input()) 15 | b = int(input()) 16 | 17 | def rectangle(a, b): 18 | return a*b, (a+b)*2 # 함수 2개 사이에 , 찍으면 튜플()로 처리! 19 | 20 | result = rectangle(a, b) 21 | print(result) 22 | 23 | 24 | # 선생님 코드 25 | def rectangle(a, b): 26 | W = a * b 27 | G = 2*(a+b) 28 | return W, G 29 | 30 | print(rectangle(20, 30)) 31 | -------------------------------------------------------------------------------- /practices/Web/220831/02_flex.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | height: 10000px; 8 | } 9 | 10 | .nav { 11 | position: sticky; 12 | top: 0; 13 | border: 1px solid black; 14 | height: 50px; 15 | } 16 | 17 | .top-btn { 18 | position: fixed; 19 | bottom: 1rem; 20 | right: 1rem; 21 | border: 1px solid black; 22 | border-radius: 50%; 23 | height: 3rem; 24 | width: 3rem; 25 | text-align: center; 26 | } 27 | 28 | .main { 29 | display: flex; 30 | height: 500px; 31 | } 32 | 33 | .section { 34 | background-color: beige; 35 | } 36 | 37 | .section1 { 38 | flex-grow: 1; 39 | } 40 | 41 | .section2 { 42 | flex-grow: 4; 43 | } 44 | 45 | .section3 { 46 | flex-grow: 1; 47 | } 48 | -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 |
13 | 의자 14 |

15 | 블루밍홈젤리아 인테리어의자 식탁의자 FAB 5colors 16 | 30% 23,900 17 | 4.6 리뷰 823 18 |

19 |
20 | 21 | -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습2(flex수정)/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 |
13 | 의자 14 |

15 | 블루밍홈젤리아 인테리어의자 식탁의자 FAB 5colors 16 | 30% 23,900 17 | 4.6 리뷰 823 18 |

19 |
20 | 21 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'basicpjt.settings') 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == '__main__': 22 | main() 23 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'todopjt.settings') 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == '__main__': 22 | main() 23 | -------------------------------------------------------------------------------- /practices/Web/220901/navi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /practices/DB/04_autoincrement.sql: -------------------------------------------------------------------------------- 1 | -- id 응용: autoincrement 2 | 3 | CREATE TABLE members( 4 | id INTEGER PRIMARY KEY AUTOINCREMENT, 5 | name TEXT NOT NULL 6 | ); 7 | 8 | INSERT INTO members VALUES 9 | (1, '홍길동'), 10 | (2, '김철수'), 11 | (3, '이호영'), 12 | (4, '박민희'), 13 | (5, '최혜영'); 14 | 15 | SELECT * FROM members; 16 | -- id name 17 | -- -- ---- 18 | -- 1 홍길동 19 | -- 2 김철수 20 | -- 3 이호영 21 | -- 4 박민희 22 | -- 5 최혜영 23 | 24 | DELETE FROM members WHERE rowid=5; 25 | INSERT INTO members (name) VALUES ('뿡뿡이'); 26 | SELECT * FROM members; 27 | -- id name 28 | -- -- ---- 29 | -- 1 홍길동 30 | -- 2 김철수 31 | -- 3 이호영 32 | -- 4 박민희 33 | -- 6 뿡뿡이 34 | 35 | -- rowid 를 활용하지 않고 이런 식으로 36 | -- id 를 지정하여 시작하면, 5행의 데이터를 삭제하고 37 | -- 새로운 데이터(뿡뿡이)를 추가했을 때, 38 | -- 새로운 데이터의 id 값이 5가 아닌 6인 것을 확인할 수 있다 -------------------------------------------------------------------------------- /practices/Web/220919/01_button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 |

0

12 | 13 | 33 | 34 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.13 on 2022-09-29 10:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='Todo', 16 | fields=[ 17 | ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('priority', models.IntegerField(default=3)), 19 | ('content', models.CharField(max_length=80)), 20 | ('created_at', models.DateField(auto_now_add=True)), 21 | ('deadline', models.DateField(null=True)), 22 | ('completed', models.BooleanField(default=False)), 23 | ], 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /practices/Web/220901/navi.css: -------------------------------------------------------------------------------- 1 | /* @import url(); 이용해서 네비게이션바 전체에 폰트 적용 */ 2 | @import url('https://fonts.googleapis.com/css2?family=Jua&family=Noto+Sans+KR:wght@400;700&display=swap'); 3 | * { 4 | box-sizing: border-box; 5 | } 6 | 7 | body { 8 | height: 10000px; 9 | font-family: 'Jua', sans-serif; 10 | background-color: aqua; 11 | } 12 | 13 | .nav { 14 | display: flex; 15 | justify-content: space-between; 16 | align-items: center; 17 | position: sticky; 18 | top: 0; 19 | padding: 1rem; 20 | height: 50px; 21 | background-color: white; 22 | } 23 | 24 | .nav-list { 25 | display: flex; 26 | padding: 0; 27 | margin: 0; 28 | list-style: none; 29 | } 30 | 31 | .nav-link { 32 | text-decoration: none; 33 | } 34 | 35 | .nav-link:visited { 36 | color: black; 37 | } 38 | 39 | .nav-link:hover { 40 | color: skyblue; 41 | background-color: black; 42 | } 43 | 44 | .nav-item { 45 | margin: 0 10px; 46 | } -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todopjt/urls.py: -------------------------------------------------------------------------------- 1 | """todopjt URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/3.2/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path, include 18 | 19 | urlpatterns = [ 20 | path("admin/", admin.site.urls), 21 | path("todos/", include("todos.urls")), 22 | ] 23 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/02_input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 02_input.html 8 | 9 | 10 | 11 |

12 | 13 | 29 | 30 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/01_button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 01_button.html 8 | 9 | 10 | 11 | X 12 | 0 13 | 14 | 31 | 32 | -------------------------------------------------------------------------------- /practices/Web/README.md: -------------------------------------------------------------------------------- 1 | # 📑WEB 실습 2 | 3 | > HTML, CSS, JavaScript, Django 를 활용하여 다양한 웹 브라우저를 제작했습니다. 4 | 5 | 6 | 7 | #### HTML, CSS 8 | 9 | - [2022-08-29-MON](assignment/220829.md) 10 | - [2022-08-30-TUE](assignment/220830) 11 | 12 | - [2022-08-31-WED](assignment/220831) 13 | 14 | - 2022-09-01-THU 15 | 16 | - [2022-09-02-FRI (pair)](assignment/220902) 17 | 18 | - 2022-09-05-MON 19 | 20 | - [2022-09-06-TUE](assignment/220906) 21 | 22 | - [2022-09-07-WED](assignment/220907) 23 | 24 | - [2022-09-08-THU](assignment/220908) 25 | 26 | - [2022-09-13-FRI (pair)](assignment/220913) 27 | 28 | 29 | 30 | #### JavaScript 31 | 32 | - [2022-09-19-MON](assignment/220919) 33 | 34 | - [2022-09-20-TUE](assignment/220920) 35 | 36 | 37 | 38 | #### Django 39 | 40 | - [2022-09-22-THU](assignment/220922) 41 | 42 | - [2022-09-23-FRI (pair)](assignment/220923) 43 | 44 | - 2022-09-26-MON 45 | - [2022-09-27-TUE](assignment/220927) 46 | - [2022-09-28-WED](assignment/220928) 47 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/basicpjt/urls.py: -------------------------------------------------------------------------------- 1 | """basicpjt URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/3.2/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path 18 | 19 | from practice import views 20 | 21 | urlpatterns = [ 22 | path('admin/', admin.site.urls), 23 | path('today-dinner/', views.todaydinner), 24 | path('lotto/', views.lotto), 25 | ] 26 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 휘뚜루마뚜루 9 | 10 | 12 | 13 | 14 | 15 | {% block content %} 16 | {% endblock %} 17 |
Copyright 2022. 이수경 All rights reserved.
18 | 19 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /notes/markdown_practice.md: -------------------------------------------------------------------------------- 1 | # Python 2 | 3 | 4 | 5 | ### 1. 개요 6 | 7 | ![](https://wikidocs.net/images/page/5/pahkey_KRRKrp.png) 8 | 9 | 파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어이다. 귀도는 파이썬이라는 이름을 자신이 좋아하는 코미디 쇼인 "몬티 파이썬의 날아다니는 서커스(Monty Python’s Flying Circus)"에서 따왔다고 한다. 10 | 11 | > 인터프리터 언어란 한 줄씩 소스 코드를 해석해서 그때그때 실행해 결과를 바로 확인할 수 있는 언어이다. 12 | 13 | 14 | 15 | ### 2. 특징 16 | 17 | ​ **1. 파이썬은 인간다운 언어이다. 아래 코드는 쉽게 해석된다.** 18 | 19 | ​ `if 4 in [1,2,3,4]: print("4가 있습니다")` 20 | 21 | ​ *만약 4가 1, 2, 3, 4 중에 있으면 "4가 있습니다"를 출력한다. 라고 말이다.* 22 | 23 | ​ **2. 파이썬은 간결하다.** 24 | 25 | ```python 26 | # simple.py 27 | languages = ['python', 'perl', 'c', 'java'] 28 | 29 | for lang in languages: 30 | if lang in ['python', 'perl']: 31 | print("%6s need interpreter" % lang) 32 | elif lang in ['c', 'java']: 33 | print("%6s need compiler" % lang) 34 | else: 35 | print("should not reach here") 36 | ``` 37 | 38 | 39 | ​ **3. 공식문서가 자세히 제공된다.** 40 | 41 | ​ [파이썬 공식문서 링크](https://docs.python.org/3/) 42 | -------------------------------------------------------------------------------- /practices/Web/220919/03_prevent.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 |
11 |

정말 중요한 내용

12 |
13 |

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Neque velit necessitatibus numquam quos ducimus esse molestiae itaque eligendi iste consequatur?

14 | 31 | 32 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/03_prevent.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 03_prevent.html 8 | 9 | 10 |
11 |

정말 중요한 내용

12 |
13 |

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Neque velit necessitatibus numquam quos ducimus esse molestiae itaque eligendi iste consequatur?

14 | 31 | 32 | -------------------------------------------------------------------------------- /practices/Web/220830/02_box.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 28 | 29 | 30 | 32 |
123
33 | 34 | 35 | 37 | 38 |
39 |
40 | 41 | -------------------------------------------------------------------------------- /practices/Web/220830/04_card.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 31 | 32 | 33 |
34 | 책상 35 |

일이 재미있도록! 데스크테리어 장인의 방

36 |
37 | 프로필사진 38 | 포그니 39 |
40 |
41 | 42 | -------------------------------------------------------------------------------- /practices/Web/221026/axios.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 | 13 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /practices/DB/11_CREATE.sql: -------------------------------------------------------------------------------- 1 | -- [0822 필기에 첨부된 엑셀 시트 참조] 2 | -- 새로운 DB를 만들고 그 안에 몇개의 TABLE 생성하기 3 | -- $ sqlite3 project.sqlite3 4 | 5 | -- 표1 스키마 작성 6 | CREATE TABLE users ( 7 | id INT PRIMARY KEY, 8 | name TEXT, 9 | role_id INT 10 | ); 11 | 12 | -- 표1 레코드 채우기 13 | INSERT INTO users VALUES 14 | (1, '관리자', 1), 15 | (2, '김철수', 2), 16 | (3, '이영희', 3); 17 | 18 | -- 표2 스키마 작성 19 | CREATE TABLE role ( 20 | id INT PRIMARY KEY, 21 | title TEXT 22 | ); 23 | 24 | -- 표2 레코드 채우기 25 | INSERT INTO role VALUES 26 | (1, 'admin'), 27 | (2, 'staff'), 28 | (3, 'student'); 29 | 30 | -- 표3 스키마 작성 31 | CREATE TABLE articles ( 32 | id INT PRIMARY KEY, 33 | title TEXT, 34 | content TEXT, 35 | user_id INT 36 | ); 37 | 38 | -- 표3 레코드 채우기 39 | -- 후에 NULL값을 직접 다루는 쿼리를 작성하기 위해 40 | -- 스키마를 작성할 때부터 NOT NULL 조건을 넣지 않음 41 | INSERT INTO articles VALUES 42 | (1, '1번글', '111', 1), 43 | (2, '2번글', '222', 2), 44 | (3, '3번글', '333', 1), 45 | (4, '4번글', '444', NULL); 46 | 47 | -- 확인 48 | .headers on 49 | .mode column 50 | SELECT * FROM users; 51 | SELECT * FROM role; 52 | SELECT * FROM articles; -------------------------------------------------------------------------------- /practices/Web/assignment/220830/실습1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 |

13 | ALL ABOUT BESPOKE 김치플러스 Infinite Line

14 |
15 |
16 | 김치플러스 17 |

INSTALLATION

18 |

BESPOKE Infinite Line 단독 설치 가이드

19 |

내게 딱 맞는 조합과 컬러를 선택했지만, 우리 집 설치 공간과 맞을지 고민이라면 확인해보세요

20 |
21 |
22 | 김치플러스 23 |

INSTALLATION

24 |

BESPOKE Infinite Line 페어 설치 가이드

25 |

내게 딱 맞는 조합과 컬러를 선택했지만, 우리 집 설치 공간과 맞을지 고민이라면 확인해보세요

26 |
27 |
28 | 29 | -------------------------------------------------------------------------------- /practices/Web/assignment/220831/실습1(flex수정)/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 | 11 | 12 |

13 | ALL ABOUT BESPOKE 김치플러스 Infinite Line

14 |
15 |
16 | 김치플러스 17 |

INSTALLATION

18 |

BESPOKE Infinite Line 단독 설치 가이드

19 |

내게 딱 맞는 조합과 컬러를 선택했지만, 우리 집 설치 공간과 맞을지 고민이라면 확인해보세요

20 |
21 |
22 | 김치플러스 23 |

INSTALLATION

24 |

BESPOKE Infinite Line 페어 설치 가이드

25 |

내게 딱 맞는 조합과 컬러를 선택했지만, 우리 집 설치 공간과 맞을지 고민이라면 확인해보세요

26 |
27 |
28 | 29 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | import random 3 | 4 | # Create your views here. 5 | 6 | def todaydinner(request): 7 | 8 | favor = ['냉동삼겹살', '제주흑돼지', '양고기살치살'] 9 | random_favor = random.choice(favor) 10 | 11 | if random_favor == '냉동삼겹살': 12 | random_imgs = 'https://www.meconomynews.com/news/photo/202102/50208_57997_421.jpeg' 13 | elif random_favor == '제주흑돼지': 14 | random_imgs = 'https://api.cdn.visitjeju.net/photomng/imgpath/202111/03/a69e833b-9bfd-42bf-89d2-6dacf80d9a33.jpg' 15 | else: 16 | random_imgs = 'http://www.ichiryu.kr/bizdemo46662/component/board/board_15/u_image/3/477429243_mainmenu3.jpg' 17 | 18 | context = { 19 | 'menu': random_favor, 20 | 'imgs': random_imgs 21 | } 22 | 23 | return render(request, 'today-dinner.html', context) 24 | 25 | 26 | def lotto(request): 27 | 28 | names = ['금수저', '만수르', '건물주', '불로소득', '이 구역의 주인공은 나'] 29 | random_name = random.choice(names) 30 | 31 | context = { 32 | 'name': random_name, 33 | } 34 | 35 | return render(request, 'lotto.html', context) -------------------------------------------------------------------------------- /practices/Python/220712/08.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 주어진 리스트 numbers에서 두번째로 큰 수를 구하여 출력하시오. 3 | # max() 함수 사용 금지 4 | # numbers = [0, 20, 100, 40] 5 | 6 | # 접근방식 7 | # 1. 처음부터 끝까지 돌아야하니까 for문 쓴다. 8 | # 2. 최대로 큰 숫자 찾는 변수 이름 지정(max_num) 9 | # 3. 두번째로 큰 숫자 찾는 변수 이름 지정 10 | # 4. 이전에 max_num 에 있던 수를 3. 으로 넘김 11 | 12 | # 코드 13 | numbers = [0, 20, 100] 14 | max_number = numbers[0] 15 | second_number = numbers[0] 16 | 17 | for n in numbers: 18 | if max_number < n: # 만약에 n이 최대보다 크다면 19 | second_number = max_number # 최대값이었던 두번째로 큰 수 20 | max_number = n 21 | print(second_number) 22 | # 그러나, 이 코드로 문제를 풀면 23 | # numbers = [0, 20, 100, 40] 으로 40 이라는 수가 24 | # 맨 뒤에 등장했을 때, 이를 제대로 반영하여 계산하지 못하는 25 | # 상황이 발생한다(실제 답은 40 이지만, 출력은 20 으로 나옴) 26 | # 따라서 하단의 코드를 참조도록 하자 27 | 28 | # 다른 코드 29 | numbers = [0, 20, 100, 40] 30 | max_number = numbers[0] 31 | second_number = numbers[0] 32 | 33 | for n in numbers: 34 | if max_number < n: # 만약에 n이 최대보다 크다면 35 | second_number = max_number # 최대값이었던 두번째로 큰 수 36 | max_number = n 37 | elif second_number < n and n < max_number: 38 | second_number = n 39 | print(second_number) -------------------------------------------------------------------------------- /practices/Python/220718/ex_10.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 리스트에서 최댓값을 구하는 코드입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Output: 두 번째 리스트의 최댓값이 더 큽니다. 5 | 6 | # 오류 코드 7 | # number_list = [1, 23, 9, 6, 91, 59, 29] 8 | # max = max(number_list) 9 | # number_list2 = [2, 5, 100, 20, 50, 10, 91, 82] 10 | # max2 = max(number_list2) 11 | # if max > max2: 12 | # print("첫 번째 리스트의 최댓값이 더 큽니다.") 13 | # elif max < max2: 14 | # print("두 번째 리스트의 최댓값이 더 큽니다.") 15 | # else: 16 | # print("첫 번째 리스트의 최댓값과 두 번째 리스트의 최댓값은 같습니다.") 17 | 18 | # 오류 원인 19 | # TypeError: 'int' object is not callable 20 | # 2개의 리스트에서 각각 최댓값을 뽑아내고 21 | # 그 크기를 비교해야하는데, 주어진 오류 코드에서는 22 | # if문에 int형 변수들을 비교하는 연산이 들어있어서 처리가 안됨 23 | 24 | # 수정 코드 25 | # number_list 에서 29 부분을 290 으로 바꾸면 26 | # "두 번째 리스트의 최댓값이 더 큽니다." 가 그대로 출력되는 현상은 27 | # 어떻게 해결해야할까? 고민해보기 28 | number_list = [1, 23, 9, 6, 91, 59, 29] 29 | max = number_list[0] 30 | 31 | number_list2 = [2, 5, 100, 20, 50, 10, 91, 82] 32 | max2 = number_list2[0] 33 | 34 | if max > max2: 35 | print("첫 번째 리스트의 최댓값이 더 큽니다.") 36 | elif max < max2: 37 | print("두 번째 리스트의 최댓값이 더 큽니다.") 38 | else: 39 | print("첫 번째 리스트의 최댓값과 두 번째 리스트의 최댓값은 같습니다.") 40 | 41 | -------------------------------------------------------------------------------- /practices/Web/assignment/220928/todos/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render, redirect 2 | from .models import Todo 3 | 4 | # Create your views here. 5 | 6 | 7 | def index(request): 8 | todos = Todo.objects.all() 9 | 10 | context = { 11 | "todos": todos, 12 | } 13 | 14 | return render(request, "todos/index.html", context) 15 | 16 | 17 | def create(request): 18 | 19 | # form 태그를 사용해서 데이터 송수신 20 | content = request.GET.get("content") 21 | priority = request.GET.get("priority") 22 | deadline = request.GET.get("deadline") 23 | 24 | # Todo.objects.create() 를 사용해서 데이터를 추가 25 | Todo.objects.create( 26 | content=content, 27 | priority=priority, 28 | deadline=deadline, 29 | ) 30 | return redirect("todos:index") 31 | 32 | 33 | def delete(request, todo_pk): 34 | todo = Todo.objects.get(pk=todo_pk) 35 | todo.delete() 36 | 37 | return redirect("todos:index") 38 | 39 | 40 | def update(request, pk): 41 | todo = Todo.objects.get(pk=pk) 42 | 43 | # True -> False 44 | # False -> True 45 | todo.completed = not todo.completed 46 | 47 | todo.save() 48 | return redirect("todos:index") 49 | -------------------------------------------------------------------------------- /practices/Web/220829/01_html_기초.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HTML 기초 5 | 6 | 7 | 8 | 9 | 구글 10 | 11 | 굵은 글씨      12 | 강한 글씨? 13 | 14 | 이탤릭





15 | 강한 글씨? 16 | 17 | 보노보노 19 | 20 | 21 |

H1

22 |

H2

23 |
H6
24 | 25 |

문단 문단

26 | 27 |
28 | 29 |
    30 |
  1. 순서가 있음
  2. 31 |
  3. 순서가 있음
  4. 32 |
33 |
    34 |
  • 순서가 없음
  • 35 |
36 |
37 |       기본 기본 기본
38 |       우아아아
39 |     
40 |

41 | 기본 기본 기본
우아아아 42 |

43 |
44 | 인용문? 45 |
46 |
47 | ??? 48 |
49 | 50 | -------------------------------------------------------------------------------- /practices/Web/220829/02_css.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 제목 5 | 26 | 27 | 28 | 41 | 42 | 43 | 44 | 45 |

H1! 갈색

46 |

H1 빨간색

47 |

h2

48 |

11

49 |

22

50 |

33

51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/README.md: -------------------------------------------------------------------------------- 1 | # 2022-09-19 / 14일차 실습 2 | 3 | > JavaScript EVENT 구현하기 4 | 5 | 6 | 7 | --- 8 | 9 | ### `01_button.html` 10 | 11 | ![220919-01](https://user-images.githubusercontent.com/106902415/190984056-d84a1976-9f88-480e-bec6-adddd1c9c131.gif) 12 | 13 | --- 14 | 15 | ### `02_input.html` 16 | 17 | ![220919-02](https://user-images.githubusercontent.com/106902415/190984137-3fb60d62-9d4e-41fc-a71e-e45cd73ae5ad.gif) 18 | 19 | --- 20 | 21 | ### `03_prevent.html` 22 | 23 | ![220919-03](https://user-images.githubusercontent.com/106902415/190984283-8298ec4c-6444-407a-bd49-1e52eaa2c929.gif) 24 | 25 | --- 26 | 27 | ### `04_modal.html` 28 | 29 | ![220919-04](https://user-images.githubusercontent.com/106902415/190984396-c1911b20-4d62-4abd-b499-460ffb917c5b.gif) 30 | 31 | --- 32 | 33 | ### `05_carousel.html` 34 | 35 | ![220919-05](https://user-images.githubusercontent.com/106902415/190984497-169747c6-e2d2-4a2b-807b-df81d2a42bd3.gif) 36 | 37 | --- 38 | 39 | ### `06_form.html` 40 | 41 | ![220919-06](README.assets/190984610-c3c6326c-87ba-4fb4-8d21-01130500edc2.gif) 42 | 43 | --- 44 | 45 | 46 | 47 | ### 💡실습 후기 48 | 49 | - "**특정 이벤트가 발생**하면, **할 일(함수)을 등록**한다." 50 | - DOM 요소를 수정, 변경, 삭제하는 다양한 이벤트를 만들어보았습니다. -------------------------------------------------------------------------------- /practices/Web/220831/01_float.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 39 | 40 | 41 | 42 | 43 |
44 |
box1: float left
45 |
46 |
box2: div
47 | 48 | -------------------------------------------------------------------------------- /practices/Web/220830/03_block_inline.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 25 | 26 | 27 |
1
28 | 29 |
1
30 | 31 |
1
32 | 33 |
1(가운데)
34 | 35 | inline span은 block 옆으로 못올라와요 36 | block의 나머지 부분은 margin으로 채워져있기 때문 37 | 그래도 inline span을 올리고 싶으면 block의 display를 바꿔야함 38 | 1234ㄱㄴㄷㄹ 39 | 40 | -------------------------------------------------------------------------------- /practices/Web/220830/00_복습.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Document 12 | 23 | 24 | 25 | 26 | 27 |
    28 |
  • 삼첩분식
  • 29 |
  • 또보겠지
  • 30 |
  • 엽떡
  • 31 |
  • 죠스떡볶이
  • 32 |
  • 응급실떡볶이
  • 33 |
34 | 35 | 40 |

김밥목록

41 |
    42 |
  • 참김
  • 43 |
  • 돈김
  • 44 |
  • 치김
  • 45 |
  • 김밥
  • 46 |
  • 야김
  • 47 |
48 | 49 | 50 | -------------------------------------------------------------------------------- /practices/Web/220831/00_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 32 | 33 | 34 | 35 |
36 |
child
37 |
38 |
39 |
child relative
40 |
child(parent에 realative 안줌)
41 |
42 | 43 |
44 |
child absolute
45 |
child(parent에 realative 줌)
46 |
47 | 48 | -------------------------------------------------------------------------------- /practices/Python/220714/15.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 문자열 word가 주어질 때, 3 | # 해당 문자열에서 a 가 처음으로 등장하는 위치(index)를 출력해주세요. 4 | # a 가 없는 경우에는 -1을 출력해주세요. 5 | # find() index() 메서드 사용 금지 6 | # Input : banana 7 | # Output : 1 8 | # 아래의 테스트 케이스로도 확인 해보세요. 9 | # apple # 0 10 | # kiwi # -1 11 | 12 | # 접근방법 13 | # 1. 문자열 banana 입력 14 | # 2. 위치(index)는 [0], [1] ... 인덱스 구조로 추정 15 | # 3. 알파벳 하나하나에 0, 1, 2, 3, 4, 5 값을 지정해야함 16 | # : range(len()) 이용 17 | # 4. word 는 반복하되, 끝이 정해져있는 구조: for 문 18 | 19 | # 코드: for-else 20 | word = 'banana' 21 | 22 | for idx in range(len(word)): 23 | if word[idx] == 'a': 24 | print(idx) 25 | break 26 | else: 27 | print(-1) 28 | 29 | # 다른 코드 30 | word = 'banana' 31 | 32 | is_a = False 33 | for idx in range(len(word)): 34 | if word[idx] == 'a': 35 | print(idx) 36 | is_a = True 37 | break 38 | if not is_a: 39 | print(-1) 40 | 41 | # 15번 추가문제 42 | # 문자열 word가 주어질 때, 43 | # 해당 문자열에서 a 의 모든 위치(index)를 출력해주세요. 44 | # find() index() 메서드 사용 금지 45 | # Input : HappyHacking 46 | # Output : 1 6 47 | # 아래의 테스트 케이스로도 확인 해보세요. 48 | # banana # 1 3 5 49 | # kiwi # 50 | 51 | # 코드 52 | word = 'HappyHacking' 53 | result = [] 54 | for idx in range(len(word)): 55 | if word[idx] == 'a': 56 | result.append(idx) 57 | print(result) 58 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/06_form.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 06_form.html 8 | 9 | 10 |
11 |
12 | 비밀번호(8자 이상 입력하세요) 13 | 14 | 15 | 16 |
17 |
18 | 19 | 37 | 38 | -------------------------------------------------------------------------------- /practices/Web/220916/02_identifier.js: -------------------------------------------------------------------------------- 1 | let foo // 선언 : 변수를 생성하는 행위 또는 시점 2 | console.log(foo) // undefined 3 | 4 | foo = 11 // 할당 : 선언된 변수에 값을 저장하는 행위 또는 시점 5 | console.log(foo) // 11 6 | 7 | let bar = 0 // 선언 + 할당 8 | console.log(bar) // 0 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | 12 | let number = 10 // 1. 선언 및 초기값 할당 13 | number = 10 // 2. 재할당 가능 ... 이런 특징 때문에 반복문에서 자주 씀 14 | console.log(number) // 10 15 | 16 | const number = 10 // 1. 선언 및 초기값 할당 17 | number = 10 // 2. 재할당 불가능 (아래와 같은 에러 발생) 18 | // Uncaught TypeError: Assignment to constant variable. 19 | 20 | ///////////////////////////////////////////////////////////////////////////// 21 | 22 | let number = 10 // 1. 선언 및 초기값 할당 23 | let number = 50 // 2. 재선언 불가능 (아래와 같은 에러 발생) 24 | // Uncaught SyntaxError: Identifier 'number' has already been declared. 25 | 26 | const number = 10 // 1. 선언 및 초기값 할당 27 | const number = 50 // 2. 재선언 불가능 (아래와 같은 에러 발생) 28 | // Uncaught SyntaxError: Identifier 'number' has already been declared. 29 | 30 | ///////////////////////////////////////////////////////////////////////////// 31 | 32 | /* 33 | let, const 공통점 : if, for, 함수 등 중괄호를 갖는 변수는 34 | 중괄호 바깥에서 접근 불가능 35 | */ 36 | let x = 1 37 | if (x === 1) { 38 | let x = 2 39 | console.log(x) // 2 40 | } 41 | console.log(x) // 1 -------------------------------------------------------------------------------- /notes/fastapi_AOP1.md: -------------------------------------------------------------------------------- 1 | # ✅ 관점 지향 프로그래밍(AOP) 기본 2 | > _"컴퓨팅에서 관점 지향 프로그래밍(aspect-oriented programming, AOP)은 횡단 관심사(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 코드 그 자체를 수정하지 않는 대신 기존의 코드에 추가 동작(어드바이스)을 추가함으로써 수행하며, "함수의 이름이 'set'으로 시작하면 모든 함수 호출을 기록한다"와 같이 어느 코드가 포인트컷(pointcut) 사양을 통해 수정되는지를 따로 지정한다. 이를 통해 기능의 코드 핵심부를 어수선하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있게 한다. 관점 지향 프로그래밍은 관점 지향 소프트웨어 개발의 토대를 형성한다."_ [(link)](https://ko.wikipedia.org/wiki/%EA%B4%80%EC%A0%90_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D) 3 | 4 | - [예시] Logging 기능 적용 5 | 6 | 7 | > _"AOP의 핵심은 시스템 전반에 넓게 펴져있지만 핵심 비지니스 로직과 무관한 횡단 관심사를 모듈화하는 것입니다. 위에 설명한 로그와 같은 경우가 대표적인 예시입니다."_ [(link)](https://www.qu3vipon.com/fastapi-logging-aop) 8 | 9 | - Spring(Java), FastAPI(Python) 프레임워크를 활용해 서비스를 개발할 때, 매서드마다 logging 처리 코드를 넣거나 print 를 찍는 것은 비효율적이고 코드 유지보수를 어렵게 만들 수 있음 10 | - 이럴 때 AOP 를 적용해 비핵심 기능인 로그를 모듈화하여 관리하면, 코어단의 코드를 변경하지 않으면서도 HTTP Request / Response 를 기록할 수 있음 11 | - Spring Boot 프레임워크로 개발 시, AOP 적용하여 HTTP Request Logging 기능 구현한 설명 및 예시 코드 [(link)](https://shortstories.gitbook.io/studybook/spring_ad00_b828_c815_b9ac/aop/baa8-b4e0-c6f9-c694-ccad-c5d0-b300-d574-c11c-b85c-adf8-b85c-b0a8-ae30-ae30) 12 | 13 | 14 | - [예시] 인증 기능 적용 15 | - 브랜디 개발팀이 AOP 적용하여 구현한 인증 기능의 설명 및 예시 코드 [(link)](https://labs.brandi.co.kr//2020/01/07/yangjh.html) 16 | -------------------------------------------------------------------------------- /practices/DB/08_case.sql: -------------------------------------------------------------------------------- 1 | -- 단순 조회 2 | SELECT id, gender 3 | FROM healthcare 4 | LIMIT 5; 5 | -- id gender 6 | -- -- ------ 7 | -- 1 1 8 | -- 2 2 9 | -- 3 2 10 | -- 4 1 11 | -- 5 2 12 | 13 | -- 성별 1(남자), 2(여자) 14 | SELECT 15 | id, 16 | CASE 17 | WHEN gender = 1 THEN '남자' 18 | WHEN gender = 2 THEN '여자' 19 | -- ELSE 20 | END AS 성별 21 | FROM healthcare 22 | LIMIT 5; 23 | -- id 성별 24 | -- -- -- 25 | -- 1 남자 26 | -- 2 여자 27 | -- 3 여자 28 | -- 4 남자 29 | -- 5 여자 30 | 31 | -- 흡연(smoking) 32 | SELECT DISTINCT smoking 33 | FROM healthcare; 34 | -- smoking 35 | -- ------- 36 | -- 1 37 | -- 3 38 | -- 2 39 | -- 공~~~~~~~백 40 | -- 이렇게 공백이 함께 출력되는 경우 41 | -- CASE절에 ELSE절을 추가해서 공백을 어떤 식으로 42 | -- 네이밍해서 출력할 것인지를 정해야함 43 | 44 | -- 흡연(smoking)의 1, 2, 3 값들을 각각 이름 붙여서 출력 45 | SELECT 46 | id, 47 | smoking, 48 | CASE 49 | WHEN smoking = 1 THEN '비흡연자' 50 | WHEN smoking = 2 THEN '흡연자' 51 | WHEN smoking = 3 THEN '헤비스모커' 52 | ELSE '무응답' 53 | END 54 | FROM healthcare 55 | LIMIT 50; 56 | 57 | -- 나이(age)에 따라서 구분 출력하기 58 | -- 청소년(~18살), 청년(~40살), 중장년(~90살) 59 | SELECT 60 | first_name, 61 | last_name, 62 | age, 63 | CASE 64 | WHEN age <= 18 THEN '청소년' 65 | WHEN age <= 40 THEN '청년' 66 | WHEN age <= 90 THEN '중장년' 67 | ELSE '노년' 68 | END 69 | FROM users 70 | LIMIT 10; -------------------------------------------------------------------------------- /practices/Web/221026/axios2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 | 13 | 14 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /practices/DB/02_classmates.sql: -------------------------------------------------------------------------------- 1 | -- 테이블 CRUD 실습 2 | 3 | -- classmates 4 | -- name: TEXT 5 | -- age: INT 6 | -- address: TEXT 7 | 8 | -----------[CREATE]----------- 9 | CREATE TABLE classmates ( 10 | name TEXT, 11 | age INT, 12 | address TEXT 13 | ); 14 | 15 | -- 터미널 창에서 스키마 확인 16 | .schema classmates 17 | -- CREATE TABLE classmates ( 18 | -- name TEXT, 19 | -- age INT, 20 | -- address TEXT 21 | -- ); 22 | 23 | -- classmates 테이블에 새로운 VALUES 추가하기 24 | INSERT INTO classmates (name, age) VALUES ('홍길동', 23); 25 | 26 | -- 새로운 VALUES가 잘 추가되었는지 조회/확인 27 | .headers on 28 | .mode column 29 | SELECT * FROM classmates; 30 | -- name age address 31 | -- ---- --- ------- 32 | -- 홍길동 23 33 | 34 | -- classmates 테이블에 새로운 VALUES 추가하기2 35 | INSERT INTO classmates (name, age, address) VALUES ('홍길동', 30, '서울'); 36 | INSERT INTO classmates (name, age, address) VALUES ('김철수', 40, '경기'); 37 | SELECT * FROM classmates; 38 | -- name age address 39 | -- ---- --- ------- 40 | -- 홍길동 23 41 | -- 홍길동 30 서울 42 | -- 김철수 40 경기 43 | 44 | -- 위 테이블에 표시되지 않은 id 값을 알고 싶다면? 45 | SELECT rowid, * FROM classmates; 46 | -- rowid name age address 47 | -- ----- ---- --- ------- 48 | -- 1 홍길동 23 49 | -- 2 홍길동 30 서울 50 | -- 3 김철수 40 경기 51 | 52 | -- rowid는 SQLite에서 자동으로 제공하고 있는 PK. 값이 1씩 증가 53 | 54 | -- 위의 결과에서 맨 첫번째 address 값이 NULL 이므로 55 | -- 기존 table 삭제한 다음 56 | -- NULL 값 입력을 허용하지 않는 형태로 다시 작성하기 57 | DROP TABLE classmates; -------------------------------------------------------------------------------- /notes/deploy.md: -------------------------------------------------------------------------------- 1 | # ✅ AWS + PostgreSQL + Github Actions 2 | 3 | > 서비스 배포 가이드 문서 [(link)](https://www.notion.so/hg-edu/839d9d48a1d540ae9509a2009e1722e9) 4 | > 5 | > 서비스 배포 특강 [(link)](https://www.youtube.com/watch?v=UsW0AbqzfU4) 6 | > 7 | 8 | 9 | 10 | ## 1. 배포 서비스 기능 요약 11 | 12 | 1. AWS S3 : 미디어 파일 저장 13 | 2. AWS RDS : 데이터베이스 관리 14 | - 개발환경에서는 SQLite3 쓰고, 배포환경에서는 AWS RDS 쓰도록 설정 15 | 3. AWS Elastic Beanstalk : AWS 버전 헤로쿠 16 | 4. Github Actions 17 | - AWS Elastic Beanstalk 와 함께 써서 자동배포(CI/CD 환경을 구축해서 PR 생성하거나 push 할 때 자동으로 배포 환경에 변경 사항 반영) 18 | - 인프라 개발자들은 CI/CD 환경 구축하는 업무를 주로 담당 19 | - CI/CD 서비스는 Github actions 가 제일 유명하고, 젠킨스, travis CI 도 유명 20 | 21 | 22 | 23 | ## 2. 배포 강의 포인트 24 | 25 | 27:37 ~ 44:00 | **AWS S3 강의** 26 | 44:00 ~ 59:30 | **AWS RDS 강의** 27 | 57:30 ~ 돈이 얼마나 나가고 있는지 체크하고 문제가 되는 서비스 끄기 28 | 1:09:20 ~ | **AWS Elastic Beanstalk 강의** 29 | 1:13:30 ~ Django 시크릿 키와 팀에서 쓰고 있는 API 가 따로 있으면 .env 파일에 넣어주기 30 | 1:21:45 ~ 1:34:10 | **Github Actions 강의** (deploy.yml 파일에 주석 들어가지 않게 주의!) 31 | 32 | 33 | 34 | ## 3. AWS 배포 후, 관리자 계정 생성 35 | 36 | 37 | ## 4. AWS 프리티어 서비스 전부 종료시키고 계정 해지 38 | > AWS EC2 종료 눌러도 계속 새로운 인스턴스 생성되는 경우, Auto Scaling 그룹 꼭 삭제하기! 39 | - AWS 활성 서비스 삭제 [(link)](https://brunch.co.kr/@topasvga/342) 40 | - AWS 활성 서비스 삭제 확인 후, 계정 해지 [(link)](https://winters-story.tistory.com/entry/%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-AWS-%EA%B3%84%EC%A0%95-%ED%83%88%ED%87%B4%ED%95%98%EA%B8%B0-EC2-%EC%A2%85%EB%A3%8C-%EA%B3%84%EC%A0%95%ED%95%B4%EC%A7%80-%EB%B0%A9%EB%B2%95#google_vignette) 41 | -------------------------------------------------------------------------------- /practices/Web/220916/03_datatype.js: -------------------------------------------------------------------------------- 1 | /* 2 | Primitive type (원시타입) 3 | - Number, String, Boolean, undefined, null, Symbol 4 | - 다른 변수에 저장할 때 실제 해당 타입의 값을 저장 5 | */ 6 | let message = '안녕하세요!' 7 | let greeting = message 8 | console.log(greeting) // '안녕하세요!' 출력 9 | message = 'Hello, world!' 10 | console.log(greeting) // '안녕하세요!' 출력 11 | 12 | // Number 13 | const a = 13 // 양의 정수 14 | const b = -5 // 음의 정수 15 | const c = 3.14 // 실수 16 | const d = 2.998e8 // 거듭제곱 17 | const e = Infinity // 양의 무한대 18 | const f = -Infinity // 음의 무한대 19 | const g = NaN // 산술 연산 불가 20 | 21 | // String 22 | const firstName = 'Brandan' 23 | const lastName = 'Eich' 24 | const fullName = '${firstName} ${lastName}' 25 | console.log(fullName) // Brandan Eich 26 | 27 | // Boolean 28 | let isAdmin = true 29 | console.log(isAdmin) // true 30 | isAdmin = false 31 | console.log(isAdmin) // false 32 | 33 | // undefined 34 | let firstName 35 | console.log(firstName) // undefined 36 | 37 | // null 38 | let firstName = null 39 | console.log(firstName) // null 40 | typeof null // object 41 | 42 | ///////////////////////////////////////////////////////////////////////////// 43 | 44 | /* 45 | Reference type (참조타입) 46 | - Array, Function, ... etc. ⊂ Objects ⊂ Reference type 47 | - 다른 변수에 저장할 때 해당 객체를 참조할 수 있는 참조 값이 복사됨 48 | */ 49 | const message = ['안녕하세요!'] 50 | const greeting = message 51 | console.log(greeting) // ['안녕하세요!'] 출력 52 | message[0] = 'Hello, world!' 53 | console.log(greeting) // ['Hello, world!'] 출력 -------------------------------------------------------------------------------- /practices/Web/220916/04_operator.js: -------------------------------------------------------------------------------- 1 | // 연산자 기본 2 | let x = 0 3 | x += 10 4 | console.log(x) // 10 5 | x -= 3 6 | console.log(x) // 7 7 | x *= 10 8 | console.log(x) // 70 9 | x /= 10 10 | console.log(x) // 7 11 | x++ // += 1 연산과 동일 12 | console.log(x) // 8 13 | x-- // -= 1 연산과 동일 14 | console.log(x) // 7 15 | 16 | ///////////////////////////////////////////////////////////////////////////// 17 | 18 | // 비교 연산자 19 | const numOne = 1 20 | const numTwo = 100 21 | console.log(numOne < numTwo) // true 22 | const charOne = 'a' 23 | const charTwo = 'z' 24 | console.log(charOne > charTwo) // false 25 | 26 | // 일치 비교 연산자 27 | const a = 1004 28 | const b = '1004' 29 | console.log(a === b) // false 30 | const c = 1 31 | const d = true 32 | console.log(c === d) // false 33 | 34 | ///////////////////////////////////////////////////////////////////////////// 35 | 36 | /* 37 | 논리 연산자 38 | - and 연산은 '&&' 연산자를 이용 39 | - or 연산은 '||' 연산자를 이용 40 | - not 연산은 '!' 연산자를 이용 41 | */ 42 | 43 | // and 연산 44 | console.log(true && false) // false 45 | console.log(true && true) // true 46 | console.log(1 && 0) // 0 47 | console.log(4 && 7) // 7 48 | console.log('' && 5) // '' 49 | 50 | // or 연산 51 | console.log(true || false) // true 52 | console.log(false || false) // false 53 | console.log(1 || 0) // 1 54 | console.log(4 || 7) // 4 55 | console.log('' || 5) // 5 56 | 57 | // not 연산 58 | console.log(!true) // false 59 | console.lod(!'Bonjour!') // false -------------------------------------------------------------------------------- /practices/Python/220718/ex_09.py: -------------------------------------------------------------------------------- 1 | # 문제 2 | # 아래 코드는 과일의 개수를 구하는 논리적 오류가 있는 코드의 일부분 입니다. 3 | # 코드에서 오류를 찾아 원인을 적고, 수정하세요. 4 | # Output: {'Apricot': 1, 5 | # 'Blackcurrant': 1, 6 | # 'Cantaloupe': 1, 7 | # 'Feijoa': 1, 8 | # 'Grapefruit': 1, 9 | # 'Juniper berry': 1, 10 | # 'Salal berry': 1, 11 | # 'Soursop': 1} 12 | 13 | # 오류 코드 14 | # from pprint import pprint 15 | # fruits = [ 16 | # "Soursop", 17 | # "Grapefruit", 18 | # "Apricot", 19 | # "Juniper berry", 20 | # "Feijoa", 21 | # "Blackcurrant", 22 | # "Cantaloupe", 23 | # "Salal berry", 24 | # ] 25 | # fruit_count = {} 26 | # for fruit in fruits: 27 | # if fruit not in fruit_count: 28 | # fruit_count = {fruit: 1} 29 | # else: 30 | # fruit_count[fruit] += 1 31 | # pprint(fruit_count) 32 | 33 | # 오류 원인 34 | # {'Salal berry': 1} 밖에 안뜸 35 | # 리스트 안의 요소들이 새 딕셔너리에 들어가면 개수를 1씩 세야하는데 36 | # 주어진 코드는 리스트 요소가 딕셔너리에 not in 이면 {fruit: 1}를 37 | # 출력하게끔 논리가 구성되어 있음 38 | 39 | # 수정 코드 40 | from pprint import pprint 41 | fruits = [ 42 | "Soursop", 43 | "Grapefruit", 44 | "Apricot", 45 | "Juniper berry", 46 | "Feijoa", 47 | "Blackcurrant", 48 | "Cantaloupe", 49 | "Salal berry", 50 | ] 51 | 52 | fruit_count = {} 53 | def get_counts(seq): 54 | for x in seq: 55 | if x in fruit_count: 56 | fruit_count[x] += 1 57 | else: 58 | fruit_count[x] = 1 59 | return fruit_count 60 | 61 | fruit_count = get_counts(fruits) 62 | pprint(fruit_count) -------------------------------------------------------------------------------- /notes/github_upstream.md: -------------------------------------------------------------------------------- 1 | # ✅[Git/Github] Upstream, Origin, Local repository 2 | 3 | ![image](https://github.com/code-sum/TIL/assets/106902415/04bd74a5-99cd-4d3f-ab4c-bb0ba76a3f6c) 4 | [(이미지출처)](https://velog.io/@koominji/Git-%ED%98%91%EC%97%85%ED%95%98%EA%B8%B0-fork-clone-pull-request-fetch-upstream#1-%EC%9B%90%EB%B3%B8-%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90%EC%84%9C-%EB%82%98%EC%9D%98-%EC%A0%80%EC%9E%A5%EC%86%8C%EB%A1%9C-fork-%ED%95%B4%EC%98%A4%EA%B8%B0) 5 | 6 | 7 | ### 1. Local repository & Remote repository 8 | 9 | - Local repository 10 | - 생성방법 11 | - (1) local 환경에서 프로젝트 진행하려는 empty repository 에 진입한 다음 `git init` 12 | - (2) Github 에서 생성한 repository 를 `git clone` 13 | - Remote repository 14 | - remote 는 Github 에 존재하고 있는 repository 를 지칭하며, origin 은 remote repository 에 붙인 이름임 15 | 16 | 17 | > _"'origin' 도 git clone 명령이 자동으로 만들어주는 리모트 이름이다. git clone -o booyah 라고 옵션을 주고 명령을 실행하면 booyah/master 라고 사용자가 정한 대로 리모트 이름을 생성해준다." [(link)](https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EB%B8%8C%EB%9E%9C%EC%B9%98)_ 18 | - local 과 remote 작업 내역을 서로 반영(동기화)하기 위해 `git push` (local 에서 remote 로), `git pull` (remote 에서 local 로) 19 | - 생성방법 20 | - (1) local 에서 직접 `git init` 한 경우, `git remote -v` 명령어로 remote 설정을 확인한 다음 `git remote add origin https://github.com/깃헙유저네임/저장소이름.git` 으로 Github 에 생성한 remote repository 를 연결 21 | - (2) 이미 init 하여 형상관리 되고 있던 repository 를 Github 에서 `git clone` 받은 경우, origin 설정도 되어 있는 상태 22 | 23 | 24 | ### 2. Upstream repository & Downstream repository 25 | 26 | - Upstream repository 27 | - Downstream repository 28 | -------------------------------------------------------------------------------- /practices/Web/220919/04_modal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 30 | 31 | 32 | 33 | 36 | 37 | 55 | 56 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/04_modal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 04_modal.html 8 | 36 | 37 | 38 | 39 | 42 | 43 | 61 | 62 | -------------------------------------------------------------------------------- /practices/Web/220830/01_unit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 36 | 37 | 38 | 39 | 40 |
41 |
42 | 43 | 45 | 46 |

2em

47 |
    48 |
  • 2em
  • 49 |
50 | 51 | 53 | 55 |

2rem

56 |
    57 |
  • 2rem
  • 58 |
59 | 60 | 61 | 62 | 63 |
64 | 65 | 68 | 69 |
70 | 71 | 72 | -------------------------------------------------------------------------------- /practices/Web/220919/05_carousel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 37 | 38 | 39 |
40 | 46 |
47 | 48 | 61 | 62 | -------------------------------------------------------------------------------- /practices/DB/05_users.sql: -------------------------------------------------------------------------------- 1 | -- WHERE 활용 2 | 3 | -- 테이블 생성 4 | -- 정호,유,40,전라북도,016-7280-2855,370 5 | 6 | CREATE TABLE users ( 7 | first_name TEXT NOT NULL, 8 | last_name TEXT NOT NULL, 9 | age INTEGER NOT NULL, 10 | country TEXT NOT NULL, 11 | phone TEXT NOT NULL, 12 | balance INTEGER NOT NULL 13 | ); 14 | 15 | -- 데이터를 추가 16 | .mode csv 17 | -- 같은 디렉토리에 있는 users.csv 파일을 users 테이블로 18 | .import users.csv users 19 | 20 | -- 쿼리 21 | 22 | -- 30세 이상인 사람들 23 | SELECT * FROM users WHERE age >= 30; 24 | -- 30세 이상인 사람들의 이름 25 | SELECT first_name FROM users WHERE age >= 30; 26 | -- 30세 이상인 사람들의 이름 3명만 27 | SELECT first_name FROM users WHERE age >= 30 LIMIT 3; 28 | -- 30세 이상이고 성이 김씨인 사람의 나이&이름 출력 29 | SELECT age, first_name FROM users WHERE age >= 30 AND last_name='김'; 30 | 31 | -- 30세 이상인 사람들의 숫자 32 | SELECT COUNT(*) FROM users WHERE age >= 30; 33 | -- 전체 데이터 중에 가장 작은 나이 34 | SELECT MIN(age) FROM users; 35 | -- 성이 이씨인 사람 중에 가장 어린 사람의 나이 36 | SELECT MIN(age) FROM users WHERE last_name='이'; 37 | -- 성이 이씨인 사람 중에 가장 어린 사람의 이름과 계좌잔고 38 | SELECT MIN(age), first_name, balance FROM users WHERE last_name='이'; 39 | -- 30세 이상인 사람들의 평균 나이 40 | SELECT AVG(age) FROM users WHERE age >= 30; 41 | -- 계좌 잔액이 가장 많은 사람 42 | SELECT MAX(balance), first_name FROM users; 43 | 44 | -- 지역번호가 02인 사람의 수 45 | SELECT COUNT(*) FROM users WHERE phone LIKE '02-%'; 46 | -- 이름이 '-준'으로 끝나는 사람의 수 47 | SELECT COUNT(*) FROM users WHERE first_name LIKE '%준'; 48 | -- 전화번호 가운데 부분이 5114인 사람의 수 49 | SELECT COUNT(*) FROM users WHERE phone LIKE '%-5114-%'; 50 | 51 | -- 나이 오름차순으로 정렬된 사람들의 이름을 10명만 출력 52 | SELECT first_name FROM users ORDER BY age ASC LIMIT 10; 53 | -- 나이, 성 순으로 오름차순 10명의 데이터 출력 54 | SELECT * FROM users ORDER BY age, last_name LIMIT 10; 55 | -- 계좌 잔액 내림차순 정렬된 사람들 10명의 이름&성씨&잔고 출력 56 | SELECT last_name, first_name, balance FROM users ORDER BY balance DESC LIMIT 10; 57 | -- 계좌 잔액 내림차순, 성 오름차순 정렬된 사람들 10명의 이름&성씨&잔고 출력 58 | SELECT last_name, first_name, balance FROM users ORDER BY balance DESC, last_name ASC LIMIT 10; 59 | -------------------------------------------------------------------------------- /notes/py_OOP2.md: -------------------------------------------------------------------------------- 1 | # ✅객체지향 프로그래밍(OOP) 심화 2 | 3 | > _"클래스(class, 어원: classification)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀(template)이다. 객체를 정의하기 위한 메소드와 변수로 구성된다."_ [(link)](https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9E%98%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)) 4 | 5 | 6 | 7 | - Intro 8 | - 알고리즘 문제를 푸는 동안에 클래스를 직접 만드는 경우는 잘 없지만, Django 등 프레임워크를 활용해 웹 개발을 시작하면 클래스를 구현해야 하는 상황이 생김 9 | 10 | 11 | 12 | 정의가 중요 13 | 14 | 함수: 인풋이 들어오면 아웃풋을 리턴한다! 15 | 16 | 객체: 속성과 매서드가 모두 존재하는 하나의 모습! 17 | 18 | 그 모습을 클래스로 정의해놓고, 실제로 활용하는 것은 개별 인스턴스! 19 | 20 | ![py_OOP2_1](py_OOP2.assets/py_OOP2_1.png) 21 | 22 | 23 | 24 | self 에 대한 설명(0720_2 그림 / 02_self.py 참조) 25 | 26 | 모든 인스턴스 중에 첫번째로 self를 넘겨준다는 약속이 되어있다! 27 | 28 | 파이썬은 self 가 각 인스턴스를 넘겨주는 식으로 구성이 되어있음 29 | 30 | self 를 줄여서 s로 써도 되긴하지만, 이건 너무 힙스터다! 31 | 32 | ![py_OOP2_2](py_OOP2.assets/py_OOP2_2.png) 33 | 34 | 35 | 36 | 클래스를 어떤 상황에서 쓰는게 좋은가요?(03_why_oop.py 참조) 37 | 38 | 포켓몬에서 내 야스오, 상대편 야스오 인스턴스를 만들어 나가고 싶을 때 39 | 40 | 41 | 42 | 로또 코드 발전시켜보기 43 | 44 | - 1게임이 아니라, 5게임이 출력되도록 구성하고 싶다면 반복문 이용하기 45 | - 반복문 대신, 함수화하기 46 | - 하나의 기능을 클래스로 만들기(lotto_class.py) 47 | - 클래스로 만들어진 코드에 인스턴스도 넣고 확장시켜가며 기능,값,매서드,함수를 활용할 수 있다 (0720_3.png 참조) 48 | 49 | ![py_OOP2_3](py_OOP2.assets/py_OOP2_3.png) 50 | 51 | 52 | 53 | - 클래스 속성(attribute) 54 | - 한 클래스의 모든 인스턴스라도 똑같은 값을 가지고 있는 속성 55 | - 클래스 선언 내부에서 정의 56 | - `.` 의 규칙으로 접근 및 할당 57 | 58 | 59 | 60 | 61 | 62 | 인스턴스 매서드: 인스턴스가 호출하면서 매서드 자체에 인스턴스가 필요한 경우에 쓰기 63 | 64 | 클래스 매서드: 클래스가 호출을 할건데, 내부적으로 매서드 자체에 클래스가 필요한 경우 65 | 66 | 스태틱 매서드: 매서드 자체에 클래스, 인스턴스가 필요 없을 때 67 | 68 | * 스태틱 메서드 안에서 클래스, 인스턴스 절대! 쓸 수 없다(넘겨주지도 않기 때문) 69 | 70 | 71 | 72 | 객체 지향의 핵심개념 73 | 74 | 추상화 75 | 76 | 상속: 코드의 양이 많이 줄어듬 77 | 78 | * 매소드 오버라이딩: 매소드를 덮어쓰기해서 재정의하는 것 79 | * 다중 상속: 파이썬에서 지원됨. 장고에서 학습할 예정 80 | 81 | 다형성: 동일한 매소드가 실제로는 상속 받은 것에 따라 다르게 행동할 수 있다는걸 의미. 간단히 말해서 매소드를 덮어쓸 수 있다! 82 | 83 | 캡슐화: 실제로 파이썬은 수단과 방법을 다 쓰면 접근 가능하기 때문에 캡슐화 부분은 비중있게 다루지 않습니다~!~! 개념적으로만 이해하기 84 | 85 | -------------------------------------------------------------------------------- /practices/Web/assignment/220923/README.md: -------------------------------------------------------------------------------- 1 | # 🗂️ Django 프로젝트 사전 기획 2 | 3 | > 2022-09-23 / 실습 1-17조 김현정, 이수경 4 | > 5 | > 5주 동안 금요일마다 진행할 영화 리뷰 커뮤니티 개발 프로젝트를 위해 사전 조사하기 6 | > 7 | > 참고한 웹페이지: 웨이브, 롯데시네마, 씨네21 8 | 9 | 10 | 11 | ### 첫 화면 12 | 13 | > 넷플릭스, 왓챠, 웨이브 참조 14 | 15 | - 로그인, 회원가입(유도) 기능 16 | 17 | 18 | 19 | ### 로그인 후 첫 화면에서 메인 화면으로 넘어가면 20 | 21 | > 웨이브 참조 22 | 23 | - 네브바보다 더 높은 위치에 **프로필 / 로그아웃** 버튼 넣기 24 | - 프로필 버튼 누르면 닉네임이나 프로필 사진 변경할 수 있는 화면 25 | 26 | - 네브바 왼쪽 끝단에 **홈 / 영화목록 / 게시판 / MY** 모아놓기 27 | - MY 버튼 누르면 내가 클릭한 영화 / 즐겨찾기 영화 리스트 / 작성 게시글 리스트 모아볼 수 있는 화면 28 | 29 | - 네브바 오른쪽 끝단에 **검색** 아이콘 추가 30 | - 찾고 싶은 영화 이름 입력하면 바로 해당 영화 상세 페이지로 이동 31 | 32 | - 네브바 아래쪽에 광고 캐로셀 33 | - 캐로셀에 노출되는 이미지 한 장 한 장 클릭하면 해당 컨텐츠로 이동하게 `` 로 링크 34 | 35 | - 광고 캐로셀 아래쪽에 **현재 상영중인 영화 / 실시간 인기 컨텐츠 / 오늘의 TOP20** 소제목들 달고, 소제목 당 영화 포스터 5장씩 화면 배치 36 | - 위 소제목들을 순서대로 모아서 네브바 **영화목록** 에 리스트로 넣어주기 37 | - **실시간 인기 컨텐츠** 나, **오늘의 TOP20**은 시간당, 혹은 매일 조회수 많은 순서대로 노출 38 | - 각각의 소제목에 해당하는 영화 포스터 모아놓고 일단 5장이 노출되게 화면 구성 후, 캐로셀로 계속 돌아가게 구현함 (+ 개별 포스터에 마우스 올리면 호버 효과) 39 | - 영화 포스터 통일감 있는 걸로 5개 이어 붙이면 멋짐👍 40 | - 이미지 왼쪽이나 오른쪽 상단에 배지 넣기(HOT, NEW, EVENT 등등) 41 | 42 | - 소제목 사이에 적당한 빈도로 가로형 광고 배너 넣기 43 | - 스크롤 내리다가 맨 위로 돌아갈 수 있는 버튼(float) 넣기 44 | - 본문영역과 푸터 사이에 공지사항 제목 1줄씩 올라가면서 노출되게 만들기(swiper-slide) 45 | - 푸터에 프로젝트 정보(팀원, 제작기간, 완성날짜) 기입 46 | 47 | 48 | 49 | ### 네브바 → 영화목록을 누르면 50 | 51 | > 웨이브 참조 52 | 53 | - 본문 영역에서 작성한 소제목 리스트 전체가 Modal 형태로 팝업 54 | - p 태그 앞에 ::before 넣으면 장식넣기 가능(드래그 안됨) 55 | - p 태그 뒤에 ::after 넣으면 장식넣기 가능(드래그 안됨) 56 | 57 | 58 | 59 | ### 네브바 → 게시판을 누르면 60 | 61 | > 씨네21 커뮤니티-이벤트후기 게시판 참조 62 | 63 | - 왼쪽 오른쪽 세로형 광고 배너 넣을 때 ::before, ::after 64 | - 게시글 제목 앞부분에 장르(액션, 코믹, 드라마) 65 | 66 | 67 | 68 | ### 본문 영역 → 개별 영화 포스터를 누르면 69 | 70 | > 롯데시네마 참조 71 | 72 | - 영화 포스터, 정보와 함께 **한줄 영화평** 기능 넣기 73 | - 한줄 영화평과 <게시판> 기능은 분리(게시판에 올리는 글들은 제목도 작성해야 하므로 74 | - 다른 사람이 남긴 한 줄 영화평에 👍아이콘 누르면 좋아요 수 카운팅 75 | 76 | 77 | 78 | ### 기타 추가 기능 79 | 80 | - 하트모양 토글키 - 즐겨찾기 기능 추가 81 | 82 | - 별점모양 토글키 - 별점 넣기 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /practices/DB/07_group.sql: -------------------------------------------------------------------------------- 1 | -- GROUP BY 2 | 3 | -- 성씨마다 몇명의 사람이 있을까? 4 | SELECT last_name, COUNT(*) 5 | FROM users 6 | GROUP BY last_name; 7 | 8 | -- GROUP BY에서 활용하는 컬럼을 제외하고 9 | -- 집계함수(COUNT, AVG) 사용하기 10 | SELECT last_name, AVG(age), COUNT(*) 11 | FROM users 12 | GROUP BY last_name; 13 | 14 | -- 참고 15 | SELECT last_name, age 16 | FROM users 17 | WHERE last_name = '곽'; 18 | -- last_name age 19 | -- --------- --- 20 | -- 곽 25 21 | -- 곽 30 22 | -- 곽 28 23 | -- 곽 15 24 | 25 | -- GROUP BY절만으로는 결과를 정렬할 수 없음 26 | -- 심지어 기존의 순서와 다르게 바뀔 수 있음 27 | -- 따라서 정렬한 값들을 보고 싶으면 ORDER BY! 28 | 29 | SELECT * 30 | FROM users 31 | LIMIT 5; 32 | -- first_name last_name age country phone balance 33 | -- ---------- --------- --- ------- ------------- ------- 34 | -- 정호 유 40 전라북도 016-7280-2855 370 35 | -- 경희 이 36 경상남도 011-9854-5133 5900 36 | -- 정자 구 37 전라남도 011-4177-8170 3100 37 | -- 미경 장 40 충청남도 011-9079-4419 250000 38 | -- 영환 차 30 충청북도 011-2921-4284 220 39 | 40 | SELECT last_name, COUNT(*) 41 | FROM users 42 | GROUP BY last_name 43 | LIMIT 5; 44 | -- last_name COUNT(*) 45 | -- --------- -------- 46 | -- 강 23 47 | -- 고 10 48 | -- 곽 4 49 | -- 구 2 50 | -- 권 17 51 | 52 | -- 여기서 GROUP BY WHERE 를 쓰고 싶다면? 53 | -- 예시) 100번 이상 등장한 성만 출력하고 싶다면? 54 | SELECT last_name, COUNT(last_name) 55 | FROM users 56 | WHERE COUNT(last_name) > 100 57 | GROUP BY last_name; 58 | -- 위와 같이 쿼리를 작성하면 오류 발생! 59 | -- Parse error: misuse of aggregate: COUNT() 60 | -- SELECT last_name, COUNT(last_name) FROM users WHERE COUNT(last_name) > 100 GROUP 61 | 62 | -- 오류가 생기지 않으려면 아래와 같이 63 | -- HAVING절을 활용하기 64 | -- [주의] HAVING절에는 집계함수만 사용해야 함 65 | -- 집계함수를 사용하지 않고 조건을 넣으려면 WHERE절! 66 | SELECT last_name, COUNT(last_name) 67 | FROM users 68 | GROUP BY last_name 69 | HAVING COUNT(last_name) > 100; 70 | -- last_name COUNT(last_name) 71 | -- --------- ---------------- 72 | -- 김 268 73 | -- 이 179 -------------------------------------------------------------------------------- /notes/shortcuts.md: -------------------------------------------------------------------------------- 1 | # ✅단축키 정리 2 | 3 | > 1. VSCODE 4 | > 2. Eclipse 5 | > 3. Browser 6 | > 4. Notepad++ 7 | > 5. Windows 8 | 9 | 10 | 11 | ## 1. VSCODE 12 | 13 | > - VSCODE 단축키 튜토리얼 👉 [(link)](https://demun.github.io/vscode-tutorial/shortcuts/) 14 | > - VSCODE 업데이트 후, GUI 로 저장소 열려고 할 때 wsl 연결 관련 에러 뜬다면 Ubuntu Terminal 명령어로 열기 15 | > - 열려고 하는 저장소보다 상위 디렉토리에서 명령어 내릴 때 : `code [저장소명]` 16 | > - 열려고 하는 저장소 위치에서 명령어 내릴 때 : `code .` 17 | 18 | - 사용자 설정 열기 19 | - `ctrl` + `,` 20 | - 파일 검색 21 | - `ctrl` + `p` 22 | - 해당 파일 코드 전체 선택 23 | - `ctrl` + `a` 24 | - 작업중인 파일에서 특정 코드(단어) 찾기 25 | - `ctrl` + `f` 26 | - Python Interpreter 설정 27 | - `ctrl` + `shift` + `p` 28 | - 전체 프로젝트에서 특정 코드(단어) 찾기 29 | - `ctrl` + `shift` + `f` 30 | - 코드 주석 처리 31 | - `ctrl` + `/` 32 | - 통합 터미널 열기/닫기 33 | - `ctrl` + `(물결 기호 넣을 때 누르는 키) 34 | - 통합 터미널에 내린 명령어 및 실행 내역 지우기 35 | - `ctrl` + `l` (또는 터미널에 `clear` 명령어 입력해도 지워짐) 36 | - 창 닫기 37 | - `ctrl` + `w` 38 | - 똑같은 코드(단어) 동시에 바꾸기 39 | - 수정하려는 단어 맨 앞에 마우스 클릭하고 `ctrl` + `shift` + `l` 40 | - 들여쓰기(indentation) 41 | - 들여쓰기 원하는 코드 전체 드래그 하거나 시작 시점에 마우스 클릭하고 `tab` 42 | - 내어쓰기 43 | - 내어쓰기 원하는 코드 전체 드래그 하거나 시작 시점에 마우스 클릭하고 `shift` + `tab` 44 | - 특정 라인의 코드를 위/아래줄로 옮기기 45 | - 옮기고 싶은 범위의 코드 드래그하고 `alt` + `위/아래 방향키` 46 | - VSCODE 컬러 테마 변경 47 | - `ctrl` + `k` 누르고 1초 후 `ctrl` + `t` 48 | 49 | 50 | 51 | ## 2. Eclipse 52 | 53 | - 전체 파일명 검색 54 | - `ctrl` + `shift` + `r` 55 | 56 | 57 | 58 | ## 3. Browser 59 | 60 | - 크롬 개발자도구 열기 61 | - `ctrl` + `shift` + `c` 62 | - 로컬에서 코드 수정 작업 마치고 runserver 할 때 63 | - `ctrl` + `shift` + `r` 64 | - Chrome also offers the reload shortcut combinations of “Ctrl + F5” and “Ctrl + Shift + R” to reload the currently open page and override the locally cached version. 65 | 66 | 67 | 68 | ## 4. Notepad++ 69 | 70 | - 일렬로 작성된 JSON 데이터 펼쳐보기 71 | - 펼쳐보기를 원하는 JSON 데이터 전체 영역 선택 72 | - `ctrl` + `a` 73 | - 선택된 JSON 데이터의 key-value 쌍이 잘 보이도록 펼쳐보기 74 | - `ctrl` + `alt` + `m` 75 | 76 | 77 | 78 | ## 5. Windows 79 | 80 | - 클립보드 전체보기 81 | - `Windows key` + `v` 82 | - 스크린 캡쳐 83 | - `Windows key` + `shift` + `s` 84 | - 화면잠금 85 | - `Windows key` + `l` 86 | -------------------------------------------------------------------------------- /practices/Web/assignment/220829.md: -------------------------------------------------------------------------------- 1 | # 2022-08-29 / 1일차 실습 2 | 3 | > 태그별 문서 읽고 정리 4 | > 5 | > 예시) https://developer.mozilla.org/ko/docs/Web/HTML/Element 6 | 7 | 8 | 9 | --- 10 | 11 | 12 | 13 | ## 📺이미지 & 멀티미디어 14 | 15 | 1. `` [(link)](https://developer.mozilla.org/ko/docs/Web/HTML/Element/img) 16 | 17 | HTML `` 태그는 문서에 이미지 삽입 18 | 19 | ```html 20 | 뿡뿡이(사진설명) 23 | ``` 24 | 25 | ![](https://static.ebs.co.kr/images/bhp/public/images/2017/09/20/18/3/35/e47fde99-13cc-4b8f-8185-923b6fa2b644.PNG) 26 | 27 | - `src` 특성은 필수이며, 포함하고자 하는 이미지로의 경로를 지정 28 | - `alt` 특성은 이미지의 텍스트 설명, 필수는 아니지만 스크린 리더가 `alt`값을 읽고 사용자에게 이미지를 설명하므로 접근성 차원에서 매우 유용. 네트워크 오류, 컨텐츠 차단, 죽은 링크와 같이 이미지를 표시할 수 없는 상황에서도 이 속성의 값을 대신 보여줌 29 | 30 | 31 | 32 | 2. `video` [(link)](https://developer.mozilla.org/ko/docs/Web/HTML/Element/Video) 33 | 34 | HTML `video` 태그는 비디오 플레이백을 지원하는 미디어 플레이어를 문서에 삽입 35 | 36 | ```html 37 | 44 | ``` 45 | 46 | - `video` 요소는 `img` 요소와 비슷하게, 표시하려는 미디어의 경로를 src 특성에 제공 47 | 48 | 49 | 50 | 3. `audio` [(link)](https://developer.mozilla.org/ko/docs/Web/HTML/Element/audio) 51 | 52 | HTML `audio` 태그는 문서에 소리 컨텐츠를 포함할 때 사용 53 | 54 | ```html 55 |
56 |
Listen to the T-Rex:
57 | 63 |
64 | ``` 65 | 66 | - `src` 특성 또는 ` (en-US)` 요소를 사용해 1개 이상의 오디오 소스를 지정할 수 있고, 다수를 지정하는 경우 가장 적절한 소스를 브라우저가 고름 67 | - `MediaStream (en-US)` 를 사용하면 미디어 스트림을 볼 수 있음 -------------------------------------------------------------------------------- /practices/DB/06_function.sql: -------------------------------------------------------------------------------- 1 | .headers on 2 | .mode column 3 | 4 | SELECT * FROM users LIMIT 1; 5 | 6 | -- | (pipe sign) 활용해서 문자열 합치기 7 | -- pipe sign 은 보통 엔터 키 위에 있음 8 | -- (성+이름) 구조로 5명의 데이터만 출력하기 9 | SELECT 10 | last_name || first_name 이름, 11 | age, 12 | country, 13 | phone, 14 | balance 15 | FROM users 16 | LIMIT 5; 17 | 18 | -- 이름 age country phone balance 19 | -- --- --- ------- ------------- ------- 20 | -- 유정호 40 전라북도 016-7280-2855 370 21 | -- 이경희 36 경상남도 011-9854-5133 5900 22 | -- 구정자 37 전라남도 011-4177-8170 3100 23 | -- 장미경 40 충청남도 011-9079-4419 250000 24 | -- 차영환 30 충청북도 011-2921-4284 220 25 | 26 | -- 문자열 길이 LENGTH 27 | SELECT 28 | LENGTH(first_name), 29 | first_name 30 | FROM users 31 | LIMIT 5; 32 | -- LENGTH(first_name) first_name 33 | -- ------------------ ---------- 34 | -- 2 정호 35 | -- 2 경희 36 | -- 2 정자 37 | -- 2 미경 38 | -- 2 영환 39 | 40 | -- 문자열 변경 REPLACE 41 | -- 016-7280-2855 => 01672802855 42 | SELECT 43 | first_name, 44 | phone, 45 | REPLACE(phone, '-', '') 46 | FROM users 47 | LIMIT 5; 48 | -- first_name phone REPLACE(phone, '-', '') 49 | -- ---------- ------------- ----------------------- 50 | -- 정호 016-7280-2855 01672802855 51 | -- 경희 011-9854-5133 01198545133 52 | -- 정자 011-4177-8170 01141778170 53 | -- 미경 011-9079-4419 01190794419 54 | -- 영환 011-2921-4284 01129214284 55 | 56 | -- 숫자 활용 57 | -- MOD(숫자1, 숫자2): 숫자1을 숫자2로 나눈 나머지 58 | SELECT MOD(5, 2) 59 | FROM users 60 | LIMIT 1; 61 | -- MOD(5, 2) 62 | -- --------- 63 | -- 1.0 64 | 65 | -- 올림, 내림, 반올림 66 | SELECT CEIL(3.14), FLOOR(3.14), ROUND(3.14) 67 | FROM users 68 | LIMIT 1; 69 | -- CEIL(3.14) FLOOR(3.14) ROUND(3.14) 70 | -- ---------- ----------- ----------- 71 | -- 4.0 3.0 3.0 72 | 73 | -- 9의 제곱근 74 | SELECT SQRT(9) 75 | FROM users 76 | LIMIT 1; 77 | -- SQRT(9) 78 | -- ------- 79 | -- 3.0 80 | 81 | -- 9^2 82 | SELECT POWER(9, 2) 83 | FROM users 84 | LIMIT 1; 85 | -- POWER(9, 2) 86 | -- ----------- 87 | -- 81.0 -------------------------------------------------------------------------------- /practices/DB/assignment/220816.md: -------------------------------------------------------------------------------- 1 | # 2022-08-16 / DB 1일차 실습 2 | 3 | >사전 설정 4 | 5 | 6 | 7 | ## 실행 8 | 9 | ```bash 10 | $ sqlite3 healthcare.sqlite3 11 | ``` 12 | 13 | ## Column 출력 설정 14 | 15 | ```sql 16 | sqlite3> .headers on 17 | sqlite3> .mode column 18 | ``` 19 | 20 | ## table 및 스키마 조회 21 | 22 | ```sql 23 | sqlite3> .tables 24 | healthcare 25 | 26 | sqlite3> .schema healthcare 27 | CREATE TABLE healthcare ( 28 | id PRIMARY KEY, 29 | sido INTEGER NOT NULL, 30 | gender INTEGER NOT NULL, 31 | age INTEGER NOT NULL, 32 | height INTEGER NOT NULL, 33 | weight INTEGER NOT NULL, 34 | waist REAL NOT NULL, 35 | va_left REAL NOT NULL, 36 | va_right REAL NOT NULL, 37 | 38 | blood_pressure INTEGER 39 | NOT NULL, 40 | smoking INTEGER NOT NULL, 41 | is_drinking BOOLEAN NOT NULL 42 | ); 43 | ``` 44 | 45 | # 문제 46 | 47 | ### 1. 추가되어 있는 모든 데이터의 수를 출력하시오. 48 | 49 | ```sql 50 | SELECT COUNT(*) FROM healthcare; 51 | ``` 52 | 53 | ``` 54 | COUNT(*) 55 | -------- 56 | 1000000 57 | ``` 58 | 59 | ### 2. 나이 그룹이 10(age)미만인 사람의 수를 출력하시오. 60 | 61 | ```sql 62 | SELECT COUNT(*) FROM healthcare WHERE age < 10; 63 | ``` 64 | 65 | ``` 66 | 156277 67 | ``` 68 | 69 | ### 3. 성별이 1인 사람의 수를 출력하시오. 70 | 71 | ```sql 72 | SELECT COUNT(*) FROM healthcare WHERE gender=1; 73 | ``` 74 | 75 | ``` 76 | 510689 77 | ``` 78 | 79 | ### 4. 흡연 수치(smoking)가 3이면서 음주(is_drinking)가 1인 사람의 수를 출력하시오. 80 | 81 | ```sql 82 | SELECT COUNT(*) FROM healthcare WHERE smoking=3 AND is_drinking=1; 83 | ``` 84 | 85 | ``` 86 | 150361 87 | ``` 88 | 89 | ### 5. 양쪽 시력이(va_left, va_right) 모두 2.0이상인 사람의 수를 출력하시오. 90 | 91 | ```sql 92 | SELECT COUNT(*) FROM healthcare WHERE va_left >= 2.0 AND va_right >= 2.0; 93 | ``` 94 | 95 | ``` 96 | 2614 97 | ``` 98 | 99 | ### 6. 시도(sido)를 모두 중복 없이 출력하시오. 100 | 101 | ```sql 102 | SELECT DISTINCT sido FROM healthcare; 103 | ``` 104 | 105 | ``` 106 | sido 107 | ---- 108 | 36 109 | 27 110 | 11 111 | 31 112 | 41 113 | 44 114 | 48 115 | 30 116 | 42 117 | 43 118 | 46 119 | 28 120 | 26 121 | 47 122 | 45 123 | 29 124 | 49 125 | ``` 126 | 127 | ### 자유롭게 조합해서 원하는 데이터를 출력해보세요. 128 | 129 | > 예) 허리 둘레가 x이상이면서 몸무게가 y이하인 사람 130 | 131 | -------------------------------------------------------------------------------- /practices/Web/assignment/220922/practice/templates/today-dinner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 오늘 뭐 먹지? 8 | 9 | 25 | 26 | 27 | 28 |
29 |
30 |

오늘 뭐 먹지?

31 |
32 |
33 |
34 |
35 | 36 |
37 |

추천메뉴는 {{ menu }} 입니다!

38 |
39 | dinner 40 |
41 |
42 |
Copyright 2022. 이수경 All rights reserved.
43 | 44 | 45 | 46 | 47 | 53 | 54 | -------------------------------------------------------------------------------- /practices/Web/220916/06_iteration.js: -------------------------------------------------------------------------------- 1 | // 1. while 2 | 3 | while (condition) { 4 | // do something 5 | } 6 | 7 | let i = 0 8 | while (i<6) { 9 | console.log(i) 10 | i += 1 11 | } 12 | 13 | /* 14 | 위 코드 작성시 출력값은 아래와 같음 15 | 16 | 0 17 | 1 18 | 2 19 | 3 20 | 4 21 | 5 22 | */ 23 | 24 | ///////////////////////////////////////////////////////////////////////////// 25 | 26 | // 2. for ... in 27 | 28 | for (variable in object) { 29 | // do something 30 | } 31 | 32 | const capitals = { 33 | korea: 'seoul', 34 | france: 'paris', 35 | USA: 'washington D.C.' 36 | } 37 | 38 | for (let capital in capitals) { 39 | console.log(capital) 40 | } 41 | 42 | /* 43 | korea 44 | france 45 | USA 46 | */ 47 | 48 | ///////////////////////////////////////////////////////////////////////////// 49 | 50 | // 3. for ... of 51 | 52 | for (variable of iterables) { 53 | // do something 54 | } 55 | 56 | const fruits = ['딸기', '바나나', '메론'] 57 | 58 | for (let fruit of fruits) { 59 | fruit = fruit + '!' 60 | console.log(fruit) 61 | } 62 | 63 | /* 64 | 딸기! 65 | 바나나! 66 | 메론! 67 | */ 68 | 69 | ///////////////////////////////////////////////////////////////////////////// 70 | 71 | // for ... in (객체 순회에 적합) 72 | 73 | // array 74 | const fruits = ['딸기', '바나나', '메론'] 75 | 76 | for (let fruit in fruits) { 77 | console.log(fruit) 78 | } 79 | /* 80 | 0 81 | 1 82 | 2 83 | */ 84 | 85 | // object 86 | const capitals = { 87 | Korea: '서울', 88 | France: '파리', 89 | USA: '워싱턴 D.C.' 90 | } 91 | 92 | for (let capital in capitals) { 93 | console.log(capital) 94 | } 95 | /* 96 | Korea 97 | France 98 | USA 99 | */ 100 | 101 | ///////////////////////////////////////////////////////////////////////////// 102 | 103 | // for ... of (배열 순회에 적합) 104 | 105 | // array 106 | const fruits = ['딸기', '바나나', '메론'] 107 | 108 | for (let fruit of fruits) { 109 | console.log(fruit) 110 | } 111 | /* 112 | 딸기 113 | 바나나 114 | 메론 115 | */ 116 | 117 | // object 118 | const capitals = { 119 | Korea: '서울' 120 | France: '파리' 121 | USA: '워싱턴 D.C.' 122 | } 123 | 124 | for (let capital of capitals) { 125 | console.log(capital) 126 | } 127 | // Uncaught TypeError: capitals is not iterable -------------------------------------------------------------------------------- /practices/Web/220916/05_conditional.js: -------------------------------------------------------------------------------- 1 | /* 2 | 조건문 기본 3 | - if, else if, else 구조 4 | - 조건은 소괄호(condition) 안에 작성 5 | - 실행할 코드는 중괄호{} 안에 작성 6 | */ 7 | 8 | if (condition) { 9 | // do something 10 | } else if (condition) { 11 | // do something 12 | } else { 13 | // do something 14 | } 15 | 16 | const nation = 'Korea' 17 | if (nation === 'Korea') { 18 | console.log('안녕하세요!') 19 | } else if (nation === 'France') { 20 | console.log('Bonjour!') 21 | } else { 22 | console.log('Hello!') 23 | } 24 | 25 | // if문 사례 26 | const numOne = 5 27 | const numTwo = 10 28 | let operator = '+' 29 | 30 | if (operator === '+') { 31 | console.log(numOne + numTwo) 32 | } else if (operator === '-') { 33 | console.log(numOne - numTwo) 34 | } else if (operator === '*') { 35 | console.log(numOne * numTwo) 36 | } else if (operator === '/') { 37 | console.log(numOne / numTwo) 38 | } else { 39 | console.log('유효하지 않은 연산자입니다.') 40 | } 41 | // 15 42 | 43 | ///////////////////////////////////////////////////////////////////////////// 44 | 45 | switch(expression) { 46 | case 'first value': { 47 | // do something 48 | [break] 49 | } 50 | case 'second value': { 51 | // do something 52 | [break] 53 | } 54 | [default: { 55 | // do something 56 | }] 57 | } 58 | 59 | const nation = 'Korea' 60 | 61 | switch(nation) { 62 | case 'Korea': { 63 | console.log('안녕하세요!') 64 | } 65 | case 'France': { 66 | console.log('Bonjour!') 67 | } 68 | default: { 69 | console.log('Hello!') 70 | } 71 | } 72 | 73 | /* 74 | 위의 경우 출력값이 아래와 같음 75 | (Fall-through, 이 경우에는 모두 출력) 76 | 77 | 안녕하세요! 78 | Bonjour! 79 | Hello! 80 | */ 81 | 82 | // switch문 사례 83 | const numOne = 5 84 | const numTwo = 10 85 | let operator = '+' 86 | 87 | switch(operator) { 88 | case '+': { 89 | console.log(numOne + numTwo) 90 | break 91 | } 92 | case '-': { 93 | console.log(numOne - numTwo) 94 | break 95 | } 96 | case '*': { 97 | console.log(numOne * numTwo) 98 | break 99 | } 100 | case '/': { 101 | console.log(numOne / numTwo) 102 | break 103 | } 104 | default: { 105 | console.log('유효하지 않은 연산자입니다.') 106 | } 107 | } 108 | // 15 -------------------------------------------------------------------------------- /notes/dj_member_logic.md: -------------------------------------------------------------------------------- 1 | # ✅Django 회원관리 서비스 이해 2 | 3 | > 1. HTTP & 쿠키(Cookie) 4 | >2. 로그인(Login) 5 | > 3. Authentication with User 6 | >4. 로그아웃(Logout) 7 | > 5. Limiting access to logged-in users 8 | > 6. 회원정보 수정 9 | > 7. 회원탈퇴 10 | > 8. 기타 11 | > 9. Q&A 12 | 13 | 14 | 15 | ## 9. Q&A 16 | 17 | 지난주 : ModelForm 활용한 Article CRUD 18 | 19 | - **ModelForm 은 DB 와 관련됨** 20 | 21 | 이번주 : User CRUD [다른 CRUD와 다른 점은 '인증', '비밀번호 암호화'] 22 | 23 | - 이 과정에서 Django Auth (django.contrib.auth) 활용 24 | 25 | - 인증(로그인) 👈 AbstractUser 클래스 상속받아 활용 26 | 27 | - 비밀번호 암호화 👈 Form 활용 28 | - ModelForm : UserCreationForm (ex. 비밀번호 2개 체크) 29 | - 그냥 Form : Authenrication Form (ex. 인증/완료되면 user 객체) 30 | 31 | 32 | 33 | 특히 어제 공부한 로그인 핵심 개념은 34 | 35 | - HTTP 36 | 37 | - connectionless : 응답하면 끝 38 | 39 | - stateless : 40 | 41 | - 로그인 : 어떤 사이트에 한 번 로그인 하면, 나의 인증 정보가 그 사이트에 박혀 있다고 생각하면 됨 42 | - 쿠키 : HTTP 상에서 상태를 관리할 수 있는 도구. 한 번에 연결되었던 사람이 있으면, 서버가 브라우저에 응답하면서 쿠키를 던져놓음. 그래서 다음에 또 같은 사람이 로그인하면 서버가 쿠키 정보를 보면서 로그인 했던 사람이라고 판단하는 것 43 | - 세션 : 범 CS 에서 많이 사용되는 용어. 연결되어 있다는 하나의 상태라고 이해하기. Django 는 DB 에 세션 정보를 저장하는 방식 44 | - 쿠키는 클라이언트가 요청을 보내면 응답할 때 같이 보내주는건데 이 쿠키 안에 session id가 저장되어 전달 되고 서버에서는 이 세션 아이디가 같은지를 확인하는 것 45 | 46 | 47 | 48 | Q : 쿠키와 세션의 차이? 궁금합니다 49 | 50 | A : 쿠키와 세션에 대한 위 설명을 보고 스스로 정리해보기 51 | 52 | 53 | 54 | Q : 어제 실습 localhost:8000를 로그인에 따라 다르게 출력하라고해서(로그인하면 username 출력, username 누르면 해당 회원 조회), base.html 에 navbar 넣고, navbar 에 .is_authenticated 분기해서 로그인 하면 {{ user }} 혹은 {{ user.username }} 이 출력되게 작성했는데요! 요렇게만 작성하면 회원목록 타고 다른 회원의 detail.html 페이지 들어갔을때 navbar {{ user.username }} 부분이 로그인한 회원 이름이 아닌 detail.html 페이지에 설명되고 있는 다른 회원 이름으로 출력되는 이슈가 계속 발생하더라고요 {{ request.user.username }} 로 고치니까 해결됐습니다 이 미묘한 차이는 왜 발생하는 걸까요? 55 | 56 | A : context 에서 전달되고 있는 user 라고 하는 것이 있었기 때문일 거에요. 그러니까 요청한 유저인 경우 request.user 쓰시면 좋을 것 같습니다 57 | 58 | 59 | 60 | Q : 게시글을 작성한 계정만 글을 수정하고 삭제할 수 있게 할 수 있을까요? 61 | 62 | A : 게시글에 User PK 를 저장해야 합니다. 예를 들면 {% if request.user == article.user %} 삭제 수정 버튼 보여줄게 {% endif %} ... 다음 주에 자세히 수업! 63 | 64 | 65 | 66 | Q : username 클릭 시 해당 회원 조회 페이지(프로필 페이지)로 이동이 안되더라고요... for _ in accounts로 새로 구현 하는게 아닌가요? 67 | 68 | A : detail 페이지를 구현하는 것이죠. /accounts/1 69 | 70 | 71 | 72 | Q : 기존에 게시판 db가 있는 상태에서 accounts 를 만들면서 기존 db 날리고 다시 makemigrations랑 migrate해서 db를 만드는데요. 기존에 게시판 생성하면서 db 만들어 놓은 상태에서 accounts 만들 때 그냥 db를 생성 할 수 있나 궁금했습니다 => DB를 두 개로 관리 할 수 있나요? 73 | 74 | A : https://www.youtube.com/watch?v=BnS6343GTkY 영상 한번씩 보기 75 | -------------------------------------------------------------------------------- /notes/fastapi.md: -------------------------------------------------------------------------------- 1 | # ✅ FastAPI 시작하기 2 | 3 | > 1. 공식문서 4 | > 2. FastAPI 설계 및 구현 5 | > 3. FastAPI 서버 실행 6 | 7 | 8 | 9 | ### 1. 공식문서 10 | 11 | > *"FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.8+ based on standard Python type hints."* [(link)](https://fastapi.tiangolo.com/ko/) 12 | 13 | - **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](https://fastapi.tiangolo.com/#performance). 14 | - **Fast to code**: Increase the speed to develop features by about 200% to 300%. * 15 | - **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * 16 | - **Intuitive**: Great editor support. Completion everywhere. Less time debugging. 17 | - **Easy**: Designed to be easy to use and learn. Less time reading docs. 18 | - **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. 19 | - **Robust**: Get production-ready code. With automatic interactive documentation. 20 | - **Standards-based**: Based on (and fully compatible with) the open standards for APIs: [OpenAPI](https://github.com/OAI/OpenAPI-Specification) (previously known as Swagger) and [JSON Schema](https://json-schema.org/). 21 | 22 | 23 | 24 | ### 2. FastAPI 설계 및 구현 25 | 26 | - [Quick Start](https://fastapi.tiangolo.com/ko/tutorial/first-steps/) 27 | 28 | - 메인스크립트 작성 29 | 30 | ```python 31 | # main.py 32 | 33 | from fastapi import FastAPI 34 | 35 | app = FastAPI() 36 | 37 | @app.get("/") 38 | async def root(): 39 | return {"message": "Hello World"} 40 | ``` 41 | 42 | - 라이브 서버 실행 43 | 44 | ```bash 45 | $ uvicorn main:app --reload 46 | 47 | INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) 48 | INFO: Started reloader process [28720] 49 | INFO: Started server process [28722] 50 | INFO: Waiting for application startup. 51 | INFO: Application startup complete. 52 | ``` 53 | 54 | - 브라우저 주소창에 http://127.0.0.1:8000/ 입력 55 | 56 | - 아래 JSON 응답 확인 57 | 58 | ```json 59 | {"message": "Hello World"} 60 | ``` 61 | 62 | 63 | 64 | ### 3. FastAPI 서버 실행 65 | 66 | - API 구현완료 테스트 67 | - Postman 활용 68 | - 메인으로 작성한 스크립트 파일(.py) 먼저 터미널에서 실행 69 | - **GET / POST** Request 타입 선택 70 | - URL 입력 71 | - POST Request 라면, body 에 보내려는 JSON 데이터 입력 72 | - [send] 버튼 클릭 73 | - API 문서 화면에서 테스트 74 | - Swagger UI 75 | - http://127.0.0.1:8000/docs 76 | - 다른 방법 77 | - http://127.0.0.1:8000/redoc 78 | 79 | -------------------------------------------------------------------------------- /notes/algo_intro.md: -------------------------------------------------------------------------------- 1 | # ✅ 알고리즘 INTRO 2 | 3 | >1. 알고리즘? 코딩테스트? 4 | >2. 코딩테스트 종류 5 | >3. 코딩테스트 준비하기 6 | >4. 데이터 구조와 알고리즘 7 | 8 | 9 | 10 | 코딩테스트 준비! 11 | 12 | 3주간의 목표: 삼성 역량 시험에서 IM 통과할 수 있을 정도로 13 | 14 | 첫 번째 산: SW 역량테스트(IM형, A, B, C형) IM 단계 합격하기(3달간 준비) 15 | 16 | *SWEA D2~D3, 교육은 SWEA Intermediate 강의를 들어보면 좋음 17 | 18 | 두 번째 산: 19 | 20 | 21 | 22 | What is Algorism? 23 | 24 | 어떤 문제를 해결하기 위해 정해진 일련의 절차나 행동 25 | 26 | 문제란 Input을 넣었을 때, 원하는 Output이 나오도록 하는 것 27 | 28 | 29 | 30 | 기업에서는 코딩테스트를 기반으로 신입의 현업 능력을 추정 31 | 32 | 오픈북 테스트 환경인 경우가 많으니까, 개인 노트나 IDE를 잘 정리해두고 시험에 유리하게 활용하기 33 | 34 | 35 | 36 | 화이트보드 기술면접: 혼자서 문제를 술술 풀고 나오면 탈락! 내가 생각하는 것을 얼마나 잘 communicate 하는지를 보려고 보는 손코딩 시험 37 | 38 | 39 | 40 | 코딩테스트 준비를 한마디로 정리하면? 많이 풀기! 41 | 42 | 단순히 많이 풀기만 하는 게 아니라, 많이 풀기의 지름길을 알려 줄 예정 43 | 44 | 45 | 46 | 문제는 매번 풀 때마다 다른 유형을 푸는 것이 좋다? X 47 | 48 | 연습 때는 같은 유형 문제를 단기간에 여러 번 반복하는 것이 좋고 49 | 50 | 코딩테스트 직전에는 모의고사처럼 시간 제한을 두고 여러 유형을 푸는 것이 좋다. 51 | 52 | 53 | 54 | 오랜 시간 고민했는데 풀리지 않을 때, 끝까지 답을 보지 않는 것이 좋다? X 55 | 56 | 다만, 이후에 답을 보지 않고 반드시 한번 더 풀어서 내 것으로 만들어야 한다. 최대한 타인의 답을 많이 보면서 여러 풀이를 습득하는 것이 좋다. 57 | 58 | 59 | 60 | 알고리즘 문제는 몇 문제 정도 풀어야 코딩테스트를 통과할 수 있을까? 61 | 62 | 통계적으로 300~350문제. 사람마다 다르지만 이 정도 풀면 대부분의 코딩테스트에 무난하게 합격할 수 있다. 63 | 64 | (기초 100, 중급 100, 고급 100 / D2 50개 정도?) 65 | 66 | 67 | 68 | 기타 꿀팁 69 | 70 | 변수명 대충 짓지 않기 (for문에 i 정도는 가능! 임시변수니까) 71 | 72 | 언어가 가지는 내장 함수, 라이브러리를 적극 활용하기 73 | 74 | 반복되는 코드는 함수화를 통해 가독성 있게 작성하기 75 | 76 | 면접을 위해 풀이를 남에게 설명하는 연습 반드시 필요 77 | 78 | 79 | 80 | 함수화를 잘해야 재귀를 뚫을 수 있고, 재귀를 뚫어야 DP에 도달 81 | 82 | 83 | 84 | --- 85 | 86 | 87 | 88 | 데이터구조&알고리즘 89 | 90 | 프로그램 = 데이터 구조 + 알고리즘 (Niklaus Wirth) 91 | 92 | ​ (저장) + (조작/계산) 93 | 94 | 데이터 구조: 데이터를 다양한 방식으로 저장하고 + 조회, 삽입, 변경, 삭제와 같은 조작 기능을 제공한다. 95 | 96 | 97 | 98 | 데이터 구조가 왜 중요한가? 99 | 100 | 문제를 효율적으로 풀기 위해서! 101 | 102 | 서로 다른 용도의 물통(비커, 스포이드 ...)을 생각해보면 이해하기 쉽다 103 | 104 | 105 | 106 | 시퀀스형은 순서가 있으니까 순회(순서대로 돌 수 있다) 가능함! 107 | 108 | 영어로는 iterable 109 | 110 | 111 | 112 | --- 113 | 114 | 115 | 116 | 입력과 출력 117 | 118 | 119 | 120 | 1. 입력 활용 예시(input) 121 | * input()은 사용자의 입력 한 줄을 문자열로 받는 함수 122 | * 컴퓨터가 프로그램에 대한 입력 제어권을 사용자에게 넘김 123 | * 기술면접 질문예시: 여러분이 브라우저에 네이버.com 을 검색하는 순간 일어나는 일들을 설명해 보세요. 124 | 125 | 2. 출력 활용 예시(print) 126 | * print()는 데이터를 출력할 수 있는 함수이며, 자동적으로 줄 바꿈 발생 127 | * print 의 return 값은 None. 아무것도 리턴을 하진 않습니다 128 | * 콤마(,)를 이용해 여러 인자를 넣으면 공백을 기준으로 출력 129 | * end, sep 옵션을 사용하여 출력 조작하기 130 | 131 | 132 | 133 | 실제 코딩테스트는 프로그래머스에서 환경을 빌려오기 때문에, 백준이나 SWEA 가 아닌 프로그래머스에 적응할 필요가 있다 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /notes/py_final.md: -------------------------------------------------------------------------------- 1 | # ✅Python 패키지 활용 2 | 3 | > PDF, 강의 내용을 참조하여 보완 예정입니다. 4 | > 5 | > 6 | 7 | 8 | 9 | 파이썬 강의 마지막! 10 | 11 | 12 | 13 | 오늘 수업 구성 14 | 15 | 추가적인 문법들 소개 16 | 17 | 파이썬 버전의 변화 과정 18 | 19 | 패키지 20 | 21 | 22 | 23 | ## 1. 추가 문법 24 | 25 | - List Comprehension 26 | - 특정한 원소(요소)로 구성된 리스트를 만들 때 활용 27 | - 아무 때나 사용할 수 있는 것은 아니고, 너무 많이 쓰면 코드의 가독성도 떨어질 수 있음! 28 | 29 | - Dictionary Comprehension 30 | - 키:값 쌍으로 표현되기 때문에 가독성이 좋아짐 31 | - 컴프리핸션 코드를 보면, 간단한 형태의 리스트/딕셔너리를 만들고 싶었다는 것을 바로 알 수 있음 32 | 33 | - lambda [parameter] : 표현식 34 | - 함수를 응용하는 것으로 이해 35 | - 이름이 없는 함수(= 정의없이 함수를 만듬)여서 익명 함수라고 불림 36 | - 함수를 정의해서 사용하는 것보다 간결하게 사용 가능 37 | - def를 사용할 수 없는 곳에서도 사용 가능 38 | 39 | 40 | ![py_final](py_final.assets/py_final.png) 41 | 42 | 43 | 44 | - filter 45 | - 반복 가능한 것을 넣어서 True 인 것만 filter object 로 반환(map 이랑 비슷한 형태) 46 | 47 | - map(function, iterable) 48 | - 모든 반복 가능한 애들(iterable)에게 함수 적용하고 그 결과를 map object 로 ~ ! 49 | 50 | 51 | 52 | --- 53 | 54 | 55 | 56 | ## 2. 파이썬 버전별 추가된 57 | 58 | 59 | 60 | 파이썬은 여러 버전을 설치해놓고, VSCODE 에서 특정 버전 선택해서 61 | 62 | 작업을 진행할 수 있음 63 | 64 | 취업하는 회사가 어디냐에 따라 어떤 버전을 사용하는지도 65 | 66 | 하나의 이슈가 됩니다 67 | 68 | 69 | 70 | 버전 호환성이 언어별, 패키지별로 다름 71 | 72 | 항상 최신 문법이 좋은 것만은 아니다 73 | 74 | 파이썬 3.8의 새로운 기능을 사용하면, 낮은 버전을 사용하는 작업자와 협업할 때 오류가 발생할 수 있음 75 | 76 | 언어가 이렇게 달라지고 있다는 것을 아는 정도로 이해하자 77 | 78 | 79 | 80 | 파이썬 3.8에서 수업에서 다룰 문법! (파이썬 자습서 참고) 81 | 82 | 위치 전용 매개 변수 83 | 84 | 85 | 86 | 어노테이션은 87 | 88 | 동적 타입 언어인 파이썬에서 89 | 90 | 변수의 타입에 대한 힌트를 주는 것! 그냥 힌트.. 그냥 노트.. 91 | 92 | 함수 어노테이션을 쓰면, x나 y의 타입이 int 라는 힌트만 제공하는 것 93 | 94 | 95 | 96 | --- 97 | 98 | 99 | 100 | ## 3. 패키지 101 | 102 | 텐서플로우는 데이터분석할 때 쓰는 기계학습 라이브러리 103 | 104 | 이 라이브러리를 설치해서 쓰려면? 105 | 106 | 이 것을 관리하는 관리자 pip 를 활용! 107 | 108 | 109 | 110 | 파이썬 표준 라이브러리 111 | 112 | 이미 내장되어 있는 모듈과 함수를 볼 수 있음 113 | 114 | ![py_final_1](py_final.assets/py_final_1.png) 115 | 116 | 117 | 118 | 그러나 표준 라이브러리 말고 패키지를 직접 설치하려면 pip 이용 119 | 120 | ```bash 121 | 바탕화면에서 Git bash 실행하고 122 | 123 | $ pip list 124 | 치면 컴퓨터에 설치되어 있는 패키지를 확인 가능 125 | 126 | $ pip install 패키지명 127 | 새로운 패키지 설치하기 128 | 파이썬을 설치한 위치에 패키지들이 설치되어 있음 129 | (0721_1.png 참조) 130 | 131 | $ pip uninstall 패키지명 132 | 설치했던 패키지 삭제하기(오타 등의 오류 발생 시 활용!) 133 | ``` 134 | 135 | 136 | 137 | 가상환경 138 | 139 | 프로젝트마다 파이썬의 버전이 모두 다를 때, 패키지들을 따로따로 관리할 수 있게 도와주는 것 140 | 141 | (0721_2.png 이미지 참조) 142 | 143 | ![py_final_2](py_final.assets/py_final_2.png) 144 | 145 | 146 | 147 | 장고 배울 때 더 자세히 다뤄볼 예정! 148 | 149 | 150 | 151 | 152 | 153 | 실습문제 1288 접근방법 154 | 155 | ![py_final_3(실습1288_접근방법)](py_final.assets/py_final_3(실습1288_접근방법).png) 156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /practices/Web/assignment/220919/05_carousel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 05_carousel.html 8 | 40 | 41 | 42 |
43 | 49 |
50 | 51 | 52 | 85 | 86 | --------------------------------------------------------------------------------