اگر شما هم مثل من مشکل دارید که وقتی میرید توی سایت medium.com و مقالات اکثرا پریمیوم هست و نمیتونید بخونید، باید بگم که خدا شما رو دوست داشته که این پست رو دیدید.
خب حالا راه حل چیه؟
فقط کافیه لینک مقاله رو توی این سایت بزارید readmedium.com و تمام
@DevTwitter | <Amirreza Heydari/>
خب حالا راه حل چیه؟
فقط کافیه لینک مقاله رو توی این سایت بزارید readmedium.com و تمام
@DevTwitter | <Amirreza Heydari/>
🤣60❤42👍25🔥8
برای typenoscript سایت جالبی بود
https://www.totaltypenoscript.com/
@DevTwitter | <Error 403:Forbidden/>
https://www.totaltypenoscript.com/
@DevTwitter | <Error 403:Forbidden/>
👍27👎2
گوگولی بود برای خودش یه دورانی
هنوز هم برنامه هایی که باهاش نوشتم دارن کار میکنن
@DevTwitter | <Keyhan jk/>
هنوز هم برنامه هایی که باهاش نوشتم دارن کار میکنن
@DevTwitter | <Keyhan jk/>
🔥82❤16🤣10👍9
این article رو در مورد prompt engineering و قدم های بعدیش نوشتم
خوشحال میشم اگه بهش یه نگاه بندازید
https://msnp1381.github.io/posts/Evolution-Prompt/
@DevTwitter | <Nemat/>
خوشحال میشم اگه بهش یه نگاه بندازید
https://msnp1381.github.io/posts/Evolution-Prompt/
@DevTwitter | <Nemat/>
👎22👍12❤2🔥2
حدود 180 هزار hashtag اکستنشن به صورت رسمی در hashtag کروم استور گوگل برای استفاده کاربران منتشر شده و بازار جهانی اون طبق گزارش های رسمی 75 میلیارد دلار ارزش گذاری شده و پیش بینی میشه این رقم تا سال 2030 به 125 میلیارد دلار برسه !
من در توسعه اکستنشن های مختلفی شریک بودم که سعی میکنم از تجربیات خودم برای شما بیشتر بگم تا شما هم بتونین به راحتی وارد این مارکت بشید و اپ های خودتون رو توی مارکت منتشر کنین !
در قدم اول سعی دارم به شما بگم که چطور میتونین یه اکستنشن کروم بنویسین ، اکستنشن ها ساختار بسیار ساده و جذابی دارن که شما میتونین با زبان های HTML ، CSS ، Javanoscript پروژه های خودتون رو توسعه بدین .
ایجاد یک فایل manifest.json
این فایل قلب اکستنشن شماست و اطلاعاتی مثل نام اکستنشن، نسخه و مجوزهایی که نیاز داره رو توش مشخص میکنید.
نوشتن یک اسکریپت ساده
در فایل background.js یا content.js کدهایی مینویسید که اکستنشن شما رو فعال میکنه. مثلاً میتونید با content noscripts به صفحات وب دسترسی پیدا کنید.
اضافه کردن UI
میتونید با HTML، CSS و JavaScript یک popup برای اکستنشنتون طراحی کنید که به کاربر نشون بده چه کاری میتونید انجام بدید.
نصب اکستنشن در حالت Developer
و در نهایت، با استفاده از بخش "Manage Extensions" در کروم، اکستنشنتون رو تست کنید. فقط کافیه حالت Developer رو فعال کنید و پوشه پروژهتون رو بارگذاری کنید.
شما میتونید آموزش کامل ساخت یک اکستنشن رو توی لینک زیر در وبلاگ من بخونین
https://blog.rezaghz.com/1403/07/how-to-develop-chrome-extension/
@DevTwitter | <Reza Ghasemzadeh/>
من در توسعه اکستنشن های مختلفی شریک بودم که سعی میکنم از تجربیات خودم برای شما بیشتر بگم تا شما هم بتونین به راحتی وارد این مارکت بشید و اپ های خودتون رو توی مارکت منتشر کنین !
در قدم اول سعی دارم به شما بگم که چطور میتونین یه اکستنشن کروم بنویسین ، اکستنشن ها ساختار بسیار ساده و جذابی دارن که شما میتونین با زبان های HTML ، CSS ، Javanoscript پروژه های خودتون رو توسعه بدین .
ایجاد یک فایل manifest.json
این فایل قلب اکستنشن شماست و اطلاعاتی مثل نام اکستنشن، نسخه و مجوزهایی که نیاز داره رو توش مشخص میکنید.
نوشتن یک اسکریپت ساده
در فایل background.js یا content.js کدهایی مینویسید که اکستنشن شما رو فعال میکنه. مثلاً میتونید با content noscripts به صفحات وب دسترسی پیدا کنید.
اضافه کردن UI
میتونید با HTML، CSS و JavaScript یک popup برای اکستنشنتون طراحی کنید که به کاربر نشون بده چه کاری میتونید انجام بدید.
نصب اکستنشن در حالت Developer
و در نهایت، با استفاده از بخش "Manage Extensions" در کروم، اکستنشنتون رو تست کنید. فقط کافیه حالت Developer رو فعال کنید و پوشه پروژهتون رو بارگذاری کنید.
شما میتونید آموزش کامل ساخت یک اکستنشن رو توی لینک زیر در وبلاگ من بخونین
https://blog.rezaghz.com/1403/07/how-to-develop-chrome-extension/
@DevTwitter | <Reza Ghasemzadeh/>
👍29🔥8❤5
شرکت OpenAI به تازگی دیتاست بزرگی چند زبانه
شامل زبانهای آلمانی، عربی، ژاپنی و ....(فارسی رو نداره)
در 57 کتگوری مختلف از ساده تا پیشرفته
ترجمه شده توسط انسانهای متخصص
منتشر کرده که میشه برای ارزیابی مدلهای چند زبانه به کار برد.
لینک دیتاست MMMLU:
https://huggingface.co/datasets/openai/MMMLU
@DevTwitter | <Reza Jafari/>
شامل زبانهای آلمانی، عربی، ژاپنی و ....(فارسی رو نداره)
در 57 کتگوری مختلف از ساده تا پیشرفته
ترجمه شده توسط انسانهای متخصص
منتشر کرده که میشه برای ارزیابی مدلهای چند زبانه به کار برد.
لینک دیتاست MMMLU:
https://huggingface.co/datasets/openai/MMMLU
@DevTwitter | <Reza Jafari/>
👍33🤣7👎1
برای کشف آسیبپذیریها در کد،روزانه به سایت huntr.com مراجعه کنید. این سایت به شما امکان میدهد تا با گزارشهای واقعی از باگ بانتیها و آسیبپذیریهای موجود در کتابخانههای متن باز آشنا شوید. بررسی این گزارشها و CVEها به شما کمک میکند
@DevTwitter | <Ramin Farajpour Cami/>
@DevTwitter | <Ramin Farajpour Cami/>
👍34
کدهای Winamp منتشر شد.
خاطرات بچگی...
https://github.com/WinampDesktop/winamp
@DevTwitter | <Alireza Gh/>
خاطرات بچگی...
https://github.com/WinampDesktop/winamp
@DevTwitter | <Alireza Gh/>
❤37👍5
This media is not supported in your browser
VIEW IN TELEGRAM
این ریپو یک ابزاری هست به اسم PyGWalker که کار تحلیل داده و visualization در Jupyter Notebook را با استفاده از تبدیل داده های pandas به یک رابط کاربری تعاملی برای کاوش بصری (visual exploration) بسیار ساده میکنه.
https://github.com/Kanaries/pygwalker
@DevTwitter | <Mehdi Allahyari/>
https://github.com/Kanaries/pygwalker
@DevTwitter | <Mehdi Allahyari/>
🔥20👍5👎2
#کدبوک
کتاب Refactoring UI از سازندگان Tailwindcss
این کتاب به جای تمرکز بر تئوری، بر راهکارهای کاربردی و نکات عملی تأکید دارد:
تکنیکهای ساده برای بهبود سریع ظاهر و کارایی رابط کاربری
اصول طراحی رنگ، تایپوگرافی، فاصلهگذاری و چیدمان عناصر
نحوه ایجاد سلسله مراتب بصری و هدایت توجه کاربر
راهکارهایی برای طراحی رابطهای پاسخگو و سازگار با دستگاههای مختلف
نمونههای قبل و بعد از بازسازی برای نشان دادن تأثیر تغییرات
نکاتی درباره استفاده از سایهها، گرادیانها و سایر جلوههای بصری
روشهای ایجاد تعادل بین زیبایی و کاربردپذیری
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
کتاب Refactoring UI از سازندگان Tailwindcss
این کتاب به جای تمرکز بر تئوری، بر راهکارهای کاربردی و نکات عملی تأکید دارد:
تکنیکهای ساده برای بهبود سریع ظاهر و کارایی رابط کاربری
اصول طراحی رنگ، تایپوگرافی، فاصلهگذاری و چیدمان عناصر
نحوه ایجاد سلسله مراتب بصری و هدایت توجه کاربر
راهکارهایی برای طراحی رابطهای پاسخگو و سازگار با دستگاههای مختلف
نمونههای قبل و بعد از بازسازی برای نشان دادن تأثیر تغییرات
نکاتی درباره استفاده از سایهها، گرادیانها و سایر جلوههای بصری
روشهای ایجاد تعادل بین زیبایی و کاربردپذیری
* فایل PDF این کتاب رو میتونید از کانال DevBooks که لینکش توی بیو هست دانلود کنید.
@DevTwitter
🔥28👍7🤣2
مقالهای که خوندم یه سوال مصاحبه جاوااسکریپت رو بررسی میکرد که بیشتر آدما اشتباه جواب میدن. اصل قضیه اینه که توی جاوااسکریپت، کد همزمان (Sync) و غیرهمزمان (Async) با هم فرق دارن و باید بدونی چه جوری کار میکنن. مثلاً Promise و setTimeout فرق دارن؛ چون Promise توی یه چیز به اسم “میکروتسک” اجرا میشه و setTimeout توی “ماکروتسک”.
مقاله با مثالای واضح توضیح میده که چطوری اینا صف میشن و توی Event Loop اجرا میشن. یه جورایی، اول میکروتسکها مثل کالبکهای Promise اجرا میشن و بعدش نوبت ماکروتسکها مثل setTimeout میرسه. اگه بخوای یه توسعهدهنده ارشد باشی و توی مصاحبهها بدرخشی، باید قشنگ بفهمی که جاوااسکریپت چجوری این کارا رو میکنه و چطوری ترتیب اجرای تسکها رو هندل میکنه.
خیلی خلاصه: یاد بگیر اولویت تسکا رو بشناسی، چون توی جاوااسکریپت مثل اینه که تو ترافیک، آمبولانس اول میره، بعد ماشینهای دیگه.
https://programming.earthonline.us/can-you-answer-this-senior-level-javanoscript-promise-interview-question-69f7b6ffc2e7
@DevTwitter <Mohammad Sakizadeh/>
مقاله با مثالای واضح توضیح میده که چطوری اینا صف میشن و توی Event Loop اجرا میشن. یه جورایی، اول میکروتسکها مثل کالبکهای Promise اجرا میشن و بعدش نوبت ماکروتسکها مثل setTimeout میرسه. اگه بخوای یه توسعهدهنده ارشد باشی و توی مصاحبهها بدرخشی، باید قشنگ بفهمی که جاوااسکریپت چجوری این کارا رو میکنه و چطوری ترتیب اجرای تسکها رو هندل میکنه.
خیلی خلاصه: یاد بگیر اولویت تسکا رو بشناسی، چون توی جاوااسکریپت مثل اینه که تو ترافیک، آمبولانس اول میره، بعد ماشینهای دیگه.
https://programming.earthonline.us/can-you-answer-this-senior-level-javanoscript-promise-interview-question-69f7b6ffc2e7
@DevTwitter <Mohammad Sakizadeh/>
👍43❤5🔥1
یک بار برای همیشه، redux یا zustand
در این پست به مقایسه redux toolkit و zustand میپردازم. ابتدا توضیح هر کدوم رو میدم و ساختارها رو میگم سپس تفاوت ها و شباهت ها رو میگم. خوبی ها و بدی های هر دو رو میگم. تجربه خودم رو هم میگم.
توضیح redux toolkit و ساختارش:
از پترن slice استفاده میکنه. برای هر بخشی میتوانیم یک slice داشته باشیم. یک slice از استیت و یک سری توابع تشکیل میشه که بوسیله تابع ها، مقدار استیت اش رو تغییر میدیم. برای فراخوانی توابع باید اونا رو dispatch کنیم. هر جا هم که مقدار یک استیت رو خواستیم با selector میایم مقدارش رو میخونیم که از نظر reRender هم بهینه است.
کلا یک provider و store داره. (میتونه چند تا store و provider داشته باشه که توصیه نمیشه).
توضیح zustand و ساختارش:
از پترن خاصی استفاده نمیکند و دست ما کاملا باز است. به سادگی میتوانیم برای هر بخش یک store ایجاد کنیم و از آن استفاده کنیم. در یک store ما هم کلید هایی داریم که داخلش مقادیر رو نگه میداریم و هم توابع رو تعریف میکنیم و همه یک جا هستند (مثل کلید های یک ابجکت). با استفاده از توابع میتوانیم مقادیر استیت رو اپدیت کنیم و نیازی به dispatch کردن نداریم بلکه تنها آن تابع را صدا میزنیم و برای گرفتن مقدار یک استیت از selector استفاده میکنیم که از نظر reRender هم بهینه است.
از ساختار provider استفاده نمیکند و میتوانیم به راحتی چندین store برای هر بخش از برنامه خودمان داشته باشیم.
برای ssr هر کدام چگونه هستند؟
در کتابخانه redux toolkit هنگامی که داریم یک store را ایجاد میکنیم باید توی تابع createStore یک ابجکتی از مقادیر اولیه را بدهیم و اینگونه برای ssr مقدار دهی میشود.
در کتابخانه zustand باید یک provider و context ایجاد کرد و store زوشتند را در کل برنامه به اشتراک گذاشت تا بقیه کامپوننت ها بتوانند به آن دسترسی داشته باشند. حالا در لحظه ای که داره اون کانتکست ایجاد میشه و به اشتراک گذاشته میشه باید store رو با مقادیر اولیه بسازیم و تو کل برنامه به اشتراک بزاریم. (یه جورایی یک store ایجاد میکنیم برای استیت ها و توابع ای که توی ssr نیازش داریم)
خوبی های redux toolkit:
دارای ساختار قوی و نظام مند
استفاده خودکار از immer
عدم نیاز به کانفیگ خاص و نوشتن کد اضافه برای هندل کردن ssr
خوبی های zustand:
در تمام فایل ها میتوان از استیت و توابع استفاده کرد و آنها را صدا زد. (چون برخلاف redux از provider استفاده نمیکند)
قابلیت multiple store. میتوان برای هر بخش که بخواهیم یک store جداگانه ایجاد کنیم.
حجم بسیار پایین gzipped: کمتر از 1 کیلوبایت
سادگی بسیار زیاد و عدم نوشتن کدهای تکراری و رعایت ساختار (حجم کد کمتر => حجم باندل کمتر)
بدی های redux toolkit:
به store در فایل هایی دسترسی داریم که درون provider و به عنوان فرزندی از آن باشند و در خارج از provider به آن دسترسی نداریم. (بر خلاف zustand)
حجم زیادتر gzipped نسبت به zustand: حدود 15 کیلوبایت
تکرار کردن ساختار و نوشتن کدهای تکراری و import های useDispatch و رعایت پترن slice در نتیجه حجم کد بیشتر => حجم باندل بیشتر
بدی های zustand:
عدم ساختار و احتمال کثیفی کد هنگامی که کدها زیاد و زیادتر میشوند.
نیاز به هندل کردن ssr به صورت دستی و نوشتن provider برای آن.
@DevTwitter | <Mohammad Reza G./>
در این پست به مقایسه redux toolkit و zustand میپردازم. ابتدا توضیح هر کدوم رو میدم و ساختارها رو میگم سپس تفاوت ها و شباهت ها رو میگم. خوبی ها و بدی های هر دو رو میگم. تجربه خودم رو هم میگم.
توضیح redux toolkit و ساختارش:
از پترن slice استفاده میکنه. برای هر بخشی میتوانیم یک slice داشته باشیم. یک slice از استیت و یک سری توابع تشکیل میشه که بوسیله تابع ها، مقدار استیت اش رو تغییر میدیم. برای فراخوانی توابع باید اونا رو dispatch کنیم. هر جا هم که مقدار یک استیت رو خواستیم با selector میایم مقدارش رو میخونیم که از نظر reRender هم بهینه است.
کلا یک provider و store داره. (میتونه چند تا store و provider داشته باشه که توصیه نمیشه).
توضیح zustand و ساختارش:
از پترن خاصی استفاده نمیکند و دست ما کاملا باز است. به سادگی میتوانیم برای هر بخش یک store ایجاد کنیم و از آن استفاده کنیم. در یک store ما هم کلید هایی داریم که داخلش مقادیر رو نگه میداریم و هم توابع رو تعریف میکنیم و همه یک جا هستند (مثل کلید های یک ابجکت). با استفاده از توابع میتوانیم مقادیر استیت رو اپدیت کنیم و نیازی به dispatch کردن نداریم بلکه تنها آن تابع را صدا میزنیم و برای گرفتن مقدار یک استیت از selector استفاده میکنیم که از نظر reRender هم بهینه است.
از ساختار provider استفاده نمیکند و میتوانیم به راحتی چندین store برای هر بخش از برنامه خودمان داشته باشیم.
برای ssr هر کدام چگونه هستند؟
در کتابخانه redux toolkit هنگامی که داریم یک store را ایجاد میکنیم باید توی تابع createStore یک ابجکتی از مقادیر اولیه را بدهیم و اینگونه برای ssr مقدار دهی میشود.
در کتابخانه zustand باید یک provider و context ایجاد کرد و store زوشتند را در کل برنامه به اشتراک گذاشت تا بقیه کامپوننت ها بتوانند به آن دسترسی داشته باشند. حالا در لحظه ای که داره اون کانتکست ایجاد میشه و به اشتراک گذاشته میشه باید store رو با مقادیر اولیه بسازیم و تو کل برنامه به اشتراک بزاریم. (یه جورایی یک store ایجاد میکنیم برای استیت ها و توابع ای که توی ssr نیازش داریم)
خوبی های redux toolkit:
دارای ساختار قوی و نظام مند
استفاده خودکار از immer
عدم نیاز به کانفیگ خاص و نوشتن کد اضافه برای هندل کردن ssr
خوبی های zustand:
در تمام فایل ها میتوان از استیت و توابع استفاده کرد و آنها را صدا زد. (چون برخلاف redux از provider استفاده نمیکند)
قابلیت multiple store. میتوان برای هر بخش که بخواهیم یک store جداگانه ایجاد کنیم.
حجم بسیار پایین gzipped: کمتر از 1 کیلوبایت
سادگی بسیار زیاد و عدم نوشتن کدهای تکراری و رعایت ساختار (حجم کد کمتر => حجم باندل کمتر)
بدی های redux toolkit:
به store در فایل هایی دسترسی داریم که درون provider و به عنوان فرزندی از آن باشند و در خارج از provider به آن دسترسی نداریم. (بر خلاف zustand)
حجم زیادتر gzipped نسبت به zustand: حدود 15 کیلوبایت
تکرار کردن ساختار و نوشتن کدهای تکراری و import های useDispatch و رعایت پترن slice در نتیجه حجم کد بیشتر => حجم باندل بیشتر
بدی های zustand:
عدم ساختار و احتمال کثیفی کد هنگامی که کدها زیاد و زیادتر میشوند.
نیاز به هندل کردن ssr به صورت دستی و نوشتن provider برای آن.
@DevTwitter | <Mohammad Reza G./>
👍27❤3👎1
ما اغلب گرفتار محدودیتهای ذهنمون هستیم. اینو وقتی دیدم از پورت 1 هم میشه استفاده کرد فهمیدم
@DevTwitter | <M.Ali/>
@DevTwitter | <M.Ali/>
🤣168👍11❤5👎4
تو این سایت میتونید توزیع های مختلف لینوکس رو به صورت آنلاین اجرا کنید. برای انتخاب توزیع عالیه.
https://distrosea.com/
@DevTwitter | <Javad/>
https://distrosea.com/
@DevTwitter | <Javad/>
👍38👎6🔥5❤3
چطور در لینوکس جایگزینی برای برنامههای ویندوزی پیدا کنیم؟
اگه تازه اومدین روی لینوکس و دنبال برنامههایی میگردین که مشابه نرمافزارهای ویندوزیتون باشه، ممکنه یه ذره سردرگم بشین. اما نگران نباشید، یه راه خیلی ساده وجود داره،استفاده از سایت:
https://alternativeto.net/
@DevTwitter | <GeeDook/>
اگه تازه اومدین روی لینوکس و دنبال برنامههایی میگردین که مشابه نرمافزارهای ویندوزیتون باشه، ممکنه یه ذره سردرگم بشین. اما نگران نباشید، یه راه خیلی ساده وجود داره،استفاده از سایت:
https://alternativeto.net/
@DevTwitter | <GeeDook/>
👍44👎6🤣3
بچهها اگه میخواید یه مدرک رایگان راجع به Generative AI و LLM Agents از دانشگاه Berkeley بگیرید این دورهای که دارن برگزار میکنن رو شرکت کنید. فیلماش ضبط میشه رو یوتیوب میذارن.واسه هر جلسه یه آزمون داره، همهرو تموم کنید مدرکش رو میدن بهتون.
https://llmagents-learning.org/f24
@DevTwitter
https://llmagents-learning.org/f24
@DevTwitter
❤41👍8👎4🤣2
قبل اینکه بخواید هرکار وقت گیری انجام بدید یه چک کنید ببینید ابزار هوش مصنوعی براش هست یا نه. ازونجا که گوگل کردن این داستانم خودش کلی وقت میگیره، این دو تا وبسایت تو هر چی که فکرشو کنی، ابزار AI هلو برو تو گلوش رو لیست میکنه :)
futuretools.io
theresanaiforthat.com
@DevTwitter | <Shana/>
futuretools.io
theresanaiforthat.com
@DevTwitter | <Shana/>
👍39👎21❤4🔥3
امروز میخوام یه نکتهی ساده رو بهتون بگم: چطور میتونید سلامت باتری لپتاپتون رو در لینوکس بررسی کنید.
برای این کار، از ابزار upower استفاده میکنیم:
اول، این دستور رو بزنید تا لیست دستگاههای انرژی رو ببینید
upower --enumerate
بعد آدرس باتری رو پیدا کنید و این دستور رو بزنید
upower -i Battery address
با این کار میتونید درصد شارژ و وضعیت سلامت باتری رو ببینید.
@DevTwitter | <Firoozeh Daeizadeh/>
برای این کار، از ابزار upower استفاده میکنیم:
اول، این دستور رو بزنید تا لیست دستگاههای انرژی رو ببینید
upower --enumerate
بعد آدرس باتری رو پیدا کنید و این دستور رو بزنید
upower -i Battery address
با این کار میتونید درصد شارژ و وضعیت سلامت باتری رو ببینید.
@DevTwitter | <Firoozeh Daeizadeh/>
❤22🔥3👍2
استفاده از هوش مصنوعی دیگه تبدیل به یک "باید" شده و اگر استفاده نکنید، عقب میمونید.
سایت کورسرا به تازگی Specialization مختص مهندسان نرمافزار منتشر کرده که چطور به صورت بهینه در مراحل مختلف توسعه نرم افزار از هوش مصنوعی استفاده کنند، از دست ندید.
https://www.coursera.org/professional-certificates/generative-ai-for-software-development
@DevTwitter | <Reza Jafari/>
سایت کورسرا به تازگی Specialization مختص مهندسان نرمافزار منتشر کرده که چطور به صورت بهینه در مراحل مختلف توسعه نرم افزار از هوش مصنوعی استفاده کنند، از دست ندید.
https://www.coursera.org/professional-certificates/generative-ai-for-software-development
@DevTwitter | <Reza Jafari/>
👍31👎12❤2
لیست استانها و شهرهای ایران در یک فایل JSON!
اگه توی پروژههات نیاز به لیست کامل استانها و شهرهای ایران داری، این مخزن GitHub کلی به کارت میاد! یه فایل JSON مرتب و آماده داره که همه استانها و شهرهاشون رو برات لیست کرده.
https://gist.github.com/samanzamani/7ab3046ae1f94348d852bde959349f92
این دیتاها واقعاً برای پروژههای وب، اپلیکیشنهای موبایل و هر جایی که نیاز به موقعیتهای جغرافیایی داری، حسابی کار راهاندازن.
اگه پروژهای داری که به این نوع دیتا نیاز داره، حتماً یه سر بهش بزن و ازش استفاده کن!
@DevTwitter | <Shima Fallah/>
اگه توی پروژههات نیاز به لیست کامل استانها و شهرهای ایران داری، این مخزن GitHub کلی به کارت میاد! یه فایل JSON مرتب و آماده داره که همه استانها و شهرهاشون رو برات لیست کرده.
https://gist.github.com/samanzamani/7ab3046ae1f94348d852bde959349f92
این دیتاها واقعاً برای پروژههای وب، اپلیکیشنهای موبایل و هر جایی که نیاز به موقعیتهای جغرافیایی داری، حسابی کار راهاندازن.
اگه پروژهای داری که به این نوع دیتا نیاز داره، حتماً یه سر بهش بزن و ازش استفاده کن!
@DevTwitter | <Shima Fallah/>
👍58❤12🔥3👎2