Learn with Osman – Telegram
Learn with Osman
187 subscribers
19 photos
2 videos
19 links
ID: @osman_makhtoom
Portfolio: https://osmanmakhtoom.dev
|
My knowledge sharing channel about Software Engineering and Python Development
Download Telegram
خب دوستان درمورد نظرسنجی که بالا درمورد انتخاب پلتفرم بلاگ نویسی گذاشتم ی سری پوینت‌ها رو مناسب دیدم بنویسم.

چرا وبلاگ داشتن برای ی برنامه‌نویس مهمه؟
تو کتاب Soft skills نوشته Sonmez چند فصل و چندین صفحه درمورد ضرورت داشتن ی وبلاگ برای برنامه‌نویس ها صحبت کرده و یکی از دلایل خوبی که آورده اینه:
رزومه شما فقط ی صفحه است و باید بصورت خیلی خلاصه فقط نکات مهم رو اونجا درج کنید و شما برای جلب توجه ریکروتر نهایت نهایتش فقط ۶ ثانیه فرصت دارید و این زمان خیلی کمیه.
در اینترویو هم طرف نمیتونه با ی برخورد درمورد عمق تخصص یا شخصیت شما مطمئن بشه، پس شما باید از طریق دیگه‌ای مهارتهای خودتونو به نمایش بذارید تا شخصی که میخاد شما رو استخدام کنه بتونه بهش مراجعه کنه و نسبت به شما شناخت کافی پیدا کنه و این محل میتونه وبلاگ شخصی شما باشه.

چه پلتفرم‌هایی برای شروع بلاگ نویسی وجود دارن؟
طبق چیزی که من تحقیق کردم میشه گفت ۳ نوع پلتفرم برای بلاگ نویسی وجود داره:
۱- سایتهای اشتراک مقاله مثل مدیوم یا نسخه وطنی اون ویرگول.
اینا خوبن، شناخته شده هستن، کاربر زیاد دارن و افراد متعددی میتونن مقالات شما رو دنبال کنن.
اما اون کاربرها در واقع کاربر شما نیستن بلکه برای همون پلتفرم هستن.
شما نمیتونید اونجا اقدام به تبلیغ یا اتصال درگاه پرداخت برای فروش محصولات کنید.
و اگه روزی اون پلتفرم تصمیم بگیره اکانت شما رو ببنده یا پست‌های شما رو پاک کنه کاری از دست شما برنمیاد و این اتفاقیه که به کرات افتاده.
۲- اپ اختصاصی:
ی برنامه‌نویس میتونه خودش برای خودش ی پروژه شروع کنه و ی اپ وبلاگ بنویسه.
اینکار میتونه باعث بشه شخص کد خودش رو تو گیتهابش منتشر کنه و ی پوینت اضافه کنه به خودش.
حتی میتونه مراحل ایجادش رو ضبط و بعنوان آموزش پروژه محور منتشر کنه.
اما خودش باید تمام موارد از جمله تکنولوژی هایی که لازمه برای پیاده‌سازی و دیپلوی پروژه رو بلد باشه یا یاد بگیره، سئو و بهینه‌سازی برای موتورهای جستجو رو باید بلد باشه، بحث امنیت رو باید بلد باشه و رعایت کنه، اگه فیچری نیاز داشت باید خودش بشینه کد بنویسه و اضافه کنه، کلی باگ و دیباگ و... و به این ترتیب با اینکه اینجا دستش بازه و هر کاری خاست میتونه بکنه اما از اونطرف هم کلی زمان از دست میده و فکر نکنم بعدش برای بلاگ نویسی انگیزه‌ای براش بمونه(چون دائم در حال دیباگه 😂)
۳- اپ‌های آماده مثل وردپرس و جوملا و...
و در آخر اگه هدف شخص تنها شروع بلاگ نویسیه میتونه از اپ‌های رایگان آماده مثل وردپرس استفاده کنه که مثلا در بحث سئو رو دست نداره، تست شده است و کامیونیتی فعال و قوی داره، هر فیچر یا تمی خاست اضافه کنه براحتی میتونه با نصب ی پلاگین در ی لحظه انجامش بده و کلی کار خفن دیگه.

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

