قراره توی نسخههای بعد مرورگر کروم امکان استفاده از سوکت TCP و UDP اضافه بشه
wicg.github.io/direct-sockets/
@DevTwitter | <Ali Shirvani/>
wicg.github.io/direct-sockets/
@DevTwitter | <Ali Shirvani/>
👍39👎4
تجربه کارایی بینظیر با Laravel Octane و Swoole در Docker!
همه ما به عنوان توسعهدهنده دنبال راهکارهایی هستیم که برنامههامون سریعتر، بهینهتر و مقیاسپذیرتر باشن. خبر خوب اینه که Laravel Octane همراه با Swoole دقیقاً همین کار رو انجام میده!
این ترکیب نه تنها سرعت برنامهتون رو چند برابر میکنه، بلکه کارایی و قابلیتهای آن رو هم به طور قابل توجهی افزایش میده.
لاراول اکتان (Laravel Octane) یه پکیج برای بهینهسازی عملکرد لاراوله که با استفاده از سرورهای پیشرفته مثل Swoole و RoadRunner، برنامهتون رو در حافظه نگه میداره. یعنی هر بار که یه درخواست جدید میاد، لازم نیست کل برنامه از اول بارگذاری بشه. نتیجه؟ سرعت بالاتر و پاسخگویی بهتر به کاربران!
اما Swoole چطور کار میکنه؟
حالا بیایم بیشتر در مورد Swoole صحبت کنیم، چون موضوع اصلی اینجاست.
افزونه Swoole یه Extension برای PHP هست که با زبان C پیادهسازی شده و امکانات فوقالعادهای ارائه میده. بیاین چندتا از قابلیتهاش رو مرور کنیم:
1. پردازش همزمان (Concurrency): Swoole امکان اجرای چندین درخواست رو همزمان و بدون افت سرعت فراهم میکنه. این یعنی برنامهتون میتونه به تعداد بیشتری از کاربران خدمت بده بدون اینکه دچار لگ یا کندی بشه.
2. استفاده از Coroutine ها : با استفاده از Coroutineها، Swoole میتونه عملیاتهای ورودی/خروجی (I/O) رو بهصورت غیرهمزمان و بدون مسدودسازی اجرا کنه. این ویژگی باعث میشه برنامهتون به شدت سریعتر باشه.
3. وبسوکتها و HTTP/2: Swoole از پروتکلهای پیشرفته مثل وبسوکت و HTTP/2 پشتیبانی میکنه، که یعنی میتونید برنامههای Real-time با کارایی بالا بسازید.
4. بهینهسازی منابع: Swoole مصرف حافظه و CPU رو به شدت کاهش میده و برنامهتون رو بهینهتر و اقتصادیتر میکنه. این یعنی با منابع کمتر، میتونید عملکرد بهتری داشته باشید.
چرا ترکیب Laravel Octane و Swoole عالیه؟
1. سرعت بارگذاری بالا: برنامهتون تا ۱۰ برابر سریعتر اجرا میشه.
2. کاهش مصرف منابع: مصرف RAM و CPU به طرز چشمگیری کاهش پیدا میکنه و این یعنی شما میتونید بیشتر با منابع کمتر کار کنید.
3. پشتیبانی از قابلیتهای پیشرفته: مثل وبسوکتها که برای برنامههای Real-time فوقالعادهان.
4. پایداری بیشتر: برنامهتون در حافظه نگهداری میشه، یعنی نیاز به ریستارت مداوم ندارید.
5. افزایش ظرفیت سرویسدهی: میتونید تعداد زیادی از درخواستها رو بهصورت همزمان مدیریت کنید بدون افت عملکرد.
تجربه شخصی من:
تو چندتا از پروژههای اخیرم، از ترکیب Laravel Octane و Swoole همراه با Docker استفاده کردم. کارایی و سرعت به شکل قابل توجهی بهتر شد، زمان پاسخدهی به شدت کاهش پیدا کرد و باعث افزایش Performance برنامه ها شد.
@DevTwitter | <Amir Mohammad Sanjari/>
همه ما به عنوان توسعهدهنده دنبال راهکارهایی هستیم که برنامههامون سریعتر، بهینهتر و مقیاسپذیرتر باشن. خبر خوب اینه که Laravel Octane همراه با Swoole دقیقاً همین کار رو انجام میده!
این ترکیب نه تنها سرعت برنامهتون رو چند برابر میکنه، بلکه کارایی و قابلیتهای آن رو هم به طور قابل توجهی افزایش میده.
لاراول اکتان (Laravel Octane) یه پکیج برای بهینهسازی عملکرد لاراوله که با استفاده از سرورهای پیشرفته مثل Swoole و RoadRunner، برنامهتون رو در حافظه نگه میداره. یعنی هر بار که یه درخواست جدید میاد، لازم نیست کل برنامه از اول بارگذاری بشه. نتیجه؟ سرعت بالاتر و پاسخگویی بهتر به کاربران!
اما Swoole چطور کار میکنه؟
حالا بیایم بیشتر در مورد Swoole صحبت کنیم، چون موضوع اصلی اینجاست.
افزونه Swoole یه Extension برای PHP هست که با زبان C پیادهسازی شده و امکانات فوقالعادهای ارائه میده. بیاین چندتا از قابلیتهاش رو مرور کنیم:
1. پردازش همزمان (Concurrency): Swoole امکان اجرای چندین درخواست رو همزمان و بدون افت سرعت فراهم میکنه. این یعنی برنامهتون میتونه به تعداد بیشتری از کاربران خدمت بده بدون اینکه دچار لگ یا کندی بشه.
2. استفاده از Coroutine ها : با استفاده از Coroutineها، Swoole میتونه عملیاتهای ورودی/خروجی (I/O) رو بهصورت غیرهمزمان و بدون مسدودسازی اجرا کنه. این ویژگی باعث میشه برنامهتون به شدت سریعتر باشه.
3. وبسوکتها و HTTP/2: Swoole از پروتکلهای پیشرفته مثل وبسوکت و HTTP/2 پشتیبانی میکنه، که یعنی میتونید برنامههای Real-time با کارایی بالا بسازید.
4. بهینهسازی منابع: Swoole مصرف حافظه و CPU رو به شدت کاهش میده و برنامهتون رو بهینهتر و اقتصادیتر میکنه. این یعنی با منابع کمتر، میتونید عملکرد بهتری داشته باشید.
چرا ترکیب Laravel Octane و Swoole عالیه؟
1. سرعت بارگذاری بالا: برنامهتون تا ۱۰ برابر سریعتر اجرا میشه.
2. کاهش مصرف منابع: مصرف RAM و CPU به طرز چشمگیری کاهش پیدا میکنه و این یعنی شما میتونید بیشتر با منابع کمتر کار کنید.
3. پشتیبانی از قابلیتهای پیشرفته: مثل وبسوکتها که برای برنامههای Real-time فوقالعادهان.
4. پایداری بیشتر: برنامهتون در حافظه نگهداری میشه، یعنی نیاز به ریستارت مداوم ندارید.
5. افزایش ظرفیت سرویسدهی: میتونید تعداد زیادی از درخواستها رو بهصورت همزمان مدیریت کنید بدون افت عملکرد.
تجربه شخصی من:
تو چندتا از پروژههای اخیرم، از ترکیب Laravel Octane و Swoole همراه با Docker استفاده کردم. کارایی و سرعت به شکل قابل توجهی بهتر شد، زمان پاسخدهی به شدت کاهش پیدا کرد و باعث افزایش Performance برنامه ها شد.
@DevTwitter | <Amir Mohammad Sanjari/>
👍30🤣9👎5🔥5
همیشه دنبال یه فایل منیجر سبک و خوشگل و راحت واسه لاراول بودم و پکیج هایی مثل Unisharp lfm هم سنگین بودن و هم dependency ها و css, js های زیادی داشتن.
اینگونه بود که دست به کار شدم و یه پکیج فایل منیجر مینیمال جمع و جور خوشگل واسه لاراول با Vue3 نوشتم
بسیار سبکه و کاملا بر اساس SOLID هست و کاملا Ajax. فعلا در حد پیمایش، آپلود، تغییر نام، جابجایی آیتم ها، دانلود و ساخت دایرکتوری.
میتونید توی ادیتور ها هم استفادش کنید. مثل CKEditor
https://github.com/keyvanlotfi/laravel-filemanager
@DevTwitter | <Keyvan Lotfi Kamran/>
اینگونه بود که دست به کار شدم و یه پکیج فایل منیجر مینیمال جمع و جور خوشگل واسه لاراول با Vue3 نوشتم
بسیار سبکه و کاملا بر اساس SOLID هست و کاملا Ajax. فعلا در حد پیمایش، آپلود، تغییر نام، جابجایی آیتم ها، دانلود و ساخت دایرکتوری.
میتونید توی ادیتور ها هم استفادش کنید. مثل CKEditor
https://github.com/keyvanlotfi/laravel-filemanager
@DevTwitter | <Keyvan Lotfi Kamran/>
👍30🔥6🤣6👎4
دوره Large Language Model Agents که در دانشگاه برکلی داره برگزار میشه رو میتونید به صورت رایگان شرکت کنید.
تو این دوره شما ابتدا با LLM ها آشنا میشین و بعد یاد میگیرید چطور agent بسازید و در آخر با فرصتها، تهدیدها و محدودیت agentها آشنا خواهید شد.
https://llmagents-learning.org/f24
@DevTwitter | <Reza Jafari/>
تو این دوره شما ابتدا با LLM ها آشنا میشین و بعد یاد میگیرید چطور agent بسازید و در آخر با فرصتها، تهدیدها و محدودیت agentها آشنا خواهید شد.
https://llmagents-learning.org/f24
@DevTwitter | <Reza Jafari/>
👍20👎4❤3🔥3
آیا میدانستید PeachPie
کد PHP را کامپایل میکنه روی .NET runtime اجرا میکنه
چه شود
peachpie.io
https://github.com/peachpiecompiler/peachpie
چرا یکی باید بخواد بین .net و php پل بزنه ؟
@DevTwitter | <MehrdadLinux />
کد PHP را کامپایل میکنه روی .NET runtime اجرا میکنه
چه شود
peachpie.io
https://github.com/peachpiecompiler/peachpie
چرا یکی باید بخواد بین .net و php پل بزنه ؟
@DevTwitter | <MehrdadLinux />
🤣46🔥5👍2
چگونه در Digikala از کرشهای ناشی از lazy load در وب جلوگیری کردیم و تجربه کاربری را نجات دادیم!
کیفیت افتضاح اینترنت و قطع شدن لحظهای نتورک باعث میشه lazy load کردن اسکریپتهای یک وبسایت باعث کرش اپلیکیشن و تجربهی بد کاربری بشه. با توجه به شرایط بد اینترنت میخواستم این مطلب رو با شما هم به اشتراک به بذارم به امید اینکه با توجه به این نکتهی مهم، تجربهی کاربری بهتری در آینده داشته باشیم.
طبق آمار sentry یکی از پروداکتهامون، این مسئله روزانه بیش از ۳۰۰۰ کرش ایجاد میکرد.
قبل از اینکه دنبال راه حل بگردیم، وبسایتهای مطرحی که میشناختم رو بررسی کردم و متاسفانه همگی این مشکل رو داشتن.
(Aparat, Snapp! Express, Snapp!, Divar, Neshan, Alibaba)
لینک gist زیر راه حل ما برای پروداکتی بر پایه react و vite بود که امکان retry کردن رو به متد React.lazy اضافه میکنه و امروز هم با موفقیت تستش روی پروداکشن پاس شد و تقریبا تمامی ارورهای مرتبط با lazy load ماژولها مثل مورد زیر رفع شد.
TypeError: Failed to fetch dynamically imported module
لینک Gist
https://gist.github.com/mberneti/28769391cf27f7580a55dedab342c63a
خوشحال میشم پیشنهادی برای بهبودش دارید روی لینک gist متد retryDynamicImport اضافه کنید.
@DevTwitter | <Mohammadreza Berneti/>
کیفیت افتضاح اینترنت و قطع شدن لحظهای نتورک باعث میشه lazy load کردن اسکریپتهای یک وبسایت باعث کرش اپلیکیشن و تجربهی بد کاربری بشه. با توجه به شرایط بد اینترنت میخواستم این مطلب رو با شما هم به اشتراک به بذارم به امید اینکه با توجه به این نکتهی مهم، تجربهی کاربری بهتری در آینده داشته باشیم.
طبق آمار sentry یکی از پروداکتهامون، این مسئله روزانه بیش از ۳۰۰۰ کرش ایجاد میکرد.
قبل از اینکه دنبال راه حل بگردیم، وبسایتهای مطرحی که میشناختم رو بررسی کردم و متاسفانه همگی این مشکل رو داشتن.
(Aparat, Snapp! Express, Snapp!, Divar, Neshan, Alibaba)
لینک gist زیر راه حل ما برای پروداکتی بر پایه react و vite بود که امکان retry کردن رو به متد React.lazy اضافه میکنه و امروز هم با موفقیت تستش روی پروداکشن پاس شد و تقریبا تمامی ارورهای مرتبط با lazy load ماژولها مثل مورد زیر رفع شد.
TypeError: Failed to fetch dynamically imported module
لینک Gist
https://gist.github.com/mberneti/28769391cf27f7580a55dedab342c63a
خوشحال میشم پیشنهادی برای بهبودش دارید روی لینک gist متد retryDynamicImport اضافه کنید.
@DevTwitter | <Mohammadreza Berneti/>
1👍76👎4🔥3
کسانی که تازه دست به کد میشن یا در بعضی از دوستان میدلول, همیشه استرس این رو دارن که آیا کدی که می نویسند، تمیز هست و بر اساس اصولی که باید باشه هست؟!
میخوام یک سری موارد بگم که مفید باشه براتون و استرس کد کثیف نداشته باشید.
شما وقتی یک تکه کدی رو میخواهید بنویسید بر اساس دانش و تجربه تون بنویسید تو فکر این نباشید کدتون کثیف یا نه، سپس کدی که نوشتید رو بررسی کنید با اصول SOLID,KISS,DRY و... هم خونی داره و وارد دنیای ریفکتورینگ Refactoring شوید و در هر مرحله کد هاتون رو تمیز تر از قبل بنویسید.
هدفتون برای بار اول حل مسئله هست سپس اون راه حل تون رو هر دفعه بهبود ببخشید این باعث میشه درک بهتری از کد نویسی نیز داشته باشید.
این تکنیک باعث میشه شما تو آینده به صورت دیفالت کد های تمیز تری بنویسید.
@DevTwitter | <Mohammadreza Abdorrahmani/>
میخوام یک سری موارد بگم که مفید باشه براتون و استرس کد کثیف نداشته باشید.
شما وقتی یک تکه کدی رو میخواهید بنویسید بر اساس دانش و تجربه تون بنویسید تو فکر این نباشید کدتون کثیف یا نه، سپس کدی که نوشتید رو بررسی کنید با اصول SOLID,KISS,DRY و... هم خونی داره و وارد دنیای ریفکتورینگ Refactoring شوید و در هر مرحله کد هاتون رو تمیز تر از قبل بنویسید.
هدفتون برای بار اول حل مسئله هست سپس اون راه حل تون رو هر دفعه بهبود ببخشید این باعث میشه درک بهتری از کد نویسی نیز داشته باشید.
این تکنیک باعث میشه شما تو آینده به صورت دیفالت کد های تمیز تری بنویسید.
@DevTwitter | <Mohammadreza Abdorrahmani/>
👍101🔥11❤2👎1
کانال یوتیوب من دربارهٔ برنامهنویسی اندروید با موضوع تماسهای تصویری ، ویدیو کانفرنس با WebRTC و همچنین استریم کردن توسط پروتوکول RTP است. تکنیکها، ترفندها و روشهای ارتقا تجربه کاربری را یادتون میدم. برای بهتر شدن تو برنامهنویسی اندروید به ما بپیوندید.
http://Youtube.com/@codewithkael
@DevTwitter
http://Youtube.com/@codewithkael
@DevTwitter
👍22🔥6🤣3
شاید بشه اینطوری شروع کرد “هشدار به وردپرسکارها”
سال پیش همینموقعها بود که یک خبری رسید که وردپرس میخواد react رو جایگزین jquery کنه که محتمل هم بود چون چند سالی هست وردپرس ساختار قالبهاشو از بیس تغییر داده و تمام ویجتهای گوتنبرگ که ویرایشگر جدید وردپرس هستش رو با react توسعه داده
درسته بعدا فهمیدیم خبر واقعی نبوده و ورژن جدید خبری از حذف jquery نبود اما خب نمیشه هم ساده از کنار این موضوع گذشت چرا که وردپرس چندسالی هست داره سعی میکنه خودشو بعنوان framework معرفی کنه
حالا از این موضوع بگذریم امسال خبر رسیده که جدیدا وردپرس با WP Engine به دلیل نقض قوانین وردپرس به چالش خورده
-اگر WP Engine رو نمیشناسید باید بگم شرکتی که پلاگین پرقدرت acf رو توسعه دادهبود-
وردپرس اعلام کرد که acf دیگه دردسترس نخواهد بود
حالا هدفم از گفتن همهی اینها این بود که بگم در کنار وردپرس سعی کنید استکهای دیگه مخصوصا react رو هم یاد بگیرین و خیلی خودتون رو محدود به وردپرس نگه ندارین چون واقعا معلوم نیست در آینده وردپرس به چه شکلی ظاهر خواهدشد
@DevTwitter | <Abolfazl Mahjoob/>
سال پیش همینموقعها بود که یک خبری رسید که وردپرس میخواد react رو جایگزین jquery کنه که محتمل هم بود چون چند سالی هست وردپرس ساختار قالبهاشو از بیس تغییر داده و تمام ویجتهای گوتنبرگ که ویرایشگر جدید وردپرس هستش رو با react توسعه داده
درسته بعدا فهمیدیم خبر واقعی نبوده و ورژن جدید خبری از حذف jquery نبود اما خب نمیشه هم ساده از کنار این موضوع گذشت چرا که وردپرس چندسالی هست داره سعی میکنه خودشو بعنوان framework معرفی کنه
حالا از این موضوع بگذریم امسال خبر رسیده که جدیدا وردپرس با WP Engine به دلیل نقض قوانین وردپرس به چالش خورده
-اگر WP Engine رو نمیشناسید باید بگم شرکتی که پلاگین پرقدرت acf رو توسعه دادهبود-
وردپرس اعلام کرد که acf دیگه دردسترس نخواهد بود
حالا هدفم از گفتن همهی اینها این بود که بگم در کنار وردپرس سعی کنید استکهای دیگه مخصوصا react رو هم یاد بگیرین و خیلی خودتون رو محدود به وردپرس نگه ندارین چون واقعا معلوم نیست در آینده وردپرس به چه شکلی ظاهر خواهدشد
@DevTwitter | <Abolfazl Mahjoob/>
👍38🤣14👎11🔥3
چند وقتیه دارم روی چیزی به اسم Bake کار میکنم.
به درد همه جور برنامه نویسی میخوره.
الان توی مرحله ی feedback جمع کردنم.
خوشحال میشم اگه یه نگاهی بهش بندازید.
https://github.com/ali77gh/bake-rs
@DevTwitter | <Ali/>
به درد همه جور برنامه نویسی میخوره.
الان توی مرحله ی feedback جمع کردنم.
خوشحال میشم اگه یه نگاهی بهش بندازید.
https://github.com/ali77gh/bake-rs
@DevTwitter | <Ali/>
👍24🔥4❤1🤣1
امروز میخوام ACID رو توضیح بدم که چهار ویژگی مهم در تراکنشهای پایگاه داده است. بیایید با هم هر کدام از این مفاهیم رو مرور کنیم:
Atomicity (اتمی بودن)
یعنی یا همه عملیاتهای یک تراکنش بهدرستی انجام میشه یا هیچکدام انجام نمیشه. اگر خطایی رخ بده، همه تغییرات برگردونده میشه. مثلاً اگر در هنگام خرید اینترنتی انتقال پول از حساب شما با مشکل مواجه بشه، تراکنش برگردونده میشه و از حساب شما پولی کسر نمیشه.
Consistency (سازگاری)
یعنی پس از هر تراکنش، پایگاه داده همچنان طبق قوانین تعریفشده عمل میکنه. مثلاً در یک سیستم بانکی، قانون اینه که مجموع موجودی حسابها نباید منفی بشه. حالا تصور کنید اگر کسی بخواد پولی از حساب A به حساب B منتقل کنه و این انتقال ناتمام بمونه (پول از A کم بشه ولی به B اضافه نشه)، قوانین Consistency اجازه نمیده این اتفاق بیفته و تراکنش رو برمیگردونه تا موجودیها درست باشه.
Isolation (انزوا)
یعنی تراکنشها از هم جدا هستن و تأثیری روی هم ندارن. به این معنی که اگر دو نفر همزمان در حال انجام تراکنش باشن، یکی روی دیگری تأثیر نمیگذاره و نتایج تراکنشها به هم نمیریزه.
Durability (دوام)
یعنی وقتی یک تراکنش به پایان رسید و تأیید شد، تغییرات اون حتی در صورت بروز مشکل یا قطعی سیستم همچنان ذخیره میمونه. مثلاً وقتی شما پولی به حساب دیگری واریز میکنید، حتی اگر سیستم دچار قطعی بشه، این انتقال در پایگاه داده ثبت شده و از بین نمیره.
@DevTwitter | <Firoozeh Daeizadeh/>
Atomicity (اتمی بودن)
یعنی یا همه عملیاتهای یک تراکنش بهدرستی انجام میشه یا هیچکدام انجام نمیشه. اگر خطایی رخ بده، همه تغییرات برگردونده میشه. مثلاً اگر در هنگام خرید اینترنتی انتقال پول از حساب شما با مشکل مواجه بشه، تراکنش برگردونده میشه و از حساب شما پولی کسر نمیشه.
Consistency (سازگاری)
یعنی پس از هر تراکنش، پایگاه داده همچنان طبق قوانین تعریفشده عمل میکنه. مثلاً در یک سیستم بانکی، قانون اینه که مجموع موجودی حسابها نباید منفی بشه. حالا تصور کنید اگر کسی بخواد پولی از حساب A به حساب B منتقل کنه و این انتقال ناتمام بمونه (پول از A کم بشه ولی به B اضافه نشه)، قوانین Consistency اجازه نمیده این اتفاق بیفته و تراکنش رو برمیگردونه تا موجودیها درست باشه.
Isolation (انزوا)
یعنی تراکنشها از هم جدا هستن و تأثیری روی هم ندارن. به این معنی که اگر دو نفر همزمان در حال انجام تراکنش باشن، یکی روی دیگری تأثیر نمیگذاره و نتایج تراکنشها به هم نمیریزه.
Durability (دوام)
یعنی وقتی یک تراکنش به پایان رسید و تأیید شد، تغییرات اون حتی در صورت بروز مشکل یا قطعی سیستم همچنان ذخیره میمونه. مثلاً وقتی شما پولی به حساب دیگری واریز میکنید، حتی اگر سیستم دچار قطعی بشه، این انتقال در پایگاه داده ثبت شده و از بین نمیره.
@DevTwitter | <Firoozeh Daeizadeh/>
👍53🤣6👎1
This media is not supported in your browser
VIEW IN TELEGRAM
وب سایت levels.fyi که به جویندگان کار کمک میکنه دستمزد در شرکتهای مختلف را مقایسه کنن یک heatmap حقوق اضافه کرده است! میتونید بازه حقوقی برای شغلهای مختلف را در شهرهای امریکا ببینید.
@DevTwitter | <Mehdi Allahyari/>
@DevTwitter | <Mehdi Allahyari/>
❤11👍6🤣1
بچه ها این دوره ی LLM توسط دانشگاه UC Berkeley و Google DeepMind رو تازه دیدم توی لینکدین...
فوق العاده جالب میاد و ویدیوهاش هم رایگان گذاشتن.. اسلایداش و هم هست و کورس رو میتونید ثبت نام کنید البته یه ماهی هست شروع شده..
llmagents-learning.org/f24
@DevTwitter | <Sam92/>
فوق العاده جالب میاد و ویدیوهاش هم رایگان گذاشتن.. اسلایداش و هم هست و کورس رو میتونید ثبت نام کنید البته یه ماهی هست شروع شده..
llmagents-learning.org/f24
@DevTwitter | <Sam92/>
🔥15🤣5👍3
اصلاح مدل ذهنی از دنیای جاوااسکریپت
دورهی یادگیری مدلهای ذهنی جاوااسکریپت، مجموعه مطالبی هست که توسط Dan Abramov تهیه شده و دید شما رو نسبت به جاوااسکریپت متحول میکنه. مطالعهی این دوره رو به همهی افرادی که با جاوااسکریپت کار میکنن توصیه میکنم. بخصوص برای افرادی که تازه در حال یادگیری این زبان هستن.
این دوره در سایت justjavanoscript.com با قیمت ۴۲ دلار در دسترسه و من هم حدودا ۴ سال پیش که Dan Abramov بصورت رایگان این مطالب رو برای فالورهاش ایمیل کرد، مطالعه کردم و بعدش به فارسی در بلاگم منتشر کردم.
لینک رایگان دورهی فارسی دنیای جاوااسکریپت:
لینک
پ.ن:
آقای Dan Abramov (یکی از سازندگان Redux و Create React App و جز مهندسان نرم افزار بخش React شرکت Meta)
@DevTwitter | <Mohammadreza Berneti/>
دورهی یادگیری مدلهای ذهنی جاوااسکریپت، مجموعه مطالبی هست که توسط Dan Abramov تهیه شده و دید شما رو نسبت به جاوااسکریپت متحول میکنه. مطالعهی این دوره رو به همهی افرادی که با جاوااسکریپت کار میکنن توصیه میکنم. بخصوص برای افرادی که تازه در حال یادگیری این زبان هستن.
این دوره در سایت justjavanoscript.com با قیمت ۴۲ دلار در دسترسه و من هم حدودا ۴ سال پیش که Dan Abramov بصورت رایگان این مطالب رو برای فالورهاش ایمیل کرد، مطالعه کردم و بعدش به فارسی در بلاگم منتشر کردم.
لینک رایگان دورهی فارسی دنیای جاوااسکریپت:
لینک
پ.ن:
آقای Dan Abramov (یکی از سازندگان Redux و Create React App و جز مهندسان نرم افزار بخش React شرکت Meta)
@DevTwitter | <Mohammadreza Berneti/>
👍28🔥7
اگه دنبال موقعیت شغلی به صورت ریموت در خارج از ایران هستین این پست برای شماست.
سلام دوستان ، امیدوارم حالتون خوب باشه.
این روزها که مشغول پروسه رزومه فرستادن و مصاحبه هستم یه سری سایت هارو پیدا کردم که فک میکنم میتونه براتون مفید باشه.
از طریق این سایت ها میتونید به تمام موقعیت های شغلی ریموت دسترسی داشته باشید.
https://clojurejobboard.com
https://dailyremote.com
اگه دنبال موقعیت شغلی ریموت در زمینه بلاکچین و کریپتو هستید این سایت ها برای شماست.
https://cryptojobslist.com/
https://www.cryptojobs.com/
امیدوارم براتون مفید باشه
@DevTwitter | <Sina Abedi/>
سلام دوستان ، امیدوارم حالتون خوب باشه.
این روزها که مشغول پروسه رزومه فرستادن و مصاحبه هستم یه سری سایت هارو پیدا کردم که فک میکنم میتونه براتون مفید باشه.
از طریق این سایت ها میتونید به تمام موقعیت های شغلی ریموت دسترسی داشته باشید.
https://clojurejobboard.com
https://dailyremote.com
اگه دنبال موقعیت شغلی ریموت در زمینه بلاکچین و کریپتو هستید این سایت ها برای شماست.
https://cryptojobslist.com/
https://www.cryptojobs.com/
امیدوارم براتون مفید باشه
@DevTwitter | <Sina Abedi/>
👍19❤4🤣2👎1
کی از Git Rebase استفاده کنیم و کی از Git Merge؟
گاهی توی کار با Git با این سؤال مواجه میشیم که کی بهتره از rebase استفاده کنیم و کی merge؟ این موضوع میتونه روی خوانایی و ساختار تاریخچه پروژه تاثیر زیادی بذاره.
وقتی که میخوایم تاریخچهای تمیز و خطی داشته باشیم، از git rebase استفاده میکنیم. مثلاً فرض کنید در حال کار روی یک شاخهٔ جانبی (feature) هستیم که از شاخهٔ "main" ساخته شده و در این مدت، تغییرات جدیدی در "main" رخ داده است. اگر از rebase استفاده کنیم، تغییرات شاخهٔ "feature" به گونهای دوباره اعمال میشوند که انگار بعد از آخرین تغییرات شاخهٔ "main" انجام شدهاند. این کار کمک میکنه که تاریخچه پروژه به شکلی خطی و ساده باقی بمونه و دیدن اینکه چه تغییراتی و به چه ترتیبی انجام شده، راحتتر باشه.
اما باید با git rebase با احتیاط رفتار کنیم، چون در صورت استفاده نادرست میتونه مشکلات جبرانناپذیری ایجاد کنه. بهویژه، زمانی که چند نفر به طور همزمان روی یک شاخه کار میکنند، استفاده از rebase میتونه منجر به سردرگمی و مشکلات ترکیب (merge conflict) بشه. بنابراین، بهتره زمانی از rebase استفاده کنیم که با نحوهٔ عملکرد دقیق اون آشنایی کافی داشته باشیم.
از طرف دیگه، وقتی که میخوایم دو شاخه رو با هم ترکیب کنیم و دوست داریم که تاریخچهٔ هر دو شاخه و تغییراتشون حفظ بشه، git merge بهترین انتخابه. این روش مخصوصاً زمانی مناسب هست که بخوایم مشارکت چندین توسعهدهنده و تاریخچه کارهای انجام شده روی هر شاخه رو حفظ کنیم. merge به ما این امکان رو میده که به وضوح ببینیم که در چه زمانی دو شاخه با هم ادغام شدهاند و هیچ تغییری از دست نرفته است.
در کل، هر دو دستور rebase و merge کاربردهای خاص خودشون رو دارن و بسته به نیاز پروژه و ساختار تیم باید انتخاب بشن. rebase برای تمیز نگه داشتن تاریخچه و merge برای ترکیب و حفظ شاخههای موازی به کار میره. مهم اینه که هر کدوم رو با دقت و با توجه به نیازهای پروژه استفاده کنیم.
@DevTwitter | <Amirhisein Ahmadi/>
گاهی توی کار با Git با این سؤال مواجه میشیم که کی بهتره از rebase استفاده کنیم و کی merge؟ این موضوع میتونه روی خوانایی و ساختار تاریخچه پروژه تاثیر زیادی بذاره.
وقتی که میخوایم تاریخچهای تمیز و خطی داشته باشیم، از git rebase استفاده میکنیم. مثلاً فرض کنید در حال کار روی یک شاخهٔ جانبی (feature) هستیم که از شاخهٔ "main" ساخته شده و در این مدت، تغییرات جدیدی در "main" رخ داده است. اگر از rebase استفاده کنیم، تغییرات شاخهٔ "feature" به گونهای دوباره اعمال میشوند که انگار بعد از آخرین تغییرات شاخهٔ "main" انجام شدهاند. این کار کمک میکنه که تاریخچه پروژه به شکلی خطی و ساده باقی بمونه و دیدن اینکه چه تغییراتی و به چه ترتیبی انجام شده، راحتتر باشه.
اما باید با git rebase با احتیاط رفتار کنیم، چون در صورت استفاده نادرست میتونه مشکلات جبرانناپذیری ایجاد کنه. بهویژه، زمانی که چند نفر به طور همزمان روی یک شاخه کار میکنند، استفاده از rebase میتونه منجر به سردرگمی و مشکلات ترکیب (merge conflict) بشه. بنابراین، بهتره زمانی از rebase استفاده کنیم که با نحوهٔ عملکرد دقیق اون آشنایی کافی داشته باشیم.
از طرف دیگه، وقتی که میخوایم دو شاخه رو با هم ترکیب کنیم و دوست داریم که تاریخچهٔ هر دو شاخه و تغییراتشون حفظ بشه، git merge بهترین انتخابه. این روش مخصوصاً زمانی مناسب هست که بخوایم مشارکت چندین توسعهدهنده و تاریخچه کارهای انجام شده روی هر شاخه رو حفظ کنیم. merge به ما این امکان رو میده که به وضوح ببینیم که در چه زمانی دو شاخه با هم ادغام شدهاند و هیچ تغییری از دست نرفته است.
در کل، هر دو دستور rebase و merge کاربردهای خاص خودشون رو دارن و بسته به نیاز پروژه و ساختار تیم باید انتخاب بشن. rebase برای تمیز نگه داشتن تاریخچه و merge برای ترکیب و حفظ شاخههای موازی به کار میره. مهم اینه که هر کدوم رو با دقت و با توجه به نیازهای پروژه استفاده کنیم.
@DevTwitter | <Amirhisein Ahmadi/>
👍32👎6
امروز میخوام براتون درباره TCP صحبت کنم، یکی از پروتکلهای کلیدی اینترنت که بهطور روزمره باهاش سروکار داریم. TCP مثل یه پستچی مطمئن عمل میکنه و دادهها رو دقیق و به ترتیب به مقصد میرسونه.
پروتکل کنترل انتقال یا TCP چیه؟
پروتکل کنترل انتقال یا TCP یکی از مهمترین پروتکلهای ارتباطی هست که به دادهها اجازه میده بهصورت امن و مطمئن از یک سیستم به سیستم دیگه منتقل بشن. به خاطر اطمینان بالا، بیشتر اپلیکیشنها مثل وبگردی، ایمیل و پیامرسانها از TCP استفاده میکنن.
چطور ارتباط TCP برقرار میشه؟
برقراری ارتباط TCP یه فرآیند سه مرحلهای به اسم Three-Way Handshake داره:
مرحله اول SYN (Synchronize)
مثل این میمونه که یک طرف دستش رو برای دست دادن دراز کنه.
کلاینت بستهای با فلگ SYN به سرور میفرسته که حاوی شماره ترتیب اولیه (ISN) هست. مثلاً ۱۰۰۰. این یعنی کلاینت میخواد ارتباط برقرار کنه.
مرحله دوم SYN-ACK (Synchronize Acknowledge)
سرور دست رو میگیره و فلگهای SYN و ACK رو تنظیم میکنه. شماره ترتیب کلاینت رو تایید میکنه (۱۰۰۱) و شماره ترتیب خودش رو (مثلاً ۵۰۰۰) میفرسته.
مرحله سوم ACK (Acknowledge)
کلاینت پاسخ میده و فلگ ACK رو تنظیم میکنه. شماره ترتیب سرور رو به ۵۰۰۱ افزایش میده. حالا ارتباط TCP برقرار شده و آماده تبادل دادهها هست.
سوالات متداول:
فلگهای SYN و ACK چی هستن؟
این فلگها به TCP کمک میکنن که ارتباط بین دو سیستم رو مدیریت کنه و مطمئن بشه که هر پیام به درستی دریافت شده.
چرا شماره ترتیبها (ISN) مهم هستن؟
این شمارهها کمک میکنن تا پیامها به ترتیب درست برسن و از گم شدن اطلاعات جلوگیری میکنه. همچنین با تصادفی بودنشون جلوی حملات امنیتی گرفته میشه.
آیا اینترنت به سمت جایگزینی TCP میره؟
در HTTP/3 از پروتکل جدیدی به نام QUIC استفاده میشه که جای TCP رو میگیره، اما هنوز بیشتر وبسایتها از TCP استفاده میکنن، پس فعلاً جایی نمیره!
@DevTwitter | <Firoozeh Daeizadeh/>
پروتکل کنترل انتقال یا TCP چیه؟
پروتکل کنترل انتقال یا TCP یکی از مهمترین پروتکلهای ارتباطی هست که به دادهها اجازه میده بهصورت امن و مطمئن از یک سیستم به سیستم دیگه منتقل بشن. به خاطر اطمینان بالا، بیشتر اپلیکیشنها مثل وبگردی، ایمیل و پیامرسانها از TCP استفاده میکنن.
چطور ارتباط TCP برقرار میشه؟
برقراری ارتباط TCP یه فرآیند سه مرحلهای به اسم Three-Way Handshake داره:
مرحله اول SYN (Synchronize)
مثل این میمونه که یک طرف دستش رو برای دست دادن دراز کنه.
کلاینت بستهای با فلگ SYN به سرور میفرسته که حاوی شماره ترتیب اولیه (ISN) هست. مثلاً ۱۰۰۰. این یعنی کلاینت میخواد ارتباط برقرار کنه.
مرحله دوم SYN-ACK (Synchronize Acknowledge)
سرور دست رو میگیره و فلگهای SYN و ACK رو تنظیم میکنه. شماره ترتیب کلاینت رو تایید میکنه (۱۰۰۱) و شماره ترتیب خودش رو (مثلاً ۵۰۰۰) میفرسته.
مرحله سوم ACK (Acknowledge)
کلاینت پاسخ میده و فلگ ACK رو تنظیم میکنه. شماره ترتیب سرور رو به ۵۰۰۱ افزایش میده. حالا ارتباط TCP برقرار شده و آماده تبادل دادهها هست.
سوالات متداول:
فلگهای SYN و ACK چی هستن؟
این فلگها به TCP کمک میکنن که ارتباط بین دو سیستم رو مدیریت کنه و مطمئن بشه که هر پیام به درستی دریافت شده.
چرا شماره ترتیبها (ISN) مهم هستن؟
این شمارهها کمک میکنن تا پیامها به ترتیب درست برسن و از گم شدن اطلاعات جلوگیری میکنه. همچنین با تصادفی بودنشون جلوی حملات امنیتی گرفته میشه.
آیا اینترنت به سمت جایگزینی TCP میره؟
در HTTP/3 از پروتکل جدیدی به نام QUIC استفاده میشه که جای TCP رو میگیره، اما هنوز بیشتر وبسایتها از TCP استفاده میکنن، پس فعلاً جایی نمیره!
@DevTwitter | <Firoozeh Daeizadeh/>
1👍41❤7👎1
کتاب Web Browser Engineering در مورد روش کار Browser ها و مفاهیم پایه
کمک خوبی است برای درک عمیق مفاهیم
browser.engineering/index.html
@DevTwitter | <MehrdadLinux/>
کمک خوبی است برای درک عمیق مفاهیم
browser.engineering/index.html
@DevTwitter | <MehrdadLinux/>
👍19❤5🔥3
میدونستی یک Lib برای Python هست به اسم Art
که دو ایرانی الاصل به اسم
صدرا صبوری و سپند حقیقی ساختند که نوشته را تبدیل به گرافیک ASCII میکنه
غرب جوانان با استعداد ایران را خوب دستچین کرد و بالا کشید
pypi.org/project/art/
@DevTwitter | <teegra/>
که دو ایرانی الاصل به اسم
صدرا صبوری و سپند حقیقی ساختند که نوشته را تبدیل به گرافیک ASCII میکنه
غرب جوانان با استعداد ایران را خوب دستچین کرد و بالا کشید
pypi.org/project/art/
@DevTwitter | <teegra/>
🤣94👍32❤10🔥7
اگر از لاراول استفاده میکنید و دنبال پکیجی برای آنالیز کلیک کاربران هستید پکیج Pan این امکان رو به صورت لوکال ایجاد میکنه
https://github.com/panphp/pan
معرفی:
https://www.youtube.com/watch?v=hJJNi-Ri_3E
@DevTwitter | <Parsa Kafi/>
https://github.com/panphp/pan
معرفی:
https://www.youtube.com/watch?v=hJJNi-Ri_3E
@DevTwitter | <Parsa Kafi/>
👍22🤣8🔥4❤1