๋„คํŠธ์›Œํฌ ์„œ๋ฒ„

    Scalable Network Programming

    ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Scalable ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•œ ์ฃผ์ œ์ด๋‹ค. ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ๊ณผ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค€๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. 1. TCP ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ HTTP GET ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฐ„๋‹จํ•œ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ Error handling ์—†์ด ๊ตฌํ˜„ HTTP ํ—ค๋”๋ฅผ ํฌํ•จํ•˜์—ฌ ์ตœ๋Œ€ 4k๊นŒ์ง€๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ. char buf[4096]; int len; int fd=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP); struct sockaddr_in si; si.sin_family=PF_INET; inet_aton("127.0.0.1",&si.sin_addr); si.s..

    [Python/ MQTT] MQTT – Pub/Sub ๋ชจ๋ธ ๊ตฌํ˜„

    [Python/ MQTT] MQTT – Pub/Sub ๋ชจ๋ธ ๊ตฌํ˜„

    MQTT๋ž€ MQTT๋Š” M2M, IOT๋ฅผ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ๋กœ์„œ ์ตœ์†Œํ•œ์˜ ์ „๋ ฅ๊ณผ ํŒจํ‚ท๋Ÿ‰์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ MQTT๋Š” HTTP, TCP ๋“ฑ์˜ ํ†ต์‹ ๊ณผ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด ์•„๋‹Œ Broker, Publisher, Subscriber ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. MQTT ํŠน์ง• Client MQTT์˜ broker์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๊ฒƒ์„ ๋งํ•œ๋‹ค. Broker Broker๋Š” ๋ชจ๋“  ๋ฉ”์„ธ์ง€๋ฅผ ์ˆ˜์‹ , ํ•„ํ„ฐ๋ง, ๋ฉ”์„ธ์ง€ ๊ตฌ๋…ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๊ฒฐ์ •, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์—ญํ•  Subscribe topic์„ ๊ตฌ๋…ํ•˜์—ฌ topic์œผ๋กœ publish๋œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๋Š”๋‹ค. Topic MQTT์˜ topic์€ ์Šฌ๋ž˜์‹œ(/)๋ฅผ ๋ถ„๋ฆฌ ๋ฌธ์ž๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํด๋” ๋ฐ ํŒŒ์ผ๊ณผ ์œ ์‚ฌํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ex) /api/update/์Šน์ฃผ/๋น„๋ฐ€๋ฒˆํ˜ธ..

    [Django] Jump to Django (02/admin)

    [Django] Jump to Django (02/admin)

    Super User ์žฅ๊ณ  admin์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์žฅ๊ณ  admin ํ™”๋ฉด์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ์Šˆํผ์œ ์ €๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ~/baby-django$ python manage.py createsuperuser ์‚ฌ์šฉ์ž ์ด๋ฆ„ (leave blank to use 'runner'): admin ์ด๋ฉ”์ผ ์ฃผ์†Œ: admin@mysite.com Password: Password (again): Superuser created successfully. ๊ทธ๋Ÿฐ ๋‹ค์Œ /admin์—์„œ ์ƒ์„ฑํ•œ id pw๋กœ ๋กœ๊ทธ์ธํ•˜๋ฉด ๊ด€๋ฆฌ์ž ํ™”๋ฉด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. Model ๊ด€๋ฆฌ from django.contrib import admin from .models import Question admin.site.register(Questi..

    [Django] Jump to Django (01/์•ฑ ์ƒ์„ฑ+DB ์ƒ์„ฑ)

    [Django] Jump to Django (01/์•ฑ ์ƒ์„ฑ+DB ์ƒ์„ฑ)

    App ์ƒ์„ฑ ์•ž์—์„œ ๋งŒ๋“  mysite ํ”„๋กœ์ ํŠธ์—์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ฑ์„ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•  ์•ฑ์„ ์ƒ์„ฑํ•˜์ž. django-admin์˜ startapp ๋ช…๋ น์–ด๋กœ app์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค. django-admin startapp ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด pybo ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ /pybo ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ๋Š” 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์˜ค๋ฅ˜์˜ ๋‚ด์šฉ์€ config.urls์— ๋งคํ•‘์ด ์—†๋‹ค๊ณ  ์ ํ˜€ ์žˆ๋‹ค. Hello Pybo config/urls.py ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์ž. from django.contrib import admin from django.urls import path from pybo import views urlpatterns = [ path('..

    [Django] Jump to Django (00/ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ)

    [Django] Jump to Django (00/ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ)

    Django๋Š” Python์˜ ์˜คํ”ˆ ์†Œ์Šค ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด์ž ํ’€ ์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ด์ฌ์„ ์›น ์„œ๋น„์Šค์— ์“ด๋‹ค๊ณ  ํ•˜๋ฉด Django ๋˜๋Š” Flask๋ฅผ ์“ด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋‘˜์˜ ์ฐจ์ด๋Š” ํ’€ ์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ(Django)๋ƒ ์•„๋‹ˆ๋ƒ ์ •๋„. ๐Ÿš€Django ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ… mkdir venvs # ๊ฐ€์ƒํ™˜๊ฒฝ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ cd venvs python -m venv mysite # ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ cd mysite/Scripts activate # ๊ฐ€์ƒํ™˜๊ฒฝ ์ง„์ž… pip install django==4.0.3 # ์žฅ๊ณ  ์„ค์น˜ python -m pip install --upgrade pip # ์—๋Ÿฌ ๋‚  ์‹œ pip upgrade Django project ์ƒ์„ฑํ•˜๊ธฐ cd / mkdir projects c..

    [Python] ๐Ÿpython ํ™˜๊ฒฝ์„ธํŒ…

    [Python] ๐Ÿpython ํ™˜๊ฒฝ์„ธํŒ…

    1. Pycharm ์„ค์น˜ 2. Anaconda ์„ค์น˜ ์•„๋‚˜์ฝ˜๋‹ค๋Š” ํ†ตํ•ฉํŒจํ‚ค์ง€๋กœ ํŒŒ์ด์ฌ์„ ํฌํ•จํ•ด์„œ ๋งŽ์€ ๋ชจ๋“ˆ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. Jupyter Nodebook, Spyder, IPython๊ฐ™์€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ pandas, NumPy ๊ฐ™์€ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•จ๊ป˜ ์„ค์น˜๋œ๋‹ค. ์•„๋‚˜์ฝ˜๋‹ค์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 7500๊ฐœ ์ด์ƒ์˜ ํŒŒ์ด์ฌ ์šฉ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Œ conda ํ™˜๊ฒฝ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋””ํŽœ๋˜์‹œ ๊ด€๋ฆฌ scikit-learn, TensorFlow, Theano๋กœ ๋จธ์‹ ๋Ÿฌ๋‹, ๋”ฅ๋Ÿฌ๋‹ ๊ฐœ๋ฐœ Dask, Numpy, pandas, Numba๋กœ ๋ฐ์ดํ„ฐ ๋ถ„์„ Matplotlib, Bokeh, Datashader, Holoviews๋กœ ์‹œ๊ฐํ™” ์•„๋‚˜์ฝ˜๋‹ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. anaconda = python + con..

    [web] php ์„ค์น˜

    [web] php ์„ค์น˜

    ๐Ÿš€ ์„ค์น˜ ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด Bitnami\wampstack-8.1.4-0 ํด๋” ์•„๋ž˜์˜ manager-windows.exe ํŒŒ์ผ์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋œฌ๋‹ค. ์—ฌ๊ธฐ์„œ web server๋ฅผ ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ๋‹ค. Bitnami\wampstack-8.1.4-0\apache2\htdocs ๊ฐ€ ์ž‘์—…ํ•  ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋œ๋‹ค. ์—ฌ๊ธฐ๋‹ค๊ฐ€ test.php๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋”ฉํ•ด์„œ 127.0.0.1/test.php๋กœ ์ ‘์†ํ•ด๋ณด์ž โš™๏ธ ์„ค์ • Bitnami\wampstack-8.1.4-0\php ํด๋”์˜ php.ini ๋ฅผ ํŽธ์ง‘ํ•ด์„œ ์„ค์ •์„ ๋ฐ”๊ฟ”๋ณด์ž. 1. ์—๋Ÿฌ๋ฉ”์„ธ์ง€ on (๊ณต๋ถ€์šฉ์ผ๋•Œ๋งŒ ์ƒ์šฉ์—์„  ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด์ด๋ฉด ์ทจ์•ฝ์ ์ด ๋  ์ˆ˜ ์žˆ์Œ) display_errors = On 2. opcache ๋„๊ธฐ (์ผœ๋‘๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜์•ˆ๋˜๊ณ  ์บ์‹œ๊ฐ€ ์ ์šฉ๋จ) o..

    [โš›๏ธReact.Js] ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

    [โš›๏ธReact.Js] ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

    1. Create npx create-react-app project-name-here // npx create-react-app project-name-here --template typescript 2. Run npm start ๊ทธ๋Ÿฌ๋ฉด ๋ฆฌ์•กํŠธ ๋กœ๊ณ ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค. 3. ์ปดํฌ๋„ŒํŠธ ๋ถ„๋ฆฌ Header.js (๋ชจ๋“  ํ•จ์ˆ˜๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.) export const Header = () => ( // ์ƒํƒœ ๋น„์ €์žฅ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ˜ํ…์ธ ๋Š” ๋Œ€๊ด„ํ˜ธ "{}" ๋Œ€์‹  ๊ด„ํ˜ธ "()"์— ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋ฉฐ ๋ฐ˜ํ™˜ ํ•จ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค. I am Header ); App.js import logo from './logo.svg'; import './App.css'; import { Head..