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
Media is too big
VIEW IN TELEGRAM
قسمت اول آموزشی از ساخت url shorten با میکرو سرویس

توی این قسمت سعی کردم مفاهیم رو از پایه توضیح بدم و یکم زمان آموزش زیاد شد :)

بیشتر از همه تجربه ی جالبی بود برای خودم ضبط این قسمت، چون اولین تجربم از ساخت محتوای آموزش ویدیویی بود و چیزای جالبی از کار با kdenlive و نحوه ی ساخت محتوا یاد گرفتم 🙂‍↕️

ببخشید اگه کموکاستی هایی هست، هر قسمت بهتر میشیم :)

🆔 @MdDaily
❤‍🔥12👍2🔥2🎉2👌1
This media is not supported in your browser
VIEW IN TELEGRAM
چرا نباید به بنچمارک ها اعتماد کنیم؟

چند وقته میبینم اول لینکدین و بعد توئیتر و تلگرام این سبک ویدیو ها از مقایسه ی سرعت زبان ها درحال نشر هستند. ولی نباید. معیارتون رو برای انتخاب زبان مناسب و حتی مقایسشون این سبک ویدیو ها بذارید. طرفدارای یه زبان میگن: "زبان X از زبان Y سریع‌تره!" آره بابا، یه سری تست و بنچمارک نشون میده که یه ذره سرعت اجرا یا مصرف حافظه تو زبونا فرق می‌کنه. ولی بیخیال، واسه 99 درصد برنامه‌ها این فرق‌ها مثه اینه که موقع کدنویسی جوراب قرمز بپوشی یا آبی! مهم معماری، الگوریتم و استراتژی بهینه‌سازیه که کارو راه میندازه. یه سیستم بد طراحی‌شده، چه با Rust نوشته بشه چه با Ruby، آخرش بد و ناکار آمد هستش. نکته ی دیگه که راجب این سبک مقایسه وجود داره اینکه دقیقا معلوم،نیست تحت چه شرایطی و با چه سیستمی طبق چه نوع پیاده سازی ای این تست ها گرفته شده. خلاصه که تا وقتی بنچمارک توسط خودتون با شرایط یکسان گرفته نشده خیلی اعتماد نکنید و معیارتون برای انتخاب و مقایسه زبان ها اینها نباشه :)

🆔 @MdDaily
👍16👌51
گیت (Git) یه شمشیر دولبس

یه روز توی یکی از پروژه‌هامون داشتم کار می‌کردم. سیستم CI/CD ما طوری طراحی شده بود که دو برنچ اصلی داشتیم:

develop: برای آپدیت‌های روی سرور دولوپ

main: برای آپدیت‌های روی پروداکشن


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

git merge develop

فکر می‌کردم که این دستور همه چیز رو درست می‌کنه، ولی بعد از چند روز که تغییرات رو اعمال کرده بودم و تسک‌ها تموم شده بودن، وقت مرج نهایی فرا رسید. و اینجا بود که مشکل شروع شد: کلی conflict وجود داشت.

چرا؟

از آنجایی که به جای مرج کردن با برنچ origin/develop (برنچ به‌روز موجود در مخزن GitHub) از برنچ local قدیمی استفاده کردم، کدها با یکدیگر تداخل پیدا کردند. دستور درست باید این بود:

git merge origin/develop

من به خاطر عادت استفاده از دکمه‌ی ↑ برای زدن آخرین دستور تایپ شده، به جای تایپ دوبارش🥲 به این تفاوت توجه نکردم.

راه‌حل چی بود؟

برای حل این مشکل، دوباره توی همون پروژه‌ها دستور درست مرج رو اجرا کردم و بعد از اون شروع به بازبینی دقیق تمام بخش‌های تحت تاثیر قرار گرفته و رفع conflict ها کردم. در این فرآیند هم از Goland و هم از VSCode استفاده کردم؛ ولی باید بگم که در VSCode کار با conflict ها خیلی راحت‌تر انجام می‌شه.

حتماً قبل از اجرای هر کامندی، از نحوه عملکرد اون مطمئن بشید. وقتی دقیقاً نمی‌دونید چه اتفاقی می‌افته، بهتره از اجرای اون خودداری کنید.

خب برای یادگیری git به صورت visual منابع باحالی وجود داره که پیشنهاد میکنم یه سری بهشون بزنید :

https://learngitbranching.js.org/

https://onlywei.github.io/explain-git-with-d3/

https://ohmygit.org/



---

مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
👍11❤‍🔥4🔥1😢1
چند وقتی بود داشتم Cursor و Windsurf و Github Copilot رو توی پروژه های پروداکشن تست میکردم ببینم کدومشون واقعا باعث افزایش بهره وری میشه و درصد خطای کمتری داره که دیدم ۱۵ ساعت پیش گیت هاب کوپایلت یه آپدیت داده و میخواستم راجب ویژکی های خوبی که اینا دارن ولی Copilot نداره بگم که کلا زمین بازی عوض شد :)

قبل از اینکه برم سراغ آپدیت کوپایلت خیلی خلاصه بریم ببینیم هر کدوم از اینا با چه هدف و شعاری ایجاد شدن.

