Md Daily – Telegram
Md Daily
725 subscribers
239 photos
15 videos
21 files
283 links
راجب مقالات و مستندات فنی یا غیر فنی که میخونم و علایقم اینجا مینویسم :)


گروه کانال: https://news.1rj.ru/str/MdDailyGap

کورس ها: https://news.1rj.ru/str/MdDaily/395

وبلاگ: https://mddaily.ir
Download Telegram
Audio
🎧 پلی لیست #موزیک مناسب برای زمان تمرکز و پروداکتیویتی (Electronic Music)

🎵 Tracklist

► 00:00 Vonnboyd - Discover

► 03:50 Honeyruin - We Could Have Been

► 07:46 Blurred, Heartmath2 - Dawning (Creepa Remix)

► 12:19 Andy Leech - Solar Fields

► 17:09 AK - 23.01.2018

► 20:34 VonnBoyd - Broken Heart

► 26:08 AK - Autumn Is Here

► 29:38 Koda - Staying

► 33:56 Tim Schaufert, AK - From Place Еo Place

► 36:57 AK - Wanderlust

► 40:38 4Lienetic - The Fog Ahead

► 45:05 Hands - Thinking About You

► 48:20 H3ndo - Fathom

► 53:43 Arnyd - Truth

► 57:25 Ambient Light - Norwegian Valley

► 1:00:56 Ponkie - Falling Stars

► 1:04:36 Randloev - Patience

► 1:09:08 Artic Desert - Enigma

► 1:12:49 Many Miles - Look Down

► 1:16:45 Onycs - Timeless

► 1:20:58 Samuke - Haze

► 1:23:51 Homeomorphic - Imaginary

► 1:26:53 Kasper Klick - Salvation

► 1:31:14 Homeomorphic - Awareness

► 1:34:52 Bythewvve - Return

► 1:37:54 Rusez1 - Aftermath

🆔 @MdDaily
6
تو این مدت که اخبار هوش مصنوعی رو دنبال میکردم و تو این چند وقتی که درحال تست ابزار های مختلف بودم، درنهایت توی این پست قرار نگاهی بندازیم به اتفاقاتی که تا الان افتاده و چه ابزاری برای چه کاری تا اینجای کار خوب عمل کرده

تا الان چیشده؟

تقریبا اوایل سال 2022 که مدل GPT-3.5 منتشر شد تا الان شاهد ظهور ابزار های جدید، تحولات تازه و اخبار مختلف توی این حوزه بودیم. گوگل Bard رو معرفی کرد،‌ AI به سرچ انجین ها و ابزار های مختلف اضافه شد و میتونیم بگیم که کارهامون به قبل از عمومی شدن و بعدش تقسیم میشن :)


از OpenAI چه خبر؟

این شرکت هم تا اینجای کار حواشی کم نداشته. طبق آمار ChatGPT عملکردش توی پاسخ به سوالات کاهش پیدا کرده. مدیر عامل و بنیان گذارش سم آلتمن رو از شرکت اخراج کردند و بعد از اینکه دیدن اوضاع خرابه و ۵۰۰ تا ۷۰۰ کارمند OpenAI درخواست استعفا دادن، قبل از اینکه شرکت به سمت فروپاشی بره مجدد سم آلتمن به OpenAI برگشت. این مجموعه تا اینجای کار با معرفی GPT3.5 Turbo, GPT4, GPT4-V و ... باعث ایجاد تحولات زیادی شده. با فعال شدن ویژگی مکالمه در ChatGPT برای همه ی کاربران توی اپش الان میتونید باهاش صحبت کنید و به شما به صورت ویس جواب بده. خبر خوب اینکه ویژگی مکالمه اش از زبان فارسی هم پشتیبانی میکنه و حتی به فارسی هم با شما صحبت میکنه. برای یادگیری زبان بهترین گزینس

این همه ابزار وجود داره، کدوم ابزار برای چه کاری مناسبه؟

💻 توی چند ماهه گذشته ابزار های زیادی رو تست کردم که ببینم کدوم برای کمک به فرایند برنامه نویسی و توسعه مناسب تر هستند. ابزار هایی که تست کردم :‌ GitHub Copilot - Tabnine Pro - Codeium - Chat GPT - Google Bard - Claude - Bing AI و ...

نتیجه؟

طبق تجربه ی من ابزار هایی مثل Google Bard یا Bing که به اینترنت متصل هستند برای برنامه نویسی مناسب نیستند! احتمال تولید کد اشتباه،‌ عدم درک دقیق مشکل و عدم ارائه ی راه حل مناسب توی این ابزار ها به شدت بالاس. توی تمام ابزار هایی که تست کردم میتونم بگم در حال حاضر بهترین هاشون برای حل مسائل برنامه نویسی کمک به شما Codeium و Claude هستند.

برای نسخه ی تحت وب میتونید از codeium live استفاده کنید، چونکه داده هاش برای تکنولوژی های مثل React, Numpy.و ... آپدیته و تمرین داده شده که فقط به سوالات شما توی برنامه نویسی جواب بده. توی IDE یا ویرایشگر متنی که ازش استفاده می کنید هم میتونید از پلاگین Codeium استفاده کنید و مزیتی که Codeium داره اینکه وقتی ازش سوال می پرسید میره توی بقیه فایل های پروژتونم جستجو میکنه و دقیق ترین جواب رو به شما میده. تا الان Codeium با وجود اینکه کاملا رایگانه عملکرد خیلی بهتر و قوی تری به نسبت Tabnine Pro طبق تجربه ی من داشته.

