| Erfan's Notes | – Telegram
| Erfan's Notes |
193 subscribers
81 photos
10 videos
100 links
Download Telegram
آدرس گیت‌هابتون رو توی این سایت وارد کنید و منتظر باشید که با استفاده از هوش‌مصنوعی OpenAI کاملا Roast تون کنه 😏

🌐 Github Roast
Please open Telegram to view this post
VIEW IN TELEGRAM
ظاهرا گیت‌هاب داون شده و دلیلش هم بخاطر تغییرات سمت دیتابیسی بوده که اعمال کردند، دارند rollback می‌کنند ☕️ نکته جالبی که توی این نیم ساعت داون بودن بهش رسیدم اینه که حداقل ۵-۶ تا سرچ منتهی به گیت‌هاب دارم در هر نیم ساعت
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
جاوا اسکریپت در ترکیب با تایپ اسکریپت واقعا عجیب و در عین حال منطقی هست. ساختار iterator ای که in در JS ارائه می‌ده برای Vue در v-for معمولا به صورت item in Number استفاده می‌شه که در اون item در واقع اسم متغیر هست. حالا اگه از اون متغیر item استفاده نکنیم، تایپ اسکریپت گیر می‌ده که باید استفاده کنی یا حذفش کنی، که وقتی حذف می‌شه با ساختار in Number می‌مونیم که به‌طرز عجیبی مسخره ولی منطقی هست

یا حتی چنین ساختار هایی رو هم داریم:
const [state, setState] = ...

اگر از state استفاده نکنید و صرفا نیاز به setState داشته باشید، مجبورید اینطوری بنویسید:
const [ , setState ] = ...
اگه دوست داشتید می‌تونید این مقاله بنچمارک کتابخونه‌ها و فریمورک‌های Solid و Vue و React و Svelte رو در زمینه SSR یا همون Server Side Rendering ببینید، بنچمارک معقولی هست و همونطور که توی تصویر می‌بینید هرکدوم باید این تصویر رو با 2400 تا div مربع به‌صورت HTML جنریت کنند

خلاصه مقاله به این صورت هست که:
🖼️ Solid (863 req/s)
🖼️ Vue (353 req/s)
🖼️ Svelte(171 req/s)
🖼️ React (138 req/s)

واقعا Solid و Vue بی‌نظیر عمل می‌کنند، Solid که در کل واقعا سریع هست و جایی برای تعریف نداره، ولی Vue با وجود VDOM حتی از Svelte ای که Real DOM هست هم دو برابر سریع‌تره!

در نهایت، این صرفا بنچمارک SSR هست و طبیعتا معیار اصلی در انتخاب یک فریمورک سرعت SSR اش نیست، ولی خب دونستن این اعداد و ارقام می‌تونه مفید باشه
Please open Telegram to view this post
VIEW IN TELEGRAM
2
اگه برنامه‌نویس جاوااسکریپت و تایپ‌اسکریپت هستید و حسرت می‌خورید که چرا نمی‌تونید کد های وب‌اسمبلی (WASM) بنویسید، قطعا از AssemblyScript خوشتون میاد

این پروژه رو حدودا از دو ماه پیش می‌خواستم معرفی کنم ولی وقت نمی‌شد، این پروژه در واقع یک زبان Strict Type کامپایلری هست که سینتکس‌اش شباهت خیلی زیادی به تایپ‌اسکریپت داره و به‌عنوان یک برنامه‌نویس تایپ‌اسکریپت می‌تونید به‌راحتی باهاش شروع به‌کار کنید

البته که دسترسی به تمامی ویژگی های JS ندارید و بحث تایپ‌ها صرفا در حد warning نیست، بلکه عملا باید Strict Type بنویسید، پس خبری از TS Ignore هم نیست طبیعتا، ولی خب خیلی هیجان‌انگیز هست برای دولوپر های تایپ‌اسکریپت که بدون نیاز به دونستن زبان های کامپایلری مثل C یا C++ یا Rust و ...، می‌تونند برنامه‌های WASM بنویسند