جزو اولین AI Code Editor هایی که منتشر شد cursor بود که با شعار افزایش بهره وری اومد و زمانی که کوپایلت هنوز نسخه ی رایگان ارائه نکرده بود، پلن رایگان داشت. از نظر قیمتی اشتراک Pro این ادیتور ماهیانه ۲۰ دلار هست.

یکی از اکستنشن های محبوب AI برای برنامه نویسی codeium بود که یکی از رقبای کوپایلت حساب میشه و به تازگی ادیتور جدید خودش رو به نام Windsurf با شعار اولین agentic IDE منتشر کرده که ویژگی منحصر بفردش این بود که وقتی بهش task رو میدادی براش مرحله تعریف میکرد مثلا توی تست های من وقتی بهش گفتم به این پروژه ی بکند Go ای که دارم یه endpoint جدید اضافه کن که ویژگی خروجی اکسل رو اضافه کنه، اول رفت چک کرد ببین پکیج مورد نظر رو نصب دارم یا نه بعد پکیج رو نصب کرد بعد که مطمئن شد پکیج نصبه رفت شروع کرد فایل های پروژه رو خوندن و جاهایی که نیاز به تغییر داشتن رو تغییر داد و مرحله به مرحله برا خودش task تعریف میکرد و میرفت جلو. از مدل های مختلفی هم پشتیبانی میکنه و با پرداخت ۱۵ دلار در ماه بهتون دسترسی به مدل های GPT-4o, Claude Sonnet , DeepSeek-R1, o3-mini رو میده.


اما! همه ی این ها تا قبل از اپدیت جدید کوپایلت بود. توی آپدیت جدید گیت هاب کوپایلت اومده حالت Agent ای که توی Windsurf رو اضافه کرده.
الان مثل cursor و Windsurf از ورودی تصویر هم پشتیبانی میکنه .

یه حالتی توی cursor و Windsurf وجود داشت به نام Next Edit Suggestions این چیکار میکرد؟
مثلا شما یه متغیر یا استراکچریو تعریف نکرده بودی میومدی ازش استفاده میکردی که بعدا تعریفش کنی اینا میفهمیدن و بهت میگفتن اگه میخوای بیا برات تعریفشون کنیم یا مثلا از فلان چیز استفاده کردی ولی import اش نکردی بیا قبل از اینکه تو بخوای انجامش بدی خودم برات import کنم . الان این ویژگی توی آپدیت جدید کوپایلت هم اضافه شده.


و در نهایت ویژگی Prompt Files اضافه شده که شما میتونید یه فایل با فرمت Markdown بنویسید و توش دقیقا به کوپایلت بگید چیکار کنه تا بتونید بهترین نتیجه رو بگیرید.

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

ویدیوی آپدیت کوپایلت :
https://youtu.be/C95drFKy4ss?si=fddJFLYfJ2oM7sed


طرف کامنت گذاشته بود الان همه ی برنامه نویس ها تبدیل به code reviewer شدن 😂

---

مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
😁6👍3
Md Daily
GIF
+ دواپسمون همش داره ماینکرفت بازی میکنه

- اونایی که میدونن: 💀


داکر یه پروژه ی باحال داره به نام Dockercraft که میتونید مستقیم توی ماینکرفت کانتینر های داکرتون رو مدیریت کنید :)

اما چطوری کار میکنه؟

اومدن از Cuberite، یک سرور ماینکرفت متن‌باز و نوشته‌شده با C++، برای پیاده‌سازی Dockercraft استفاده کردن. این سرور از پلاگین‌های Lua پشتیبانی میکنه، بنابراین یک پلاگین اختصاصی برای تعامل با Docker توسعه دادن.

🔹 اجرای عملیات در سمت سرور

کلاینت ماینکرفت بدون تغییر باقی میمونه و تمام پردازش‌ها سمت سرور انجام میشه. پلاگین Lua که در مسیر world/Plugins/Docker قرار داره، یک تب مدیریتی در WebAdmin سرور ایجاد میکنه:

Plugin:AddWebTab("Docker", HandleRequest_Docker)

این باعث میشه درخواست‌های POST به مسیر http://127.0.0.1:8080/webadmin/Docker/Docker ارسال بشن.

🔹 اتصال به Docker Remote API

رویدادهای داکر از طریق سرویس Goproxy که با Golang نوشته شده پردازش شده و به پلاگین Lua منتقل میشن. این سرویس درخواست‌ها را به سرور ارسال می‌کنه:

func MCServerRequest(data url.Values, client *http.Client) {
req, _ := http.NewRequest("POST", "http://127.0.0.1:8080/webadmin/Docker/Docker", strings.NewReader(data.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.SetBasicAuth("admin", "admin")
client.Do(req)
}

🔹 اجرای دستورات از طریق ماینکرفت

پلاگین Lua میتونه از طریق os.execute() با این سرویس ارتباط برقرار کنه. مثلاً موقع ورود یه بازیکن، اطلاعات کانتینرهای داکر بروزرسانی میشن:

function PlayerJoined(Player)
r = os.execute("goproxy containers")
end

این روش امکان مدیریت کانتینرهای Docker را مستقیماً از داخل ماینکرفت فراهم می‌کنه


گیت هاب پروژه:

🔗 https://github.com/docker/dockercraft

---

مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
❤‍🔥10🤣3👍2🤯2
عشق میاد و میره، اما git commit برای همیشه می‌مونه!

#ولنتاین_برنامه_نویس

🆔 @MdDaily
👍10❤‍🔥22😁2😢21👌1
دانشگاه شاهکاره

دارم با استاد بحث میکنم که BSD هم سیستم عامله و قبول نمیکنه میگه نه نرم افزار کاربردی برپایه ی لینوکسه

بعد خودش لینوکس رو چطوری نوشته؟

Linox

🆔 @MdDaily
🤣22😁1
Forwarded from Python Hints
این موضوع واقعاً گرد ناامیدی نیست، یک نیم‌نگاه به آمار اخراج‌ها یا لیست مشاغلی که دیگه نیروی جونیور نمی‌گیرند بندازید (البته بعضی‌ها زدن جونیور ولی دقت کنید لیست مهارت‌ها رو ببینید.)

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

این‌ها تسک‌های جونیور بود و سنیور نهایتاً review می‌کرد؛ الان تمام اینکارهارو یک الگوریتم هوش مصنوعی می‌کنه، سنیور در لحظه مسئله رو می‌شکنه و از AI می‌پرسه کد رو تحویل می‌گیره و کپی و تمام ...
همین مسیر رو ادامه میده و در نهایت حالات مختلف تست نویسی که به ذهنش میرسه رو هم دونه دونه از AI می‌خواد بنویسه بازم دابل چک می‌شه و تمام.

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

حالا شما بیا به من بگو من جونیور هستم، جنگو و جنگو رست و پستگرس رو بلدم.
اولین سوالاتی که توی ذهن من میاد:
سلری چطور ؟ کار با redis چی ؟ تست نویسی چطور ؟ پروفایلینگ چی میشه پس ؟ لاگ نویسی خوب چی ؟ (دوتا پست قبلتر یک مشکل رو مثال زدم و قدیما یک آموزش گذاشتم) و ...

اگر شما نتونی اینکارها رو انجام بدی و نشناسی؛ خب تمام مدل‌های AI از شما بهتر کد می‌زنند و وقت کمتری هم میگیره اگر قرار باشه من هی برم سراغش و بهش بگم چیکار کنه و چطوری بزن و ...


دو گروه اینجا بهشون بر میخوره (توی آمار‌های مختلف هم همین رو نشون داده؛ به دیتاهای آمریکای شمالی نگاه کنید) :

۱- پکیج فروش‌ها: دیگه پکیجی که فقط جنگو یاد بده بدون پروژه‌ای که استاندارد باشه بی‌ارزش می‌شه و کاسبی خراب (این نیروها استخدام نمی‌شوند و کمتر کسی سراغ این آموزش‌ها میره)

۲- افرادی که شغل برنامه‌نویسی رو برای راحتی استفاده کردند؛ جدی میگم بسیار شنیدم که می‌گن بابا کار شما که چیزی نیست ۸ ساعت پشت کامپیوتر می‌شینی بعدم میری خونه ۱۲ ساعت عشق و حال و پارتی و ....

والا ما یک مهمونی هم میخوایم بریم باید ۷ روز قبل خبر داشته باشیم که بتونیم اون ۴-۵ ساعت مهمونی رو توی ۷ روز جبران کنیم تسک عقب افتاده نداشته باشیم.

چرا اینارو مجدداً اینجا می‌گم:

من از آموزش دادن به کسی سودی نمی‌برم، هرکسی هم با من کار کرده می‌دونه تمام دانشم تمام وقت در دسترس تمام نیروهای زیردستم هست، هیچ ترسی ازینکه کسی جام رو بگیره ندارم و ازین موضوع و رشد کردن نیروهام بسیار لذت می‌برم.

برای همین بجای اینکه بگم آقای X خانم Y بیاید برنامه‌نویسی یاد بگیرید ماهی ۲۰۰ میلیون درآمد دارید (دیدی اینو میگه بعد پکیج آموزشی ۳۰۰ هزارتومنی میذاره) میگم این مسیر سختی‌هاش زیاد شده، دیگه فقط با سینتکس یاد گرفتن نمی‌تونید شغل پیدا کنید، کسی که الان شروع می‌کنه از صفر حداقل ۲ سال وقت می‌ذاره. اگر قرار نیست جدی بگیرید برنامه‌نویسی رو پیشنهاد می‌کنم برید دنبال کار مورد علاقتون.

مکانیک - برق کار - آشپز - باریستا و ... همگی مشاغل کاملاً قابل احترام هست و توی ۲ سال وقتی علاقه‌ هم باشه قطعاً موفق تر خواهید بود.


در نهایت، این متن باید به شمایی که برنامه‌نویسی رو انتخاب کردید انگیزه بده که برنامه‌نویسی رو جدی بگیرید و از وقت اینستاگرام و پارتی و ... بزنید و روی تخصص تمرکز کنید.
اگر نه که رشته یا تخصص رو اشتباه انتخاب کردید.
🔥5👍4👏1👌1
#میم

قبل و بعد یادگیری برنامه نویسی:

🆔 @MdDaily
🤣15👍6😁2🔥1
به طور کلی System Design چیه؟

طراحی سیستم یا System Design، فرآیند برنامه‌ریزی و ایجاد ساختاری برای یک سیستم نرم‌افزاری یا سخت‌افزاریه که بتونه نیازهای مشخصی رو برآورده کنه. این فرآیند شامل تعیین معماری سیستم، اجزا، نحوه‌ی ارتباط بین اون‌ها و تکنولوژی‌های مورد استفاده است.

چرا باید System Design رو یاد بگیریم؟

1. حل مسائل پیچیده: در پروژه‌های بزرگ، طراحی سیستم کمک می‌کنه تا با تقسیم مسئله به بخش‌های کوچکتر، راه‌حل‌های مؤثرتری پیدا کنیم.

2. بهینه‌سازی منابع: طراحی مناسب سیستم باعث می‌شه از منابعی مثل زمان، هزینه و نیروی انسانی بهینه استفاده کنیم.

3. مقیاس‌پذیری: با طراحی درست، سیستم می‌تونه با افزایش کاربران یا داده‌ها به‌خوبی سازگار بشه.

4. ارتباط بهتر تیمی: طراحی شفاف سیستم، فهم مشترکی بین اعضای تیم ایجاد می‌کنه و همکاری رو بهبود می‌ده.

5. آمادگی برای مصاحبه‌های شغلی: بسیاری از شرکت‌ها در مصاحبه‌ها سوالاتی درباره‌ی طراحی سیستم می‌پرسن.

اما System Design شامل چه مؤلفه‌هایی میشه؟

1. معماری سیستم (System Architecture): ساختار کلی سیستم و نحوه‌ی تعامل اجزا با هم.

2. مقیاس‌پذیری (Scalability): توانایی سیستم در مدیریت افزایش بار کاری و تعداد کاربران.

3. توازن بار (Load Balancing): توزیع متعادل ترافیک بین سرورها برای جلوگیری از بارگذاری بیش از حد.

4. ذخیره‌سازی داده‌ها (Data Storage): انتخاب نوع پایگاه داده و طراحی ساختار داده‌ها.

5. کشینگ (Caching): ذخیره‌سازی موقت داده‌ها برای افزایش سرعت دسترسی.

6. مدیریت تراکنش‌ها (Transaction Management): اطمینان از اجرای صحیح و کامل تراکنش‌ها.

7. امنیت (Security): حفاظت از داده‌ها و سیستم در برابر تهدیدات.

8. مانیتورینگ و لاگینگ (Monitoring and Logging): نظارت بر عملکرد سیستم و ثبت رویدادها.

9. پشتیبان‌گیری و بازیابی (Backup and Recovery): تدوین راهکارهایی برای حفظ و بازیابی داده‌ها در صورت بروز مشکل.

10. تست و ارزیابی (Testing and Evaluation): انجام تست‌های مختلف برای اطمینان از عملکرد بهینه سیستم.

توی منابع یادگیری سیستم دیزاین:

برای آشنایی با مفاهیم و مقدمات ویدیوی یک ساعت Learn System Design از freecodecamp:
🔗 https://www.freecodecamp.org/news/learn-system-design-principles/

مستندات متنی و رودمپ ها :

🔗 https://www.karanpratapsingh.com/courses/system-design

🔗 https://www.geeksforgeeks.org/complete-roadmap-to-learn-system-design/

خبر نامه ها و وبلاگ ها :

🔗 https://www.quastor.org/

🔗 https://blog.quastor.org/

🔗 https://blog.bytebytego.com/
کانال های یوتیوب:

🔗 https://www.youtube.com/ByteByteGo

🔗 https://www.youtube.com/c/SystemDesignInterview

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


---

مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
👍4🔥3👏1
This media is not supported in your browser
VIEW IN TELEGRAM
با معرفی شدن Claude 3.7 Sonnet به گیت هاب کوپایلت هم اضافه شد ولی به نظر فعلا برای مشترکین pro فعال شده‌.

🆔 @MdDaily
👍1
راز موفقیت WinRAR: چطور با دوره آزمایشی بی‌پایان، پول درمیاره؟

نرم‌افزاری که بهمون یه دوره آزمایشی ۴۰ روزه میده، ولی بعدش می‌تونیم تا ابد با زدن دکمه "بستن" روی پاپ‌آپ‌ها ازش رایگان استفاده کنیم. اما نکته شگفت‌انگیز اینجاست که این شرکت با همین روش عجیبش تونسته سال گذشته ۲۱ میلیون دلار درآمد داشته باشه! حالا بیاید ببینیم چطور این کار رو کرده.

استراتژی منحصر به فرد WinRAR

این نرم افزار از یه مدل لایسنسینگ استفاده میکنه که همیشه اجازه دسترسی به آزمایشی دائمی اپ رو میده . تو این روش، بعد از ۴۰ روز دوره آزمایشی، نرم‌افزار همچنان کار می‌کنه و هیچ محدودیتی برای کاربرا نمی‌ذاره. این شرکت به کاربرا اعتماد داره که خودشون برای حمایت از نرم‌افزار لایسنس بخرن. این استراتژی باعث شده WinRAR به یه ابزار معروف تبدیل بشه و کاربراش به ۵۰۰ میلیون نفر برسن. این روش همچنین به بازاریابی ویروسی (Viral Marketing) کمک کرده؛ کاربرایی که از نرم‌افزار راضین، اونو به بقیه پیشنهاد میدن و این یعنی رشد طبیعی از طریق تبلیغات دهان به دهان (Word-of-Mouth Promotion). پس یعنی در آمد winrar از طریق کاربران رندومی که اونو میخرن تامین میشه؟

جواب کوتاه: نه

جواب بلند تر:

منبع اصلی درآمد: شرکت‌ها

در حالی که کاربرای عادی می‌تونن تا ابد از نسخه رایگان استفاده کنن، درآمد اصلی WinRAR از فروش به شرکت‌ها (B2B Sales) تأمین می‌شه. شرکت‌های بزرگ مثل آمازون یا مایکروسافت نمی‌تونن ریسک استفاده از نرم‌افزار بدون لایسنس رو بپذیرن، چون ممکنه با مشکلات قانونی یا حتی آسیب به اعتبارشون مواجه بشن. برای همین، این شرکت‌ها ترجیح میدن لایسنس بخرن. WinRAR هم با قیمت مناسب (۳۰ دلار برای هر لایسنس) و تخفیف‌های حجمی (Volume Discounts) برای خریدهای عمده، خودشو به گزینه‌ای جذاب برای کسب‌وکارها تبدیل کرده. این جریان درآمدی پایدار، بدون فشار آوردن به کاربرای عادی، WinRAR رو سرپا نگه داشته. پس در اصل در آمد winrar از طریق شرکت های رندومی که اونو میخرن تامین میشه :)

تبلیغات و ترفندهای نرم‌افزاری

حالا WinRAR تو نسخه موبایلش از تبلیغات استفاده می‌کنه و کاربرا می‌تونن با خرید لایسنس، تبلیغات رو حذف کنن. این یه مدل رایج به اسم Freemium هست، یعنی نرم‌افزار به صورت رایگان ارائه می‌شه، ولی برای حذف محدودیت‌ها یا تبلیغات، باید پول پرداخت بشه. از طرف دیگه، پاپ‌آپ‌هایی که بعد از ۴۰ روز ظاهر می‌شن و تمومی هم ندارن، آزاردهنده هستن. این ترفند باعث می‌شه بعضی کاربرا برای خلاصی از این یادآوری‌ها، تصمیم به خرید لایسنس بگیرن.

---

مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
👍9❤‍🔥6🔥1👏1
معمولا از این کارا نمیکنم یعنی کلا نمیکنم ولی از سر کنجکاوی دیدم یکی از کانال های تلگرامی یه تبلیغی گذاشته: آموزش رایگان در آمد دلاری با هوش مصنوعی.

کنجکاو شدم ببینم دقیقا چی میخواد آموزش بده

وارد کانالش شدم یه کانال پرایوت بود که ممبر هاش از 10k بعد از یه مدت رسیدن به 34k و هر پستی هم حداکثر 5k ویو میخورد.

تا اینجا و در شروع فعالیت مدرس شروع به ارسال ویس کرد که میخوام یه چیزی بهتون آموزش بدم که ۲ هزار دلار با هوش مصنوعی توی ۳۰ روز در بیارید و فرصتیه که فقط یک بار در خونتون رو میزنه.

پ ن:
د آخه شیر پاک خورده خود سم آلتمن نمیتونه ادعا کنه open ai ماهی ۲ هزار دلار داره سود میده همش تو ضررن

بگذریم.

بعد از گذشت یک هفته به مدت ۶ شب هر شب یه ویدیو آموزشی به نام دوره ی money master میذاشت که هر ویدیویی اش هم تقریبا ۴۰ دقیقه بود

مدرس کت و شلوار پوشیده به همراه یه گوشی آیفون، روی میز دلار و در یک لوکیشن باغ

هرچه همه کلاه برادران داشتن این عزیز یکجا داشت

حدس بزنید تو این ۶ قسمت چی یاد داد؟
.
.
.

درسته، هیچی :)))
عملا هیچییی، صرفا داشت نوار خالی پر میکرد و مدام تکرار میکرد که با هوش مصنوعی می تونید برید تمام پروژه های خارجی رو از سایتای فریلنسری بگیرید و لوگو و تیزر براشون تولید کنید. نهایت دمویی هم که انجام داد این بود که رفت توی کوپایلت یه لوگو ساخت. گفت ببینید این لوگو ۲۰۰ دلار قیمتشه xD