برخلاف تبلیغاتی که توی تبدیل عکس به کد برای Bard یا Bing شده این ها هنوز خیلی تو این مورد ضعیفن و GPT4-V عملکرد خیلی بهتر و قوی تری داره

👈 درنهایت ابزار ها را میتوینم به این صورت دسته بندی کنیم:

💫 جستجو در اینترنت |‌ ترجمه | حل مسائل ریاضی |‌ تحقیق | چت و تولید مقاله به زبان فارسی | دستیار شخصی => Google Bard


💫 دستیار برنامه نویسی‌ | تکنولوژی => codeium و codeium live


💫 مکالمه به صورت ویس مناسب برای یادگیری زبان و ... => اپلیکیشن چت چی پی تی (Android - IOS)


💫 تولید تصویر و لوگو => leonardo.ai و Bing AI


💫 خلاصه سازی وب سایت ها و جستجو در اینترنت=> Bing AI و perplexity.ai


💫 عمومی => claude.ai و Chat GPT


این تجربه ی من بود از تست ابزار ها از زمان معرفی GitHub Copilot تا الان :)

🆔 @MdDaily
👍71🔥1
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت اول)


چند وقتی بود داشتم مقالات instagram engineering رو میخوندم و نکات خیلی جالبی میشه از تجربه ی مهندسانی که روی اینستاگرام کار کردند یاد گرفت. توی این پست نگاهی میندازیم به اینکه اینستاگرام چطوری از اکتبر 2010 تا دسامبر 2011 از 0 به 14 میلیون کاربر در یک سال رسید و اونها این کار رو فقط با 3 مهندس انجام دادن.

اصولی که تیم توسعه اینستاگرام بهش پایبند بود:

👈 ساده نگه داشتن همه چیز
👈 اختراع نکردن دوباره ی چرخ
👈 استفاده از تکنولوژی هایی که ثابت شدند و قابل اطمینان هستند

زیرساخت اولیه اینستاگرام در AWS اجرا می شد و از EC2 با Ubuntu Linux استفاده می کرد. EC2 سرویس آمازونه که به توسعه دهندگان اجازه میده رایانه های مجازی اجاره کنند.

بیایند از وقتی که کاربر اینستاگرام رو باز میکنه دنبالش کنیم ببینیم اون پشت صحنه دقیقا چه اتفاقاتی میوفته

📍کاربر اینستاگرام رو باز میکنه

اینستاگرام ابتدا در سال 2010 به عنوان یک برنامه iOS عرضه شد. از آنجایی که Swift در سال 2014 منتشر شد، احتمالا اینستاگرام با استفاده از Objective-C و ترکیبی از چیزهای دیگر مانند UIKit نوشته شده.

بعد از باز شدن اپلیکیشن درخواستی برای گرفتن پست های صفحه ی اصلی به بکند ارسال میشه، جایی که load balancer(توزیع کننده بار) خودش رو نشون میده.

تمام درخواست ها به اینستاگرام به load balancer میرفت بعد به سرور اصلی. اوایل کار اینا اومده بودن دوتا NGINX گذاشته بودن و از DNS Round-Robin استفاده میکردن ولی یه مشکلی وجود داشت! موقع بروزرسانی DNS باید یکی از NGINX ها را خارج میکردن و ترافیک تقسیم نمیشد. پس اومدن توزیع کننده بارشون رو بردن روی سرویس Elastic Load Balancer آمازون که 3 تا NGINX داشتند که که ترافیک بین اینا تقسیم میشد.

📍 درخواست از load balancer به بکند ارسال میشه

بکند اینستاگرام با جنگو نوشته شده و روی ماشین‌های Amazon High-CPU Extra-Large اجرا می شدند. وقتی مصرفشون رفت بالا به صورت horizontally scale تعداد سرور هایی که از آمازون گرفته بودن رو به 25 تا افزایش دادن. به خاطر اینکه پردازش اصلی روی CPU بود نه رم از ماشین هایی با High-CPU Extra-Large استفاده می کردن

اینستاگرام خیلی از پایتون استفاده ی بهینه میکنه و حتی Cpython رو فورک کردند و یه نسخه ی بهینه شده ازش رو استفاده میکنند که تو یه پست دیگه راجبش مینویسم :)



از gunicorn عنوان سرور WSGI استفاده کردن که قبلش روی mod_wsgi و Apache بودن، اما متوجه شدن که Gunicorn پیکربندی بسیار آسان‌تر داره مصرف CPU اشم کمتره. برای اجرای دستورات در بسیاری از نمونه‌ها به طور همزمان (مانند استقرار کد)، از Fabric استفاده کردن که یک حالت موازی(parallel) مفید داره، بنابراین استقرارها در چند ثانیه انجام میشده.

📍 ذخیره سازی داده های عمومی

خب حالا سرور برنامه میبینه که درخواست نیاز به داده برای صفحه ی خانه (main feed) داره. فرض کنید به این داده ها نیاز داره:

👈 آخرین شناسه های عکس مرتبط (latest relevant photo IDs)
👈 عکس‌های واقعی که با آن شناسه‌های عکس مطابقت دارن (the actual photos that match those photo IDs)
👈 داده‌های کاربری برای عکس‌ها (user data for those photos)

📍پایگاه داده: Postgres

وقت اینکه سرور ID عکس ها رو از دیتابیس Postgres بگیره.

سرور برنامه داده ها را از PostgreSQL استخراج می کرد که بیشتر داده های اینستاگرام مانند کاربران و متا دیتا های عکس رو ذخیره می کرد.
اتصالات بین Postgres و Django با استفاده از Pgbouncer انجام می شد.

اینستاگرام به دلیل حجم زیادی که دریافت می‌کرد (بیش از ۲۵ عکس و ۹۰ لایک در ثانیه) داده‌هاش رو تقسیم کرد. اونها از کد برای map کردن چندین هزار logical shards به چند physical shards استفاده کردن. (میتونید جزئیات فنی و دقیق ترش رو توی این مقاله بخونید)


💡یک چالش جالب که اینستاگرام باهاش روبرو شد و حل کرد، ایجاد شناسه‌هایی بود که بشه بر اساس زمان مرتب کرد. شناسه‌های قابل مرتب‌سازی بر اساس زمانشون به این صورت بود:

👈 41 بیت برای زمان بر حسب میلی‌ثانیه (با یک دوره سفارشی، 41 سال شناسه به ما میده)
👈 13 بیت که نشان دهنده شناسه خرد کننده منطقیه (logical shard ID)
👈 10 بیت که یک auto-incrementing sequence رو نشون میده, modulus 1024. یعنی که میتونیم 1024 شناسه در هر shard در هر میلی ثانیه ایجاد کنیم.
(جزئیات بیشتر در اینجا .)

با تشکر از شناسه های قابل مرتب‌سازی بر اساس زمان در Postgres، سرور برنامه با موفقیت آخرین شناسه‌های عکس مرتبط رو دریافت می کرد.

ادامه در پست بعدی....

🆔 @MdDaily
7👍41🔥1
Md Daily
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت اول) چند وقتی بود داشتم مقالات instagram engineering رو میخوندم و نکات خیلی جالبی میشه از تجربه ی مهندسانی که روی اینستاگرام کار کردند یاد گرفت. توی این پست نگاهی میندازیم به اینکه اینستاگرام…
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت دوم)

خب توی قسمت قبلی تا جایی رسیدیم که تیم اینستاگرام چطوری چالش های دیتابیس رو حل کرد، و در این قسمت قرار عمیق تر بشیم.

📍ذخیره سازی عکس: S3 و Cloudfront

بعد از اینکه بکند شناسه(ID) عکس ها را از دیتابیس گرفت حالا وقت اینکه عکس های واقعی رو که با اون شناسه های عکس مطابقت دارن لینک هاشو به کلاینت بده تا به کاربران نشون بده

چندین ترابایت عکس در Amazon S3 ذخیره شده بود. این عکس ها به سرعت با استفاده از Amazon CloudFront یا همون CDN آمازون به کاربران ارائه شدن که استفده از CDN به زمان بارگذاری تصویر برای کاربران در سراسر جهان (مانند ژاپن، دومین کشور محبوبشون) کمک بزرگی کرد.

📍کش: Redis و Memcached

برای دریافت داده‌های کاربر از Postgres، سرور برنامه (Django) شناسه‌های عکس رو با استفاده از Redis با شناسه‌های کاربر مطابقت میده.

اینستاگرام از Redis برای ذخیره(store) نگاشت(mapping) حدود 300 میلیون عکس به شناسه کاربری که اون هارو ایجاد کرده استفاده کرد تا بدونه وقت دریافت عکس برای فید اصلی، فید فعالیت(activity) و غیره کدوم بخش رو باید جستجو کنه. تمام داده های Redis در حافظه ذخیره شد تا زمان تأخیر را کاهش بده و در چندین دستگاه تقسیم(sharded) شد.

💫 با کمی هش(hashing) هوشمندانه، Instagram تونست 300 میلیون key mappings رو در کمتر از 5 گیگابایت ذخیره کنه.


این key-value mapping شناسه عکس به شناسه کاربر برای فهمیدن اینکه کدوم Shard Postgres رو باید پرس و جو کنه و کوئری بزنه مورد نیاز بود.

به لطف کش کردن کارآمد با استفاده از Memcached، دریافت داده‌های کاربر از Postgres سریع بود چونکه پاسخ اخیراً کش شده بود.

برای ذخیره سازی عمومی، اینستاگرام از Memcached استفاده کرد. اونا تو اون زمان 6 نمونه Memcached داشتند.

نکته جالب: 2 سال بعد، در سال 2013، فیس بوک مقاله ای منتشر کرد که نشون می داد چطوری Memcached رو مقیاس کرده اند تا بهشون در رسیدگی به میلیاردها درخواست در ثانیه کمک کنه.

🔗 Scaling Memcache at Facebook