ولی خب اصلا WASM چی هست؟ وب‌اسمبلی یا WASM در واقع روشی هست که شما کدهای باینری اسمبلی سطح پایینی بنویسید که مرورگر بتونه اون‌ها رو به‌صورت مستقیم اجرا کنه، البته کاربرد WASM بیشتر برای Port کردن برنامه‌های آماده به وب هست، مثلا FFMPEG یا PHP یا Curl یا ... همگی با قابلیت WASM در حال حاضر پورت شدند و می‌تونید در داخل مرورگرها ازشون استفاده کنید به‌صورت مستقیم، ولی خب با توجه به پرفرمنس بهتری که با WASM می‌تونید بگیرید برای عملیات های پردازشی مثل پردازش تصویر و...، این زبان می‌تونه گزینه معقولی باشه برای اینکه بخشی از پروژه‌تون که نیاز به پردازش داره رو به‌صورت WASM بنویسید

در کل، پروژه انقلابی نیست ولی خب یک گام بزرگی هست در زمینه برنامه‌های Hybrid ترکیبی JS و WASM، که بتونید بخش هایی از پروژه‌تون که نیاز هست رو WASM پیاده کنید بدون اینکه نیازمند به دونستن زبان‌های سطح‌پایین داشته باشید

🌐 assemblynoscript.org
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
با استفاده از کتابخونه Cursify می‌تونید افکت‌های انیمیشنی زیبایی به Cursor موس در محیط وب بدید. این کتابخونه با React و Typenoscript و Tailwind و Framer Motion ساخته شده و به‌راحتی در پروژه‌ها به‌صورت کامپوننت قابل استفاده است.

🌐 Website

💎 Channel: @DevelopixJavanoscript
💎 وبسایت UIVerse منبعی غنی از کامپوننت‌های پر استفاده و زیبا برای طراحی UI هست که می‌تونید به‌راحتی کدهای مربوط به کامپوننت‌های مورد علاقه‌تون دریافت کنید. لازم به‌ذکر هست که تمامی کامپوننت‌ها Open-Source هستند و بدون مشکل می‌تونید استفاده کنید.

🌐 UIVerse.io

💎 Channel: @DevelopixJavanoscript
1
اگه توسعه‌دهنده Mini App های تلگرام هستید، احتمالا با مشکلات و موانع این کار هم آشنا هستید. ابزار جدیدی که نوشتم با عنوان TMA Studio با ارائه یک محیط Mock شبیه‌سازی شده فرایند توسعه مینی‌اپ رو ساده‌تر می‌کنه

اوپن‌سورس هم هست و می‌تونید از طریق لینک زیر در گیت‌هاب مشاهده کنید

⚙️ Github
🌐 Website

پ.ن: سعی می‌کنم در اولین فرصتی که تونستم، یک دوره توسعه مینی اپ تلگرام ضبط کنم
اگه نیاز به اسکرین سیور داشتید و به فضا و موزیک Interstellar هم علاقه‌مند بودید، این پروژه رو همین الان نشستم نوشتم،‌ یه صفحه مینیمالیستیک ساده که کلا زیر 30KB هست و براتون به‌صورت بی‌نهایت فضا و موزیک اینترستلار پلی می‌کنه

پروژه رو بیشتر از این توسعه نمی‌دم چون هدفم این بوده و هست که تماما زیر 30KB باشه

🌐 tinyverse.pages.dev
⚙️ Github Source Code
⭕️ دوره آموزش برنامه‌نویسی مینی اپ تلگرام

💠 در این دوره به آموزش برنامه‌نویسی مینی اپ تلگرام می‌پردازیم، از مباحث پایه و عمومی شروع می‌کنیم و مفاهیم رو یاد می‌گیریم.
مدت زیادی نیست که از VSCode مهاجرت کردم به Zed و واقعا تجربه لذت‌بخش و بی‌نظیری بوده و گفتم باهاتون به اشتراک بزارم (البته مدت زیادی هست که اینجا پست نزاشته بودم و کانال رفته بود پایین و گم کرده بودم)

