Golem Course – Telegram
Golem Course
2.93K subscribers
47 photos
43 videos
40 files
144 links
Alireza Aghamohammadi, Ph.D.

https://youtube.com/@GolemCourse
Download Telegram
مهندسی نرم‌افزار تنها برنامه‌نویسی نیست! برنامه‌نویسی تنها یکی از مهارت‌های مورد نیاز مهندسی نرم‌افزار است. یک ویدیو ضبط کردم و مهارت‌ها و دانش‌هایی که به نظرم مهندس نرم‌افزار باید آن را بلد باشد، شرح دادم. مهارت‌هایی مانند متدولوژی، معماری نرم‌افزار، مهندسی نیازمندی‌ها و ... از جمله این مهارت‌ها ‌اند.

https://youtu.be/siD4u4OLVuY
👍3
سطح خودتان را در زبان برنامه‌نویسی پایتون چگونه ارزیابی می‌کنید؟
Anonymous Poll
41%
مقدماتی
26%
متوسط
9%
پیشرفته
25%
بلد نیستم
Media is too big
VIEW IN TELEGRAM
#کدگرمی
حل چند نمونه سوال کار با فایل جهت آمادگی برای تمرین و امتحان
حل کننده: محمد زارع

🆔 @BPPythonG7
👍2
#معرفی_کتاب

به این مسئله توجه کنید. یک سیستم فروشگاهی را در نظر بگیرید که میلیون‌ها کاربر فعال دارد. از محصولی تنها یک عدد باقی مانده است. ممکن است چند کاربر به صورت همزمان در حال مشاهده صفحه آن محصول باشند. اگر یکی از مشتریان محصول را خرید، دیگران که در حال مشاهده صفحه بودند چه زمانی باید متوجه این قضیه شوند؟ به چه شکل این سیستم بزرگ را از لحاظ کارایی باید مدیریت کنیم (سیستم کند نشود)؟
ادامه معرفی کتاب در پست بعد ...
👍7
این کتاب در سطح پیشرفته قرار دارد و مفاهیم جدید طراحی و معماری نرم‌افزار را مانند معماری تمیز، طراحی قلمرو محور، مایکروسرویس‌ها و معماری رویداد محور با استفاده از زبان برنامه‌نویسی پایتون آموزش می‌دهد. به نظرم در دو حالت کتاب را مطالعه کنید:
۱. پایتون را در سطح پیشرفته بلد هستید و می‌خواهید سطح دانش خود را در حوزه‌های دیگر مانند معماری و طراحی بهبود ببخشید.
۲. بر روی سیستمی کار می‌کنید که تعداد کاربران فعال آن میلیونی (یا بیشتر) است.
👍5
در پایتون یک ویژگی به نام Denoscriptor وجود دارد که با آن می‌توانید نحوه دسترسی به یک متغیر را کنترل کنید. مثلاً یک مستطیل را در نظر بگیرید، می‌خواهیم همیشه طول و عرض آن عدد مثبت باشد و نمی‌خواهیم کد تکراری هم داشته باشیم (اگر از property استفاده کنید، کد تکراری خواهید داشت).
نکته پیشرفته: در چارچوب جنگو، مدل‌هایی که تعریف می‌کنید (BooleanField, FileField, ...) در پشت پرده از این خاصیت پایتون استفاده می‌کنند.

کانال یوتیوب علیرضا آقامحمدی
کانال تلگرام علیرضا آقامحمدی
👍2
Final.pdf
173.6 KB
دیروز امتحان درس مبانی برنامه‌نویسی (پایتون) در دانشگاه صنعتی شریف برگزار شد. سوالات به همراه پاسخ آن را برایتان پیوست کردم.
13👍2
Forwarded from Golem Course
کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی

💰 می‌خواهید وارد بازار کار شوید؟
📕 می‌خواهید دانش و مهارت ضروری صنعت کامپیوتر را بلد باشید؟
🧠 عاشق یادگیری هستید؟

اگر پاسخ شما به سه سوال بالا منفی است، این کانال مناسب شما نیست!

لینک دسترسی به تمام ویدیو‌ها در کانال یوتیوب:

🥉 مسیر یادگیری و تقویت زبان انگلیسی

🎯 آموزش زبان انگلیسی: (۳۰:۳۷ ساعت - به اتمام رسیده)

==================
🥈مسیر برنامه‌نویس شدن:

🎯 طراحی وب‌سایت - فرانت اند: (۱:۵۰ ساعت - در حال ضبط)

🎯 دوره آموزشی پایتون: (۱۷:۲۸ ساعت - در حال ضبط)