💡 در نهایت کاربر فید اصلی یا همون صفحه ی خانه را میبینه که با آخرین تصاویر افرادی که دنبال کرده پر شده.

📍 تنظیم Master-Replica

هم Postgres و هم Redis در یک master-replica setup اجرا شدن و از snapshotting Amazon EBS برای گرفتن بکاپ های مکرر از سیستم ها استفاده کردن.

ادامه در پست بعدی....

🆔 @MdDaily
👍4🔥3
Md Daily
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت دوم) خب توی قسمت قبلی تا جایی رسیدیم که تیم اینستاگرام چطوری چالش های دیتابیس رو حل کرد، و در این قسمت قرار عمیق تر بشیم. 📍ذخیره سازی عکس: S3 و Cloudfront بعد از اینکه بکند شناسه(ID) عکس ها…
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت سوم)

توی قسمت قبلی فهمیدیم که چه قدر کشینگ و CDN خوب تونسته به تیم اینستاگرام کمک کنه تا بتونند درخواست ها را با سرعت بیشتری پردازش کنند و تاخیر در پاسخ گویی به کلاینت رو کم کنند. حالا وقت اینکه با بقیه ی معماری اینستاگرام آشنا بشیم.

📍پوش نوتیفیکیشن و وظایف غیرهمزمان(Async Tasks)

🔔 حالا، فرض کنید کاربر اپ رو میبنده، ولی بعدش یه نوتیفیکیشن دریافت میکنه که یک دوست عکسی منتشر کرده.

این نوتیفیکیشن با استفاده از pyapns ارسال شده، همراه با بیش از میلیارد نوتیفیکیشن دیگه ای که اینستاگرام قبلاً ارسال کرده. Pyapns یک ارائه‌دهنده خدمات نوتیفیکیشن یکپارچه و متن باز برای سرویس نوتیفیکیشن اپل (APNS) است.

🖼 خب حالا کاربر روی نوتیفیکیشن میزنه و از عکسی که دوستش منتشر کرده خوشش میاد! پس تصمیم میگیره که توی X (توئیتر سابق) پستش کنه.

در بک‌اند، کار به Gearman (ریپوی گیت هاب) سپرده میشه، یک صف وظایف (task queue) که کار را به ماشین‌های مناسب‌تر تخصیص میده. اینستاگرام حدود 200 ورکر(workers) پایتون داشت که صف وظایف Gearman رو استفاده می‌کردند.


ابزار Gearman برای چندین وظیفه غیر همزمان(asynchronous)، مانند ارسال فعالیت‌ها (مانند یک عکس جدید) به همه دنبال‌کنندگان یک کاربر استفاده می‌شد (به این کار fanout گفته می‌شود).

📍مانیتورینگ (Monitoring)

😬 اوه! برنامه اینستاگرام خراب شد چونکه چیزی در سرور اشتباه کرد و یک پاسخ اشتباه ارسال شد. سه مهندس اینستاگرام بلافاصله مطلع میشن.

اینستاگرام از Sentry برای نظارت بر خطاهای Python به صورت بلادرنگ(Real-time) استفاده کرد.

همچنین از ابزار Munin برای ترسیم نمودار متریک‌های سیستمی (system-wide metrics) و هشدار دادن به ناهنجاری‌ها استفاده شد. اینستاگرام تعدادی پلاگین Munin سفارشی برای ردیابی متریک‌های سطح برنامه(application-level metrics)، مانند عکس‌های ارسال شده در هر ثانیه، داشت.

از ابزار Pingdom برای نظارت بر خدمات خارجی و PagerDuty برای مدیریت حوادث و اعلان ها استفاده می شد.

ادامه در پست بعدی....
🆔 @MdDaily
1
Md Daily
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت سوم) توی قسمت قبلی فهمیدیم که چه قدر کشینگ و CDN خوب تونسته به تیم اینستاگرام کمک کنه تا بتونند درخواست ها را با سرعت بیشتری پردازش کنند و تاخیر در پاسخ گویی به کلاینت رو کم کنند. حالا وقت اینکه…
چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید! (قسمت چهارم و پایانی)

توی قسمت قبلی در نهایت با همه ی بخش ها آشنا شدیم و توی این دیاگرام میتونید نمایی از معماری اینستاگرام رو ببینید

💡 از تجربه ی اینستاگرام چه چیز هایی میتونیم یاد بگیریم؟

👈 ساده شروع کنید و معماری خودتون رو بیش از حد پیچیده نکنید. از پیچیدگی های غیر ضروری در هر دو انتخاب طراحی و فناوری اجتناب کنید. زیرساخت اولیه اینستاگرام ساده بود و به فناوری‌های ثابت و مستحکم متکی بودند نه ترند ها و چرخ رو دوباره اختراع نکرند. این امر نگهداری و مقیاس‌پذیری رو آسون می‌کرد.

👈 برای بهبود عملکرد پروژه هاتون از یک لایه کش استفاده کنید. اینستاگرام از Redis و Memcached برای سیستم کشینگش استفاده میکرد تا بتونه با تاخیر کم تری پاسخگوی نیاز کاربران باشه.

👈 زیرساختتون رو به دقت نظارت کنید. اینستاگرام از Sentry، Munin، Pingdom و PagerDuty برای نظارت بر زیرساختش استفاده کرد. این بهشون کمک کرد تا مشکلات را به سرعت شناسایی و حل کنند.