من معمولا پروژه‌ها رو به‌صورت Remote توسعه میدم و تنها قابلیتی که باعث می‌شد نتونم از VSCode به IDE یا ادیتور دیگه‌ای مهاجرت کنم، همین قابلیت Remote SSH Development اش بود، یک قابلیت فوق‌العاده‌ای که میاد از طریق تانل SSH و نسخه CLI اش روی سرور، به شما این قابلیت رو میده که با ادیتوری که روی سیستم‌تون دارید روی سرور ریموت برنامه‌نویسی کنید به‌صورت زنده و روی سرور کامند ران کنید و نتیجه رو ببینید

حدودا چند ماهی می‌شه که Zed هم این قابلیت Remote Development رو اضافه کرده و بر اساس تست‌هایی که کردم، نه تنها یه سر و گردن بالاتر از نسخه VSCode هست، بلکه به‌شدت بهینه‌تر و سریع‌تر و با مصرف مموری کم‌تر هست! من هر موقع برنامه‌نویسی ریموت رو به دوستام توصیه کردم، همه‌شون به این دلیل که: مصرف منابع VSCode روی سرور بالاست، مخالفت کردند و خب Zed دقیقا این مشکل رو حل کرده

پشتیبانی‌اش از زبان‌های مرسوم مثل JS و TS و PHP و Rust و اون مار و چند تا زبان دیگه واقعا خوب و در حد VSCode هست به‌صورت دیفالت، البته هنوز به لحاظ Extension ای در فقر مطلق به سر می‌بره و اگر وابستگی روی افزونه‌های جانبی VSCode دارید قطعا گزینه خوبی نیست براتون، برای نوشتن افزونه برای Zed هم باید Rust بلد باشید که تقریبا Port کردن افزونه‌های VSCode به Zed رو خیلی دشوار می‌کنه، ولی در عوض شما با یک ادیتور خیلی خیلی سریع و بهینه‌ای طرف هستید که مصرف منابع و سرعتش واقعا شگفت‌زده‌تون می‌کنه

یک مشکل اساسی بزرگی که برای ما داره اینه که پشتیبانی درست حسابی از دایرکشن راست‌به‌چپ نداره و در نتیجه‌اش متن‌های فارسی به‌صورت درست رندر نمی‌شن در ترکیب با متن‌های چپ‌به‌راست، که خب ظاهرا در حال کار روی راه‌حل برای این موضوع هستند

در حالت کلی، اگر هنوز Zed رو تست نکردید، توصیه می‌کنم تست کنید و طبق نیازتون به‌صورت کاملا منعطف شخصی‌سازی کنید، شاید مثل من کم‌کم باهاش موندگار شدید 😉

🌐 Zed.dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1043
من معمولا سعی می‌کنم موارد شخصی یا غیرفنی به اشتراک نذارم، ولی خب این تجربه شاید دونستنش مفید باشه و مراقب رد پای دیجیتال و مطالبی که می‌فرستید باشید، البته قراره طولانی بشه و برای TLDR ها مناسب نیست

اگر با من آشنا باشید، احتمالا مطلع هستید که یه تعداد زیادی گروه فنی مرتبط با حوزه برنامه‌نویسی توسط من ایجاد شده و به لطف کامیونیتی هر حوزه، به اندازه خودش فعالیت داره و از جمله اصول اولیه‌ای که تاکید شده از همون ابتدا در همه گروه‌های ما رعایت بشه، قانون کپی‌رایت بوده و هست، مخصوصا برای آثار داخلی و حتی برای آثار خارجی

حالا می‌خوام از تجربه ناخوشایندی که اخیرا داشتم براتون بنویسم:

روز سه‌شنبه هفته پیش حدود ظهر بود که با زنگ عجیبی مواجه شدم از یکی از بستگان که «برات احضاریه اومده از دادگاه و نوشته که اگر تا ۵ روز دیگه دادگاه نری، حکم جلبت صادر می‌شه»

نکته عجیب ماجرا این بود که «هیچ اثری از مشخصات شاکی یا علت شکایت نبود» و فقط یک شماره پرونده بود