🎯 دوره آموزشی گیت: (۴:۰۶ ساعت - به اتمام رسیده)

🎯 دوره تست نرم‌افزار با پایتون: (۱:۲۰ ساعت - به اتمام رسیده)

🎯 آموزش کتابخانه پانداس: (۲:۲۶ ساعت - در حال ضبط)

==================

🥇 مسیر کار تیمی و ایجاد نرم‌افزار

🎯 دوره آموزشی اسکرام: (۲:۳۰ ساعت - به اتمام رسیده)

🎯 دوره مهندسی نیازمندی‌ها: (۴:۳۲ ساعت - در حال ضبط)

🎯 دوره مدیریت پروژه: (۳:۱۶ ساعت - در حال ضبط)

==================
6👍2
چرا فساد (facade) نرم‌افزاری چیز خوبی است؟

یک بسته (package) نرم‌افزاری را در نظر بگیرید به طوری که دیگران از کلاس‌ها، توابع و ماژول‌های درونی آن استفاده می‌کنند. بخش‌های دیگر نرم‌افزار موارد مورد نیاز خود را از داخل بسته import می‌کنند. مشکل این کار چیست؟ مشکل این است که دیگر بخش‌های نرم‌افزار به داخل بسته دید و وابستگی پیدا کردند. در واقع به صورت یک تکه نمی‌توانید کل بسته را بردارید و در یک نرم‌افزار دیگر استفاده کنید (به خاطر وابستگی‌ها). فساد (facade) الگویی است که به شما این امکان را می‌دهد تا وابستگی‌ها و دید به داخل بسته را از بین ببرید. فساد یک کلاس (یا چند کلاس) است که در مرز بسته‌ها تعریف می‌شود و صرفاً کارچرخان است ( در واقع یک سری فراخوانی انجام می‌دهد و منطق برنامه درون آن نیست). به طور مثال، برای انجام یک کار مشخص لازم است از کلاس A نمونه گیری کنید و توابع x,y,z را فراخوانی کنید. قبلاً بدون استفاده از فساد، آن‌ها را از داخل بسته import می‌کردید و داخل کدتان استفاده می‌کردید. برای ایجاد فساد یک کلاس F درست می‌کنید و فراخوانی توابع را به داخل آن کلاس منتقل می‌کنید و شما کافی است که تنها F را import کنید. با این کار وابستگی را به فساد منتقل کردید. مزیت این کار این است که اگر منطق پیاده‌سازی بسته عوض شود اما نقاط API ثابت بماند، برنامه شما دچار اصلاً از تغییر خبردار نمی‌شود و می‌توانید بسته را در پروژه‌های دیگر نیز استفاده کنید.

نکته: مؤلفه (component) یک قطعه نرم‌افزاری است که به صورت یک تکه است و تنها راه ارتباط با آن از طریق API ها است. الگوی فساد، روش متداول تبدیل بسته به مؤلفه است.

سوال: در دنیای واقعی (اما ایده‌آل) فساد چه شکلی است؟ فرض کنید که لازم است مجوزی در یک اداره دولتی بگیرید. اگر فساد در آن اداره (فرضاً) پیاده‌سازی شده باشد، یک نفر را به عنوان مسئول کار شما انتخاب می‌کنند و لازم نیست که به ۱۰ جای مختلف برای گرفتن امضاء بروید. آن شخص بعد از گرفتن مدارک تمام امضاء ها را می‌گیرد و در نهایت نتیجه را به شما گزارش می‌کند.

کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی
👍6
مدت زمان دوره آموزشی طراحی وب‌سایت (فرانت اند) به ۳:۳۰ ساعت رسید. دوره را به صورت پروژه محور آموزش دادم و تا الان تنها با استفاده از CSS, HTML و بدون هیچ کتابخانه‌ای، طراحی عکس‌های بالا آموزش داده شده است.

ویدیوها را می‌توانید از طریق یوتیوب مشاهده کنید.
26
Forwarded from Deep Time
Practical Deep Learning for Coders v5

با اینکه دوره‌های زیادی در زمینه یادگیری ماشین گذروندم، نحوه تدریس هیچکدوم مثل Jeremy Howard بهم نچسپید. و خوب ایشون یکی از شناخته شده ترین دیتاساینتیست هاست که به کمپانی‌ها خیلی کمک کرده و از قهرمانان قدیم Kaggle هست و البته خالق اصلی کتابخانه محبوب FastAI که واقعا جالب کار کرده. یکی از اصلی ترین دلایل علاقم به کلاس‌هاش مثال‌های واقعی و راه حل‌هایی هست که میاره.