ادامه در پست بعدی....
🆔 @MdDaily
1
📌 چطوری اینستاگرام با تنها 3 مهندس به 14 میلیون کاربر رسید

💡 فهرست مطالب:

- قسمت اول
- قسمت دوم
- قسمت سوم
- قسمت چهارم و پایانی
- منابع

🆔 @MdDaily
👍32
#فان
وقتی بعد از ساعت ها بهینه کردن کدت میبینی از کد اصلی کند تر اجرا میشه:

🆔 @MdDaily
🤣12😁4
چند روز توی X (توییتر سابق) پست هایی میبینم راجب اینکه عزیزانی که تازه می خواهند وارد دنیای برنامه نویسی بشن چه زبانی رو یاد بگیرن و اکثر پست ها هم تاکیید داشتن که حتما با جاوا اسکریپت و پایتون شروع کنند با یه سری دلایل خودشون :)

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

توی پست الگوریتم و فلو چارت‌ خیلی خلاصه راجبش نوشتم و برای شروع راهنمای خوبی میتونه باشه


وقتی کسی ازم می پرسه با چه زبانی شروع کنم، بهش زبان معرفی نمیکنم. ازش میپرسم میخوای چیکار کنی؟ هدفت چیه از اینکه اومدی تو دنیای برنامه نویسی؟

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

ولی وقتی هدف مشخص باشه! مثلا اون شخص به سوالات بالا اینطوری جواب میده:
- میخوام برنامه نویس موبایل بشم - هدفم اینکه بتونم اپلیکیشن خودمو بنویسم

الان باید زبان و ابزار مناسب معرفی کرد که مخاطب ما بدونه نتیجه ی کارش قرار چی بشه ؛) و موقع یاد گیری توی لوپ سردرگمی گیر نکنه. بدونه اگه داره این وقتو میذاره این هزینه و انرژی رو صرف کنه مسیرش مشخصه . مثلا میره دارت یادمیگیره،‌ بعد میره سراغ فلاتر یا هم میره کاتلین یاد میگیره یا ...

یه مثال دیگه:
- میخوام درس های دانشگاهی رو پاس میکنم - هدفم اینکه بتونم تمرین های برنامه نویسی دانشگاه رو حل کنم

توی همچین مواردی شما دیگه نمیاین بگید برو C یاد بگیر. چون هدف فقط حل کردن تمریناته و به این شخص یه نقشه راه پایتون معرفی میکنید

خلاصه اینکه:

اگه جایی دیدید میگن فقط فلان زبان یا فلان ابزارو یاد بگیرید آینده ی شغلی، درآمد همه چیتون تضمین شدسو .... یا طرف داره تبلیغات آموزش خودشو میکنه یا هم از روی ناآگاهی داره راهنمایی اشتباه میکنه. در نهایت همه ی تکنولوژی ها و زبان ها ابزارن و نقشه ی راه مهمه که واقعا اون شخصی که تازه میخواد شروع کنه قرار چیکار کنه؟ وارد کدوم حوزه میخواد بشه؟ و طبق جوابش به این سوالا باید راهنمایی بشه نه از روی ترندها و جواب هایی مثل فقط این زبان و تکنولوژی خوبن بقیه بد :)


🆔 @MdDaily
👍9❤‍🔥3
پایگاه داده vector چیه؟

وکتور یه آرایه از اعداده که موقعیت یه نقطه رو توی فضای چند بعدی نشون میده. مثلاً وکتور {12، 13، 19، 8، 9} یه نقطه رو توی 5 بعد قرار میده. وکتور ها این امکان رو فراهم می کنن که داده رو به صورت هندسی نمایش بدیم و مقایسه های ریاضی بین نقاط داده رو انجام بدیم.

ادامه در پست بعدی...

🆔 @MdDaily
👍5
Md Daily
پایگاه داده vector چیه؟ وکتور یه آرایه از اعداده که موقعیت یه نقطه رو توی فضای چند بعدی نشون میده. مثلاً وکتور {12، 13، 19، 8، 9} یه نقطه رو توی 5 بعد قرار میده. وکتور ها این امکان رو فراهم می کنن که داده رو به صورت هندسی نمایش بدیم و مقایسه های ریاضی بین…
رابطه وکتور ها با embeddings چیه؟

در ماشین لرنینگ، embeddings وکتور هایی هستن که data point هایی رو مثل کلمات، جملات، تصاویر و غیره رو نشون میدن. embeddings میاد semantic meaning داده ها رو به فرم وکتور encode میکنه . اونا توسط شبکه های عصبی تولید می شن که برای map data points به نمایش های وکتور موثر آموزش دیده اند. این embeddings مفاهیم مرتبط رو توی فضای وکتور نزدیک یکدیگر قرار میدن.


پایگاه داده vector چطور کار می کنه؟