یک روز مضطرب رو گذروندم به امید اینکه فردا بشه و برم ببینم قضیه چیه، روز چهارشنبه سریع خودم رو به دادگاه رسوندم و در کمال تعجب: به علت گرم بودن هوا تعطیل بود (:

فرداش پنج‌شنبه هم چهلم یکی از اینفلوئنسر های مذهبی بود و تعطیل رسمی بود و روز جمعه هم که دیگه نگم براتون

خلاصه که این وضعیت ملتهب تا شنبه ادامه داشت، تا اینکه بالاخره شنبه رفتم شعبه مذکور و گفتند که قاضی امروز نیومده، برو فردا بیا (ظاهرا تعطیلات برای حاج آقا زیادی ساخته بود)

روز یک‌شنبه که ددلاین مهلت ۵ روزه مراجعه بود، بالاخره موفق شدیم حاج آقا رو ببینیم و از موضوع شکایت و شاکی آگاه بشیم با موضوع «انتشار غیرمجاز کتاب آموزشی پایتون در گروه پایتون» که در توضیحات نوشته شده بود که با مهندسی اجتماعی متوجه شدیم که IP نشر دهنده متعلق به «عرفان مولا» می‌باشد ((((؛

حاج آقا فرمودند که شکایت نیابتی هست و باید در مرجع اصلی بررسی بشه، ضمن اینکه در طول کل جلسه به پایتون می‌گفتند پاینون، گفتند که یک سند باید به عنوان وثیقه بزارید پیش ما بمونه، من هم سند ماشین رو گذاشتم و قبول نکردند با این موضوع که «اعتباری به قیمت ماشین نیست، ممکنه ارزون بشه»، احتمالا به حدی ارزون که ارزشش ممکنه از جریمه یک کتاب هم کم‌تر باشه 🫠

تا اینکه بالاخره روز دوشنبه با سند ملک رفتیم و حاج آقا تازه یک برگه داد و گفت اظهاراتت رو بنویس تا بفرستیم به دادگاه شهر مرجع شکایت و الان تکنیکالی به قید وثیقه آزاد هستم تا زمانی که تکلیف پرونده مشخص بشه

اتفاقی که در واقعیت افتاده چیه؟ سه چهار نفر در گروه پایتون در طول یکی‌دو سال‌ اخیر، فایل PDF یک کتاب پایتونی ایرانی رو در گروه فرستادند، خود ناشر هم عضو گروه بوده و دیده و به جای اینکه به پشتیبانی پیام بده و درخواست حذف یا برخورد کنه، رفته از مدیریت گروه شکایت کرده به امید اینکه بتونه جایزه بگیره

عواقب احتمالی چیه؟ احتمالا باید مبلغی رو به‌عنوان صدقه بدیم به ناشر که بیخیالمون بشه

این موارد معمولا ضرر مالی خاصی به آدم وارد نمی‌کنند، ولی ضرر های دیگه‌ای رو وارد می‌کنند به‌مراتب خیلی بدتر هست، از این فرایند ۷ روزه، دقیقا ۴ روز اش رو در بی‌اطلاعی کامل به سر می‌بردم، از اینکه علت شکایت چی هست و شاکی کی هست؟ نکنه امنیتی هست؟ نکنه سیاسی هست؟ نکنه با اسمم کلاهبرداری کردند؟ و ...

نتیجه‌ای که برای من داشت این بود که یک هفته کارهام عقب افتاد و پروژه‌ای که دستم هست هم تاخیر خورد، تاخیری که باعث می‌شه روز به روز از ایرانی بودن شرمنده بشم پیش دوستان غیرایرانی، تاخیری که این مدت سر نبود برق و ... بوده و هست و الان هم سر این موضوع

خلاصه که این تازه شروع ماجرا و رفت و آمدها به مراجع قضایی هست، تا حد امکان سعی کنید کارتون به این مراجع نخوره چون در نظر اون‌ها، مراجعین تفاوتی با سگ ندارند، به همون اندازه که بابت چنین موضوعی به آدم دستبند می‌زنند و سند ملک می‌خوان، به همون اندازه که بابت ۵ میلیون تومان بدهی، به یکی پابند و زنجیر زده بودند و شبیه قاتل باهاش رفتار می‌کردند

طولانی شد، ولی نه به اندازه این یک هفته
Please open Telegram to view this post
VIEW IN TELEGRAM
6431
اگر برنامه‌نویس فرانت‌اند باشید احتمالا یکی از معضلاتی که بعد از باندل کردن پروژه‌هاتون دارید این هست که سایز باندل شده با مقدار پکیج‌هایی که استفاده کردید جور در نمیاد، یه نفر معمولا آب قاطی می‌کنه

با استفاده از vite-bundle-visualizer می‌تونید نمودار جالبی از پکیج‌های استفاده شده در پروژه‌تون داشته باشید و ببینید که هر پکیج دقیقا چقدر از فضای باندل رو تشکیل میده

پکیج vite-bundle-visualizer با استفاده از npx قابل ران هست و نیازی به نصب هم نداره، کافیه دستور زیر رو ران کنید:
npx vite-bundle-visualizer

همچنین با هاور کردن روی هر سل می‌تونید حجم دقیق‌اش رو ببینید در حالت عادی و gzipped و brotli

البته که این پکیج برای باندلر Vite هست و اگر هنوز از Webpack یا سایر موارد منسوخ استفاده می‌کنید احتمالا باید دنبال پکیج دیگه‌ای باشید و در اولین فرصت به Vite مهاجرت کنید
1432
حدودا یک ماه از ریلیز شدن نسخه 3.0 وب‌اسمبلی (WASM) می‌گذره و الان فرصت کردم درموردش بخونم، تغییرات مهمی که داشته رو پایین می‌نویسم.

💠 پشتیبانی از Address Space های 64 بیت
تا قبل از این نسخه، وب‌اسمبلی محدود به آدرس‌های i32 بود و نمی‌تونست بیشتر از 4GB رو آدرس‌دهی کنه، ولی پشتیبانی از i64 اضافه شده و این محدودیت عملا بی‌نهایت شده، هرچند که همچنان مرورگرها حداکثر اجازه allocate کردن 16GB رو می‌دن.

💠 پشتیبانی از Memory های چندگانه
تا قبل از این نسخه، هر ماژول وب‌اسمبلی فقط محدود به یک Memory بود و برای تفکیک باید ماژول‌ها Split می‌شدند، ولی در این نسخه قابلیت داشتن Memory های متعدد برای یک ماژول اضافه شده.

💠 پشتیبانی از Garbage Collection
در این نسخه یک افزونه با عنوان wasm-gc اضافه شده که در سطوح پایین می‌تونه مموری رو به‌صورت خودکار مدیریت کنه، کامپایلرها می‌تونند Struct ها و آرایه‌ها و بعضی Integer ها رو به صورت تگ شده تعریف کنند و خود wasm وظیفه allocation و lifetime شون رو برعهده بگیره.

💠 پشتیبانی از Tail Call ها
قابلیت Tail Call به وب‌اسمبلی اضافه شده، این ویژگی از زبان‌های فانکشنال الگو گرفته، به این معنی که فانکشن‌ها می‌تونند در آخرین اکشن‌شون یک فانکشن دیگه‌ای رو کال کنند بدون اینکه فضایی از Stack رو اشغال کنند، این موضوع در کال های Recursive اهمیت زیادی داره.

💠 پشتیبانی از Exception ها
پشتیبانی از Exception های try و catch در وب‌اسمبلی اضافه شده، تا قبل از این برای چنین کاری باید از JS استفاده می‌شد.

💠 پشتیبانی از String های جاوا اسکریپت
قابلیت رد و بدل کردن مستقیم String های جاوا اسکریپت بدون نیاز به تبدیل دو طرفه اضافه شده، می‌تونید مقادر String رو به صورت مستقیم به‌عنوان externref پاس بدید و سمت wasm تغییرات لازم رو روش اعمال کنید و سمت JS تحویل بگیرید.

و البته کلی قابلیت دیگه که اگر دوست داشتید می‌تونید اینجا بخونید.
Please open Telegram to view this post
VIEW IN TELEGRAM
3822