حالا دوره ایشون آپدیت شده و در 9 قسمت 90 دقیقه ‌ای به صورت رایگان هست بر اساس کتاب رایگان و محبوبش. دوره روی کاوش تعاملی تمرکز داره و مواردی مثل:
PyTorch,
Hugging Face,
DeBERTa,
ConvNeXt,
Gradio , ...
کاور شدن. با اینکه عنوان دوره یادگیری عمیق عملی هست جلسه ششم به Random Forest اختصاص داره که درستشم همینه.
احتمالا شهریور امسال در دانشگاه شریف یادگیری ماشین با پایتون تدریس کنم و الآن با وجود وقتی که ندارم شوق پیدا کردم دوره آپدیت شده رو کامل با سرعت بالا ببینم که اگر مطلب جالبی داشت (که قطعا داره) یادداشت کنم برای کلاس. پیشنهاد میکنم کمی ببینید از ویدئوها.

@deeptimeai
👍102
برگزاری جلسه به سبک آمازون

شایان در شرکت آمازون کار می‌کند و در وبلاگ خودش توضیح جالبی درباره برگزاری جلسات در این شرکت داده است. ۲۰ دقیقه ابتدایی هر جلسه دستور کار جلسه را همه باید در سکوت بخوانند و هر سوالی را که داشتند یادداشت کنند. بعد از ۲۰ دقیقه جلسه آغاز به کار می‌کند. خوبی این کار این است که همه می‌دانند که دقیقاً در رابطه با چه موضوعی صحبت می‌کنیم و بیخودی جلسه به حاشیه نمی‌رود. ممکن است برایتان سوال شود که چرا قبل از جلسه، دستور کار را به افراد ندهیم؟ معمولاً طبق تجربه همیشه افرادی هستند که دستور کار را نمی‌خوانند. ایده جالبی بود. از این به بعد در جلساتی که خودم مسئولش هستم همین ایده را پیاده‌سازی می‌کنم.

کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی
👍15
حرفه‌ای ایمیل بزنید

شاید از هر پنج ایمیلی که دریافت می‌کنم تنها یکی به صورت اصولی ایمیل ارسال کرده است. این مسئله زمانی مهم می‌شود که شما قصد داشته باشید با افراد خارج از ایران (دانشگاهی یا کاری) مکاتبه داشته باشید. به طور مثال یک استاد در دانشگاه‌های خوب خارج از کشور به طور متوسط روزانه ۸۰ ایمیل از سراسر دنیا دریافت می‌کند. اگر بلد نباشید که ایمیل بزنید، به احتمال زیاد اصلاً خوانده نمی‌شود! (فرض کنید قصد مهاجرت هم داشته باشید) کمی وقت بگذارید و مواردی که در ادامه می‌نویسم را رعایت کنید.

۱. آدرس ایمیل: آدرس ایمیل حرفه‌ای باید نماینده نام شما باشد (مگر آن که شرکت/سازمان باشید). بودن اعداد مثل ۷۶ و ۹۳ و ... در آدرس مناسب نیست. ابتدا یک آدرس درست ایجاد کنید. مثلاً می‌توانید دو حرف اول نام خود را به همراه نام خانوادگی به عنوان آدرس ایمیل استفاده کنید. اگر آن آدرس پیش‌تر گرفته شده بود، روی تعداد حروف نام خود مانور دهید (مثلاً سه حرف اول را انتخاب کنید یا حتی کل نام). یک مثال می‌زنم. آدرس ایمیل من al.aghamohammadi است. دو حرف اول مربوط به نام و باقی مربوط به نام خانوادگی است.
۲. عنوان ایمیل: بارها شده که ایمیل‌هایی که دریافت کردم یا اصلاً عنوان نداشته یا ربطی به محتوای آن نداشته است. عنوان ایمیل را باید به گونه‌ای بنویسید که مشخص‌کننده محتوای ایمیل شما باشد. مثلاً به این عنوان دقت کنید:
دستور کار جلسه تیم زیرساخت - چهارشنبه ساعت ۹
این عنوان بدون خواندن محتوای ایمیل هم مشخص می‌کند که در رابطه با چه چیزی است.
نکته: خیلی وقت‌ها در عنوان ایمیل نام خودم را هم می‌نویسم تا اگر شخص یک ماه بعد خواست جواب بدهد، بتواند سریع مرا پیدا کند. مثلا به این عنوان دقت کنید:
اعتراض به نمره میان‌ترم درس یادگیری ماشین - علیرضا آقامحمدی
هم مشخص است که در رابطه با چه مطلبی است و هم فرستنده مشخص است (برای جست و جو در اینباکس)
۳. محتوای ایمیل: ابتدا خودتان را معرفی کنید. بعد موقعیت را شرح دهید. سپس اقدامی که گیرنده می‌تواند انجام دهد را بگویید. در نهایت تشکر کنید.
نکته: گاهی وقت‌ها باید ایمیل را به گونه‌ای خاتمه دهید که یعنی منتظر جواب شخص هستید.
۴. امضای ایمیل: هم جیمیل و هم باقی سرویس‌ها امکان قرار دادن default در انتهای ایمیل را دارند. معمولاً در انتهای هر ایمیل باید نام رسمی شما، اطلاعات تماس و پوزیشن شما وجود داشته باشد.