پایگاه داده وکتور embeddings رو برای انواع مختلفی از نقاط داده مثل اسناد، تصاویر، محصولات و غیره ذخیره می کنه. این پایگاه داده این embeddings رو به داده های اصلی اونا مپ میکنه. پایگاه داده امکان جستجو سریع شباهت ها رو بر اساس نزدیکی وکتور فراهم می کنه. یه کوئری embeddings می تونه با embeddings ذخیره شده مقایسه بشه و مشابه ترین وکتور ها تقریباً به سرعت بازیابی می شن. این پایه و اساس جستجوی semantic، پیشنهادات و سایر کاربردهای AI رو فراهم می کنه.

پایگاه داده های وکتور در AI چه کاربردهایی دارن؟

پایگاه داده های وکتور کاربردهای کلیدی مختلفی در AI دارن:

👈 جستجوی semantic: بازیابی اطلاعات بر اساس معنا، نه فقط کلمات کلیدی

👈پیشنهادات:
پیشنهاد محتوایی که بیشترین ارتباط رو با علایق کاربر داره

👈مدل های LLM:
درک کلمات توی متن برای تولید و خلاصه نویسی

👈تشخیص ناهنجاری:
شناسایی data points غیرعادی در مقایسه با عادی

👈طبقه بندی تصویر:
طبقه بندی تصاویر بر اساس ویژگی های بصری

با تسهیل سرعت مقایسه شباهت ها، پایگاه داده های وکتور به مدل های یادگیری ماشین اجازه می دن تا بین قطعات داده ارتباط برقرار کنن. این از توانایی های AI پیشرفته پشتیبانی می کنه که با استفاده از داده خام امکان پذیر نیست. فضای وکتور به نوعی "حافظه" برای الگوریتم ها برای ایجاد درک عمل می کنه.


🆔 @MdDaily
👍3🔥2
Md Daily
رابطه وکتور ها با embeddings چیه؟ در ماشین لرنینگ، embeddings وکتور هایی هستن که data point هایی رو مثل کلمات، جملات، تصاویر و غیره رو نشون میدن. embeddings میاد semantic meaning داده ها رو به فرم وکتور encode میکنه . اونا توسط شبکه های عصبی تولید می شن که…
خب این توضیح تقریبا رسمیه vector database بود، خیلی ساده و خلاصه و خودمونی vector database ها دقیقا چین و چرا توی ai انقدر استفاده ازشون مهمه؟

خب شاید سوال پیش بیاد چرا ما توی ai مثلا نمیایم مثل اکثر پروژه ها از پایگاه های داده ای مثل mysql یا pg sql استفاده کنیم؟

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

اینجا بود که پایگاه های داده برداری یا همون vector database خودمون بوجود اومدن تا برای ذخیره و مدیریت حجم عظیمی از داده‌های با ابعاد بالا در قالب بردارها استفاده بشن که بردارها نمایش داده های ریاضی هستند که اشیاء را بر اساس ویژگی ها یا کیفیت های مختلف آنها توصیف می کنند.

خب وقت مثاله:

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

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

حالا بیا ببینیم که vector database چطوری می‌تونه به ما کمک کنه. توی vector database، هر محصول رو به یه بردار تبدیل می‌کنیم. این بردار ویژگی‌های محصول رو نشون می‌ده. مثلاً اگه محصول ما یه گوشی موبایل باشه، بردار آن ممکن است شامل ویژگی‌های زیر باشه:

*قیمت
*برند
*نوع صفحه نمایش
*ظرفیت حافظه داخلی
*ظرفیت حافظه رم
*سیستم عامل

حالا اگه بخوایم بدونیم کدوم محصولات با هم مرتبط هستن، کافیه بردارهای مربوط به اون محصولات رو مقایسه کنیم. اگه بردارها به هم شبیه باشن، یعنی محصولات هم مرتبط هستن.

برای مثال، فرض کن یه گوشی موبایل با قیمت 10 میلیون تومان، برند سامسونگ، نوع صفحه نمایش OLED، ظرفیت حافظه داخلی 128 گیگابایت، ظرفیت حافظه رم 8 گیگابایت و سیستم عامل اندروید داشته باشیم. بردار این محصول ممکنه به صورت زیر باشه:

[10000000, 1, 1, 128, 8, 1]



حالا اگه یه گوشی موبایل دیگه با قیمت 12 میلیون تومان، برند سامسونگ، نوع صفحه نمایش OLED، ظرفیت حافظه داخلی 256 گیگابایت، ظرفیت حافظه رم 12 گیگابایت و سیستم عامل اندروید داشته باشیم، بردار این محصول هم به صورت زیر خواهد بود:

[12000000, 1, 1, 256, 12, 1]


اگه بردارهای این دو محصول رو با هم مقایسه کنیم، می‌بینیم که خیلی شبیه به هم هستن. بنابراین، می‌تونیم نتیجه بگیریم که این دو محصول با هم مرتبط هستن.

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

چنتا از vector database های معروف:
🔗 Pinecone
🔗 Milvus
🔗 Chroma
🔗 Weaviate


🆔 @MdDaily
🔥61
📍 منابع توصیه شده برای یادگیری گولنگ

👈 کتاب آنلاین Learn Go With Tests

👈 مستندات Effective Go (این منبع به شما کمک میکنه که چطوری کد های بهتر و تمیز تری توی گولنگ بنویسید)