با کمی سرچ تونستم رد پای طرف رو تو شبکه های مجازی پیدا کنم.

سال ۲۰۲۰ فعالیتشو با آموزش های کپ کاتو در آمد با موبایل شروع کرده تا رسیدیم سال ۲۰۲۴ که اول فقط ابزار هوش مصنوعی معرفی میکرده بعد از یه جایی به بعد به ذهنش زده، عه چرا رویا فروشی نکنم رو موجی که راه افتاده؟

شاید بپرسید سرنوشت دوره ی money master چیشد؟

بعد از ۶ تا ویدیو نوار خالی پر کردن و ایجاد احساس نیاز به یک استاد هوش مصنوعی گفت یه دوره میخواد بذاره به نام money maker ظرفیتش ۱۰۰ نفره به قیمت ۴ و ۸۹۰

حدس بزنید چی میشه؟

قطعا ۱۰۰ نفر پیدا میشن که این دوره رو بخرن و من میگم حتی بیشتر.

مدرس نه ببخشید رویا فروش ما چیزی حدود ۵۰۰ میلیون یعنی با دلار ۹۰ تومن تقریبا ۶ هزار دلار در میاره که بهشون یاد بده چطوری ۲ هزار دلار در بیارن

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

برندینگ توی کار واقعا چیز مهمیه جدیش بگیرید