این نکات رو تو این چند روز کلی مقاله و ویدیو مرور کردم و بدست آوردم و خوشحالم تو اشتراک گذاریش کمکم کنی، دمت گرم 🫠

@osmanmakhtoomdev
1
Forwarded from Sadra Codes
یه نکته اضافه کنم، همونطور که عثمان اشاره کرده، حتما کلندر ست کنید. اگه دنبال impression و فالوور و دیده‌شدن هستین، نیازه که یه روتین رو واسه نوشتن دنبال کنید. مثلا هر n روز یه مقاله پابلیش کنید. (کیفیت و حجم مقاله بسیار مهمه)

یه مورد دیگه، همیشه حداقل ۱۰ تا مقاله درفت داشته باشین. (یعنی مقاله‌ای که صرفا تایتل و چندتا سکشن داره و تکمیل نشده)

واسه خواننده مهم نیست چندتا مقاله راجع به تستینگ خونده. دوست داره نظر تورو هم بدونه. اگه نویسنده خوبی باشین، خود خالق pytest هم می‌تونه از مقالتون متوجه بینش‌های متفاوت و خاصی راجع به unit testing بشه و ارزش مقاله نوشتن اینجاست که خودش رو نشون می‌ده.

اگرم دوست دارید چیزی رو یاد بگیرید، بنظرم از ابزارهای نوت‌برداری آنلاین استفاده نکنید و سعی کنید بصورت فیزیکی، روی کاغذ یادداشت کنید. نوشتن با دست کمک می‌کنه تا راحت‌تر به خاطر بیارید و موقع بازخوانیش، حداقل میزان حواس‌پرتی (distraction) رو خواهید داشت. واسه یادگیری، (تاجایی که ممکنه) از اینترنت و دیوایس‌های هوشمند دوری کنید و سعی کنید آفلاین یادبگیرید. همین که ذهن شما عادت کنه که الان دسترسی به اینترنت نداری، کلی از دغدغه‌های ناخود‌‌آگاهت برطرف میشه و مغز می‌دونه راه چاره‌ای برای رسیدن به اون دوپامین حاصل از اسکرول کردن اکسپلور اینستا وجود نداره، پس سعی می‌کنه با یادگرفتن اون حس رو واسه خودش شبیه‌سازی کنه.
👍2
ی بار برام پیش اومد که تو ی branch گیت ی فایل ایجاد کردم و کامیت هم زدم ولی بعدش متوجه شدم که اون فایل رو نباید رو این برنچ میساختم.
یا برام پیش اومده بود کلی چنج رو ی برنچ داشتم که فقط چند تا فایل و پوشه از اون برنچ رو فقط نیاز داشتم و چنج‌های دیگه رو اصلا نمیتونستم مرج کنم.
راه حلی که برای همچین مواقعی وجود داره باز هم دستور checkout گیت هست که به این صورته:

git checkout destination_branch_name -- destination_file_or_directory

مثلا فرض کنیم برنچی به اسم feature/new_wizard داریم که پوشه‌ای به آدرس apps/ipg رو تو اون داریم.
حالا دستور ما تو برنچی که میخایم این پوشه رو بهش منتقل کنیم به این صورت خواهد بود:

git checkout feature/new_wizard -- apps/ipg

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

@osmanmakhtoomdev
🔥1
Yusuf Dikec 😁
🔥4🤔1
Learn with Osman
Yusuf Dikec 😁
عکسی که وایرال شده Yusuf Dikeç تیرانداز ۵۱ ساله ترکیه است که مدال نقره المپیک رو بدون استفاده از تجهیزات تیراندازی و دقیقا با همین حالت برده
1
Forwarded from جنگولرن
علی شریفی زارچی: دانشگاه شریف سال گذشته دوره‌ی «برنامه‌نویسی پایتون و خلاقیت الگوریتمی» را برای هزاران دانش‌آموز متوسطه‌ی سراسر کشور برگزار کرد.
تمام محتوای این دوره شامل ویدئوی کلاس‌ها، تمرین‌های نظری و عملی «به صورت رایگان» به همه‌ی دانش‌آموزان ایران تقدیم می‌شود:
https://learn-python.ir

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