👈 وبسایت Go by Example (این وبسایت اومده مباحث مختلف رو با مثال آموزش داده، این وبسایت وقتی که خودمم میخواستم یادگیری گولنگ رو شروع کنم خیلی بهم کمک کرد)

👈 کورس A Tour of Go (این کورس مهم‌ترین ویژگی‌های زبان رو پوشش میده و برای شروع یه منبع عالیه)

👈 وبسایت Coding Challenges (برای حل چالش)

👈 دوره ی Learn Go از گوگل در codecademy (اگه هیچ پیش زمینه ای از گولنگ ندارید برای شروع این منبع عالیه و بهتون توصیه میکنم)

👈 کانال یوتیوب Golang Dojo (از این کانال برای یادگیری مباحث پیشرفته تر استفاده کنید )

🆔 @MdDaily
3❤‍🔥2🔥1
Audio
🎧 پلی لیست #موزیک مناسب برای زمان تمرکز و کاهش استرس

🎵 Tracklist

► 00:00 Ekloe - Vault

► 06:02 Throwy, Infinitum - One Day

► 10:06 Liam Thomas - Aquila

► 13:03 Victoriya - Symmetry

► 15:50 Fotiz Liberis - Lost

► 19:48 Vigo - Haze

► 23:38 Rhekluse - No Means To An End

► 27:28 Oscuro, Riversilvers - Crying All The Time (Instrumental Mix)

► 31:16 Autumn Glow, Auel - Your Loving

► 32:53 Arnyd - Beginning

► 36:34 Oscuro - Devotion

► 39:52 VonnBoyd - Smoke

► 44:05 Liam Thomas - Supernova

► 47:58 Oscuro - Into The Sun

► 51:10 4th Front - Decent

► 55:19 Arnyd - Paradox

► 58:58 Oscuro, Liam Thomas - Orion

► 1:02:10 Victoriya - Ocean Sky

► 1:07:54 Unbrok - Chasm

► 1:11:14 Outlier - Forgive

🆔 @MdDaily
🔥8
Md Daily
معرفی Pi این پروژه خودش رو یه هوش مصنوعی شخصی معرفی میکنه و باهاش میتونید مثل یک دوست صحبت کنید، ایده های جدید بگیرید، بازی کنید، برنامه ریزی کنید و... یه قابلیت جالب متن به گفتارم با صدای طبیعی داره که ازش میتونید برای تقویت زبان انگلیسی استفاده کنید.…
💫 رقیب جدید ChatGPT در موبایل؛ نسخه اندروید اپلیکیشن چت‌بات هوش مصنوعی Pi منتشر شد

🔹استارتاپ Inflection AI اعلام کرد که چت‌بات هوش مصنوعی Pi اکنون در قالب یک اپلیکیشن رایگان برای اندروید در دسترس قرار گرفته است. این استارتاپ توسط «مصطفی سلیمان»، هم‌بنیان‌گذار دیپ‌مایند و «رید هافمن»، هم‌بنیان‌گذار لینکدین تأسیس شده است. این هوش مصنوعی با رابط کاربری ساده و سریع خود، همچنین با قابلیت چت از طریق تماس صوتی همزمان، رقیبی برای ChatGPT محسوب می‌شود.

🔹براساس ادعای استارتاپ Inflection AI، این هوش مصنوعی به مرور و با چت‌کردن بیشتر، با شخصیت شما آشنا می‌شود و مطابق سلیقه و اطلاعاتی که از شما کسب می‌کند، مکالمه را پیش می‌برد.


<Digiato>

🔗 دانلود نسخه اندروید



🆔 @MdDaily
👍2
معرفی زبان برنامه نویسی V (ساده، سریع، ایمن، کامپایلی)

اولین نسخه ی این زبان دوست داشتنی سال 2019 عرضه شد و طبق گفته ی توسعه دهنده ی این زبان خیلی شبیه زبان Go طراحی شده و اگه شما Go رو بلدید پس V رو هم بلدید :)

زبان V برپایه ی زبان V ایه و با زبان V نوشته شده😄 با استفاده از این زبان میتونید: برنامه های سیستمی، بکند ، بازی ، برنامه های گرافیکی چند سکویی و اپ موبایل بنویسید یا توی embedded و علوم داده و ... ازش استفاده کنید

ویژگی هایی که این زبان رو متمایز میکنه:

👈 به اندازه ی C سریعه

👈 خروجی برنامه هاش کم حجمه مثلا خروجی اجرایی یه یه وب سرور که برای اجراش نیاز به هیچ دپندسی نیست اندازش حدودا 250 کیلوبایت میشه

👈 میتونید کل برنامه ای که با C نوشتید رو به V تبدیل کنید

👈 از Hot code reloading پشتیبانی میکنه و بدون نیاز به کامپایل مجدد میتونید تغییرات رو ببینید

👈 کتاب خانه های گرافیکی قدرتمندی برای رندر دو بعدی و سه بعدی داره

👈 یه کتاب خانه ی قدرتمند برای ساخت GUI داره

👈 از خروجی چند سکویی پشتیبانی میکنه مثلا میتونید روی لینوکس برای ویندوز و مک خروجی بگیرید

👈 میتونید به عنوان Bash هم ازش استفاده کنید

👈 مستندسازی خود کار از کد شما

👈 پشتیبانی از WASM