به قول یه سنیوریی میگفت:

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

---

خلاصه که این بار علاوه بر اینکه کنجکاو بمونید از ترفند های برندینگ به شیوه ی مثبتش الهام بگیرید :)


🆔 @MdDaily
1👍7👌3
یکی از اتفاق های خوبی که توی بازنویسی Typenoscript با Golang میوفته علاوه بر افزایش ۱۰ برابری سرعت خود تایپ اسکریپت، اینکه به زودی شاهد افزایش پرفورمنس زیادی توی تجربه ی توسعه هستیم و پروژه هایی مثل Vscode و Playwright که با تایپ اسکریپت نوشته شدن خیلی سریع تر از قبل کامپایل میشن.

https://devblogs.microsoft.com/typenoscript/typenoscript-native-port/

🆔 @MdDaily
👍7🔥2👌1😐1
داشتم مقاله It’s Not A.I. — Junior Developers Have Always Struggled to Code از Walter G. رو میخوندم و دیدگاه خیلی جالبی داشت به هوش مصنوعی. توی مقاله میگه :

این هوش مصنوعی نیست — دولوپرهای تازه‌کار همیشه با کد زدن مشکل داشتن

اخیراً هوش مصنوعی رو مقصر کدنویسی بد تازه‌کارها می‌دونن، ولی این آدم با ۲۰ سال تجربه می‌گه تازه‌کارها همیشه مشکل داشتن.

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