کانال تلگرام علیرضا آقامحمدی
کانال یوتیوب علیرضا آقامحمدی
👍224🔥4
نکته‌ای دیگر در رابطه با ایمیل زدن!
کاربرد to و cc و bcc را یاد بگیرید. به صورت پیش فرض از to استفاده می‌کنیم. اما خیلی اوقات نیاز است که فرد یا افراد دیگری در جریان محتوای ایمیل قرار بگیرند. در این صورت فرد/افراد دیگر را cc کنید (به معنای رونوشت ایمیل). گاهی اوقات ممکن است لازم باشد که به تعداد زیادی از افراد ایمیل بزنید اما افراد نباید (یا لزومی ندارد) که از ایمیل‌های دیگران آگاه باشند. در این صورت از bcc استفاده می‌کنیم. بگذارید یک مثال بزنم. فرض کنید قرار است نمرات درس پایتون را برای دانشجویان (بیش از ۶۰ نفر) ارسال کنم. در این سناریو نباید همه دانشجویان را to کنم. چون در درجه اول مخاطب من یک دانشجو است و در درجه دوم یک دانشجو لازم نیست ایمیل بقیه افراد را ببیند. اینجا است که از bcc استفاده می‌کنم (مخاطب ایمیل نشان داده نمی‌شود).
👍12🔥3
محتوای کلاس برنامه‌نویسی #پایتون دانشگاه صنعتی شریف

🔗 https://github.com/aaghamohammadi/python-tutor

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

این درس شامل پنج تمرین، یک پروژه، یک میان‌ترم و پایان‌ترم بود. تیمی ۳۴ نفره به عنوان دستیار آموزشی مسئول طراحی و تصحیح تمارین و پروژه درس بود.

با کمک تیم دستیار آموزشی در نهایت توانستیم در ارزشیابی درس آخر ترم (نمره‌ای که دانشجویان به عملکرد استاد و کلاس درس می‌دهند) نمره ۳.۸۳ از ۴ را کسب کنیم! بدون همراهی تیم دستیار آموزشی و دانشجویان کلاس امکان ارائه این درس با چنین کیفیتی بالایی نبود.

تمامی مطالب کلاس (سوالات + لینک به ویدیوهای درس) را داخل گیتهاب قرار دادم. از لینک ابتدایی پست می‌توانید به تمام محتوای آموزشی کلاس دسترسی پیدا کنید.
🔥2010👍9
من تخصصی در زمینه مدیریت منابع انسانی (HR) ندارم. اما به نظرم در دنیای نسبتاً مطلوب من روند استخدام افراد باید چیزی شبیه فرآیند پذیرش مقاله در ژورنال‌های معتبر باشد.

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

در گام دوم (سوم، چهارم و ...)، مقاله‌ها برای تعدادی داور ارسال می‌شود و نظرات آن‌ها در رابطه با نقاط قوت و ضعف مقاله پرسیده می‌شود. اگر مقاله در این مرحله رد نشود، نظرات دقیق داوران باید به صورت کتبی به اطلاع نویسندگان برسد و نویسندگان باید سعی کنند مشکلات مقاله را بر طرف کنند و جواب هر داور را بدهند. این فرآیند آنقدر تکرار می‌شود (revision) تا در نهایت مقاله پذیرفته یا رد می‌شود. می‌توان این قسمت را تشبیه به مراحل مصاحبه دانست. به نظرم در مرحله مصاحبه باید نقاط ضعف و قوت متقاضی شغل دقیقاً به صورت کتبی با ذکر جزئیات و استدلال منطقی به اطلاع او برسد تا فرد بتواند آن مشکلات را در صورت امکان برطرف کند و موافقت تمام یا اکثریت مصاحبه‌کنندگان شرکت مورد نظر را کسب کند.
👍194