گذراندن این دوره و انجام تمرین‌های نظری و عملی آن با تلفن همراه امکان‌پذیر است و نیازی به استفاده از لپ‌تاپ یا کامپیوتر نیست.
صمیمانه پیشنهاد می‌کنیم اگر دانش‌آموز دبیرستان یا فردی علاقمند به یادگیری برنامه‌نویسی می‌شناسید، دوره را به او معرفی فرمایید.
3
ی اپلیکیشن خوب آندرویدی برای آپدیت بودن و در دسترس داشتن مقالات جدید:

https://play.google.com/store/apps/details?id=com.substack.app

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

https://play.google.com/store/apps/details?id=com.burockgames.timeclocker

@osmanmakhtoomdev
Depends on doesn't mean imports or calls, necessarily, but rather a more general idea that one module knows about or needs another module.
Architecture patterns with Python. xxii introduction

نکته مهمی که اینجا بیان شده خیلی جالبه:
میخاد بگه که منظور از وابستگی الزاما این نیست که ماژول B بیاد ماژول A رو import یا call کنه، بلکه مسئله یکم کلی تره و به این معنیه که اصلا ماژول B درمورد ماژول A چیزی میدونه یا بهش نیاز داره.

خب این توضیح همون اصل پنجم SOLID که میشه D یعنی Dependency inversion هست.

اما من میخام اینو بیارم تو بحث communication روزانه با تیم بیزینس که خودم اون اوایل خیلی مشکل داشتم روش.

اول ی توضیح کلی درمورد این اصل:
میگه که ما دو لایه داریم، یکی لایه سطح بالا و اون یکی لایه سطح پایین.

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

لایه سطح پایین که میشه اون لایه که مثلا دیتاها رو میریزه تو ردیس، تو دیتابیس و... یا ی سری سرویسهای خارجی رو کال میکنه و... که میشه جزییات.

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

حالا برای اینکه ما بتونیم این دو لایه رو جوری بچینیم که بتونن اطلاعات رو با هم رد و بدل کنن بدون اینکه لایه سطح بالا به لایه سطح پایین وابستگی داشته باشه(بدونه که چکار داره میکنه یا مجبور باشه فقط از همون جزییات استفاده کنه) نیاز به ی واسط داریم که بهشون میگیم interface این لایه میانی در واقع کاملا انتزاعیه و به هیچکدوم از دو لایه سطح بالا و پایین وابستگی نداره.

حالا بیایم ببینیم تو مکالمات روزمره با بیزینس چجوریه:
ما ی دولوپر داریم
ی پروداکت داریم

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

از کامنت‌های شما استقبال میکنم.

@osmanmakhtoomdev
سعی کن تو کدت پنجره شکسته‌ای بجا نذاری

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

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

پس مراقب اون پنجره شکسته باش و زودی تعمیرش کن تا زحماتت هدر نرن.

@osmanmakhtoomdev
👍1
حالا اگه ی کد از قبل پنجره شکسته داشت چی؟
ببین، از قدیم گفتن سنگ بزرگ نشانه نزدن است.
بذار دو تا استراتژی تفکر جلو روت بذارم تفاوتشون رو بهم بگو.

روش اول اینه که اینجوری فکر کنی که من باید زبان انگلیسی رو یاد بگیرم و بتونم صحبت کنم و شروع کنی و بخای از همون هفته اول هم نتیجه رو ببینی🥶

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

تو روش اول چون نگاهت به هدفه و باهاش فاصله داری جا میزنی، اما تو روش دوم چون مسافتی که طی کردی رو میبینی به خودت انگیزه میدی و میری جلو( گرچه داری خودتو گول میزنی 😁 و کلی با هدف فاصله داری، ولی مجبوری )

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

پس یادت باشه ی پلن داشته باش و نقطه شروع و نقطه پایان رو تو ذهنت داشته باش اما قدم‌های کوچیک بردار و مسافتی که رفتی رو با نقطه شروع مقایسه کن نه نقطه پایان!

@osmanmakhtoomdev
👍3
بخون بیا تا پایین ی چیزی بهت بگم