قبل از دوران هوش مصنوعی


قبل استک اورفلو، کتابای سنگین، یادداشتای ناقص و انجمنایی داشتیم که جواب گرفتن روزها طول می‌کشید. سال ۲۰۰۳، این روش کار بود. و بیشتر اوقات، کار راه میوفتاده. قرار نبود یه شبه بشیم برنامه‌نویس شماره یک دنیا، ولی قرار بود دربارهٔ الگوریتم‌ها، ساختمان‌های داده، سیستم‌های عامل و یه کم هم SQL یاد بگیریم.

بعد استک اورفلو اومد — و حدس بزنید چی شد؟ همون انتقادهایی که الان به ابزارهای هوش مصنوعی می‌شه، به اون هم شد. می‌گفتن دولوپرها تنبل می‌شن. دانشگاه‌ها ممنوعش کردن. مردم می‌گفتن مهندس‌ها بدتر می‌شن، چون مجبور نیستن برای پیدا کردن جواب‌ها اینقدر تقلا کنن.

آیا تقلا کردنِ اجباری دولوپرهای بهتری می‌سازه؟
شاید. سخته بگیم.

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

معمولاً شرکت‌ها پروژه‌های ۲۰ میلیونی رو به تازه‌کار نمیدن.

آیا خوندن روزانهٔ استک اورفلو دولوپر بهتریش یا بدتر کرد؟. شاید جواب هر دو باشه.

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

هدف در نهایت تسلط به یه زبان برنامه‌نویسی نبود. هدف این بود که لیست کارهای هفتگی‌ رو تیک بزنن و امیدوار باشن که به اندازهٔ کافی خوب کار کردن.

نقش سنیور ها


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

اونا تجربه داشتن. با کد کارهایی کرده بودن که من نه توی دانشگاه ازم خواسته بودن و نه توی هیچ آموزشی. و وقتی نوبت کار واقعی می‌رسید، این چیزی بود که کم داشتم.

هنوز اولین باری رو یادمه که مجبور شدم از راه دور به یه سرور لینوکس لاگین کنم تا یه سری پارامترهای شبکهٔ مبهم رو برای مهاجرتِ یه وب‌سایت تنظیم کنم.

دو سال از شروع کارم می‌گذشت. من اصلاً تا حالا از راه دور به هیچی لاگین نکرده بودم. مخفف‌هایی که مدیرم به کار می‌برد، انگار یه زبان باستانی بودن. و تنها جواب من این بود: "اوکی، حله!".

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

و این الگو بارها توی سال‌های اول کارم تکرار شد.

در مواقع ضروری، سنیور با سرعت و توضیح کار رو انجام می‌داد.

خلاصه اینکه، چه از استک اورفلو استفاده کنید، چه از چت‌جی‌پی‌تی، کوپایلوت یا یه پست انجمن از سال ۲۰۰۱، همه‌شون یه چیزن. یه ابزارن برای کمک به شما که یه کاری رو انجام بدید.

یادگیری و تجربه واقعی از تکرار و راهنمایی کسی می‌آید که کار را انجام داده و راه رو بهتون نشون میده.