👈 توی خودش فریم ورک و ORM برای ساخت بکند داره

👈 و ...

برنامه ی Hello world در V:
fn main() {
println('Hello, ${area} developers!')
}


🔗 وبسایت پروژه
🔗 گیت هاب پروژه

پ ن:
این زبان هنوز در مرحله ی Beta هست و استفاده ازش توی پروژه های واقعی پیشنهاد نمیشه :) ولی یادگیریش برای فان جالبه. اگه دوست داشتید و خواستید یه آخر هفته برای یادگیریش وقت بذارید میتونید از این مستندات استفاده کنید.

🆔 @MdDaily
👍2
زبان های برنامه نویسی چطوری خودشون با خودشون نوشته میشن و توسط خودشون کامپایل میشن؟

شاید براتون سوال شده باشه که زبان هایی مثل V, Golang ,zig,rust و ... چطوری خودشون توسط خودشون نوشته میشن یا بهتر بگیم اول مرغ بوده یا تخم مرغ؟

پس با این پست از Md Daily همراه باشید.

بهتره برای پاسخ دادن به این سوال بریم عقب تر. انقدر عقب که برگردیم به زمان اسمبلی :)

کار اصلیه کامپایلر اینکه سورس کد رو به یک زبان کامپیوتری دیگه ای مثل machine code تبدیل کنه. هر برنامه‌ای که به یک زبان برنامه‌نویسی سطح بالا نوشته شده باشه، قبل از اجرا باید به کد ماشین ترجمه بشه.

برنامه های کامپیوتر اولیه عمدتاً به زبان اسمبلی و قبل از اسمبلی هم مستقیماً به کد ماشین نوشته می‌شدن.

خب به مرور زمان یه نیازی به وجود اومد که برنامه ها سطح بالاتر نوشته بشن و توسط کامپایلر ها برای سیستم های مختلفی ترجمه بشن. تا بالاخره بعد از کلی نواوری و ایده از سال 1942 تا 1960 اولین زبان برنامه نویسی سطح بالا یعنی COBOL روی دوتا کامپیوتر مختلف کامپایل و اجرا شد (جزئیات بیشتر در این مقاله)


خب حالا چرا این تاریخچه برای ما مهم بود؟

برگردیم به مثال اول مرغ بوده یا تخم مرغ یا بهتر بگیم پارودکس علیت. خب قبل از اینکه زبانی بتونه خودش با خودش نوشته بشه ما به یه زبان مادر نیاز داریم و از تاریخچه ی کامپیوتر ها میشه فهمید که بدون بوجود اومدن اسمبلی کامپایلری هم بوجود نمیومده. توی علوم کامپیوتر به فرایندی که توش یک کامپایلر (یا اسمبلر) به زبان برنامه نویسی هدف نوشته میشه که قرار توسط همون کامپایل بشه. میگیم بوت‌استرپینگ (Bootstrapping)

مراحل بوت‌استرپینگ:

👈 نوشتن یک نسخه اولیه از کامپایلر در یک زبان دیگر، مانند C یا C++.
👈 استفاده از نسخه اولیه کامپایلر برای کامپایل کردن یک نسخه جدید از کامپایلر، اما این بار در زبانی که کامپایلر برای آن طراحی شده.
👈 تکرار مرحله 2 تا زمانی که کامپایلر بتونه خودش رو کامپایل کنه.

💡 مثال بوت‌استرپینگ:

برای مثال، فرض کنید میخوایم کامپایلر زبان برنامه‌نویسی جدیدی به نام MdLang رو بنویسیم. اولین قدم اینکه یک نسخه اولیه از کامپایلر رو در زبان C یا C++ بنویسیم. این نسخه اولیه میتونه بسیار ساده باشه و تنها شامل حداقل قابلیت‌های لازم برای کامپایل کردن کد MdLang باشه.

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

این فرآیند رو می تونیم تا زمانی که کامپایلر بتونه خودش رو کامپایل کنه تکرار کنیم.

💫 نتیجه گیری:

پس اگه خیلی خلاصه بخوایم بگیم و نتیجه گیری کنیم. بعد از اومدن زبان اسمبلی و شکل گیری ایده ی اولیه اولین کامپایلر ها با استفاده از تکنیک بوت‌استرپینگ و بوجود اومدن زبان هایی مثل C . برپایه ی این زبان ها کامپایلر هایی برای زبان های جدید نوشته شدن.

یعنی توی همون مثال MdLang. اول میایم با MdLang یه کامپایلر می نویسیم ولی چیزی نیست که کامپایلش کنه پس در نتیجه میایم با زبان های موجود یه کامپایلر مینویسیم تا بتونه کامپایلری که با MdLang نوشته شده رو تبدیل به کد ماشین کنه از اینجا به بعد ما کامپایلرمون که با MdLang نوشته شده و اجرا میشه رو داریم . پس می تونیم با همون دوباره کامپایلر جدید و پیشرفته تری که با MdLang نوشته میشه رو کامپایل کنیم و این چرخه تا جایی ادامه پیدا میکنه تا کامپایلر نهایی ما اماده بشه و زبان خودش با خودش نوشته بشه :)


🆔 @MdDaily
❤‍🔥3👌21🔥1