DevTwitter | توییت برنامه نویسی
چرا PHP نسبت به بقیه زبانها کندتر است و راهکار چیست؟ - قسمت اول پی اچ پی در مقایسه با زبانهایی مثل GO کندتر است. دلیلش این است که هر درخواست PHP یک فرآیند جدید را شروع میکند. این فرآیند باید از ابتدا تجزیه و اجرا شود و سپس خاموش شود. یعنی هر پروسه به طور…
چرا PHP نسبت به بقیه زبانها کندتر است و راهکار چیست؟ قسمت دوم
کندی PHP برای شرکتها و سازمانهای بزرگی مانند فیسبوک به یک چالش جدی تبدیل شده بود، زیرا هر فرآیند از ابتدا شروع میشد و این بار اضافی برای سازمانها توجیهپذیر نبود. به همین دلیل فیسبوک تصمیم گرفت معماری HHVM را طراحی کند، که کد PHP را به بایتکد تبدیل کرده و بهصورت Just-In-Time (JIT) کامپایل میکرد.
حالا JIT برای PHP چه کاری انجام میدهد؟
برای توضیح بهتر، تصور کنید یک تعمیرکار یخچال برای تعمیر روزانه در منازل، همه ابزارهای خود را با خودش ببرد. این کار نه تنها او را خسته میکند، بلکه باعث مصرف بیش از حد انرژی و منابع هم میشود.
اما اگر او فقط ابزارهای مورد نیاز برای تعمیر هر یخچال را همراه داشته باشد، کارش سریعتر و بهینهتر انجام میشود.
و jit دقیقاً همین کار را برای کامپایل یک برنامه انجام میدهد؛ یعنی هر بخش از کد فقط زمانی که به آن نیاز باشد، کامپایل و اجرا میشود.
فیسبوک با این روش تونست یک پلتفرم بزرگ رو در اون زمان با php که تقریبا در زبان php ناممکن به نظر میرسید رو عملی کنه
@DevTwitter | <Farhad Safari/>
کندی PHP برای شرکتها و سازمانهای بزرگی مانند فیسبوک به یک چالش جدی تبدیل شده بود، زیرا هر فرآیند از ابتدا شروع میشد و این بار اضافی برای سازمانها توجیهپذیر نبود. به همین دلیل فیسبوک تصمیم گرفت معماری HHVM را طراحی کند، که کد PHP را به بایتکد تبدیل کرده و بهصورت Just-In-Time (JIT) کامپایل میکرد.
حالا JIT برای PHP چه کاری انجام میدهد؟
برای توضیح بهتر، تصور کنید یک تعمیرکار یخچال برای تعمیر روزانه در منازل، همه ابزارهای خود را با خودش ببرد. این کار نه تنها او را خسته میکند، بلکه باعث مصرف بیش از حد انرژی و منابع هم میشود.
اما اگر او فقط ابزارهای مورد نیاز برای تعمیر هر یخچال را همراه داشته باشد، کارش سریعتر و بهینهتر انجام میشود.
و jit دقیقاً همین کار را برای کامپایل یک برنامه انجام میدهد؛ یعنی هر بخش از کد فقط زمانی که به آن نیاز باشد، کامپایل و اجرا میشود.
فیسبوک با این روش تونست یک پلتفرم بزرگ رو در اون زمان با php که تقریبا در زبان php ناممکن به نظر میرسید رو عملی کنه
@DevTwitter | <Farhad Safari/>
👍48🤣9👎3
یک رایتآپ خیلی خوب در مورد Exploit کردن CORS که بعضی از use caseهای آن خیلی جذاب هستند مثل به سرقت بردن توکنهای CSRF قبل از دسترسی بهEndpointهای حساس که با Exploit کردن CORS همراه شده است.
https://outpost24.com/blog/exploiting-permissive-cors-configurations/
@DevTwitter | <Vahid Nameni/>
https://outpost24.com/blog/exploiting-permissive-cors-configurations/
@DevTwitter | <Vahid Nameni/>
👍9🔥5
از بدیهای آنریل اینه که بدون اعلام قبلی یهو یه کامیت دراپ میشه کامل یه چیزی رو شخم میزنه، مثل این مورد که بخاطر تغییر Layout دیتای OpenXR باعث بریک شدن API هندترکینگ آنریل شده. ۳ماهه میدونم و هنوز وقت نشده تغییرات رو اعمال کنم و Preview 1 دیروز معرفی شد
http://github.com/EpicGames/UnrealEngine/
@DevTwitter | <Mamadou On GameDev/>
http://github.com/EpicGames/UnrealEngine/
@DevTwitter | <Mamadou On GameDev/>
🤣23👍5
یه دولوپر بعد از ۳۰ سال کار با ویندوز به لینوکس مهاجرت کرده، سر چی؟
ماجرا اینه که شش تا کارت گرافیک ۲۴ گیگابایتی واسه اجرای مدلهای AI میخره و یکی یکی به سیستم اضافه میکنه، رو ویندوز افت عملکرد زیادی میبینه، یعنی از کل ظرفیت کارتها نمیتونه استفاده کنه.
بعد میاد لینوکس رو به شکل مجازی داخل ویندوز اجرا میکنه و دوباره تست میگیره که کمک زیادی نمیکنه، نهایتا تصمیم میگیره یه لینوکس مستقیما نصب کنه.
بعد از تغییر ویندوز به لینوکس شاهد افزایش ۳ برابری سرعت اجرای وظایف میشه و سیستمش هم به حافظه بیشتری دسترسی پیدا میکنه.
سرعت بالاتر معنیش اینه که میتونه مدلهای بزرگتر رو هم اجرا کنه، کاری که داخل ویندوز نمیتونست.
در کل ماجرای کاربر Inevitable-Start-653 هم دوست داشتید میتونید بخونید، جالب هست.
https://www.reddit.com/r/Oobabooga/comments/1b1pm0m/after_30_years_of_windowsive_switched_to_linux/
@DevTwitter | <Soroush Ahmadi/>
ماجرا اینه که شش تا کارت گرافیک ۲۴ گیگابایتی واسه اجرای مدلهای AI میخره و یکی یکی به سیستم اضافه میکنه، رو ویندوز افت عملکرد زیادی میبینه، یعنی از کل ظرفیت کارتها نمیتونه استفاده کنه.
بعد میاد لینوکس رو به شکل مجازی داخل ویندوز اجرا میکنه و دوباره تست میگیره که کمک زیادی نمیکنه، نهایتا تصمیم میگیره یه لینوکس مستقیما نصب کنه.
بعد از تغییر ویندوز به لینوکس شاهد افزایش ۳ برابری سرعت اجرای وظایف میشه و سیستمش هم به حافظه بیشتری دسترسی پیدا میکنه.
سرعت بالاتر معنیش اینه که میتونه مدلهای بزرگتر رو هم اجرا کنه، کاری که داخل ویندوز نمیتونست.
در کل ماجرای کاربر Inevitable-Start-653 هم دوست داشتید میتونید بخونید، جالب هست.
https://www.reddit.com/r/Oobabooga/comments/1b1pm0m/after_30_years_of_windowsive_switched_to_linux/
@DevTwitter | <Soroush Ahmadi/>
🔥87👍26❤11👎5
این سایت futureme.org عالیه. مخصوصاً اگه در مسیری هستین که نسبت به آینده مرددین.
میتونین به خودِ آیندهتون ایمیل بزنین (خصوصی/عمومی، ۶ ماه، یک سال یا ده بیست سال دیگه) و میرسه. نامههای بامزه عمومی بقیه رم داره (مثل این بعد ۱۷ سال) و نیز آرشیو خصوصی خودتون رو هم!
@DevTwitter | <لوکوموتیو/>
میتونین به خودِ آیندهتون ایمیل بزنین (خصوصی/عمومی، ۶ ماه، یک سال یا ده بیست سال دیگه) و میرسه. نامههای بامزه عمومی بقیه رم داره (مثل این بعد ۱۷ سال) و نیز آرشیو خصوصی خودتون رو هم!
@DevTwitter | <لوکوموتیو/>
👍29🔥4🤣2
اکثر apikey هایی که روی تارگت پیدا میشه چیزایی چرت و بی ارزش هستند ولی گاها از توشون چیز خوبم در میاد
این گیت در مورد هر سرویس و نحوه تستش یه توضیح داده
اگه ناشناخته بودن براتون حتما تست کنید
https://github.com/streaak/keyhacks
@DevTwitter | <Arshiya/>
این گیت در مورد هر سرویس و نحوه تستش یه توضیح داده
اگه ناشناخته بودن براتون حتما تست کنید
https://github.com/streaak/keyhacks
@DevTwitter | <Arshiya/>
🔥18👍2👎1
اگر میخواید پروسه ساخت یک چت بات با RAG رو فقط تبدیل به چند تا API CALL کنید میتونید از API اوپن سورسی که نوشتم استفاده کنید. همه چی از embeding تا ساخت Chat completions اتوماتیک انجام میشه
https://github.com/xmannii/Maux-RAG-API
@DevTwitter | <Mani/>
https://github.com/xmannii/Maux-RAG-API
@DevTwitter | <Mani/>
👍13🤣3👎1
This media is not supported in your browser
VIEW IN TELEGRAM
کمپانی Meta ی مجموعه مدل به اسم MovieGen که ساخت ویدیو را متحول کرده. Movie Gen چهار قابلیت ارائه میدهد: تولید ویدیو، ویدیوهای شخصیسازی شده، ویرایش دقیق ویدیو و تولید صدا. کیفیت ویدیوها واقعا بالاست بخصوص درآوردن نور و فیزیک توی ویدیو واقعا سخته.
https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/
@DevTwitter | <Mehdi Allahyari/>
https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/
@DevTwitter | <Mehdi Allahyari/>
👍10🔥9
سوال مصاحبه: چطور میشه بررسی کرد که نام کاربری بین یک میلیارد کاربر تکراری نباشه؟
این روزها با رشد سریع کسبوکارها، ثبتنام کاربرهای جدید هم به یه چالش تبدیل شده. یکی از مهمترین بخشها اینه که مطمئن بشیم هر کاربر یه نام کاربری منحصربهفرد داره. اخیراً در مورد این موضوع یه تحقیقی کردم و دو راهحل خوب پیدا کردم: استفاده از حافظه Redis و فیلتر Bloom. هر دو کمک میکنن سریع و بدون فشار زیاد به سیستم، نام کاربری جدید رو بررسی کنیم.
مشکل کجاست؟
اگه بخوایم از روشهای سنتی و دیتابیس برای بررسی نام کاربری استفاده کنیم، با زیاد شدن کاربرها سیستم کند میشه و با مشکلات زیر روبهرو میشیم:
- کندی در درخواستها
- فشار زیاد به دیتابیس، که باعث مصرف زیاد منابع میشه.
- مشکل در مقیاسپذیری، یعنی وقتی تعداد درخواستها زیاد بشه، سرور نمیتونه همه رو مدیریت کنه.
استفاده از Redis: سریع ولی پرمصرف
ردیس Redis کمک میکنه که بررسی نام کاربری خیلی سریع بشه، چون دادهها رو توی حافظه ذخیره میکنه. اما این روش یه مشکل بزرگ داره: حافظه زیادی مصرف میکنه. مثلاً برای یک میلیارد نام کاربری به 15 گیگابایت حافظه نیاز داریم! که تو سیستمهای بزرگ، خیلی پرهزینه و غیرعملی میشه.
فیلتر Bloom: ساده، بهینه و کممصرف
حالا بریم سراغ فیلتر Bloom. این فیلتر یه روش خیلی بهینهتره که فضای حافظه خیلی کمتری استفاده میکنه. برای همون یک میلیارد نام کاربری، فقط 1.67 گیگابایت حافظه نیاز داره!
اما فیلتر Bloom چیه؟ بذار یه مثال ساده بزنم:
فرض کن یه کیف داری که یه سری جیب کوچیک داره. هر بار که میخوای یه نام کاربری جدید رو ذخیره کنی، یه سری کلید (یعنی همون الگوریتمهای هش) بهت میگه تو کدوم جیبهای کیف بذاری. بعد اگه بخوای ببینی اون نام کاربری قبلاً ذخیره شده یا نه، فقط کافیه جیبهای مشخص شده رو چک کنی. اگه تو هر جیب چیزی باشه، یعنی احتمالاً اون نام کاربری قبلاً استفاده شده. ولی اگه یکی از جیبها خالی باشه، مطمئنی که اون نام کاربری وجود نداره.
با این روش:
- حافظه کمی استفاده میشه
- سرعت بررسی خیلی بالاست
البته یه نکته کوچیک داره: بعضی وقتا ممکنه به اشتباه بگه که یه نام کاربری هست در حالی که نیست (این همون خطای مثبت یا False Positive هست)، ولی در اکثر مواقع این خطا قابل چشمپوشیه.
نتیجهگیری
اگه با سیستمهایی کار میکنید که میلیونها یا حتی میلیاردها کاربر دارن، فیلتر Bloom یه راهحل خیلی بهینه و هوشمند برای بررسی یونیک بودن نام کاربریه. هم توی حافظه صرفهجویی میکنه، هم سرعت بررسی رو بالا نگه میداره.
@DevTwitter | <Massimo Dev/>
این روزها با رشد سریع کسبوکارها، ثبتنام کاربرهای جدید هم به یه چالش تبدیل شده. یکی از مهمترین بخشها اینه که مطمئن بشیم هر کاربر یه نام کاربری منحصربهفرد داره. اخیراً در مورد این موضوع یه تحقیقی کردم و دو راهحل خوب پیدا کردم: استفاده از حافظه Redis و فیلتر Bloom. هر دو کمک میکنن سریع و بدون فشار زیاد به سیستم، نام کاربری جدید رو بررسی کنیم.
مشکل کجاست؟
اگه بخوایم از روشهای سنتی و دیتابیس برای بررسی نام کاربری استفاده کنیم، با زیاد شدن کاربرها سیستم کند میشه و با مشکلات زیر روبهرو میشیم:
- کندی در درخواستها
- فشار زیاد به دیتابیس، که باعث مصرف زیاد منابع میشه.
- مشکل در مقیاسپذیری، یعنی وقتی تعداد درخواستها زیاد بشه، سرور نمیتونه همه رو مدیریت کنه.
استفاده از Redis: سریع ولی پرمصرف
ردیس Redis کمک میکنه که بررسی نام کاربری خیلی سریع بشه، چون دادهها رو توی حافظه ذخیره میکنه. اما این روش یه مشکل بزرگ داره: حافظه زیادی مصرف میکنه. مثلاً برای یک میلیارد نام کاربری به 15 گیگابایت حافظه نیاز داریم! که تو سیستمهای بزرگ، خیلی پرهزینه و غیرعملی میشه.
فیلتر Bloom: ساده، بهینه و کممصرف
حالا بریم سراغ فیلتر Bloom. این فیلتر یه روش خیلی بهینهتره که فضای حافظه خیلی کمتری استفاده میکنه. برای همون یک میلیارد نام کاربری، فقط 1.67 گیگابایت حافظه نیاز داره!
اما فیلتر Bloom چیه؟ بذار یه مثال ساده بزنم:
فرض کن یه کیف داری که یه سری جیب کوچیک داره. هر بار که میخوای یه نام کاربری جدید رو ذخیره کنی، یه سری کلید (یعنی همون الگوریتمهای هش) بهت میگه تو کدوم جیبهای کیف بذاری. بعد اگه بخوای ببینی اون نام کاربری قبلاً ذخیره شده یا نه، فقط کافیه جیبهای مشخص شده رو چک کنی. اگه تو هر جیب چیزی باشه، یعنی احتمالاً اون نام کاربری قبلاً استفاده شده. ولی اگه یکی از جیبها خالی باشه، مطمئنی که اون نام کاربری وجود نداره.
با این روش:
- حافظه کمی استفاده میشه
- سرعت بررسی خیلی بالاست
البته یه نکته کوچیک داره: بعضی وقتا ممکنه به اشتباه بگه که یه نام کاربری هست در حالی که نیست (این همون خطای مثبت یا False Positive هست)، ولی در اکثر مواقع این خطا قابل چشمپوشیه.
نتیجهگیری
اگه با سیستمهایی کار میکنید که میلیونها یا حتی میلیاردها کاربر دارن، فیلتر Bloom یه راهحل خیلی بهینه و هوشمند برای بررسی یونیک بودن نام کاربریه. هم توی حافظه صرفهجویی میکنه، هم سرعت بررسی رو بالا نگه میداره.
@DevTwitter | <Massimo Dev/>
1👍99🔥14👎9❤2
اگر مثل من با Django REST Framework (DRF) کار میکنی و دنبال راهی برای سریعتر کردن APIهات هستی، حتماً باید drf-cache رو امتحان کنی.
این ابزار چیکار میکنه؟
با کش کردن درخواستهای API به شما کمک میکنه تا فشار روی دیتابیس کمتر بشه و سرعت پاسخدهی APIها بهطور چشمگیری افزایش پیدا کنه
میتونی کش کردن رو برای هر ویو یا کوئری بهطور جداگانه تنظیم کنی، این یعنی کنترل کامل روی نحوه ذخیرهسازی و بازیابی دادهها
فوقالعاده مفیده برای APIهای سنگین یا پرتقاضا که نیاز به بهینهسازی دارن
اگه میخوای کارایی APIهات رو بهبود بدی و لود سرورت رو کم کنی، drf-cache یکی از بهترین گزینههاست!
پ.ن: (اگه دادههای زیادی رو کش کنی، این میتونه حافظه سرور رو بیشتر مصرف کنه. بهخصوص اگر کوئریها یا درخواستها خیلی بزرگ و پیچیده باشن و برای APIهایی که باید به سرعت اطلاعات رو بهروزرسانی کنن (جایی که دادهها مرتباً تغییر میکنن)، استفاده از کش میتونه باعث بشه کاربران دادههای جدید رو دیرتر ببینن. در این مواقع، باید خیلی هوشمندانه کشینگ رو تنظیم کنی.
و همچنین استفاده از drf-cache نیاز به تنظیمات دقیق داره، و اگر بهدرستی تنظیم نشه، ممکنه اصلاً نتونی ازش بهینه استفاده کنی یا برعکس، عملکرد رو حتی بدتر کنی.)
https://github.com/chibisov/drf-extensions
@DevTwitter | <Shima Fallah/>
این ابزار چیکار میکنه؟
با کش کردن درخواستهای API به شما کمک میکنه تا فشار روی دیتابیس کمتر بشه و سرعت پاسخدهی APIها بهطور چشمگیری افزایش پیدا کنه
میتونی کش کردن رو برای هر ویو یا کوئری بهطور جداگانه تنظیم کنی، این یعنی کنترل کامل روی نحوه ذخیرهسازی و بازیابی دادهها
فوقالعاده مفیده برای APIهای سنگین یا پرتقاضا که نیاز به بهینهسازی دارن
اگه میخوای کارایی APIهات رو بهبود بدی و لود سرورت رو کم کنی، drf-cache یکی از بهترین گزینههاست!
پ.ن: (اگه دادههای زیادی رو کش کنی، این میتونه حافظه سرور رو بیشتر مصرف کنه. بهخصوص اگر کوئریها یا درخواستها خیلی بزرگ و پیچیده باشن و برای APIهایی که باید به سرعت اطلاعات رو بهروزرسانی کنن (جایی که دادهها مرتباً تغییر میکنن)، استفاده از کش میتونه باعث بشه کاربران دادههای جدید رو دیرتر ببینن. در این مواقع، باید خیلی هوشمندانه کشینگ رو تنظیم کنی.
و همچنین استفاده از drf-cache نیاز به تنظیمات دقیق داره، و اگر بهدرستی تنظیم نشه، ممکنه اصلاً نتونی ازش بهینه استفاده کنی یا برعکس، عملکرد رو حتی بدتر کنی.)
https://github.com/chibisov/drf-extensions
@DevTwitter | <Shima Fallah/>
👍20🔥6👎2🤣2
ترکیب وردپرس و لاراول Laravel خیلی جذابه واقعا.
اول از همه Corcel رو نصب میکنید و پروژه لاراول رو باهاش کانفیگ میکنید.
حالا وردپرس رو نصب میکنید و با پلاگین WordPress Pete ستش میکنید روی لاراول.
اینجوری یه سایت لاراولی دارید با بکاند وردپرس
@DevTwitter | <Pedram/>
اول از همه Corcel رو نصب میکنید و پروژه لاراول رو باهاش کانفیگ میکنید.
حالا وردپرس رو نصب میکنید و با پلاگین WordPress Pete ستش میکنید روی لاراول.
اینجوری یه سایت لاراولی دارید با بکاند وردپرس
@DevTwitter | <Pedram/>
🤣82👎16👍10🔥7
فرقی نداره تو چه حوزهای میخواین کار کنید؛ بکاند، فرانتاند، هوش مصنوعی یا هر چی که به ذهنتون میرسه، سایت roadmap.sh برای شماست.
مسیر یادگیری رو براتون مشخص میکنه و برای هر مرحله منابع خوب معرفی میکنه.برای افرادی که نمیدونن از کجا شروع کنن عالیه، از دستش ندید.
@DevTwitter | <Reza Jafari/>
مسیر یادگیری رو براتون مشخص میکنه و برای هر مرحله منابع خوب معرفی میکنه.برای افرادی که نمیدونن از کجا شروع کنن عالیه، از دستش ندید.
@DevTwitter | <Reza Jafari/>
👍76❤7👎4🔥3
#حاجی_پشمام
با وجود تمام فریمورک های خفن js و کلی لایبراری، هنوز jQuery توی 75 درصد وبسایتا هست
@DevTwitter
با وجود تمام فریمورک های خفن js و کلی لایبراری، هنوز jQuery توی 75 درصد وبسایتا هست
@DevTwitter
👍87🤣53👎12🔥4
یکی از مزایای استفاده از JWT (JSON Web Token) این است که برخلاف Sessionها، توکن در سرور ذخیره نمیشود و نیازی به نگهداری وضعیت کاربر در سمت سرور نیست. این موضوع باعث کاهش سربار سرور و افزایش مقیاسپذیری برنامه میشود.
اما یک چالش مهم در این روش وجود دارد: اگر نیاز باشد که دسترسی کاربر لغو یا توکن بلاک شود (به عنوان مثال پس از خروج کاربر)، توکن JWT تا زمان انقضای آن همچنان معتبر است و میتواند درخواستها را به سمت سرور ارسال کند.
برای رفع این مشکل، از Token Blacklisting یا همان فهرست سیاه توکنها استفاده میشود. در این رویکرد، توکنهایی که باید بلاک شوند در یک فهرست ذخیره میشوند (معمولاً در یک پایگاه داده سریع مانند Redis). هر زمان که توکنی به سرور ارسال میشود، ابتدا بررسی میشود که آیا در لیست سیاه قرار دارد یا خیر. اگر توکن در این لیست باشد، درخواست رد میشود حتی اگر هنوز مدت زمان اعتبار توکن به پایان نرسیده باشد.
این روش نه تنها امنیت بیشتری را فراهم میکند، بلکه مدیریت بهتری برای مواردی چون لغو دسترسی کاربران یا بروز تغییرات در حسابهای کاربری را امکانپذیر میسازد.
@DevTwitter | <Firoozeh Daeizadeh/>
اما یک چالش مهم در این روش وجود دارد: اگر نیاز باشد که دسترسی کاربر لغو یا توکن بلاک شود (به عنوان مثال پس از خروج کاربر)، توکن JWT تا زمان انقضای آن همچنان معتبر است و میتواند درخواستها را به سمت سرور ارسال کند.
برای رفع این مشکل، از Token Blacklisting یا همان فهرست سیاه توکنها استفاده میشود. در این رویکرد، توکنهایی که باید بلاک شوند در یک فهرست ذخیره میشوند (معمولاً در یک پایگاه داده سریع مانند Redis). هر زمان که توکنی به سرور ارسال میشود، ابتدا بررسی میشود که آیا در لیست سیاه قرار دارد یا خیر. اگر توکن در این لیست باشد، درخواست رد میشود حتی اگر هنوز مدت زمان اعتبار توکن به پایان نرسیده باشد.
این روش نه تنها امنیت بیشتری را فراهم میکند، بلکه مدیریت بهتری برای مواردی چون لغو دسترسی کاربران یا بروز تغییرات در حسابهای کاربری را امکانپذیر میسازد.
@DevTwitter | <Firoozeh Daeizadeh/>
👍80❤6👎5
لاراول بلدی ولی لایووایر نه؟ میخوای شروع کنی ولی نمیدونی کدوم دوره خوبه؟
جرمی مک پیک (Jeremy McPeak) دوست داشتنی یه کورس آموزش لایووایر گذاشته که اگه نبینی، بعدا خعلی پشیمون میشی!
Today, we're launching a complete refresh of our introductory Livewire course.
"Livewire 3 From Scratch"
- 4 Hours of Content
- 29 Episodes
- 100% Free to All
- Ready to watch right now!
https://laracasts.com/series/livewire-3-from-scratch
@DevTwitter | <Ali Salehi/>
جرمی مک پیک (Jeremy McPeak) دوست داشتنی یه کورس آموزش لایووایر گذاشته که اگه نبینی، بعدا خعلی پشیمون میشی!
Today, we're launching a complete refresh of our introductory Livewire course.
"Livewire 3 From Scratch"
- 4 Hours of Content
- 29 Episodes
- 100% Free to All
- Ready to watch right now!
https://laracasts.com/series/livewire-3-from-scratch
@DevTwitter | <Ali Salehi/>
👍29🤣9❤1
خودمون رو به چالش کشیدیم و گفتیم وقتشه که CI/CD رو به بهترین شکل ممکن پیاده کنیم! نتیجهاش یک راهکار جامع و ساده برای راهاندازی Jenkins و GitLab شد که فرآیندهای استقرار رو کاملاً خودکار میکنه. از Docker و Rsync گرفته تا SSH، همه مراحل رو مستند کردیم تا هرکسی بتونه با کمترین دردسر، همین سیستم رو اجرا کنه.
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راهحل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!
https://github.com/aligharaei/jenkins_cicd
@DevTwitter | <ali gharaei/>
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راهحل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!
https://github.com/aligharaei/jenkins_cicd
@DevTwitter | <ali gharaei/>
🔥38👍5🤣2👎1
میخوایی بدونی پس قضیه جاواسکریپت چی میگذره و توی مصاحبه ها هم ازش استفاده کنی ؟
من یه مجموعه مقالاتی به اسم اندراحوالات جاواسکریپت توی سایت ویرگول نوشتم که جواب سوال بالا رو بهت میده:
تا جایی که تونستم هر موضوعی رو به ساده ترین نوع ممکن توضیح و پوشش دادم
اندر احوالات جاوااسکریپت قسمت اول
در مورد نحوه کار js و javascript Engine
https://vrgl.ir/fH7sf
اندر احوالات جاوااسکریپت قسمت دوم
در مورد Execution Context, Call Stack و زیر و بم اش
https://vrgl.ir/REWoF
اندر احوالات جاوااسکریپت قسمت سوم
هر آنچه که باید درمورد Scope و مخلفاتش بدونی
https://vrgl.ir/Zr7QI
اندر احوالات جاوااسکریپت قسمت چهارم
در مورد Hoisting
https://vrgl.ir/A3CVT
اندر احوالات جاوااسکریپت قسمت پنجم (آخر)
در مورد مفهوم this و کاربردش، arrow function و bind
https://vrgl.ir/JpJXp
نبرد async و sync
در مورد مفهوم asynchronous و synchronous - میکروتسک چیه؟نحوه کار کرد؟
https://vrgl.ir/96eJP
@DevTwitter | <Mohammad Bohluli/>
من یه مجموعه مقالاتی به اسم اندراحوالات جاواسکریپت توی سایت ویرگول نوشتم که جواب سوال بالا رو بهت میده:
تا جایی که تونستم هر موضوعی رو به ساده ترین نوع ممکن توضیح و پوشش دادم
اندر احوالات جاوااسکریپت قسمت اول
در مورد نحوه کار js و javascript Engine
https://vrgl.ir/fH7sf
اندر احوالات جاوااسکریپت قسمت دوم
در مورد Execution Context, Call Stack و زیر و بم اش
https://vrgl.ir/REWoF
اندر احوالات جاوااسکریپت قسمت سوم
هر آنچه که باید درمورد Scope و مخلفاتش بدونی
https://vrgl.ir/Zr7QI
اندر احوالات جاوااسکریپت قسمت چهارم
در مورد Hoisting
https://vrgl.ir/A3CVT
اندر احوالات جاوااسکریپت قسمت پنجم (آخر)
در مورد مفهوم this و کاربردش، arrow function و bind
https://vrgl.ir/JpJXp
نبرد async و sync
در مورد مفهوم asynchronous و synchronous - میکروتسک چیه؟نحوه کار کرد؟
https://vrgl.ir/96eJP
@DevTwitter | <Mohammad Bohluli/>
👍35🤣10🔥9❤1
یک کد اتاق چت کامل به صورت real time با Node.js، Next.js و Socket.io نوشتهام که برای دوستانی که علاقهمند به نوشتن اتاق چت هست نمونهی خوبیه.
میتوانید برای دیدن کد به آدرس گیتهابم که در پایین گذاشتم مراجعه کنید.
https://github.com/mo3ito/chat-room
@DevTwitter | <Mostafa Entezami/>
میتوانید برای دیدن کد به آدرس گیتهابم که در پایین گذاشتم مراجعه کنید.
https://github.com/mo3ito/chat-room
@DevTwitter | <Mostafa Entezami/>
👍32🤣10❤4🔥4
«هوش مصنوعی هِزار: کتابخانهای برای آسانسازی یادگیری هوش مصنوعی در زبان فارسی، ساخته شده توسط جامعه فارسی زبان!»
این مجموعه ابزار، کار با عکس، متن و صدا را به زبان فارسی تسهیل میکند.
شخصا برای آموزش OCR فارسی تصاویر،ازش استفاده کردم.
https://github.com/hezarai/hezar
@DevTwitter | <Mohammad/>
این مجموعه ابزار، کار با عکس، متن و صدا را به زبان فارسی تسهیل میکند.
شخصا برای آموزش OCR فارسی تصاویر،ازش استفاده کردم.
https://github.com/hezarai/hezar
@DevTwitter | <Mohammad/>
👍45❤4👎1