دیروز درگیر ی پروژه بودم که باید بیسش رو میاوردم بالا با داکر.
خب من همیشه عادت داشتم فقط بکند رو داکرایز کنم و اونم تمام نیازمندیاش مثل nginx, elk, postgres, redis, rabbit و... رو همه رو داخل همون docker-compose پروژه میذاشتم و ی نتورک بریج هم میزدم و تمام.
اما این بار گفتم بیام و اینکارو نکنم.
بجاش اومدم ردیس و ربیت و انجین ایکس و پستگرس رو جدا بالا آوردم تو داکر و تو فایل داکر کمپوز فقط بکند و فرانت و ورکر سلری رو کانفیگ کردم.
حتی ساخت دیتابیس و یوزر رو تو پستگرس و grant permission رو رفتم اول تو شل کانتینر پستگرس دستی انجام دادم قبل ران کردن بکند.
و تو شل ربیت هم رفتم یوزر و vhost رو دستی ایجاد کردم و دسترسیا رو ست کردم.
بعد دیدم انجین ایکس نه بکند رو میشناسه نه فرانت رو و دوباره ی نتورک ایجاد کردم و همه سرویسا رو وصل کردم بهش.
حالا سر سرو کردن استتیک فایل‌های بکند دوباره مشکل داشت انجین ایکس و درگیر اون بودم 😢
و الی آخر....

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


@osmanmakhtoomdev
👍2
حیفم اومد نذارمش
Forwarded from جادی | Jadi
این ویدئو رو فقط یه بار می شد ضبط کنم و تصمیم گرفتم انگلیسی ضبط کنم. راستش علاوه بر مهارت الگوریتم که این چند وقت سعی میکنم نشونش بدم، امکان ارتباط انگلیسی و کمی شنیدن و کمی حرف زدن و کمی نوشتنش هم مهمه و جالبه که با تمرین ملایم راحت بهش می رسین.

توی این ویدئو یه کار شخصی ام رو ضبط کردم. درست کردن یه آدرس برای #نوستر بر اساس پروتکل و منابع خودش. توش راهنما رو می خونیم سریع، رو سرورمون آپاچی رو تنظیم می کنیم براش، با هوش مصنوعی یه کد سریع سر هم می کنیم و وقتی گیر می کنیم مساله رو ترابل شوت می کنیم (با نگاه کردن به مثال بامزه ای مثل جک دورسی).

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

https://youtu.be/-BLqBYtSh28

#ویدئو #انگلیسی
امروز کتاب Designing data-intensive applications رو شروع کردم.
سعی میکنم از این به بعد هر روز چکیده و ی سری توضیحات درمورد هر مطلبش رو تو کانال قرار بدم.

@osmanmakhtoomdev
👏3👍1🔥1
#1_DDIA_Preface
Osman Makhtoom
سلام 😊
بالاخره تونستم به این کمالگرایی غلبه کنم و قدرت شروع ناقص رو تو خودم تقویت کنم
اولین ویس رو تونستم ضبط کنم و براتون میذارمش.

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

ویس اول بخشی از مقدمه کتاب designing data-intensive applications

#ddia

@osmanmakhtoomdev
9👍1🔥1
سلام به همگی عزیزان
امیدوارم حالتون خوب باشه

ی خبر خوب براتون دارم:

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

در ادامه قراره صفحات وبلاگ، آموزش‌ها و پروژه‌ها هم بهش اضافه کنم.

فرانت رو با انگولار بصورت SSR و بک رو با جنگوی عزیز نوشتم که البته فعلا فرانت و بک هیچ ارتباطی با هم ندارن.

ممنون میشم بررسی کنین و نظرات و پیشنهاداتتون رو بگین.

دوره هم قراره ادامه داشته باشه، نگران نباشید 😁👊

@osmanmakhtoomdev
👍2👏2
Designing data-intensive applications preface part 2
Osman Makhtoom
ویس دوم بخش دوم و پایانی مقدمه کتاب designing data-intensive applications

#ddia

@osmanmakhtoomdev
🔥3👍1👏1
Designing data-intensive applications Part I
Osman Makhtoom
ویس سوم، مقدمه بخش اول کتاب designing data-intensive applications

#ddia

@osmanmakhtoomdev
👍1