آیا هوش مصنوعی بیشتر ضرر می‌زنه یا کمک می‌کنه؟


جواب این سوال کاملاً بستگی به دولوپری داره که ازش استفاده می‌کنه و هدفش چیه.

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

و این هم مشکلی نداره.

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

فرق بین این دو تا چیه؟ تجربه. کنجکاوی. تمایل به یادگیری.

هوش مصنوعی جای تجربهٔ دنیای واقعی رو نمی‌گیره. به شما یاد نمی‌ده که چرا یه چیزی کار می‌کنه یا شما رو از یه کابوس دیباگ کردنِ ساعت ۲ صبح نجات نمی‌ده. و قطعاً جای مهندس ارشدِ کنار دستتون رو نمی‌گیره که بهتون نشون می‌ده کارها واقعاً چطوری انجام می‌شن.

پس آیا هوش مصنوعی ضرر می‌زنه یا کمک می‌کنه؟


این به ابزار بستگی نداره. این به دولوپر بستگی داره پس مثل همیشه کنجکاو بمونید :)


🆔 @MdDaily
👌13👍5
وای به حال روزی که سرورای سرویس پزشک و مشاور اسنپم دیگه healthy نباشن :)

🆔 @MdDaily
🤣73😁11
🎶 میخواستم برای فان و بدون استفاده از AI و یا راهنمایی های موجود یه کلاینت SoundCloud با 🚀 بنویسم. پس Burp Suite عزیز رو باز کردم و شروع کردم به دیدن رکوئست هایی که داره ارسال و دریافت میشه. خبر خوب این بود که همه چیز به صورت api کار میکرد و نیازی به استفاده از چیزی مثل selenium نبود ولی توی تمام درخواست هایی که نیاز به احراز هویت داشت یه چیزی مشترک بود و اون چیزی نبود جز client_id. ولی یه نکته ای وجود داشت. توی هیچ کدوم از درخواست هایی که دریافت میشد چیزی نبود که بره client_id رو بگیره، پس احتمال دادم که client_id توی یکی از فایل های ,js مخفی شده. شروع کردم به باز کردن تک تک لینک های .js ای که توی html لود شده ی صفحه ی soundcloud.com وجود داشتن و بوم :)

چیزی که ما میخواستیم تو یکی از فایل های .js به دو صورت زیر مخفی شده بود.

"client_id=f1TFyuaI8LX1Ybd1zvQRX8GpsNYcQ3Y5" 
client_id:"f1TFyuaI8LX1Ybd1zvQRX8GpsNYcQ3Y5"


