This media is not supported in your browser
VIEW IN TELEGRAM
خیلی خلاصه ی زمانی میخای از یه عددی شروع کنی و با بالا رفتن عدد به یک عدد دیگه برسی مثل تعداد نصب، تعداد کاربر ها، سفارشات روزانه و...
که بهش میگن کانت آپ(count up) ؛این کتابخونه اینقدر خفنه که بر عکسش هم هست یعنی کانت داون. خفنیشم اینکه میتونی این جزئیات زیاد رو روش تعیین کنی مثلا آخر شمارش یکم آروم تر بشماره، سرعت شمارش چقدر باشه و....
جزئيات رو بین:
لینک npm:
https://www.npmjs.com/package/react-countup
لینک ریپو:
https://github.com/glennreyes/react-countup
@DevTwitter | <Ali Mohammad Esmaeeli/>
که بهش میگن کانت آپ(count up) ؛این کتابخونه اینقدر خفنه که بر عکسش هم هست یعنی کانت داون. خفنیشم اینکه میتونی این جزئیات زیاد رو روش تعیین کنی مثلا آخر شمارش یکم آروم تر بشماره، سرعت شمارش چقدر باشه و....
جزئيات رو بین:
<CountUp
start={-875.039}
end={160527.012}
duration={2.75}
separator=" "
decimals={4}
decimal=","
prefix="EUR "
suffix=" left"
onEnd={() => console.log('Ended!')}
onStart={() => console.log('Started!')}
>
{({ countUpRef, start }) => (
<div>
<span ref={countUpRef} />
<button onClick={start}>Start</button>
</div>
)}
</CountUp>
لینک npm:
https://www.npmjs.com/package/react-countup
لینک ریپو:
https://github.com/glennreyes/react-countup
@DevTwitter | <Ali Mohammad Esmaeeli/>
👍29
This media is not supported in your browser
VIEW IN TELEGRAM
اگر گاهی اوقات مثل من تعداد requestهایی که یک برنامه میتواند پاسخگو باشد را مورد سنجش قرار میدهید، برنامه Oha ممکن است به کار تان بیاید که تازه آن را پیدا کردهام که به صورت جالبی نتایج را نمایش میدهد.
البته که کلی ابزار خوب دیگر نیز برای این کار هست.
https://github.com/hatoo/oha
@DevTwitter | <Vahid Nameni/>
البته که کلی ابزار خوب دیگر نیز برای این کار هست.
https://github.com/hatoo/oha
@DevTwitter | <Vahid Nameni/>
👍23👎10
چرا مدرک AWS بگیریم؟
در خارج از ایران افرادی که مدرک AWS دارند بین ۲۵ تا ۳۵ درصد حقوق بالاتری دریافت می کنند.
برای مثال حقوق برنامه نویس های بدون مدرک AWS به طور میانگین بین ۸۰ تا ۱۲۰ هزار دلار است اما برنامه نویس هایی که مدرک AWS دارند به طور میانگین بین ۹۰ تا ۱۴۰ هزار دلار دریافت می کنند.
این تفاوت در نقش Solution Architect خودش را بیشتر نشان میدهد و یک Solution Architect بدون مدرک AWS به طور میانگین بین ۱۲۰ تا ۱۵۰ هزار دلار حقوق میگیرد اما Solution Architect هایی که مدرک AWS دارند به طور میانگین از ۱۵۰ تا بیشتر از ۱۸۰ هزار دلار حقوق میگیرند.
در واقع Solution Architect هایی که دارای مدرک AWS هستند جز پردرآمدترین افراد حوزه Tech هستند.
@DevTwitter | <Pouria Jahandideh/>
در خارج از ایران افرادی که مدرک AWS دارند بین ۲۵ تا ۳۵ درصد حقوق بالاتری دریافت می کنند.
برای مثال حقوق برنامه نویس های بدون مدرک AWS به طور میانگین بین ۸۰ تا ۱۲۰ هزار دلار است اما برنامه نویس هایی که مدرک AWS دارند به طور میانگین بین ۹۰ تا ۱۴۰ هزار دلار دریافت می کنند.
این تفاوت در نقش Solution Architect خودش را بیشتر نشان میدهد و یک Solution Architect بدون مدرک AWS به طور میانگین بین ۱۲۰ تا ۱۵۰ هزار دلار حقوق میگیرد اما Solution Architect هایی که مدرک AWS دارند به طور میانگین از ۱۵۰ تا بیشتر از ۱۸۰ هزار دلار حقوق میگیرند.
در واقع Solution Architect هایی که دارای مدرک AWS هستند جز پردرآمدترین افراد حوزه Tech هستند.
@DevTwitter | <Pouria Jahandideh/>
👍43👎6🔥4❤2
یک نقشهٔ راهِ عالی برایِ یادگیریِ ریاضیات پیدا کردم!
خوبیش اینه برایِ هر موضوعی بهترین منبعِ مطالعاتیش هم معرفی کرده. توضیحاتِ ریدمی هم بخونید نکاتِ خوبی داره.
https://github.com/TalalAlrawajfeh/mathematics-roadmap
@DevTwitter | <Ayub Kokabi/>
خوبیش اینه برایِ هر موضوعی بهترین منبعِ مطالعاتیش هم معرفی کرده. توضیحاتِ ریدمی هم بخونید نکاتِ خوبی داره.
https://github.com/TalalAlrawajfeh/mathematics-roadmap
@DevTwitter | <Ayub Kokabi/>
1🔥36👍9👎6
قالب Mason برای معماری Clean و BLoC در Flutter
معرفی قالب خفنی که برای پروژههای Flutter نوشتم.
دیگه لازم نیست وقتت رو برای ساخت پوشهها و فایلهای تکراری هدر بدی. این قالب همه چیز رو آماده و مرتب بهت تحویل میده. و با یه دستور میتونی تمام فایل ها و پوشه هایی که برا یه فیچر جدید نیاز داری رو ایجاد کنی.
ویژگیهای این قالب:
ساخت خودکار همهچیز برای پروژه
هرچی نیاز داری، از فایلها گرفته تا پوشهبندی استاندارد، این قالب برات آماده میکنه.
معماری Clean و مقیاسپذیر
با این قالب، کدهای شما کاملاً ساختاریافته، تمیز و آیندهنگر هستن. مدیریت منطق، دادهها و UI به سادهترین شکل ممکن انجام میشه.
همهچیز آماده: BLoC، UseCase و Repository
لایهها به صورت کاملاً جداگانه طراحی شدن تا کار روی پروژه برات سادهتر و ماژولار بشه.
پوشهبندی تمیز و منعطف
پروژه همیشه مرتب و خواناست، هر تغییری بخوای بدی، خیلی راحت انجام میدی.
پشتیبانی از چندزبانه بودن (Localization)
اگه میخوای برنامهت رو برای کاربرهای مختلف دنیا ارائه بدی، با این قالب خیلی راحت میتونی ترجمهها رو مدیریت کنی.
نوتیفیکیشن با Firebase Cloud Messaging
ارسال و دریافت نوتیفیکیشن با تنظیمات ساده و کامل. البته برای این بخش نیاز به تنظیمات Firebase داری.
ذخیره امن دادهها (FlutterSecureStorage)
اطلاعات حساس کاربرها مثل توکنها رو به صورت امن ذخیره کن و خیالت از امنیت راحت باشه.
پشتیبانی از Flavor
برای مدیریت محیطهای مختلف مثل Dev، Staging و Production، این قالب برات همهچیز رو آماده کرده.
ناوبری آسان (بدون نیاز به Context)
خیلی ساده بین صفحات جابهجا شو و حتی لاگ مسیرها رو داشته باش.
ریسپانسیو بودن با Flutter ScreenUtil
رابط کاربریت رو برای همه دستگاهها به صورت کاملاً هماهنگ و ریسپانسیو طراحی کن.
ارتباط حرفهای با سرور با Dio
مدیریت درخواستهای HTTP با کتابخانه قدرتمند Dio انجام میشه. سریع، مطمئن و منعطف.
پشتیبانی از تاریخ شمسی (Jalali Date Support)
این قالب یه سری اکستنشن برا تاریخ شمسی رو داره کار با تاریخ شمسی رو برات راحت میکنه.
لاگگیری زیبا با Pretty Dio Logger
لاگهای شبکه رو به صورت خوانا و حرفهای مدیریت کن.
https://github.com/basicFlutter/mason_bricks
@DevTwitter | <Abbas Dehghani/>
معرفی قالب خفنی که برای پروژههای Flutter نوشتم.
دیگه لازم نیست وقتت رو برای ساخت پوشهها و فایلهای تکراری هدر بدی. این قالب همه چیز رو آماده و مرتب بهت تحویل میده. و با یه دستور میتونی تمام فایل ها و پوشه هایی که برا یه فیچر جدید نیاز داری رو ایجاد کنی.
ویژگیهای این قالب:
ساخت خودکار همهچیز برای پروژه
هرچی نیاز داری، از فایلها گرفته تا پوشهبندی استاندارد، این قالب برات آماده میکنه.
معماری Clean و مقیاسپذیر
با این قالب، کدهای شما کاملاً ساختاریافته، تمیز و آیندهنگر هستن. مدیریت منطق، دادهها و UI به سادهترین شکل ممکن انجام میشه.
همهچیز آماده: BLoC، UseCase و Repository
لایهها به صورت کاملاً جداگانه طراحی شدن تا کار روی پروژه برات سادهتر و ماژولار بشه.
پوشهبندی تمیز و منعطف
پروژه همیشه مرتب و خواناست، هر تغییری بخوای بدی، خیلی راحت انجام میدی.
پشتیبانی از چندزبانه بودن (Localization)
اگه میخوای برنامهت رو برای کاربرهای مختلف دنیا ارائه بدی، با این قالب خیلی راحت میتونی ترجمهها رو مدیریت کنی.
نوتیفیکیشن با Firebase Cloud Messaging
ارسال و دریافت نوتیفیکیشن با تنظیمات ساده و کامل. البته برای این بخش نیاز به تنظیمات Firebase داری.
ذخیره امن دادهها (FlutterSecureStorage)
اطلاعات حساس کاربرها مثل توکنها رو به صورت امن ذخیره کن و خیالت از امنیت راحت باشه.
پشتیبانی از Flavor
برای مدیریت محیطهای مختلف مثل Dev، Staging و Production، این قالب برات همهچیز رو آماده کرده.
ناوبری آسان (بدون نیاز به Context)
خیلی ساده بین صفحات جابهجا شو و حتی لاگ مسیرها رو داشته باش.
ریسپانسیو بودن با Flutter ScreenUtil
رابط کاربریت رو برای همه دستگاهها به صورت کاملاً هماهنگ و ریسپانسیو طراحی کن.
ارتباط حرفهای با سرور با Dio
مدیریت درخواستهای HTTP با کتابخانه قدرتمند Dio انجام میشه. سریع، مطمئن و منعطف.
پشتیبانی از تاریخ شمسی (Jalali Date Support)
این قالب یه سری اکستنشن برا تاریخ شمسی رو داره کار با تاریخ شمسی رو برات راحت میکنه.
لاگگیری زیبا با Pretty Dio Logger
لاگهای شبکه رو به صورت خوانا و حرفهای مدیریت کن.
https://github.com/basicFlutter/mason_bricks
@DevTwitter | <Abbas Dehghani/>
🔥18👍5❤2👎1
بعد از اینکه با مهندسی معکوس apiهای مکتبخونه و نحوه فراخوانی آنها در پیادهسازی پکیج پایتونی maktab-dl آشنا شدم، چالشهای زیادی در پیادهسازی توجهم را جلب کرد. در این مطلب به بررسی بعضی از چالشها و راه حل آنها میپردازیم.
https://virgool.io/@code/mvt-soa-lw0wep5b2agp
@DevTwitter | <Mohammadreza Shaghouzi/>
https://virgool.io/@code/mvt-soa-lw0wep5b2agp
@DevTwitter | <Mohammadreza Shaghouzi/>
❤25👍2👎2
فست ای پی ای یه فریمورک وب برای توسعه API های restful تو پایتونه که توسط شخصی به نام سباستین تو سال ۲۰۱۸ تحت لایسنس mit منتشر شده، فست ای پی ای یه وب میکروفریمورک سریع و اپن سورسه
از اونجایی که Fastapi دورهای نداره یا اگه هم داره پولی هستن من اومدم و قدم به قدم مثل خود داکیومنت سایت fastapi دوره ضبط کردم و گذاشتم یوتیوب
https://youtu.be/mDyu9ACl5Kg
@DevTwitter | <Shayan Heidari/>
از اونجایی که Fastapi دورهای نداره یا اگه هم داره پولی هستن من اومدم و قدم به قدم مثل خود داکیومنت سایت fastapi دوره ضبط کردم و گذاشتم یوتیوب
https://youtu.be/mDyu9ACl5Kg
@DevTwitter | <Shayan Heidari/>
👍98👎15❤11🔥3
دیپسیک جیلبریک شد
ماجرا از این قراره: یه کاربر خلاق تو سایت ردیت تونسته هوش مصنوعی "دیپسیک" رو به اصطلاح "جیلبریک" کنه. جیلبریک یعنی دور زدن محدودیتهایی تعیین شده.
این کاربر برای این کار از یه تکنیک به اسم "Prompt Injection" استفاده کرده.
پرامپت اینجکشن به این معناست که یه نفر میتونه (پرامپت) یه مدل زبانی رو طوری دستکاری کنه که مدل نتایج غیرمنتظرهای تولید کنه. این کار میتونه باعث بشه مدل دستوراتی رو اجرا کنه که معمولاً نمیخواستیم یا نمیباید انجام بشه، مثلاً دستوراتی که خلاف اصول ایمنی یا فیلترها هستند.
یکی از نتایج این جیلبریک این بوده که دیپسیک تونسته درباره موضوعات حساس و ممنوعه حرف بزنه. مخصوصا موضوعاتی که توی چین سانسور میشن، مثل "حادثه میدان تیانآنمن".
دیپسیک طوری طراحی شده که به طور معمول درباره این موضوعات صحبتی نکنه، ولی این کاربر با تکنیک خودش تونسته این محدودیت رو دور بزنه.
برای اینکه ربات و فیلترهای سانسور متوجه موضوع حساس نشن، کاربر از روش پرامپت اینجکشن استفاده کرده. توی پرامپتی که به دیپسیک داده، ازش خواسته موقع جواب به جای حروف معمولی از اعداد و کاراکترهای خاص استفاده کنه. مثلا عدد "4" رو به جای حرف "A" و عدد "3" رو به جای حرف "E" گذاشته.
این کار باعث شده که ربات متوجه منظور اصلی کاربر بشه، ولی فیلترهای سانسور احتمالا نتونن به راحتی محتوای حساس رو تشخیص بدن.
این کاربر با یه روش زیرکانه تونسته یه مدل هوش مصنوعی رو گول بزنه و کاری کنه که درباره موضوعات ممنوعه صحبت کنه
@DevTwitter | <محمد زمانی/>
ماجرا از این قراره: یه کاربر خلاق تو سایت ردیت تونسته هوش مصنوعی "دیپسیک" رو به اصطلاح "جیلبریک" کنه. جیلبریک یعنی دور زدن محدودیتهایی تعیین شده.
این کاربر برای این کار از یه تکنیک به اسم "Prompt Injection" استفاده کرده.
پرامپت اینجکشن به این معناست که یه نفر میتونه (پرامپت) یه مدل زبانی رو طوری دستکاری کنه که مدل نتایج غیرمنتظرهای تولید کنه. این کار میتونه باعث بشه مدل دستوراتی رو اجرا کنه که معمولاً نمیخواستیم یا نمیباید انجام بشه، مثلاً دستوراتی که خلاف اصول ایمنی یا فیلترها هستند.
یکی از نتایج این جیلبریک این بوده که دیپسیک تونسته درباره موضوعات حساس و ممنوعه حرف بزنه. مخصوصا موضوعاتی که توی چین سانسور میشن، مثل "حادثه میدان تیانآنمن".
دیپسیک طوری طراحی شده که به طور معمول درباره این موضوعات صحبتی نکنه، ولی این کاربر با تکنیک خودش تونسته این محدودیت رو دور بزنه.
برای اینکه ربات و فیلترهای سانسور متوجه موضوع حساس نشن، کاربر از روش پرامپت اینجکشن استفاده کرده. توی پرامپتی که به دیپسیک داده، ازش خواسته موقع جواب به جای حروف معمولی از اعداد و کاراکترهای خاص استفاده کنه. مثلا عدد "4" رو به جای حرف "A" و عدد "3" رو به جای حرف "E" گذاشته.
این کار باعث شده که ربات متوجه منظور اصلی کاربر بشه، ولی فیلترهای سانسور احتمالا نتونن به راحتی محتوای حساس رو تشخیص بدن.
این کاربر با یه روش زیرکانه تونسته یه مدل هوش مصنوعی رو گول بزنه و کاری کنه که درباره موضوعات ممنوعه صحبت کنه
@DevTwitter | <محمد زمانی/>
👍187🔥42❤9👎2
آسیب پذیری typosquatting یا dangling domain آخرین چیزی است که آدم بخواهد در جایی مثل MasterCard ببیند!
آسیب پذیری که 5 سال وجود داشته.
داستان جالبی هست اگر حال داشتید بخوانید.
https://krebsonsecurity.com/2025/01/mastercard-dns-error-went-unnoticed-for-years/
@DevTwitter | <Vahid Nameni/>
آسیب پذیری که 5 سال وجود داشته.
داستان جالبی هست اگر حال داشتید بخوانید.
https://krebsonsecurity.com/2025/01/mastercard-dns-error-went-unnoticed-for-years/
@DevTwitter | <Vahid Nameni/>
👍20👎2
This media is not supported in your browser
VIEW IN TELEGRAM
من چند روزی بود که سر اجرای یه پروژه GitHub گیر کرده بودم که هیچ جوری نمیتونستم از ساختارش دید بگیرم.
بعد چند شب بیخوابی امروز یه ابزار خفن پیدا کردم که واقعاً خیلی کاربردیه. لینکشو پایین میزارم :)
پوینتش اینه که دیگه لازم نیست وقتتون رو برای تبدیل دستی ریپازیتوری هدر بدین. فقط کافیه تو آدرس گیتهاب، "hub" رو با "ingest" عوض کنید و بلافاصله یه متن مرتب و کامل دریافت کنید که میتونید مستقیماً به GPT بدید. مث آب خوردن :)
امکاناتش؟
- نمایش کامل ساختار دایرکتوری پروژه
- یه خلاصه کوتاه و مفید از پروژه
- کل کدها و محتوا به صورت متنی آماده برای استفاده در GPT
اکستنشن کروم و .. بقیه چیزارو هم داره.
https://github.com/cyclotruc/gitingest
@DevTwitter | <Ali Mikaeili/>
بعد چند شب بیخوابی امروز یه ابزار خفن پیدا کردم که واقعاً خیلی کاربردیه. لینکشو پایین میزارم :)
پوینتش اینه که دیگه لازم نیست وقتتون رو برای تبدیل دستی ریپازیتوری هدر بدین. فقط کافیه تو آدرس گیتهاب، "hub" رو با "ingest" عوض کنید و بلافاصله یه متن مرتب و کامل دریافت کنید که میتونید مستقیماً به GPT بدید. مث آب خوردن :)
امکاناتش؟
- نمایش کامل ساختار دایرکتوری پروژه
- یه خلاصه کوتاه و مفید از پروژه
- کل کدها و محتوا به صورت متنی آماده برای استفاده در GPT
اکستنشن کروم و .. بقیه چیزارو هم داره.
https://github.com/cyclotruc/gitingest
@DevTwitter | <Ali Mikaeili/>
👍40👎6❤3
اینکه یک دولوپر کدهای بلااستفاده (Dead Code) رو توی codebase نگه میداره هیچ جوره درک نمیکنم! از تنبلی هست یا ...
@DevTwitter | <Karim Mohammadi/>
@DevTwitter | <Karim Mohammadi/>
👎94👍26
داستان هوشمندی هکرها همیشه جذاب بوده و البته ترسناک چون که اطلاعات ما ایرانیها در سامانههایی هست که گاهی اوقات نکات اولیه امنیت را نیز رعایت نمی کنند.
این خبر را بخوانید تا متوجه منظورم شوید:
محققان امنیتی یک backdoor کاملاً جدید، که پیشتر شبیه آن وجود نداشته را کشف کردند که بهطور مخفیانه کنترل دهها VPN سازمانی را که بر روی سیستمعامل Junos شرکت Juniper Networks اجرا میشدند، در اختیار گرفته است.
این دربپشتی که با نام J-Magic شناخته میشود، یک گام فراتر میرود تا از دسترسی غیرمجاز جلوگیری کند. پس از دریافت یک magic packet که در flow عادی ترافیک TCP پنهان شده است، یک چالش امنیتی را به دستگاه ارسالکننده بازمیگرداند.
این چالش شامل یک رشته متنی است که با استفاده از بخش عمومی یک کلید RSA رمزگذاری شده است. طرف آغازکننده برای اثبات دسترسی به کلید خصوصی، باید متن رمزگشاییشده صحیح را ارسال کند.
این دربپشتی سبک و کمحجم از جنبه دیگری نیز قابل توجه است چون فقط در RAM بارگذاری میشود و هیچ ردی در دیسک باقی نمیگذارد، که این ویژگی، شناسایی آن را برای مدافعان دشوارتر میکند.
منبع:
https://arstechnica.com/security/2025/01/backdoor-infecting-vpns-used-magic-packets-for-stealth-and-security/
@DevTwitter | <Vahid Nameni/>
این خبر را بخوانید تا متوجه منظورم شوید:
محققان امنیتی یک backdoor کاملاً جدید، که پیشتر شبیه آن وجود نداشته را کشف کردند که بهطور مخفیانه کنترل دهها VPN سازمانی را که بر روی سیستمعامل Junos شرکت Juniper Networks اجرا میشدند، در اختیار گرفته است.
این دربپشتی که با نام J-Magic شناخته میشود، یک گام فراتر میرود تا از دسترسی غیرمجاز جلوگیری کند. پس از دریافت یک magic packet که در flow عادی ترافیک TCP پنهان شده است، یک چالش امنیتی را به دستگاه ارسالکننده بازمیگرداند.
این چالش شامل یک رشته متنی است که با استفاده از بخش عمومی یک کلید RSA رمزگذاری شده است. طرف آغازکننده برای اثبات دسترسی به کلید خصوصی، باید متن رمزگشاییشده صحیح را ارسال کند.
این دربپشتی سبک و کمحجم از جنبه دیگری نیز قابل توجه است چون فقط در RAM بارگذاری میشود و هیچ ردی در دیسک باقی نمیگذارد، که این ویژگی، شناسایی آن را برای مدافعان دشوارتر میکند.
منبع:
https://arstechnica.com/security/2025/01/backdoor-infecting-vpns-used-magic-packets-for-stealth-and-security/
@DevTwitter | <Vahid Nameni/>
👍29👎3❤1
بلاخره، اولین Open Source پروژهام را منتشر کردم؛ یک بات تلگرامی که با استفاده از مدلهای زبانی پیشرفته متون را ترجمه میکند. این اولین گام هر چند کوچک در مسیر توسعه ابزارهای هوشمند است.
https://github.com/Ho3seinTork/Translator-Telegram-Bot-with-LLMs
@DevTwitter | <Diss Obedience/>
https://github.com/Ho3seinTork/Translator-Telegram-Bot-with-LLMs
@DevTwitter | <Diss Obedience/>
👍84❤11👎6
وقتی به ریکت 19 و هوک های جدیدش نگاه کردم، دیدم الان چنتا هوک داریم که داخلشون میشه با API ها ارتباط برقرار کرد.
و برام سوال شد که چه فرقی دارن پس؟
برای همین تصمییم گرفتم خیلی خلاصه نتیجه ی سوال خودم رو اینجا بنویسم.
1-useEffect
هدف: ارسال درخواست های API بعد از رندر کامپوننت.
کاربرد: برای انجام عملیات های async مثل ارسال درخواست های GET به API در سمت کلاینت.
2-use
هدف: ارسال درخواست های API پیش از رندر در Server Components.
کاربرد: برای دریافت داده ها از API در سرور پیش از رندر کردن کامپوننت ها.(این ویژگی مخصوص Server-Side Rendering است.)
3- useActionState
هدف: مدیریت وضعیت های مختلف یک عملیات async مانند لودینگ، موفقیت، و خطا.
کاربرد: برای مدیریت عملیات هایی که داده ها را تغییر می دهند (مثل ارسال *فرم* ها یا تغییر اطلاعات در سرور).
4- useTransition
هدف: انجام درخواست های async طولانی بدون مسدود کردن UI.
کاربرد: زمانی که می خواهید درخواست های زمان بر (مانند API هایی که داده های زیادی برمی گردانند) را به صورت غیر مسدودکننده ارسال کنید تا UI همچنان پاسخگو باقی بماند.
@DevTwitter | <Hossein Mohammadzadeh/>
و برام سوال شد که چه فرقی دارن پس؟
برای همین تصمییم گرفتم خیلی خلاصه نتیجه ی سوال خودم رو اینجا بنویسم.
1-useEffect
هدف: ارسال درخواست های API بعد از رندر کامپوننت.
کاربرد: برای انجام عملیات های async مثل ارسال درخواست های GET به API در سمت کلاینت.
2-use
هدف: ارسال درخواست های API پیش از رندر در Server Components.
کاربرد: برای دریافت داده ها از API در سرور پیش از رندر کردن کامپوننت ها.(این ویژگی مخصوص Server-Side Rendering است.)
3- useActionState
هدف: مدیریت وضعیت های مختلف یک عملیات async مانند لودینگ، موفقیت، و خطا.
کاربرد: برای مدیریت عملیات هایی که داده ها را تغییر می دهند (مثل ارسال *فرم* ها یا تغییر اطلاعات در سرور).
4- useTransition
هدف: انجام درخواست های async طولانی بدون مسدود کردن UI.
کاربرد: زمانی که می خواهید درخواست های زمان بر (مانند API هایی که داده های زیادی برمی گردانند) را به صورت غیر مسدودکننده ارسال کنید تا UI همچنان پاسخگو باقی بماند.
@DevTwitter | <Hossein Mohammadzadeh/>
👍42🔥5👎1
اینقدر پیر شدین که Clippy را یادتون بیاد ؟
اگر دوست دارید یک محیط مدیریت SQLite تحت وب شبیه ویندوز 2000 و خاطره Clippy را زنده کنه
sqlook.com
تجربه خوبی است
@DevTwitter | <MehrdadLinux/>
اگر دوست دارید یک محیط مدیریت SQLite تحت وب شبیه ویندوز 2000 و خاطره Clippy را زنده کنه
sqlook.com
تجربه خوبی است
@DevTwitter | <MehrdadLinux/>
👍25👎6❤2
یه مدت سرم خلوت بود، تصمیم گرفتم یه تابع ساده بنویسم برای تشخیص نوع فایلها و دستهبندیشون بر اساس پسوند یا URL. این تابع رو برای کاتلین، جاوا، پایتون و تایپاسکریپت نوشتم. به درد اونایی میخوره که با فایلهای مختلف سروکار دارن
https://github.com/MJavadSF/getFileType
@DevTwitter | <آقا محمد جواد آقا/>
https://github.com/MJavadSF/getFileType
@DevTwitter | <آقا محمد جواد آقا/>
🔥36👍9👎6❤2
دیدم اکانت Codecrafters با ماهی ۳۰ دلار برای ما ایرانیا بهصرفه نیست، دستبهکار شدم و Build Your Own X رو ساختم! حالا میتونی کامپایلر، دیتابیس، ردیس و کلی چیز دیگه رو خودت از صفر بسازی و یاد بگیری چطور کار میکنن!بیاید یه سر بزنید، نظرتون برام مهمه!
https://github.com/abolfazl-moeini/build-your-own-x
@DevTwitter | <Abolfazl Moeini/>
https://github.com/abolfazl-moeini/build-your-own-x
@DevTwitter | <Abolfazl Moeini/>
👍59❤14👎6🔥4
گولنگ شیگرا هست یا نه؟
تو یه سری آگهیهای شغلی دیدم که جزو نیازمندیها، پیادهسازی OOP در گولنگ ذکر شده. یه سری جاها هم نوشتن پیادهسازی مفاهیم OOP در گولنگ که خب منطقیتر به نظر میرسه.
برای جواب دادن به این سوال، اول ببینیم اصلاً OOP چیه؟
برنامهنویسی شیگرا یه پارادایم برنامهنویسیه که بر اساس یه مفهوم به اسم شی (Object) کار میکنه. هر شی یه سری دیتا داره و رفتارش رو هم درون خودش کپسوله میکنه.
چهار اصل مهم OOP هم ایناست:
- Encapsulation
- Abstraction
- Inheritance
- Polymorphism
حالا این اصول از کجا اومدن؟
آیا فقط مخصوص OOP هستن؟
نه، اینا جز اصول پایهای طراحی نرمافزارن و توی بقیه پارادایمها مثل Functional Programming هم وجود دارن. OOP اومده این اصول رو به سبک خودش پیادهسازی کرده.
حالا بریم سراغ گولنگ...
گولنگ بعضی از این مفاهیم رو با سبک و روش خودش پیادهسازی کرده، مثلاً Encapsulation رو از طریق Package-level Visibility داره، یا Polymorphism رو با Interfaceها پیادهسازی کرده. اما بعضی چیزا رو هم عمداً حذف کرده، مثل Class-based Inheritance، چون فلسفه Go بیشتر روی سادگی و ترکیبپذیری (Composition) تمرکز داره.
مشکل کجاست؟
خیلی جاها میان گولنگ رو مثل یه زبان OOP استفاده میکنن که بعضی وقتا تبدیل به Anti-pattern میشه. مثلاً پیادهسازی Factory Pattern به روش کلاسیک OOP یا Singleton به سبک جاوا و سیشارپ توی Go باعث پیچیدگی اضافی میشه. اینجور کدها معمولاً کار میکنن، ولی خوانایی و سادگی Go رو از بین میبرن.
پس اگه توی آگهیها دیدین که نوشتن پیادهسازی OOP در گولنگ، بهتره بیشتر تحقیق کنین که دقیقاً منظورشون چیه. Go زبان شیگرا به سبک کلاسیک نیست، اما مفاهیم OOP رو به روش خودش داره.
@DevTwitter | <Ali Farhadnia/>
تو یه سری آگهیهای شغلی دیدم که جزو نیازمندیها، پیادهسازی OOP در گولنگ ذکر شده. یه سری جاها هم نوشتن پیادهسازی مفاهیم OOP در گولنگ که خب منطقیتر به نظر میرسه.
برای جواب دادن به این سوال، اول ببینیم اصلاً OOP چیه؟
برنامهنویسی شیگرا یه پارادایم برنامهنویسیه که بر اساس یه مفهوم به اسم شی (Object) کار میکنه. هر شی یه سری دیتا داره و رفتارش رو هم درون خودش کپسوله میکنه.
چهار اصل مهم OOP هم ایناست:
- Encapsulation
- Abstraction
- Inheritance
- Polymorphism
حالا این اصول از کجا اومدن؟
آیا فقط مخصوص OOP هستن؟
نه، اینا جز اصول پایهای طراحی نرمافزارن و توی بقیه پارادایمها مثل Functional Programming هم وجود دارن. OOP اومده این اصول رو به سبک خودش پیادهسازی کرده.
حالا بریم سراغ گولنگ...
گولنگ بعضی از این مفاهیم رو با سبک و روش خودش پیادهسازی کرده، مثلاً Encapsulation رو از طریق Package-level Visibility داره، یا Polymorphism رو با Interfaceها پیادهسازی کرده. اما بعضی چیزا رو هم عمداً حذف کرده، مثل Class-based Inheritance، چون فلسفه Go بیشتر روی سادگی و ترکیبپذیری (Composition) تمرکز داره.
مشکل کجاست؟
خیلی جاها میان گولنگ رو مثل یه زبان OOP استفاده میکنن که بعضی وقتا تبدیل به Anti-pattern میشه. مثلاً پیادهسازی Factory Pattern به روش کلاسیک OOP یا Singleton به سبک جاوا و سیشارپ توی Go باعث پیچیدگی اضافی میشه. اینجور کدها معمولاً کار میکنن، ولی خوانایی و سادگی Go رو از بین میبرن.
پس اگه توی آگهیها دیدین که نوشتن پیادهسازی OOP در گولنگ، بهتره بیشتر تحقیق کنین که دقیقاً منظورشون چیه. Go زبان شیگرا به سبک کلاسیک نیست، اما مفاهیم OOP رو به روش خودش داره.
@DevTwitter | <Ali Farhadnia/>
🔥46👍32👎1