چرا NGINX انقدر وحشتناک سریعه؟!
بخش اول: Traffic Routing
مدتی بود دنبال پروژه ای بودم که با هدف عمیق تر شدن توی مفاهیم شبکه و کانکارنسی بتونم با سی++ پیاده سازی کنم، هم فال بود و هم تماشا .
بعد از یه مدت تصمیم گرفتم سمت وبسرورها برم و رفتار اونارو زیر بار بررسی کنم، سورس NGINX رو دانلود کردم و شروع کردم به بیلد کردنش و بعد از سر و کله زدن با openssl در نهایت بیلدش کردم، هدف من بیشتر مشاهده ی رفتار NGINX روی حالتی بود که میخواست Load balancing کنه .
طبق چیزی که دیدم NGINX میاد و به دو روش معمول ترافیک رو به سمت سرور های مقصد ارسال میکنه، به طوری که میتونیم بگیم به روش Reverse proxy داره ترافیک رو سمت سرور مقصد هدایت میکنه. وقتی درخواستی از سمت کلاینت ارسال میشه NGINX اون رو دریافت میکنه و طبق الگوریتمی سرور مقصد رو .
انتخاب میکنه و روش یه سوکت جدید باز میکنه همچنین ممکنه از سوکت های قبلی که اماده داره به سرور مقصد استفاده کنه تا زمان Connection Establishing رو کاهش بده، بعد ترافیک رو از کلاینت میخونه و به سمت سرور اصلی فوروارد میکنه و منتظر جواب میمونه(بخش های بعدی میگم چطور) بعد از اینکه .
جواب از سرور مقصد دریافت شد اون رو به کلاینت برمیگردونه و تمام.
حالا چرا گفتم ۲ روش؟ چون هم میتونه این کار رو توی لایه ی ۴ نتورک مدل OSI انجام بده هم میتونه توی لایه ی ۷ مدل OSI انجام بده، اگه بخواییم بهتر متوجه بشیم من هم میتونم به NGINX بگم که درخواست هارو بر اساس هدر، سشن .
یا اندپوینت هدایت کنم (لایهی ۷)، هم میتونم اجازه بدم بر اساس IP یا PORT کاربر این اتفاق بیوفته (لایهی ۴)
وقتی ما نیاز داریم که سشن یا هدر رو چک کنیم در حقیقت نیاز داریم که داده ای که برامون ارسال شده رو باز کنیم و پردازشش کنیم و بعد بر اساس اون تصمیم بگیریم ولی توی مدل دوم.
نیازی به پردازش داده ی ارسالی نداریم و IP و PORT کاربر مشخصه، پس میتونیم بگیم روش اول توی لایه ی هفتم و روش دوم توی لایه ی چهارم اتفاق میوفته که طبیعتا سریعتر از روش اول باید باشه .
@DevTwitter | <Abolfazl/>
بخش اول: Traffic Routing
مدتی بود دنبال پروژه ای بودم که با هدف عمیق تر شدن توی مفاهیم شبکه و کانکارنسی بتونم با سی++ پیاده سازی کنم، هم فال بود و هم تماشا .
بعد از یه مدت تصمیم گرفتم سمت وبسرورها برم و رفتار اونارو زیر بار بررسی کنم، سورس NGINX رو دانلود کردم و شروع کردم به بیلد کردنش و بعد از سر و کله زدن با openssl در نهایت بیلدش کردم، هدف من بیشتر مشاهده ی رفتار NGINX روی حالتی بود که میخواست Load balancing کنه .
طبق چیزی که دیدم NGINX میاد و به دو روش معمول ترافیک رو به سمت سرور های مقصد ارسال میکنه، به طوری که میتونیم بگیم به روش Reverse proxy داره ترافیک رو سمت سرور مقصد هدایت میکنه. وقتی درخواستی از سمت کلاینت ارسال میشه NGINX اون رو دریافت میکنه و طبق الگوریتمی سرور مقصد رو .
انتخاب میکنه و روش یه سوکت جدید باز میکنه همچنین ممکنه از سوکت های قبلی که اماده داره به سرور مقصد استفاده کنه تا زمان Connection Establishing رو کاهش بده، بعد ترافیک رو از کلاینت میخونه و به سمت سرور اصلی فوروارد میکنه و منتظر جواب میمونه(بخش های بعدی میگم چطور) بعد از اینکه .
جواب از سرور مقصد دریافت شد اون رو به کلاینت برمیگردونه و تمام.
حالا چرا گفتم ۲ روش؟ چون هم میتونه این کار رو توی لایه ی ۴ نتورک مدل OSI انجام بده هم میتونه توی لایه ی ۷ مدل OSI انجام بده، اگه بخواییم بهتر متوجه بشیم من هم میتونم به NGINX بگم که درخواست هارو بر اساس هدر، سشن .
یا اندپوینت هدایت کنم (لایهی ۷)، هم میتونم اجازه بدم بر اساس IP یا PORT کاربر این اتفاق بیوفته (لایهی ۴)
وقتی ما نیاز داریم که سشن یا هدر رو چک کنیم در حقیقت نیاز داریم که داده ای که برامون ارسال شده رو باز کنیم و پردازشش کنیم و بعد بر اساس اون تصمیم بگیریم ولی توی مدل دوم.
نیازی به پردازش داده ی ارسالی نداریم و IP و PORT کاربر مشخصه، پس میتونیم بگیم روش اول توی لایه ی هفتم و روش دوم توی لایه ی چهارم اتفاق میوفته که طبیعتا سریعتر از روش اول باید باشه .
@DevTwitter | <Abolfazl/>
❤43👍20👎2
بازی کنین و برنامه نویسی یاد بگیرین
یادگیری CSS
flukeout.github.io
مناسب کودکان
codemonkey.com
تقویت فلکس باکس
flexboxfroggy.com
اکثریت زبان ها
codingame.com
یادگیری جاوااسکریپت
codecombat.com
@DevTwitter | <maavaraacademy/>
یادگیری CSS
flukeout.github.io
مناسب کودکان
codemonkey.com
تقویت فلکس باکس
flexboxfroggy.com
اکثریت زبان ها
codingame.com
یادگیری جاوااسکریپت
codecombat.com
@DevTwitter | <maavaraacademy/>
👍20❤7👎3🤣3
قابلیت Auto Minify کلودفلر هم از تاریخ ۵-۸-۲۰۲۴ (تقریبا سه ماه دیگه) حذف میشه.
قابلیت Mobile Redirect هم از تاریخ ۳۰-۶-۲۰۲۴ حذف میشه.
@DevTwitter | <Milad Nouri/>
قابلیت Mobile Redirect هم از تاریخ ۳۰-۶-۲۰۲۴ حذف میشه.
@DevTwitter | <Milad Nouri/>
👍16👎6🤣3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
انجین های سرچ زیرنویس زیادند، ولی این ریپو کارش اینه که از شما فایل صوتی یا تصویری میگیره، زیرنویس میسازه و جداگونه خلاصه رو هم بهتون میده.
داکرایز شده و به راحتی قابل اجراست.
https://github.com/aschmelyun/subvert
@DevTwitter | <Sabber/>
داکرایز شده و به راحتی قابل اجراست.
https://github.com/aschmelyun/subvert
@DevTwitter | <Sabber/>
👍24🔥4🤣3
DevTwitter | توییت برنامه نویسی
Photo
وقتی minify حذف بشه به نظرم باید نسبت به وب تجدید نظر کنیم.
پیش بینی من اینه که پرفورمنس فریم ورک هایی مثل Astro که جاوااسکریپت کمتری میفرسته
یا Qwik که کلا hydration رو با resumblity جایگزین میکنه و سریع تره بیشتر توی مارکت استفاده خواهند شد.
@DevTwitter | <Soroush Moosapour/>
پیش بینی من اینه که پرفورمنس فریم ورک هایی مثل Astro که جاوااسکریپت کمتری میفرسته
یا Qwik که کلا hydration رو با resumblity جایگزین میکنه و سریع تره بیشتر توی مارکت استفاده خواهند شد.
@DevTwitter | <Soroush Moosapour/>
👍16👎7🤣4
براتون یه چیز کاربردی از وردپرس بگم.
توی نسخههای جدیدتر ACF میتونید بلوکهای دلخواه ایجاد کنین و تجربه کاربری رو خیلی بهتر کنین.
آموزش از سایت اصلی به همراه نمونه کد، استفاده کنین و خروجی بهتری ایجاد کنین.
https://www.advancedcustomfields.com/resources/create-your-first-acf-block/
@DevTwitter | <Morteza Geransayeh/>
توی نسخههای جدیدتر ACF میتونید بلوکهای دلخواه ایجاد کنین و تجربه کاربری رو خیلی بهتر کنین.
آموزش از سایت اصلی به همراه نمونه کد، استفاده کنین و خروجی بهتری ایجاد کنین.
https://www.advancedcustomfields.com/resources/create-your-first-acf-block/
@DevTwitter | <Morteza Geransayeh/>
👍27🤣6❤1👎1
توسعهدهندگان Systemd در نسخه 256، run0 را معرفی کردند که جایگزینی برای sudo است.
البته run0 تاحدودی بهتر از sudo هست چرا که از SUID که binary استفاده نمی کند و از polkit برای authorization و باقی موارد استفاده میکند.
https://linuxiac.com/systemd-v256-introduces-run0/
@DevTwitter | <Vahid Nameni/>
البته run0 تاحدودی بهتر از sudo هست چرا که از SUID که binary استفاده نمی کند و از polkit برای authorization و باقی موارد استفاده میکند.
https://linuxiac.com/systemd-v256-introduces-run0/
@DevTwitter | <Vahid Nameni/>
👎29👍14❤1
یکی از چالش هایی که همه ما برنامه نویس ها باهاش رو به رو هستیم بهینه سازی کوئری ها روی دیتای زیاد هست که احتمالا هممون باهاش سر و کار داشتیم، توی این مقاله که در medium منتشر کردم درباره نحوه بهینه سازی کوئری های سنگین در لاراول با استفاده از chunk() توضیح دادم.
https://farshadth.medium.com/how-to-write-efficient-queries-using-chunks-in-laravel-583f7fc38b3b
@DevTwitter | <Farshad/>
https://farshadth.medium.com/how-to-write-efficient-queries-using-chunks-in-laravel-583f7fc38b3b
@DevTwitter | <Farshad/>
👍21👎2🤣2❤1
آموزش SQL Injection از طریف کامند INSERT
برای خود من که نکات جالبی داشت!
https://infosecwriteups.com/sql-injection-with-insert-statement-bdcf4d47d178
@DevTwitter | <exploitio/>
برای خود من که نکات جالبی داشت!
https://infosecwriteups.com/sql-injection-with-insert-statement-bdcf4d47d178
@DevTwitter | <exploitio/>
🤣12👍10
فهرستی از ۸۰۰ دوره آموزشی دانشگاهی که به صورت کاملا رایگان در موضوعات گوناگون علم کامپیوتر در دسترس هستند. بیشتر دورهها بصورت ویدیویی ضبط شدهاند.
https://github.com/Developer-Y/cs-video-courses
@DevTwitter | <هُشیوار/>
https://github.com/Developer-Y/cs-video-courses
@DevTwitter | <هُشیوار/>
👍23🔥5🤣3
بیش از ۷۰۰ کامپوننت رایگان
با کدهای React, Tailwind, Bootstrap
۴۱ نوع هیدر؛ ۳۱ نوع فوتر و ... .
https://easyfrontend.com/
@DevTwitter | <Ayub Kokabi/>
با کدهای React, Tailwind, Bootstrap
۴۱ نوع هیدر؛ ۳۱ نوع فوتر و ... .
https://easyfrontend.com/
@DevTwitter | <Ayub Kokabi/>
👍33🤣1
#کدبوک
اصول و بهترین شیوه ها برای طراحی و پیاده سازی سیستم های پردازش داده در مقیاس بزرگ
نکات مهم در زمینه مدیریت داده، انتقال داده و یکپارچه سازی داده ها
راهنمایی هایی برای انتخاب ابزارها و تکنولوژی های مناسب پردازش داده مانند سیستم های batch و streaming
روش های مدیریت و نگهداری سیستم های داده متمرکز و توزیع شده
تکنیک های تضمین کیفیت، امنیت و حریم خصوصی داده
تجربیات از متخصصان برجسته این حوزه در خصوص چالش ها و راهکارها
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
اصول و بهترین شیوه ها برای طراحی و پیاده سازی سیستم های پردازش داده در مقیاس بزرگ
نکات مهم در زمینه مدیریت داده، انتقال داده و یکپارچه سازی داده ها
راهنمایی هایی برای انتخاب ابزارها و تکنولوژی های مناسب پردازش داده مانند سیستم های batch و streaming
روش های مدیریت و نگهداری سیستم های داده متمرکز و توزیع شده
تکنیک های تضمین کیفیت، امنیت و حریم خصوصی داده
تجربیات از متخصصان برجسته این حوزه در خصوص چالش ها و راهکارها
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
❤9👍6🔥2
#Php
میخوای داکیومنت خودکار واسه پروژه php که داری بسازی ؟ حتما اینو ببین
https://github.com/api-platform/api-platform
@DevTwitter | <ٰVahid Alvandi/>
میخوای داکیومنت خودکار واسه پروژه php که داری بسازی ؟ حتما اینو ببین
https://github.com/api-platform/api-platform
@DevTwitter | <ٰVahid Alvandi/>
👍19👎1
#Laravel
من همیشه فن spatie بودم ولی این پکیج bouncer هم بد نیس انگار
کدومش نظرتونه؟
https://spatie.be/docs/laravel-permission/v6/introduction
https://github.com/JosephSilber/bouncer
@DevTwitter | <mahsa/>
من همیشه فن spatie بودم ولی این پکیج bouncer هم بد نیس انگار
کدومش نظرتونه؟
https://spatie.be/docs/laravel-permission/v6/introduction
https://github.com/JosephSilber/bouncer
@DevTwitter | <mahsa/>
👍8👎1
پروژه ی PHP تصمیم گرفته از این به بعد به جای یک سال، دو سال آپدیت امنیتی ارائه کنه که به نظرن خیلی حرکت مهمیه.
مخصوصا به خاطر وجود سایت های وردپرسی
https://github.com/php/policies/blob/main/release-process.rst
@DevTwitter
مخصوصا به خاطر وجود سایت های وردپرسی
https://github.com/php/policies/blob/main/release-process.rst
@DevTwitter
👍28🤣11👎1
مقایسه ی DJANGO با LARAVEL در برنامه نویسی وب
https://youtu.be/qQarvSKJeiU?si=BJJjWbctfh5YXmJW
@DevTwitter
https://youtu.be/qQarvSKJeiU?si=BJJjWbctfh5YXmJW
@DevTwitter
👎24🤣10❤5👍3
چند ماهیه دارم روی یه پروژه اوپن سورس کار میکنم برای دپلوی کردن پروژه هایی که بک اند لاراول دارن.
قضیه از اون جایی شروع شد که پارسال بررسی که کردم دیدم سولوشن استفاده از سرویس های کم کیفیت و گرون داخلی هست و یا سلف هاست که منابع موجود اوپن سورس و آموزش ها اکثرا خیلی ضعیف، ناقص و یا دارای اشتباهات اساسی هست و عملا بردرد پروداکشن نمیخورن منم خورد خورد کارو شروع کردم و الان به جای خیلی خوبی رسیدم.
چون پروداکشن خیلی حساسه میخوام که اگه کسی هست که توی زمینه دوآپس (ابونتو سرور، داکر کامپوز و بش) تجربه داره تا قبل از اینکه پروژه رو استیبل منتشر کنم کمی با هم مشورت کنیم و رو پروژه کانتریبیوت کنه تا بهینه تر بشه.
https://github.com/MansourM/ez-docker-for-laravel
@DevTwitter | <Mansour/>
قضیه از اون جایی شروع شد که پارسال بررسی که کردم دیدم سولوشن استفاده از سرویس های کم کیفیت و گرون داخلی هست و یا سلف هاست که منابع موجود اوپن سورس و آموزش ها اکثرا خیلی ضعیف، ناقص و یا دارای اشتباهات اساسی هست و عملا بردرد پروداکشن نمیخورن منم خورد خورد کارو شروع کردم و الان به جای خیلی خوبی رسیدم.
چون پروداکشن خیلی حساسه میخوام که اگه کسی هست که توی زمینه دوآپس (ابونتو سرور، داکر کامپوز و بش) تجربه داره تا قبل از اینکه پروژه رو استیبل منتشر کنم کمی با هم مشورت کنیم و رو پروژه کانتریبیوت کنه تا بهینه تر بشه.
https://github.com/MansourM/ez-docker-for-laravel
@DevTwitter | <Mansour/>
👍25
طبق بررسی jfrog تعداد 20% مخازن DockerHub برای فیشینگ و پخش بدافزار هستند.
نکته ای که برای ایران مهم است، آموزش نیروانسانی است. نمونه ای که در هک اسنپفود دیدیم و هکرها با آلودهسازی کاربران غیرفنی دسترسی اولیه خود را با بدست آوردن مشخصات VPN گرفته بودند.
https://jfrog.com/blog/attacks-on-docker-with-millions-of-malicious-repositories-spread-malware-and-phishing-scams/
@DevTwitter | <Vahid Nameni/>
نکته ای که برای ایران مهم است، آموزش نیروانسانی است. نمونه ای که در هک اسنپفود دیدیم و هکرها با آلودهسازی کاربران غیرفنی دسترسی اولیه خود را با بدست آوردن مشخصات VPN گرفته بودند.
https://jfrog.com/blog/attacks-on-docker-with-millions-of-malicious-repositories-spread-malware-and-phishing-scams/
@DevTwitter | <Vahid Nameni/>
👍21