حالا وقتش بود که این فرایند رو اتوماتیک کنم. عید وقت خوبیه که اگه هنوز regex بلد نیستید، یاد بگیرید (وبسایت https://regexlearn.com/ و ریپو ی https://github.com/ziishaned/learn-regex که ترجمه فارسی هم داره و در نهایت ویدیوی https://www.youtube.com/watch?v=sXQxhojSdZM منابع خوبی برای یادگیری هستن).

سناریو ساده بود یه کد go بنویسم که بره محتوای soundcloud.com رو بگیره لینک های .js رو ازش استخراج کرده و شروع کنه توی فایل های جاوا اسکریپت با regex دنبال پترن client_id بگرده. می تونید کد رو از اینجا ببینید:

https://gist.github.com/mdpe-ir/709c3ca362fa0c2a30fa71e46ddd1f96

ولی بریم برای توضیح بخش های مهمش:

✔️ تابع fetchHTML:

func fetchHTML(url string) (string, error) {
resp, err := http.Get(url)
if err != nil {
return "", fmt.Errorf("error fetching URL %s: %v", url, err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
return string(body), nil
}


این تابع یه درخواست HTTP GET به آدرس https://soundcloud.com/ می‌فرسته و کل محتوای HTML صفحه رو برمی‌گردونه.

نکته: اینجا defer resp.Body.Close() باعث می‌شه بعد از تموم شدن کار، اتصال بسته بشه تا منابع سیستم آزاد بشه.

✔️ استخراج لینک‌ها و کدهای جاوااسکریپت (extractJSSources)

این تابع HTML رو پارس می‌کنه و همه تگ‌های <noscript> رو پیدا می‌کنه. دو نوع جاوااسکریپت رو جدا می‌کنه: لینک‌های خارجی (با src) و کدهای داخلی (inline).
از پکیج golang.org/x/net/html برای پارس کردن HTML استفاده می‌کنه. لینک‌های نسبی رو با resolveURL به آدرس کامل تبدیل می‌کنه و فقط فایل‌هایی که به .js ختم می‌شن رو نگه می‌داره.

✔️ گرفتن محتوای فایل‌های جاوااسکریپت (fetchJSContent)

برای هر لینک .js که پیدا شده، یه درخواست HTTP می‌فرسته و محتوای فایل رو می‌گیره.

✔️ و در نهایت جستجوی client_id با Regex برای (findClientIDs)

پکیج regexp استفاده می‌کنه. دو الگو رو چک می‌کنه

برای فرمت پارامتری:
client_id=([A-Za-z0-9]{32})



برای فرمت object مانند:
client_id\s*:\s*["']([A-Za-z0-9]{32})["']


نکته: [A-Za-z0-9]{32} یعنی دنبال یه رشته ۳۲ کاراکتری از حروف و اعداد می‌گرده.

جمع‌بندی و نمایش نتیجه (main)

همه مراحل رو اجرا می‌کنه، client_idها رو جمع می‌کنه، تکراری‌ها رو حذف می‌کنه و چاپ می‌کنه.

توی تست هام متوجه شدم که هر client id حدودا ۷ روز معتبره. میشه یه cron job نوشت که طی یه مدت مشخص اجرا بشه و client id رو اپدیت کنه.

بعد از اینکه client_id رو پیدا کردیم، حالا می‌تونیم با استفاده ازش به APIهای SoundCloud درخواست بزنیم. برای این کار، من تصمیم گرفتم یه درخواست به endpoint سرچ بزنم تا یه خواننده پیدا کنم و بعد برم لیست موزیک‌هاش رو بگیرم. بیایم اینو قدم به قدم پیاده کنیم.

یه API داره که می‌تونیم با استفاده ازش یه خواننده رو جستجو کنیم. طبق درخواست‌ها تو Burp Suite یه endpoint سرچ چیزی شبیه اینه:

برای جستو در کاربران:
GET https://api-v2.soundcloud.com/search/users?q={query}&client_id={client_id}


برای جستجوی کلی :
GET https://api-v2.soundcloud.com/search?q={query}&client_id={client_id}


حالا فقط کافی بود برای گرفتن لیست موزیک های خواننده :
GET https://api-v2.soundcloud.com/users/{user_id}/tracks?client_id={client_id}


به عنوان مثال این اندپوینت لیست موزیک های Safir رو بر میگردونه:
https://api-v2.soundcloud.com/users/1016216608/tracks?client_id=f1TFyuaI8LX1Ybd1zvQRX8GpsNYcQ3Y5


حالا که این کار رو کردیم، می‌تونیم کلاینت رو گسترش بدیم، مثلاً یه رابط کاربری ساده باهاش بسازیم یا قابلیت دانلود ترک‌ها رو اضافه کنیم:)
---

مثل همیشه کنجکاو بمونید :)

🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
1👌881
سلام سلام 💖

اول از همه 🎆🎆🎆🎆🎆. سالی پر از اتفاقات خوب و پر از Notification's واریزی💸 و از همه مهم تر حال خوب و سلامتی به همراه باگ 🪲 های کمتر براتون آرزو میکنم :)

امیدوارم وقتی آخر سال ۱۴۰۴ رسید به لیست کار هاتون که نگاه می کنید همه ی هدف هاتون رو تیک زده باشید

تقریبا سه سال پیش بود که یه گروهی شیش نفره با دوستام داشتیم و خب هنوزم داریم و توی گروه مقالاتی که میخوندم و برام جالب بود رو مینوشتم بعد گفتم خب چرا براش یه کانال نزنم و عمومی ترش نکنم ؟ روزی که این کانال رو با هدف انتشار چیزایی که بلدم و میخونم زدم (۵ آذر ۱۴۰۱) اولین عضو های کانال بچه های همون گروه بودن و الان به لطف شما عزیزان و در کنارتون خانوادمون روز به روز بزرگتر شده و از همتون ممنونم ❤️

پ ن :
دوستان از چند روز قبل تذکر دادن با ۴۰۴ شوخی نکنم. منم گفتم حله با ۴۰۳ شوخی میکنم. توی ۴۰۳ همه چیز forbidden، پارتنر پیدا نکردم، ۴۰۴ هم که باهاش شوخی نمیکنیم ایشالا همین جمع ۴۰۵ .


ارادتمند شما
ماهان

---

امسال بیشتر از پارسال کنجکاو باشید :)

🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
1092
بعد از اینکه از سفر برگشتیم ما بودیم و کلی دنگی که باید حساب میشد، هرکی یه جا را حساب کرده بود، یه سری جاها هزینه ها ریز میشدن و احتمال خطای محسابه ی دستیش زیاد بود، پس سریع copilot رو باز کردم و دنگی رو ساختم .

تقسیم دنگ رو براتون انجام میده، خروجی اکسل ریز هزینه ها رو هم بهتون میده و میگه کی چه قدر باید به کی پرداخت کنه.

با js خام نوشته شده ، کد پروژه پیچیده نیست ولی کار سختیو راحت کرد :)

👩‍💻 سورس کد پروژه:

https://github.com/mdpe-ir/dongy

👩‍💻 نسخه ی دیپلوی شده:

https://dongy.mddaily.ir/


ایده های باحالی میشه روش پیاده کرد و تبدیلش کرد به PWA ولی خب فعلا داره کار میکنه.


🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM
👌163👎2🔥1
Forwarded from Abrha
⭕️ سیزدهمین صبحانه کاری ابرها تهران

🔥 قهوه، صبحانه، ارائه و گفتگوی کاری در کنار متخصصین

🎤 ارائه‌ تجربه محور توسط مصطفی افزونی



👇👇👇
🔗 abrh.ir/enjoy 🔗
👆👆👆


در کانال ابرها عضو شوید: ✌️

📣@abrhacom
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣7👍2