کامیت خوب ✅ یا بد ❌: چند Best Practice برای Git
تو دنیای برنامهنویسی، یه چیزی هست که همه توسعهدهندهها بهش نیاز دارن: یه سیستم برای ردیابی تغییرات کدشون! یکی از بهترین این سیستمها، Git هست. با Git میتونی تغییرات کدت رو دنبال کنی، به نسخههای قبلی برگردی و با بقیه اعضای تیمت راحتتر کار کنی.
توی این پست بررسی می کنیم که یه کامیت خوب چه ویژگیهایی داره و یه کامیت بد چه مشکلاتی ایجاد میکنه. با این کار، تاریخچه تغییرات کدت مرتب و قابل فهم میشه.
کامیت یعنی چی؟
در Git، یک کامیت به وضعیت کد شما در یک نقطه زمانی خاص اشاره داره. هر کامیت یه اطلاعاتی داره مثل اینکه چه کسی این تغییر رو ایجاد کرده، چه زمانی این کار رو انجام داده و چه تغییراتی اعمال شده. با کامیتها میتونی به راحتی به نسخههای قبلی کدت برگردی و تغییرات رو بررسی کنی.
✅ ویژگیهای یک کامیت خوب
اتمی و متمرکز:
یک کامیت باید اتمی باشه - یعنی فقط یک تغییر منطقی رو شامل بشه. چند تغییر مستقل رو تو یک کامیت ترکیب نکن.
مثال:
پیام کامیت توصیفی:
پیام کامیت باید به وضوح توضیح بده که کامیت چه کاری انجام میده و چرا این تغییر ایجاد شده. این پیام باید اطلاعات کافی رو در اختیار دیگران (و خود آیندهات) بذاره تا بتونن بدون خوندن کد، تغییر رو درک کنن.
مثال:
رعایت استانداردهای کامیت:
میتونی از استانداردهای کامیت استفاده کنی تا تاریخچه گیتت تمیز، منظم و قابل خوندن تر باشه. معمولا این استانداردها شامل نوع تغییر (مثلا ویژگی جدید، رفع باگ، تغییر ساختار، مستندسازی) یا همون (feat, fix, chore, refactor, docs)، خلاصه کوتاه و گاهی توضیح طولانی یا اشاره به مشکلات مرتبط میشه.
مثال:
تست شده و تأیید شده:
مطمئن شو که تغییرات توی کامیتت تست شده و درست کار میکنه. کد خراب یا تست نشده میتونه روند کار رو مختل کنه و بقیه رو اذیت کنه.
محدوده مناسب:
کامیتهات رو درست محدوده بندی کن. مثلاً اگه داری روی یه قابلیت خاص کار میکنی یا یه باگ رو درست میکنی، مطمئن شو که همه تغییرات مربوط به اون کار تو یه کامیت قرار گرفتن. از تغییرات ناقصی که ممکنه کد رو تو وضعیت ناپایداری بذاره، خودداری کن.
مثال:
❌ ویژگیهای یک کامیت بد
بزرگ و بدون تمرکز:
کامیت با تغییرات خیلی زیاد، یه کامیت بده. فهمیدن اینکه کامیت چه کاری انجام میده رو سخت میکنه. کامیتهای بزرگ و بدون تمرکز، بررسی و دیباگ کردن رو چالش برانگیز میکنن.
مثال:
پیامهای مبهم یا گمراهکننده:
پیامهای کامیت که مبهم یا گمراهکننده هستن، اطلاعات مفیدی درباره تغییرات ارائه نمیدن. این کمبود جزئیات میتونه باعث سردرگمی بشه و ردیابی تاریخچه تغییرات رو سخت کنه.
مثال:
تغییرات بیربط:
ترکیب تغییرات بیربط توی یه کامیت، جداسازی تغییرات خاص رو سخت میکنه و ممکنه باعث ایجاد باگ و پیچیده شدن روند بررسی بشه.
مثال:
کد ناقص یا تست نشده:
کامیت کردن کد ناقص یا تست نشده میتونه جریان کار رو مختل کنه، برای بقیه اعضای تیم مشکل ایجاد کنه و ممکنه باعث خراب شدن بیلد بشه.
در نهایت بین کامیت کردن خیلی زیاد و خیلی کم تعادل برقرار کن. هر کامیت باید یه تغییر معنیدار رو نشون بده. هیچ وقت تغییرات بیربط رو تو یه کامیت قرار نده و پیامهای کامیتت باید توضیح بدن که کامیت چه کاری انجام میده و چرا این تغییر رو ایجاد کردی.
〰️〰️〰️
پ ن:
اگه هم مثه خودم خیلی حوصله ی نوشتن پیام commit ندارید میتونید از ابزاری که توی این پست معرفی کردم استفاده کنید تا خودش براتون کامیت رو بنویسه :)
🆔 @MdDaily
تو دنیای برنامهنویسی، یه چیزی هست که همه توسعهدهندهها بهش نیاز دارن: یه سیستم برای ردیابی تغییرات کدشون! یکی از بهترین این سیستمها، Git هست. با Git میتونی تغییرات کدت رو دنبال کنی، به نسخههای قبلی برگردی و با بقیه اعضای تیمت راحتتر کار کنی.
توی این پست بررسی می کنیم که یه کامیت خوب چه ویژگیهایی داره و یه کامیت بد چه مشکلاتی ایجاد میکنه. با این کار، تاریخچه تغییرات کدت مرتب و قابل فهم میشه.
کامیت یعنی چی؟
در Git، یک کامیت به وضعیت کد شما در یک نقطه زمانی خاص اشاره داره. هر کامیت یه اطلاعاتی داره مثل اینکه چه کسی این تغییر رو ایجاد کرده، چه زمانی این کار رو انجام داده و چه تغییراتی اعمال شده. با کامیتها میتونی به راحتی به نسخههای قبلی کدت برگردی و تغییرات رو بررسی کنی.
✅ ویژگیهای یک کامیت خوب
اتمی و متمرکز:
یک کامیت باید اتمی باشه - یعنی فقط یک تغییر منطقی رو شامل بشه. چند تغییر مستقل رو تو یک کامیت ترکیب نکن.
مثال:
# Good commit
git commit -m "Add user authentication"
# Bad commit
git commit -m "Add user authentication and update UI styles"
پیام کامیت توصیفی:
پیام کامیت باید به وضوح توضیح بده که کامیت چه کاری انجام میده و چرا این تغییر ایجاد شده. این پیام باید اطلاعات کافی رو در اختیار دیگران (و خود آیندهات) بذاره تا بتونن بدون خوندن کد، تغییر رو درک کنن.
مثال:
# Good commit message
git commit -m "Fix Correct null pointer exception in user login"
# Bad commit message
git commit -m "Fix bug"
رعایت استانداردهای کامیت:
میتونی از استانداردهای کامیت استفاده کنی تا تاریخچه گیتت تمیز، منظم و قابل خوندن تر باشه. معمولا این استانداردها شامل نوع تغییر (مثلا ویژگی جدید، رفع باگ، تغییر ساختار، مستندسازی) یا همون (feat, fix, chore, refactor, docs)، خلاصه کوتاه و گاهی توضیح طولانی یا اشاره به مشکلات مرتبط میشه.
مثال:
# Good commit message following conventional guidelines
git commit -m "feat(auth): add JWT-based authentication"
git commit -m "fix(login): resolve race condition in login flow"
میتونید از ایموجی هم استفاده کنید که لیست ایموجی هاش توی این gist و یا سایت gitmoji.dev پیدا میشن :)
تست شده و تأیید شده:
مطمئن شو که تغییرات توی کامیتت تست شده و درست کار میکنه. کد خراب یا تست نشده میتونه روند کار رو مختل کنه و بقیه رو اذیت کنه.
محدوده مناسب:
کامیتهات رو درست محدوده بندی کن. مثلاً اگه داری روی یه قابلیت خاص کار میکنی یا یه باگ رو درست میکنی، مطمئن شو که همه تغییرات مربوط به اون کار تو یه کامیت قرار گرفتن. از تغییرات ناقصی که ممکنه کد رو تو وضعیت ناپایداری بذاره، خودداری کن.
مثال:
# Good commit with proper scope
git commit -m "refactor(auth): split auth logic into separate module"
# Bad commit with mixed scope
git commit -m "refactor and minor fixes"
❌ ویژگیهای یک کامیت بد
بزرگ و بدون تمرکز:
کامیت با تغییرات خیلی زیاد، یه کامیت بده. فهمیدن اینکه کامیت چه کاری انجام میده رو سخت میکنه. کامیتهای بزرگ و بدون تمرکز، بررسی و دیباگ کردن رو چالش برانگیز میکنن.
مثال:
# Bad commit
git commit -m "Update project"
پیامهای مبهم یا گمراهکننده:
پیامهای کامیت که مبهم یا گمراهکننده هستن، اطلاعات مفیدی درباره تغییرات ارائه نمیدن. این کمبود جزئیات میتونه باعث سردرگمی بشه و ردیابی تاریخچه تغییرات رو سخت کنه.
مثال:
# Bad commit message
git commit -m "Stuff"
تغییرات بیربط:
ترکیب تغییرات بیربط توی یه کامیت، جداسازی تغییرات خاص رو سخت میکنه و ممکنه باعث ایجاد باگ و پیچیده شدن روند بررسی بشه.
مثال:
# Bad commit
git commit -m "Update readme and fix login issue"
کد ناقص یا تست نشده:
کامیت کردن کد ناقص یا تست نشده میتونه جریان کار رو مختل کنه، برای بقیه اعضای تیم مشکل ایجاد کنه و ممکنه باعث خراب شدن بیلد بشه.
در نهایت بین کامیت کردن خیلی زیاد و خیلی کم تعادل برقرار کن. هر کامیت باید یه تغییر معنیدار رو نشون بده. هیچ وقت تغییرات بیربط رو تو یه کامیت قرار نده و پیامهای کامیتت باید توضیح بدن که کامیت چه کاری انجام میده و چرا این تغییر رو ایجاد کردی.
〰️〰️〰️
پ ن:
اگه هم مثه خودم خیلی حوصله ی نوشتن پیام commit ندارید میتونید از ابزاری که توی این پست معرفی کردم استفاده کنید تا خودش براتون کامیت رو بنویسه :)
🆔 @MdDaily
❤🔥7👍3⚡1✍1
🕸 شبکهسازی: یه کار فان
شبکهسازی خیلی مهمه اگه میخوای تو کارت پیشرفت کنی.
میگن مهمترین چیزی که از رفتن به دانشگاههای خوب گیرت میاد، درس نیست بلکه دوستاییه که پیدا میکنی. و راستش رو بخوای، حق باهاشونه
اما خیلیا میگن شبکهسازی خیلی سخته، حوصلهسربره و اصلا برای بعضیها ممکن نیست، مخصوصا اونایی که یه کم فرق دارن. توی این پست باهم بررسی می کنیم که چطوری میشه این فرایندو فان و راحت انجام داد.
وقتی بحث شبکهسازی میشه احتمالا یه جور دورهمی تکنولوژی به نظر میاد که با آدمای هم صنفت حرف میزنی و بعدش تو لینکدین بهشون درخواست میدی. خب، اینم یه نوع شبکهسازیه ولی حقیقتش اینه که این فقط یه گوشه کوچیک از شبکهسازیه.
فکر کردن به اینکه باید بری تو این جور دورهمیا شرکت کنی تا بتونی از فایدههای شبکهسازی استفاده کنی، مثل اینه که فکر کنی حتما باید بری قرارهای گروهی تا ازدواج کنی! شاید برات جواب بده، ولی این که ازدواج چیه و چجوری اتفاق میفته نیست، و اکثر آدمها هم که اینطوری همسر پیدا نمیکنن.
واقعیت اینه که شبکهسازی یه چیزیه که میتونی با اراده و آگاهی انجامش بدی، ولی بیشتر وقتا اتفاقیه و اگه مهارت و دیدگاه درست رو داشته باشی، ازش سود میبری.
شما ممکنه در دورهمی حرفهای، مراسم مرتبط با برنامهنویسی و سخنرانیهای تکنولوژی مختلفی شرکت کنید و هیچ فرصتی از هیچ کدومشون پیدا نشه ولی این به معنای شرکت نکردن توشون نیست ولی در نهایت مثل قرار گذاشتنه، شانس خیلی کمی داری که تو یه قرار تصادفی همسرتو پیدا کنی، پس باید یاد بگیری از این پروسه لذت ببری. در نهایت، فرصتها از زندگی کردن معمولی به وجود میان.
یه توصیه واقعی برای شبکهسازی
پس چطور آدم باید «خوب شبکهسازی کنه»؟
کنجکاو باش!
کنجکاوی یه نیروی فوقالعادهایه که باعث میشه آدم رشد کنه.
درباره بقیه کنجکاو باش. آدمها خیلی باحالن، هر کدوم یه دنیایین! کلی چیز هست که بشه از آدمها یاد گرفت، کلی آدم هست که بشه باهاشون آشنا شد.
وقتی به بقیه اهمیت میدی، انگار که دانایی و تجربههای اونا رو به خودت اضافه میکنی. دیدگاههای مختلف آدم رو قویتر میکنه.
این یعنی داری یه شبکه از دوست و آشنا درست میکنی، داری با آدمای بیشتری آشنا میشی.
یه نکته جالب اینه که همیشه کشورهایی که با بقیه ارتباط کمتری دارن، رشد اقتصادیشون هم کمتره. این نشون میده که ارتباط با آدمای دیگه چقدر مهمه.
برای فرصتا دستت رو باز بذار
خب حالا که تورمونو انداختیم تو آب، یه عالمه ماهی توش گیر میاد. دیگه فقط کافیه دست به ماهی ببریم و درشون بیاریم.
آسون که میگم، بعضی ماهیها یه جوری سُر میخورن که نمیشه راحت گرفتشون. بعضی وقتا فرصتها یه ریسک کوچولو هم با خودشون میآرن. هر موقعیتی یه شکل خودشه و نمیشه یه قانون کلی براش گفت، ولی به نظرم اگه آدم یه کم جسورتر باشه، خیلی بیشتر میتونه به دست بیاره.
مهربون باش
آدمها اجتماعیان. ما برای اینکه با هم باشیم ساخته شدیم. حالا یه چیز جالب اینجاست که آدمها بیشتر دوست دارن با کسایی که باهاشون خوبن کار کنن. یعنی اگه تو با بقیه خوب باشی، اونا هم با تو خوبن. چه دوست، چه رفیق، چه سر کار.
راستش، من خودم معتقدم آدم باید برای خودش مهربون باشه، نه اینکه فقط بخواد بقیه ازش خوششون بیاد.
بخشنده باش
من بی نهایت سپاس گذار افرادی هستم که به من کمک کردن تا به اینجا برسم
اما چرخ روزگار می چرخه. همانطور که بقیه به من کمک کردن، من هم به دیگران کمک کردم. کمک به بقیه باعث بهتر شدن شغل من شد.
من بخشی از وقت آزادم را داوطلبانه صرف راهنمایی افرادی می کنم چون احساس می کنم روزی این تور ممکن است ماهی بگیره.
زندگی یک بازی با حاصل جمع صفر نیست. وقتی به کسی کمک می کنید به خودتون هم کمک کردید.
خب، اگه درونگرا باشی چی؟
یه حرف آخر به اونایی که زیاد اهل بیرون رفتن و ارتباط گرفتن نیستن. اینجور آدما که با بقیه حرف زدن انرژیشونو میگیره، منم همینم. با یکی حرف بزنم انگار یه ماراتن دویدم!
ولی خب، ورزش کردنم همینطوره. با این حال، آدم با تمرین میتونه ماراتن هم بدوه.
حرف زدن با بقیه و ورزش کردن اولش خیلی سختن، ولی آدم برای همین ساخته شده. میتونی یادش بگیری و با تمرین عاشقش بشی.
ورزش خوبه، حرف زدن با بقیه هم خوبه، پس برو بیرون و این کارو تمرین کن. شاید همیشه خستهکننده باشه، ولی آخرش حال میکنی.
خلاصه کلام:
شبکهسازی یعنی فقط قهوه خوردن توی یه جمع تکنولوژی و گرفتن چنتا شماره نیست.
بیشتر از هر چیزی یعنی ارتباط با آدمای دیگه.
این کارو برای کارت نمیکنی، برای اینکه آدمایی که دوست دارن با هم ارتباط بگیرن.
پس برو بیرون و با بقیه آشنا شو و دنبال کارای مشترک بگرد. کی میدونه، شاید یه همکاری خوب شروع بشه :)
🆔 @MdDaily
شبکهسازی خیلی مهمه اگه میخوای تو کارت پیشرفت کنی.
میگن مهمترین چیزی که از رفتن به دانشگاههای خوب گیرت میاد، درس نیست بلکه دوستاییه که پیدا میکنی. و راستش رو بخوای، حق باهاشونه
اما خیلیا میگن شبکهسازی خیلی سخته، حوصلهسربره و اصلا برای بعضیها ممکن نیست، مخصوصا اونایی که یه کم فرق دارن. توی این پست باهم بررسی می کنیم که چطوری میشه این فرایندو فان و راحت انجام داد.
وقتی بحث شبکهسازی میشه احتمالا یه جور دورهمی تکنولوژی به نظر میاد که با آدمای هم صنفت حرف میزنی و بعدش تو لینکدین بهشون درخواست میدی. خب، اینم یه نوع شبکهسازیه ولی حقیقتش اینه که این فقط یه گوشه کوچیک از شبکهسازیه.
فکر کردن به اینکه باید بری تو این جور دورهمیا شرکت کنی تا بتونی از فایدههای شبکهسازی استفاده کنی، مثل اینه که فکر کنی حتما باید بری قرارهای گروهی تا ازدواج کنی! شاید برات جواب بده، ولی این که ازدواج چیه و چجوری اتفاق میفته نیست، و اکثر آدمها هم که اینطوری همسر پیدا نمیکنن.
واقعیت اینه که شبکهسازی یه چیزیه که میتونی با اراده و آگاهی انجامش بدی، ولی بیشتر وقتا اتفاقیه و اگه مهارت و دیدگاه درست رو داشته باشی، ازش سود میبری.
شما ممکنه در دورهمی حرفهای، مراسم مرتبط با برنامهنویسی و سخنرانیهای تکنولوژی مختلفی شرکت کنید و هیچ فرصتی از هیچ کدومشون پیدا نشه ولی این به معنای شرکت نکردن توشون نیست ولی در نهایت مثل قرار گذاشتنه، شانس خیلی کمی داری که تو یه قرار تصادفی همسرتو پیدا کنی، پس باید یاد بگیری از این پروسه لذت ببری. در نهایت، فرصتها از زندگی کردن معمولی به وجود میان.
یه توصیه واقعی برای شبکهسازی
پس چطور آدم باید «خوب شبکهسازی کنه»؟
کنجکاو باش!
کنجکاوی یه نیروی فوقالعادهایه که باعث میشه آدم رشد کنه.
درباره بقیه کنجکاو باش. آدمها خیلی باحالن، هر کدوم یه دنیایین! کلی چیز هست که بشه از آدمها یاد گرفت، کلی آدم هست که بشه باهاشون آشنا شد.
وقتی به بقیه اهمیت میدی، انگار که دانایی و تجربههای اونا رو به خودت اضافه میکنی. دیدگاههای مختلف آدم رو قویتر میکنه.
این یعنی داری یه شبکه از دوست و آشنا درست میکنی، داری با آدمای بیشتری آشنا میشی.
یه نکته جالب اینه که همیشه کشورهایی که با بقیه ارتباط کمتری دارن، رشد اقتصادیشون هم کمتره. این نشون میده که ارتباط با آدمای دیگه چقدر مهمه.
برای فرصتا دستت رو باز بذار
خب حالا که تورمونو انداختیم تو آب، یه عالمه ماهی توش گیر میاد. دیگه فقط کافیه دست به ماهی ببریم و درشون بیاریم.
آسون که میگم، بعضی ماهیها یه جوری سُر میخورن که نمیشه راحت گرفتشون. بعضی وقتا فرصتها یه ریسک کوچولو هم با خودشون میآرن. هر موقعیتی یه شکل خودشه و نمیشه یه قانون کلی براش گفت، ولی به نظرم اگه آدم یه کم جسورتر باشه، خیلی بیشتر میتونه به دست بیاره.
مهربون باش
آدمها اجتماعیان. ما برای اینکه با هم باشیم ساخته شدیم. حالا یه چیز جالب اینجاست که آدمها بیشتر دوست دارن با کسایی که باهاشون خوبن کار کنن. یعنی اگه تو با بقیه خوب باشی، اونا هم با تو خوبن. چه دوست، چه رفیق، چه سر کار.
راستش، من خودم معتقدم آدم باید برای خودش مهربون باشه، نه اینکه فقط بخواد بقیه ازش خوششون بیاد.
بخشنده باش
من بی نهایت سپاس گذار افرادی هستم که به من کمک کردن تا به اینجا برسم
اما چرخ روزگار می چرخه. همانطور که بقیه به من کمک کردن، من هم به دیگران کمک کردم. کمک به بقیه باعث بهتر شدن شغل من شد.
من بخشی از وقت آزادم را داوطلبانه صرف راهنمایی افرادی می کنم چون احساس می کنم روزی این تور ممکن است ماهی بگیره.
زندگی یک بازی با حاصل جمع صفر نیست. وقتی به کسی کمک می کنید به خودتون هم کمک کردید.
خب، اگه درونگرا باشی چی؟
یه حرف آخر به اونایی که زیاد اهل بیرون رفتن و ارتباط گرفتن نیستن. اینجور آدما که با بقیه حرف زدن انرژیشونو میگیره، منم همینم. با یکی حرف بزنم انگار یه ماراتن دویدم!
ولی خب، ورزش کردنم همینطوره. با این حال، آدم با تمرین میتونه ماراتن هم بدوه.
حرف زدن با بقیه و ورزش کردن اولش خیلی سختن، ولی آدم برای همین ساخته شده. میتونی یادش بگیری و با تمرین عاشقش بشی.
ورزش خوبه، حرف زدن با بقیه هم خوبه، پس برو بیرون و این کارو تمرین کن. شاید همیشه خستهکننده باشه، ولی آخرش حال میکنی.
خلاصه کلام:
شبکهسازی یعنی فقط قهوه خوردن توی یه جمع تکنولوژی و گرفتن چنتا شماره نیست.
بیشتر از هر چیزی یعنی ارتباط با آدمای دیگه.
این کارو برای کارت نمیکنی، برای اینکه آدمایی که دوست دارن با هم ارتباط بگیرن.
پس برو بیرون و با بقیه آشنا شو و دنبال کارای مشترک بگرد. کی میدونه، شاید یه همکاری خوب شروع بشه :)
🆔 @MdDaily
❤🔥17👍6😁1
سلام سلام!
به خاطر یه سری ددلاین ها و شرایطی که بوجود اومد حدودا یک ماهی نتونستم تو کانال فعالیتی داشته باشم و ممنونم از همگی که تا اینجا همراه من بودید 🫶🏻
بریم که فعالیت رو با انرژی شروع کنیم :)
به خاطر یه سری ددلاین ها و شرایطی که بوجود اومد حدودا یک ماهی نتونستم تو کانال فعالیتی داشته باشم و ممنونم از همگی که تا اینجا همراه من بودید 🫶🏻
بریم که فعالیت رو با انرژی شروع کنیم :)
❤12👍3🔥2👎1
چرا باید پروژتون رو منتشر کنید حتی اگه بد باشه؟
واقعاً در شروع کار مهم نیست که پروژه ها چقدر ساده، ناپخته یا «غیر حرفهای» باشن. مهم اینکه تموم و منتشر بشن. حالا چرا؟ افراد زیادی هستن که وارد این حوزه میشن و شروع میکنن تویه یک چرخه ی بی پایان از دوره دیدن گیر کردن و در نهایت از اینکه خروجی ای نمی بینن از کارشون نا امید میشن. پس فقط شروع به ساختن کنید و بذارید بقیه کارتون رو ببینن. چیزی که مهمه اینه که در نهایت یه چیزی ساختید و این حس خوبی بهتون میده. درنهایت سریع تر یاد میگیری و کلی پروژه میزنی!
خودتو از نتیجه کار جدا کن.
چرا باید این کار رو کنی؟ مگه نباید بر اساس کیفیت خروجی کار قضاوت بشی؟ نباید تمرکز روی تولید بهترین کار ممکن گذاشت؟ خب، بله... ولی همونطور که نه. هر چقدر هم که تجربه داشته باشی، وقتی یه کار خلاقانه میکنی،احتمالا ازش ناراضی هستی. بعضی وقتا تو طول ساختن، بعضی وقتا آخرش؛ دیروز فکر میکردی چیزی که ساخته بودی عالیه، امروز فکر میکنی یه تیکه آشغاله و اگه منتشرش کنی همه بهت میخندن.
هر چقدر بیشتر خودمون رو به نتیجه کار گره بزنیم، بیشتر احتمال داره روی نکات منفی تمرکز کنیم و در نهایت منجر به بیعملی میشه. پس باید کمتر اهمیت بدی.
سخته، ولی سعی کن به چیزی که ساختی دل نبندی. بذار تا بقیه امتحان کنن، فیدبک بگیری و از همه مهمتر جلو برو. اگه جلو نری هیچ وقت پیشرفت نمیکنی.
بس کن یادگرفتن رو!
تو دیگه به اندازه کافی بلدی که بتونی پروژه های خفن بسازی. وقتی میگم "بس کن یادگرفتن رو" منظورم این نیست که دیگه یاد نگیری (چون همه ما همیشه در حال یادگیری هستیم)، منظورم اینه که:
ویدئو تو یوتیوب و حتی کتاب رو ببند،
حتما این پست رو هم تموم کن!
به جای این کارها چی کار کنی؟ کد ادیتورت رو باز کن و شروع کن به کد نویسی.
میگم "اول باید <مفهوم-خاص> رو بهتر یاد بگیرم تا بتونم چیزی بسازم."
یا "باید در مورد <موضوع-خاص> بیشتر بدونم."
یا "چطور میشه اگه <ویژگی-خاص> من طبق بهترین شیوه های فعلی نباشه؟"
این سوالا مهم نیستن؟ نه مهم هستن، ولی خیلی وقتا، برای پروژه تمرینی که داری روش کار می کنی، مهم نیستن. تو واقعاً به اندازه کافی بلدی که حداقل شروع کنی. بقیه چیزها رو می تونی در حین کار یاد بگیری.
کپیکاری اشکال نداره!
یه کاری که هزار نفر دیگه انجامش دادن، چرا خودت بخوای از اول شروع کنی؟ البته این معنیاش این نیست که هیچی یاد نگیریا، فقط میگم یه سری کارا رو لازم نیست از صفر شروع کنی. آخر سر، هرچی بسازی یه جوری بوی خودتو میده. پس نترس که بقیه فکر کنن کپیکاری کردی. راستش رو بخوای، خیلی هم خوبه که از کارای بقیه استفاده کنی. مثلاً یه کد آماده پیدا کنی و روش کار کنی، یا بری تو گیت هاب و کد بقیه رو بخونی. اینجوری خیلی زودتر به نتیجه میرسی.
یه فیچر یه فیچر کارو جلو ببر
برنامهریزی خوبه، اما اگه بخوای باهاش کارو ول کنی اصلا خوب نیست! برنامهریزی یه جور خودتو گول زدنیه که میگی: «آهان، خب من که برنامهریزی کردم، پس کارم تمومه!»
یه چیز دیگه هم هست، ممکنه وسط کار یه چیزی یادت بیاد که اصلا تو برنامهت نبوده. پس زیاد خودتو درگیر برنامهریزی نکن. یه فیچر رو درست کن، بعد بعدی رو. مثلا اگه پروژه ی جدید ساختی شروع کن به تعریف کردن ماژول هاش مثل:
اینجوری نه خسته میشی، نه گیج. هر فیچری که تموم میشه، حسابی کیف میکنی که یه قدم جلو رفتی. حتی اگه خیلی کوچیک باشه و از todo list هم غافل نشید.
ولش کن بابا، زود منشترش کن!
اول از همه اینکه اینجوری از اون ترس لعنتی خلاص میشی که نکنه کارم بد شده باشه. آخه هنوز که کامل نشده. بعدشم کلی نظر میگیری و میفهمی باید چی کار کنی تا بهترش کنی.
تمومش کن، حتی اگه گند باشه!
میدونم کار سختیه خودم هم باهاش مشکل دارم. ولی اگه کاری رو شروع کردی، تمومش کن. حتی اگه از کارت بدت بیاد، با تموم کردنش یاد میگیری چطور یه کارو تا آخر ببری .یه چیز خوب دیگه اینه که وقتی یه کارو تموم میکنی و یه مدت ازش فاصله میگیری، میبینی که خیلی هم بد نشده! و اگه هنوزم ازش خوشت نیاد، حداقل کلی چیز جدید یاد گرفتی. حالا تو مهارتهای جدید، یه دیدگاه جدید و یه روش بهتر برای کار کردن یاد گرفتی. این خیلی خوبه!
کلام آخر
حالا که دارم این پست رو تموم میکنم، میخوام یه نقل قول از Kurt Vonnegut بهتون بگم. اگه کدنویسی رو یه نوع هنر حساب کنیم، حرفای اون خیلی به کارمون میاد:
خب دوستان، حالا برید و حسابی کد بزنید :)
🆔 @MdDaily
واقعاً در شروع کار مهم نیست که پروژه ها چقدر ساده، ناپخته یا «غیر حرفهای» باشن. مهم اینکه تموم و منتشر بشن. حالا چرا؟ افراد زیادی هستن که وارد این حوزه میشن و شروع میکنن تویه یک چرخه ی بی پایان از دوره دیدن گیر کردن و در نهایت از اینکه خروجی ای نمی بینن از کارشون نا امید میشن. پس فقط شروع به ساختن کنید و بذارید بقیه کارتون رو ببینن. چیزی که مهمه اینه که در نهایت یه چیزی ساختید و این حس خوبی بهتون میده. درنهایت سریع تر یاد میگیری و کلی پروژه میزنی!
خودتو از نتیجه کار جدا کن.
چرا باید این کار رو کنی؟ مگه نباید بر اساس کیفیت خروجی کار قضاوت بشی؟ نباید تمرکز روی تولید بهترین کار ممکن گذاشت؟ خب، بله... ولی همونطور که نه. هر چقدر هم که تجربه داشته باشی، وقتی یه کار خلاقانه میکنی،احتمالا ازش ناراضی هستی. بعضی وقتا تو طول ساختن، بعضی وقتا آخرش؛ دیروز فکر میکردی چیزی که ساخته بودی عالیه، امروز فکر میکنی یه تیکه آشغاله و اگه منتشرش کنی همه بهت میخندن.
هر چقدر بیشتر خودمون رو به نتیجه کار گره بزنیم، بیشتر احتمال داره روی نکات منفی تمرکز کنیم و در نهایت منجر به بیعملی میشه. پس باید کمتر اهمیت بدی.
سخته، ولی سعی کن به چیزی که ساختی دل نبندی. بذار تا بقیه امتحان کنن، فیدبک بگیری و از همه مهمتر جلو برو. اگه جلو نری هیچ وقت پیشرفت نمیکنی.
بس کن یادگرفتن رو!
تو دیگه به اندازه کافی بلدی که بتونی پروژه های خفن بسازی. وقتی میگم "بس کن یادگرفتن رو" منظورم این نیست که دیگه یاد نگیری (چون همه ما همیشه در حال یادگیری هستیم)، منظورم اینه که:
ویدئو تو یوتیوب و حتی کتاب رو ببند،
حتما این پست رو هم تموم کن!
به جای این کارها چی کار کنی؟ کد ادیتورت رو باز کن و شروع کن به کد نویسی.
میگم "اول باید <مفهوم-خاص> رو بهتر یاد بگیرم تا بتونم چیزی بسازم."
یا "باید در مورد <موضوع-خاص> بیشتر بدونم."
یا "چطور میشه اگه <ویژگی-خاص> من طبق بهترین شیوه های فعلی نباشه؟"
این سوالا مهم نیستن؟ نه مهم هستن، ولی خیلی وقتا، برای پروژه تمرینی که داری روش کار می کنی، مهم نیستن. تو واقعاً به اندازه کافی بلدی که حداقل شروع کنی. بقیه چیزها رو می تونی در حین کار یاد بگیری.
کپیکاری اشکال نداره!
یه کاری که هزار نفر دیگه انجامش دادن، چرا خودت بخوای از اول شروع کنی؟ البته این معنیاش این نیست که هیچی یاد نگیریا، فقط میگم یه سری کارا رو لازم نیست از صفر شروع کنی. آخر سر، هرچی بسازی یه جوری بوی خودتو میده. پس نترس که بقیه فکر کنن کپیکاری کردی. راستش رو بخوای، خیلی هم خوبه که از کارای بقیه استفاده کنی. مثلاً یه کد آماده پیدا کنی و روش کار کنی، یا بری تو گیت هاب و کد بقیه رو بخونی. اینجوری خیلی زودتر به نتیجه میرسی.
یه فیچر یه فیچر کارو جلو ببر
برنامهریزی خوبه، اما اگه بخوای باهاش کارو ول کنی اصلا خوب نیست! برنامهریزی یه جور خودتو گول زدنیه که میگی: «آهان، خب من که برنامهریزی کردم، پس کارم تمومه!»
یه چیز دیگه هم هست، ممکنه وسط کار یه چیزی یادت بیاد که اصلا تو برنامهت نبوده. پس زیاد خودتو درگیر برنامهریزی نکن. یه فیچر رو درست کن، بعد بعدی رو. مثلا اگه پروژه ی جدید ساختی شروع کن به تعریف کردن ماژول هاش مثل:
-> auth
-> client
-> admin
-> landing-page
-> payment
اینجوری نه خسته میشی، نه گیج. هر فیچری که تموم میشه، حسابی کیف میکنی که یه قدم جلو رفتی. حتی اگه خیلی کوچیک باشه و از todo list هم غافل نشید.
ولش کن بابا، زود منشترش کن!
اول از همه اینکه اینجوری از اون ترس لعنتی خلاص میشی که نکنه کارم بد شده باشه. آخه هنوز که کامل نشده. بعدشم کلی نظر میگیری و میفهمی باید چی کار کنی تا بهترش کنی.
تمومش کن، حتی اگه گند باشه!
میدونم کار سختیه خودم هم باهاش مشکل دارم. ولی اگه کاری رو شروع کردی، تمومش کن. حتی اگه از کارت بدت بیاد، با تموم کردنش یاد میگیری چطور یه کارو تا آخر ببری .یه چیز خوب دیگه اینه که وقتی یه کارو تموم میکنی و یه مدت ازش فاصله میگیری، میبینی که خیلی هم بد نشده! و اگه هنوزم ازش خوشت نیاد، حداقل کلی چیز جدید یاد گرفتی. حالا تو مهارتهای جدید، یه دیدگاه جدید و یه روش بهتر برای کار کردن یاد گرفتی. این خیلی خوبه!
کلام آخر
حالا که دارم این پست رو تموم میکنم، میخوام یه نقل قول از Kurt Vonnegut بهتون بگم. اگه کدنویسی رو یه نوع هنر حساب کنیم، حرفای اون خیلی به کارمون میاد:
هنر را تمرین کنید، چه خوب یا بد، این راهی است برای رشد روح شما، به خاطر خدا. در حمام آواز بخوانید. با رادیو برقصید. داستان بگویید. برای یک دوست شعر بنویسید، حتی یک شعر بد. تا جایی که می توانید این کار را انجام دهید. پاداش بزرگی دریافت خواهید کرد. چیزی خلق خواهید کرد.
خب دوستان، حالا برید و حسابی کد بزنید :)
🆔 @MdDaily
❤🔥11👍6⚡1👎1🔥1
معرفی upscayl
برای بزرگ نمایی و افزایش کیفیت وضوح تصاویر دنبال یه ابزار متن باز بودم که نیاز به اینترنت نداشته باشه و رو گرافیک Intel هم کار بکنه که upscayl همه رو داشت :)
برای لینوکس، ویندوز و مک در دسترسه و من توی لینوکس نسخه ی flatpak اش رو نصب کردم
🌐 https://upscayl.org/
ℹ️ https://github.com/upscayl/upscayl
🆔 @MdDaily
برای بزرگ نمایی و افزایش کیفیت وضوح تصاویر دنبال یه ابزار متن باز بودم که نیاز به اینترنت نداشته باشه و رو گرافیک Intel هم کار بکنه که upscayl همه رو داشت :)
برای لینوکس، ویندوز و مک در دسترسه و من توی لینوکس نسخه ی flatpak اش رو نصب کردم
🌐 https://upscayl.org/
ℹ️ https://github.com/upscayl/upscayl
🆔 @MdDaily
❤🔥7👍5🆒1
چرا توی Js موقع استفاده از fetch باید دوبار منتظر بمونیم؟
داشتم کد js میزدم و برام سوال شد چرا موقع استفاده از fetch باید دوبار منتظر موند.
وقتی ما این کد رو داریم:
بعد از اینکه response برگردونده شد باید بتونیم بلادرنگ به .json دسترسی داشته باشیم نه؟ ولی با وجود اینکه پارس کردن جیسون async نیست باید از این کد استفاده کنیم تا promise برنگرده :
چه اتفاقی میوفته؟
طبق مستندات MDN’s article on the Fetch API:
یعنی fetch سریع جواب میده و هدر رو برمیگردونه، ولی ممکنه هنوز همه اطلاعات رو نگرفته باشه.
پس در نتیجه اینطوری میتونیم اول نتیجه درخواست رو بگیریم و اگه نتیجه اون چیزی بود که میخواستیم body رو بگیریم.
کنجکاو بمونید :)
🆔 @MdDaily
داشتم کد js میزدم و برام سوال شد چرا موقع استفاده از fetch باید دوبار منتظر موند.
وقتی ما این کد رو داریم:
// اول منتظر میمونیم
let response = await fetch("/mddaily");
بعد از اینکه response برگردونده شد باید بتونیم بلادرنگ به .json دسترسی داشته باشیم نه؟ ولی با وجود اینکه پارس کردن جیسون async نیست باید از این کد استفاده کنیم تا promise برنگرده :
// بعد هم منتظر میمونیم :)
let myObject = await response.json();
چه اتفاقی میوفته؟
طبق مستندات MDN’s article on the Fetch API:
دستور fetch() یه آدرس اینترنتی میگیره و میره سراغ اون آدرس تا اطلاعات رو بیاره. بعد یه قول میده که به محض اینکه جواب گرفت، حتی اگه جوابش اشتباه باشه، بهمون خبر بده.
یعنی fetch سریع جواب میده و هدر رو برمیگردونه، ولی ممکنه هنوز همه اطلاعات رو نگرفته باشه.
پس در نتیجه اینطوری میتونیم اول نتیجه درخواست رو بگیریم و اگه نتیجه اون چیزی بود که میخواستیم body رو بگیریم.
let response = await fetch("/some-url");
// اینجا،
// 1. جواب اولی که سرور میده رو گرفتیم.
// 2. اما ممکنه هنوز همه اطلاعات رو نگرفته باشیم.
let myObject = await response.json();
// اینجا،
// 1. بقیه اطلاعات رو هم گرفتیم.
// 2. اطلاعات رو به شکل JSON خوندیم.کنجکاو بمونید :)
🆔 @MdDaily
🔥13👍2👌2❤🔥1
یه مقاله با عنوان 3 Lessons from the Smartest Developers I’ve Worked With رو می خوندم و تجربه ی کسی بود که تمام عمر برنامه نویسیش کد ها رو کپی پیست میکرده (داستان آشنا) برای کد هاش تست نمی نوشته و به بازبینی کد هاهم اهیمتی نمیداده (اگه اشک تو چشم هات حلقه زد صبر کن تا بقیش رو بگم ) در نهایت در ادامه ی مسیرش با ادمای جالبی آشنا میشه و چیزهایی که ازشون یاد گرفته رو تواین مقاله میگه. من قرار مهم ترین نکات مقاله رو بگم و یه جورایی تجربه های خودمم بهشون اضافه کنم.
1- اگه خوبشو تجربه نکنی، بدشو نمیشناسی
بریان جنی قبل از اینکه برنامهنویسای حرفه ای رو ببینه، هدفش تو کار خیلی پایین بوده. میگه:
جنی با دان آشنا میشه که از همون اول معلوم بوده این بشر یه چیز دیگهایه. روز اول کار، متفاوت غذا میخورده و بعدش میگه خستهس و میخواد بره خونه بخوابه. فقط یه آدم نابغه میتونه این کارا رو بکنه و اخراج نشه. این آقا تو 40 سالگی از پزشکی میاد سراغ برنامهنویسی. وقتی جنی میبینتش، نزدیک 50 سالش بوده. جنی میگه من سه ساله که برنامهنویس بودم و فکر میکردم دیگه خیلی پرو هستم. اشتباه محض!
دان با جنی کار میکرده و جنی تازه میفهمه چقدر توی کارش جونیوره. این رو من خودم بارها تجربه کردم تا وقتی با آدمایی که ازت بهتر نیستند کار نکنی نمیدانی که چه قدر نمیدانی.
جنی ادامه میده: دان برای کدهایی که مینوشتیم، دان تست هم مینوشت. من تو عمرم تست ننوشته بودم.من حوصلهی این کارا رو نداشتم. فقط میخواستم کار راه بیفته.
دان اصلا با این روش کار کردن من حال نمیکرد. اگه کدی مینوشتم که تست نداشت، ردش میکرد. وقتی کمک میخواستم، جوابم رو نمیداد و میگفت برو خودت پیدا کن. فقط 9 ماه با هم کار کردیم، ولی خیلی چیزها ازش یاد گرفتم. یاد گرفتم چطور کدهام رو تست کنم، ابزارهام رو بهتر بشناسم و همزمان که کار رو پیش میبرم، درست هم انجامش بدم.آخرا شنیدم یه شرکت چند میلیونی زده.
2- بازرس جهنم... یا شاید از بهشت
جنی کسی بوده که کد های کسیو چک نمیکرده چون تیم پر بود از برنامهنویسای حرفه ای. میگفته خب دیگه خودشون چک میکنن دیگه! ولی چند بار به خاطر چک نکردن کد ها نزدیک بوده برنامه خراب بشه. با پارکر اشنا میشه. جنی ازش میپرسه چطوری کد های بقیه رو چک میکنی؟
* اول کد رو اجرا میکرد تا ببینه کار میکنه یا نه. اگه کار نکرد، دیگه وقت تلف نمیکرد.
* خط به خط کد های جدید رو چک میکرد تا بفهمه چیکار داره میکنه!
* هر جا گیر میکرد، از برنامهنویس میپرسید تا مطمئن بشه همه چی رو فهمیده.
* وقتی کد خیلی بزرگ بود، مینشست با برنامهنویس حرف میزد تا همه چی رو روشن کنه.
* همیشه صبح زود کدها رو چک میکرد تا حواسش پرت نشه.
3- لبه تکنولوژری، آره یا نه
جنی با جیمز یه تیمی از توسعه دهنگان رو شروع میکنن به مدیریت کردن. حالا که جنی مدیر مهندسی شده فرصت رو غنیمت میشماره و شروع میکنه یه نقشه ی راه سه ماهه ریختن و بالاخره می تونسته از تمام تکنولوژی ایی استفاده کنه که مدتها بود آرزوی کار باهاشون رو داشته و باید بگم چه قدر این داستان برای خیلی هامون آشناس .
جیمز میاد پیشش و میگه: "این همه کار میکنی برای چی؟" یه عالمه حرف فنی میزنه که فقط بگه من خیلی بروزم و کلی چیز که مثلا بیایم با کوبر ادغام بشیم و از یه ابزار cli خفن استفاده و سایت رو استاتیک کنیم.
جیمز بهش میگه اینا چطوری قرار به اهداف تجاری سه ماهه ما کمک کنه؟ جنی متوجه میشه اصلا به این فکر نکرده بود که کارشون درآمدزایی هم هست! فکر میکرد فقط باید از تکنولوژی جدید استفاده کنه.
جیمز گفت: "ما که اینجا نیستیم که فقط با تکنولوژی بازی کنیم! باید کاری کنیم که پول در بیاریم."
جنی با تیم حرف میزنه تا ببینه واقعا به چی نیاز دارن. میبینه اون همه تکنولوژی جدید اصلا به دردشون نمیخورد. میفهمه که باید بیشتر به فکر نیازهای کسبوکار باشه نه اینکه فقط به فکر تکنولوژی جدید بود.
---
اینکه توی هرکاری الگو هایی داشته باشیم خیلی مهمه. کلی نکات هست که میتونیم یاد بگیریم. میگن اگه تو یه جمع هستی و از همه باهوشتری، اونجا جای تو نیست. آسونتره که اینو بگی تا اینکه انجامش بدی. یه چیزی که از این حرفا یاد گرفتم اینه که باید همیشه دنبال یادگیری چیزای جدید باشیم و تو تیم هایی کار کنیم که ازمون با تجربه ترن. در نهایت بریم تو شرایطی که راحت نیستیم :)
کنجکاو بمونید :)
🆔 @MdDaily
1- اگه خوبشو تجربه نکنی، بدشو نمیشناسی
بریان جنی قبل از اینکه برنامهنویسای حرفه ای رو ببینه، هدفش تو کار خیلی پایین بوده. میگه:
به این فکر نمیکردم که خیلی خوب کار کنم، فقط میخواستم اخراج نشم. ولی بازم نتونستم به این هدفم برسم. آدما یه سری حرفای تکراری میزنن، مثلاً میگن: "روی سیستم من که کار میکنه!"، "نمیدونم چطور کار میکنه، فقط کار میکنه!"، "من فقط کد مینویسم، نمیدونم بیزینس چطوری کار میکنه!"، "به نظر من که اوکیه!" واسه من هم پیش اومده بود که اینجوری حرف بزنم.
جنی با دان آشنا میشه که از همون اول معلوم بوده این بشر یه چیز دیگهایه. روز اول کار، متفاوت غذا میخورده و بعدش میگه خستهس و میخواد بره خونه بخوابه. فقط یه آدم نابغه میتونه این کارا رو بکنه و اخراج نشه. این آقا تو 40 سالگی از پزشکی میاد سراغ برنامهنویسی. وقتی جنی میبینتش، نزدیک 50 سالش بوده. جنی میگه من سه ساله که برنامهنویس بودم و فکر میکردم دیگه خیلی پرو هستم. اشتباه محض!
دان با جنی کار میکرده و جنی تازه میفهمه چقدر توی کارش جونیوره. این رو من خودم بارها تجربه کردم تا وقتی با آدمایی که ازت بهتر نیستند کار نکنی نمیدانی که چه قدر نمیدانی.
جنی ادامه میده: دان برای کدهایی که مینوشتیم، دان تست هم مینوشت. من تو عمرم تست ننوشته بودم.من حوصلهی این کارا رو نداشتم. فقط میخواستم کار راه بیفته.
دان اصلا با این روش کار کردن من حال نمیکرد. اگه کدی مینوشتم که تست نداشت، ردش میکرد. وقتی کمک میخواستم، جوابم رو نمیداد و میگفت برو خودت پیدا کن. فقط 9 ماه با هم کار کردیم، ولی خیلی چیزها ازش یاد گرفتم. یاد گرفتم چطور کدهام رو تست کنم، ابزارهام رو بهتر بشناسم و همزمان که کار رو پیش میبرم، درست هم انجامش بدم.آخرا شنیدم یه شرکت چند میلیونی زده.
2- بازرس جهنم... یا شاید از بهشت
جنی کسی بوده که کد های کسیو چک نمیکرده چون تیم پر بود از برنامهنویسای حرفه ای. میگفته خب دیگه خودشون چک میکنن دیگه! ولی چند بار به خاطر چک نکردن کد ها نزدیک بوده برنامه خراب بشه. با پارکر اشنا میشه. جنی ازش میپرسه چطوری کد های بقیه رو چک میکنی؟
* اول کد رو اجرا میکرد تا ببینه کار میکنه یا نه. اگه کار نکرد، دیگه وقت تلف نمیکرد.
* خط به خط کد های جدید رو چک میکرد تا بفهمه چیکار داره میکنه!
* هر جا گیر میکرد، از برنامهنویس میپرسید تا مطمئن بشه همه چی رو فهمیده.
* وقتی کد خیلی بزرگ بود، مینشست با برنامهنویس حرف میزد تا همه چی رو روشن کنه.
* همیشه صبح زود کدها رو چک میکرد تا حواسش پرت نشه.
3- لبه تکنولوژری، آره یا نه
جنی با جیمز یه تیمی از توسعه دهنگان رو شروع میکنن به مدیریت کردن. حالا که جنی مدیر مهندسی شده فرصت رو غنیمت میشماره و شروع میکنه یه نقشه ی راه سه ماهه ریختن و بالاخره می تونسته از تمام تکنولوژی ایی استفاده کنه که مدتها بود آرزوی کار باهاشون رو داشته و باید بگم چه قدر این داستان برای خیلی هامون آشناس .
جیمز میاد پیشش و میگه: "این همه کار میکنی برای چی؟" یه عالمه حرف فنی میزنه که فقط بگه من خیلی بروزم و کلی چیز که مثلا بیایم با کوبر ادغام بشیم و از یه ابزار cli خفن استفاده و سایت رو استاتیک کنیم.
جیمز بهش میگه اینا چطوری قرار به اهداف تجاری سه ماهه ما کمک کنه؟ جنی متوجه میشه اصلا به این فکر نکرده بود که کارشون درآمدزایی هم هست! فکر میکرد فقط باید از تکنولوژی جدید استفاده کنه.
جیمز گفت: "ما که اینجا نیستیم که فقط با تکنولوژی بازی کنیم! باید کاری کنیم که پول در بیاریم."
جنی با تیم حرف میزنه تا ببینه واقعا به چی نیاز دارن. میبینه اون همه تکنولوژی جدید اصلا به دردشون نمیخورد. میفهمه که باید بیشتر به فکر نیازهای کسبوکار باشه نه اینکه فقط به فکر تکنولوژی جدید بود.
---
اینکه توی هرکاری الگو هایی داشته باشیم خیلی مهمه. کلی نکات هست که میتونیم یاد بگیریم. میگن اگه تو یه جمع هستی و از همه باهوشتری، اونجا جای تو نیست. آسونتره که اینو بگی تا اینکه انجامش بدی. یه چیزی که از این حرفا یاد گرفتم اینه که باید همیشه دنبال یادگیری چیزای جدید باشیم و تو تیم هایی کار کنیم که ازمون با تجربه ترن. در نهایت بریم تو شرایطی که راحت نیستیم :)
کنجکاو بمونید :)
🆔 @MdDaily
🔥14✍4👍2
#شاید_موقت
رفتم بانک سپه حساب باز کنم، طرف گفت ما دیگه حساب فیزیکی باز نمیکنیم. باید بری مجازی باز کنی
گفتم اوکی. اپلیکیشن بانک امید رو نصب کردم و از لحاظ ui و ux یه شاهکاری زده بودند که مسئول شعبه هم گردن نمیگرفت.
بعد از اینکه مراحل رو رد کردم و موقع افتتاح حساب شد، گفت خب ببین احراز هویتت رو که آنلاین انجام دادیم، کارمزدم که باید بدی و هزینه ی پستم هست :)))
یه فاکتور صادر کرد. گفتیم اقا اینم اوکی بریم مرحله بعدی. هرچی صبر کردم دیدم خبری از افتتاح حساب نیست. به مسئول شعبه گفتم پس چیشد؟ زنگ زد پیگیری کرد گفت سامانه قطع شده، صبر کن حسابتو دستی بسازیم😭
بعد از کاغذ بازی های بانکی و گرفتن دوباره ی فی و کارمزد یه حساب فیزیکی ساخت تا حساب دیجیتال فعال شد :)))))
احساس میکنم ازم دزدی شده 😂😂😂
رفتم بانک سپه حساب باز کنم، طرف گفت ما دیگه حساب فیزیکی باز نمیکنیم. باید بری مجازی باز کنی
گفتم اوکی. اپلیکیشن بانک امید رو نصب کردم و از لحاظ ui و ux یه شاهکاری زده بودند که مسئول شعبه هم گردن نمیگرفت.
بعد از اینکه مراحل رو رد کردم و موقع افتتاح حساب شد، گفت خب ببین احراز هویتت رو که آنلاین انجام دادیم، کارمزدم که باید بدی و هزینه ی پستم هست :)))
یه فاکتور صادر کرد. گفتیم اقا اینم اوکی بریم مرحله بعدی. هرچی صبر کردم دیدم خبری از افتتاح حساب نیست. به مسئول شعبه گفتم پس چیشد؟ زنگ زد پیگیری کرد گفت سامانه قطع شده، صبر کن حسابتو دستی بسازیم😭
بعد از کاغذ بازی های بانکی و گرفتن دوباره ی فی و کارمزد یه حساب فیزیکی ساخت تا حساب دیجیتال فعال شد :)))))
احساس میکنم ازم دزدی شده 😂😂😂
🤣24😁2👍1
درود خدمت همگی من امیر هستم و امروز قراره درباره الستیک سرچ صحبت کنیم و ببینیم اصلا چی هست
الستیک سرچ یک ابزار سرچ و نگه داری داده است که بر اساس Apache Lucene
(من یه توضیح ریزی بدم چیه اینم یه ابزار و موتور سرچ دادس که متن باز و بر پایه زبان برنامه نویسی جاوا نوشته شده)
ساخته شده یک ابزار full text search هست یعنی میتونه جستجوی های حتی با یک کاراکتر انجام بده که برای سایت های مثل دیوار که کوچیکترین تغییر کمک میکنه بهشون در پیشنهاد کردن کمک کنه
ویژگی هایی که باعث میشود شما بخواهید از الستیک سرچ استفاده کنید
⭕️ هر دو نوع دیتا sql و nosql را ساپورت میکند همچنین تمام فرمت های فایل ها را ساپورت میکنه ولی fluentd and logstash به صورت خودکار ان را به json تبدیل میکنه
(پ.ن داده های sql داده های هستند که ساختار بندی و جدول بندی دارن اگه بخوام به زبان ساده بگم
داده ها یه شکلی هست که میشه دسته بندیشون کرد ولی داده های nosql از هردری سخنی هستن و نمیشه دسته بندی خاصی براشون گذاشت که متد های خاص خودشو داره در اینده ای نه چندان دور درباره جفتش صحبت میکنم اگه دوست داشتی)
⭕️ همچنین میتوانیم ۴ نوع (phase (hot warm cold freeze البته فاز فرییز الان حذف شده که ما میتوانیم این فازهارو به نودهامون اضافه کنیم (پ.ن بزارید بگم اصلا چی هستش نود ببینید ) خب اینا اصلا به چه درد میخورن و چی هستن فاز hot قابلیت read and write باهم دارد و برای سرور هایی که هارد SSD دارن خیلی خوبه ولی فاز های دیگر فقط برای read هستن ولی لولهاشون فرق داره و برای جاهایی که از هارد HDD استفاده میکنن خیلی خوبه که به منظور دخیره داده و خواندن از روی ان استفاده میکنیم
⭕️ قابلیت بسیار اسان اد کردن سرور به صورت ریسورس اضافه تنها در ۳۰ ثانیه شما کانفیگ الستیک سرچ کپی میکنید در قسمت دیسکاوری آیپی سور جدید میدهید و اکنون شما سرور جدیدی اضافه کردید
⭕️همونطور که پیش تر گفتم قابلیت full-text search را دارد و در سایت های خرید مانند دیوار دیجیکالا ترب میتواند استفاده شود( این مبنی بر این نیست که استفاده میکنند تا انجایی که من میدونم دیوار استفاده میکنند )
🆔 @MdDaily
الستیک سرچ یک ابزار سرچ و نگه داری داده است که بر اساس Apache Lucene
(من یه توضیح ریزی بدم چیه اینم یه ابزار و موتور سرچ دادس که متن باز و بر پایه زبان برنامه نویسی جاوا نوشته شده)
ساخته شده یک ابزار full text search هست یعنی میتونه جستجوی های حتی با یک کاراکتر انجام بده که برای سایت های مثل دیوار که کوچیکترین تغییر کمک میکنه بهشون در پیشنهاد کردن کمک کنه
ویژگی هایی که باعث میشود شما بخواهید از الستیک سرچ استفاده کنید
⭕️ هر دو نوع دیتا sql و nosql را ساپورت میکند همچنین تمام فرمت های فایل ها را ساپورت میکنه ولی fluentd and logstash به صورت خودکار ان را به json تبدیل میکنه
(پ.ن داده های sql داده های هستند که ساختار بندی و جدول بندی دارن اگه بخوام به زبان ساده بگم
داده ها یه شکلی هست که میشه دسته بندیشون کرد ولی داده های nosql از هردری سخنی هستن و نمیشه دسته بندی خاصی براشون گذاشت که متد های خاص خودشو داره در اینده ای نه چندان دور درباره جفتش صحبت میکنم اگه دوست داشتی)
⭕️ همچنین میتوانیم ۴ نوع (phase (hot warm cold freeze البته فاز فرییز الان حذف شده که ما میتوانیم این فازهارو به نودهامون اضافه کنیم (پ.ن بزارید بگم اصلا چی هستش نود ببینید ) خب اینا اصلا به چه درد میخورن و چی هستن فاز hot قابلیت read and write باهم دارد و برای سرور هایی که هارد SSD دارن خیلی خوبه ولی فاز های دیگر فقط برای read هستن ولی لولهاشون فرق داره و برای جاهایی که از هارد HDD استفاده میکنن خیلی خوبه که به منظور دخیره داده و خواندن از روی ان استفاده میکنیم
⭕️ قابلیت بسیار اسان اد کردن سرور به صورت ریسورس اضافه تنها در ۳۰ ثانیه شما کانفیگ الستیک سرچ کپی میکنید در قسمت دیسکاوری آیپی سور جدید میدهید و اکنون شما سرور جدیدی اضافه کردید
⭕️همونطور که پیش تر گفتم قابلیت full-text search را دارد و در سایت های خرید مانند دیوار دیجیکالا ترب میتواند استفاده شود( این مبنی بر این نیست که استفاده میکنند تا انجایی که من میدونم دیوار استفاده میکنند )
🆔 @MdDaily
⚡7❤6✍1👍1
اما خب طرز کار الاستیک سرچ به چه صورتی هستش ؟
قبل از رفتن سراغ این قسمت چند مورد تاپیک خدمتون معرفی میکنم و در اخر میگم چجوری این ها به هم متصل میشوند
خب تاپیک هایی که باید بدونیم ایناس
الستیک سرچ موتورجستجو و کلا قلب تپنده ی این محصول است و همه چیز هستش (به همین راحتی)
کیبانا رابط گرافیکی الستیک سرچ برای استفاده راحت تر هستش و خیلی راحت استفاده ازش اگه الستیک سرچ بلد باشید
فلوئنت دی و لاگ استش هستش که بخوام خودمونی بگم نقش رابط داره که لاگ از کف سیستم جمع میکنه و به الستیک سرچ میفرسته
خب حالا در عمل ما میخواهیم لاگ های بخشی از سیستم جمع کنیم چکار انجام میدیم؟
اول از همه چند سرور اماده میکنیم و در کانیفیگ هایشان ip بقیه سرورهارو و میزاریم سپس نوع نود های که توضیح خواهم داد میزاریم مهمترین نوع نود همان master and replica (یعنی یک سرور نقش اصلی و پردازش دارد و بقیه کپی دیتا از روی اون هستن )هستش بعد از اون ادرس الاستیک سرچ به fluentd میدهیم و کانفیگ اون را هم درست میکنیم که نمونه هاشو میزارم و در نهایت کانفیگ kibana ست خواهیم کرد
خب مهمترین قسمت شاید میتونم بگم fluentd یا ابزار دیگه ای که مثل همین هستش logstash هست چون ۲ نوع کانفیگ داره یکی کانفیگ جمع اوری لاگ و یکی کانفیگ ارسال لاگ ولی همگی در فایلی به عنوان fluent.conf هستند
این یک مثال ساده از جمع اوری لاگ nginx ارسال ان به الستیک سرچ هست
در قسمت source تنطیمات مربوط به لاگ nginx را گذاشتیم و در قسمت match تنظیمات مربوط به elasticsearch(مثلا یکیشن اینه چون جفتش روی یه سرور روی لوکال هاست گذاشتم یا اسم ایندکس هامو اونجا گذاشتم)
در این مثال لاگ ها از nginx جمع شده و به الستیک سرچ ارسال میشوند
خب حالا یه نکته ریز هم اشاره کنم که چرا بجای logstash باید از fluentd استفاده کنیم
اول از همه fluentd رم بسیار کمتری مصرف میکنه بخاطر سیستمی که داره و همچنین برای سیستم روتتینگ ایونت هاش از تگ استفاده میکنه که خیلی کمک بهتری به سبک شدن پروسه میکنه ولی مشکلی که داره اینه کانفیگور کردنش خیلی سخت تره از logstash
پ.ن : چند تا تعربف هم میگم ولی چون اهمیت کمتری دارن این زیر میگم این تعریف index که اولیش هست تو تمام دیتا بیس ها و ابزارها یکی خب اولیش index که دقیقا مثل یه پوشه هستش که داخلش یکسری مدرک احتمالا کارنامه هاتون شما یه جا نگه میدارید اون یه جا index داخل دیتا بیس هم به همین صورت
چیزی که احتمالا دیدین پورت بخوام به صورت خیلی ساده بگم پورت ها دوروازه هایی هستن که ورود و خروج کنترل میکنن اینم به زبون ساده گفتیم
لاگ هم یکسری داده درباره فعل و انفعالات بخش خاصی از سیستم که ۳ تا پارامتر داره کی لاگو انداخته چرا لاگو انداخته چقدر لاگی که انداخته مهم هستش
در آخر هم بگم چرا اصلا رفتم سراغ الستیک سرچ اونجایی که هستیم خیلی مهم اون بحث full text. سرچ گه خدمتتون گفتم و دلیل اصلیش این بود ولی خب قابلیت هایی که گفتم ببینید و مقایسه کنید برای کاربری خودتون یه چیزی هم که در دنیای کامپیوتر هستش اینه که هیچ محصول بد و خوبی وجود نداره صرفا باید ببینی تو به کدومش نیاز داری!
🆔 @MdDaily
قبل از رفتن سراغ این قسمت چند مورد تاپیک خدمتون معرفی میکنم و در اخر میگم چجوری این ها به هم متصل میشوند
خب تاپیک هایی که باید بدونیم ایناس
الستیک سرچ موتورجستجو و کلا قلب تپنده ی این محصول است و همه چیز هستش (به همین راحتی)
کیبانا رابط گرافیکی الستیک سرچ برای استفاده راحت تر هستش و خیلی راحت استفاده ازش اگه الستیک سرچ بلد باشید
فلوئنت دی و لاگ استش هستش که بخوام خودمونی بگم نقش رابط داره که لاگ از کف سیستم جمع میکنه و به الستیک سرچ میفرسته
خب حالا در عمل ما میخواهیم لاگ های بخشی از سیستم جمع کنیم چکار انجام میدیم؟
اول از همه چند سرور اماده میکنیم و در کانیفیگ هایشان ip بقیه سرورهارو و میزاریم سپس نوع نود های که توضیح خواهم داد میزاریم مهمترین نوع نود همان master and replica (یعنی یک سرور نقش اصلی و پردازش دارد و بقیه کپی دیتا از روی اون هستن )هستش بعد از اون ادرس الاستیک سرچ به fluentd میدهیم و کانفیگ اون را هم درست میکنیم که نمونه هاشو میزارم و در نهایت کانفیگ kibana ست خواهیم کرد
خب مهمترین قسمت شاید میتونم بگم fluentd یا ابزار دیگه ای که مثل همین هستش logstash هست چون ۲ نوع کانفیگ داره یکی کانفیگ جمع اوری لاگ و یکی کانفیگ ارسال لاگ ولی همگی در فایلی به عنوان fluent.conf هستند
این یک مثال ساده از جمع اوری لاگ nginx ارسال ان به الستیک سرچ هست
<source>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/td-agent/httpd-access.log.pos
tag nginx.access
format nginx
</source>
<match **>
@type elasticsearch
logstash_format true
logstash_prefix "nginx"
host "localhost"
port 9200
index_name "ngnix"
</match>در قسمت source تنطیمات مربوط به لاگ nginx را گذاشتیم و در قسمت match تنظیمات مربوط به elasticsearch(مثلا یکیشن اینه چون جفتش روی یه سرور روی لوکال هاست گذاشتم یا اسم ایندکس هامو اونجا گذاشتم)
در این مثال لاگ ها از nginx جمع شده و به الستیک سرچ ارسال میشوند
خب حالا یه نکته ریز هم اشاره کنم که چرا بجای logstash باید از fluentd استفاده کنیم
اول از همه fluentd رم بسیار کمتری مصرف میکنه بخاطر سیستمی که داره و همچنین برای سیستم روتتینگ ایونت هاش از تگ استفاده میکنه که خیلی کمک بهتری به سبک شدن پروسه میکنه ولی مشکلی که داره اینه کانفیگور کردنش خیلی سخت تره از logstash
پ.ن : چند تا تعربف هم میگم ولی چون اهمیت کمتری دارن این زیر میگم این تعریف index که اولیش هست تو تمام دیتا بیس ها و ابزارها یکی خب اولیش index که دقیقا مثل یه پوشه هستش که داخلش یکسری مدرک احتمالا کارنامه هاتون شما یه جا نگه میدارید اون یه جا index داخل دیتا بیس هم به همین صورت
چیزی که احتمالا دیدین پورت بخوام به صورت خیلی ساده بگم پورت ها دوروازه هایی هستن که ورود و خروج کنترل میکنن اینم به زبون ساده گفتیم
لاگ هم یکسری داده درباره فعل و انفعالات بخش خاصی از سیستم که ۳ تا پارامتر داره کی لاگو انداخته چرا لاگو انداخته چقدر لاگی که انداخته مهم هستش
در آخر هم بگم چرا اصلا رفتم سراغ الستیک سرچ اونجایی که هستیم خیلی مهم اون بحث full text. سرچ گه خدمتتون گفتم و دلیل اصلیش این بود ولی خب قابلیت هایی که گفتم ببینید و مقایسه کنید برای کاربری خودتون یه چیزی هم که در دنیای کامپیوتر هستش اینه که هیچ محصول بد و خوبی وجود نداره صرفا باید ببینی تو به کدومش نیاز داری!
🆔 @MdDaily
✍7❤5👍3
دو محصول WebStorm و Rider جت برینز رایگان شدند :)
به تازگی شرکت jetbrains تو یه توئیت و مقاله ای که منتشر کرد گفته که این دو محصول برای اهداف غیر تجاری مثل یادگیری و پروژه های اپن سورس رایگان شدند.
پ ن:
احتمالا این کارا برای رقابت با vscode انجام داده چون با رایگان کردن webstorm میتونه خیلی از فرانت کار ها را به خودش جذب کنه.
اگه خواستید از محصولات این شرکت استفاده کنید پیشنهاد میکنم از jetbrians toolbox برای نصب و مدیریتشون استفاده کنید:
🔗 https://www.jetbrains.com/toolbox-app/
🌐 لینک مقاله
🆔 @MdDaily
به تازگی شرکت jetbrains تو یه توئیت و مقاله ای که منتشر کرد گفته که این دو محصول برای اهداف غیر تجاری مثل یادگیری و پروژه های اپن سورس رایگان شدند.
پ ن:
احتمالا این کارا برای رقابت با vscode انجام داده چون با رایگان کردن webstorm میتونه خیلی از فرانت کار ها را به خودش جذب کنه.
اگه خواستید از محصولات این شرکت استفاده کنید پیشنهاد میکنم از jetbrians toolbox برای نصب و مدیریتشون استفاده کنید:
🔗 https://www.jetbrains.com/toolbox-app/
🌐 لینک مقاله
🆔 @MdDaily
🔥8👍2
Forwarded from Abrha
abrh.ir/isfenjoy
📣@abrhacom
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3❤1
Abrha
سلام سلام
توی دومین رویداد ابر های اصفهان منتظر دیدارتون هستم :)
اگه هم با کد تخفیف اختصاصی
🆔 @MdDaily
توی دومین رویداد ابر های اصفهان منتظر دیدارتون هستم :)
اگه هم با کد تخفیف اختصاصی
MD40 از طرف کانال ثبت نام کنید، شامل تخفیف میشه. 🆔 @MdDaily
🔥8❤3👍1
Audio
💫 دومین اپیزود دواپس با سید مهدی عزیز
🔗 میتونید قسمت قبلی رو از اینجا گوش بدید
00:00 مقدمه
01:40 چیشد که به اینجا رسیدیم؟
12:46 چطوری فیدبک باعث رشد شد
18:48 تبدیل باگ به تست
19:44 معرفی کوبار
23:00 توی کوبر عمیق تر بشیم
46:45 جمع بندی
➖➖➖
توی هر اپیزود سعی میکنیم بهتر بشیم و ببخشید اگه کمو کاستی هایی وجود داشت :)
🆔 @MdDaily 🫱🏻🫲🏻 @seyedmahdidiary
🔗 میتونید قسمت قبلی رو از اینجا گوش بدید
00:00 مقدمه
01:40 چیشد که به اینجا رسیدیم؟
12:46 چطوری فیدبک باعث رشد شد
18:48 تبدیل باگ به تست
19:44 معرفی کوبار
23:00 توی کوبر عمیق تر بشیم
46:45 جمع بندی
➖➖➖
توی هر اپیزود سعی میکنیم بهتر بشیم و ببخشید اگه کمو کاستی هایی وجود داشت :)
🆔 @MdDaily 🫱🏻🫲🏻 @seyedmahdidiary
🔥10👍2
چرا parseInt(0.0000005) تو جاوا اسکریپت عدد "5" رو برمیگردونه؟
قبلا تو یه این پست یه اتفاق بی منطق تو JS رو با منطق پشتش راجبش نوشتم. حالا وقتشه بریم سراغ یه مورد دیگه :)
از تابع parseInt() برای تبدیل رشته به عدد صحیح تو JS استفاده میشه و خب تا اینجا همه چیز طبیعیه تا وقتی که این کد رو اجرا کنیم:
و بجای اینکه یه عدد کوچیک بده، به ما 5 رو بر میگردونه.
دقیقا پشت صحنه داره چی میشه؟
تابع parseInt() فقط به خود عدد نگاه نمیکنه. اول مقدار را به یک رشته تبدیل میکنه. پس، وقتی 0.0000005 رو بهش میدیم، جاوا اسکریپت اون رو به طور خودکار به رشته "5e-7" تبدیل میکنه .
حالا، parseInt() شروع به خوندن رشته از سمت چپ میکنه و در اولین کاراکتر غیرعددی متوقف میشه. در "5e-7"، اول "5" را میبینه، پس همونجا متوقف میشه و "5" را بر میگردونه. قسمت نماد علمی (e-7) رو هم کلا ایگنور میکنه و رقم های اعشاری رو نادیده میگیره .
خلاصش اینه که:
تابع parseInt() اول عدد رو به متن تبدیل میکنه.
فقط اولش رو میخونه تا به یه عدد برسه.
هر چی بعدش باشه براش مهم نیست.
—-
مثل همیشه کنجکاو بمونید :)
🆔 @MdDaily
قبلا تو یه این پست یه اتفاق بی منطق تو JS رو با منطق پشتش راجبش نوشتم. حالا وقتشه بریم سراغ یه مورد دیگه :)
از تابع parseInt() برای تبدیل رشته به عدد صحیح تو JS استفاده میشه و خب تا اینجا همه چیز طبیعیه تا وقتی که این کد رو اجرا کنیم:
parseInt(0.0000005)
و بجای اینکه یه عدد کوچیک بده، به ما 5 رو بر میگردونه.
دقیقا پشت صحنه داره چی میشه؟
تابع parseInt() فقط به خود عدد نگاه نمیکنه. اول مقدار را به یک رشته تبدیل میکنه. پس، وقتی 0.0000005 رو بهش میدیم، جاوا اسکریپت اون رو به طور خودکار به رشته "5e-7" تبدیل میکنه .
حالا، parseInt() شروع به خوندن رشته از سمت چپ میکنه و در اولین کاراکتر غیرعددی متوقف میشه. در "5e-7"، اول "5" را میبینه، پس همونجا متوقف میشه و "5" را بر میگردونه. قسمت نماد علمی (e-7) رو هم کلا ایگنور میکنه و رقم های اعشاری رو نادیده میگیره .
خلاصش اینه که:
تابع parseInt() اول عدد رو به متن تبدیل میکنه.
فقط اولش رو میخونه تا به یه عدد برسه.
هر چی بعدش باشه براش مهم نیست.
—-
مثل همیشه کنجکاو بمونید :)
🆔 @MdDaily
🔥7🆒4👍3
دارم دوره ی هدف گذاری متمم رو گوش میکنم نکات جالبی گفته و میخوام این نکات رو بذارم کنار مقاله ی How I Make Learning New Things Feel Easy and Avoid Burnout و حاصلش بشه این پست :)
خیلی خلاصه بخوام بگم، دو مدل هدف داریم: عملکردی و یادگیری. هدف عملکردی یعنی فقط به نتیجه کار نگاه میکنی. مثلاً میگی میخوام برنامهنویس بشم، پس باید کلی دوره ببینم. اما اگه هیچی نسازی، آخرش چی؟ دلسرد میشی دیگه!هدف یادگیری اما فرق داره. اینجا مهم نیست چقدر دوره دیدی، مهم اینه که چقدر یاد گرفتی و پیشرفت کردی. مثلاً با یه زبان برنامهنویسی جدید، بجای نشستن پای فیلم آموزشی، خودت کد بنویس، اشتباه کن، از بقیه بپرس. اینجوری خیلی بیشتر حال میکنی و آخرشم نتیجه بهتری میگیری. این بحث خیلی گسترده تره و میشه باز ترش کرد و براش کلی مثال زد ولی فعلا بریم سراغ ادامه پست که تمرکزمون روی یادگیری هست.
اینو احتمالا شنیدی که میگن برای حرفه ای شدن تو هر کاری باید ده هزار ساعت تمرین کنی. این حرف از کتاب «Outliers» اومده، اما بر اساس یه برداشت اشتباه هست. طبق تحقیقات آندرس کی. اریکسون که این ادعا رو رد میکنه و میگه که این عدد جادویی نیست. بعضی ها خیلی کمتر تمرین میکنن و بازم خیلی خوب میشن.در نتیجه، هیچ عدد جادویی برای ساعت تمرین وجود نداره. عوامل بیشتری دخیلن.
مهندسان، توسعهدهندگان، تحلیلگرها، دانشجوها. این نقشها نیازمند مهارتهایی در موضوعات پیچیده زیادی هستن. اما با این همه چیز برای یادگیری و کمبود وقت، ممکنه احساس غرق شدن کنی.
خوشبختانه، یادگیری یه مهارت پیچیده، زمان کمتری از اون چیزی که فکر میکنی میگیره.
جاش کافمن میگه:
دقت کن که کلمه "هدفمند" رو استفاده کرده. این همون کلمهای هست که اریکسون تو مقاله تحقیقاتیش استفاده کرده. یعنی باید فعالانه درگیر یادگیریت باشی. ۲۰ ساعت تماشای آموزشهای یوتیوب کافی نیست.
اما چطوری:
1. یادگیری رو تبدیل به عادت روزانه کن
20 ساعت، فقط 40 دقیقه در روز به مدت یک ماهه.
نیازی نیست که تمام وقتت رو پشت میز بنشینی و از وقت با ارزش با خانواده و دوستانت دور بمانی. این فقط منجر به خستگی ذهنی میشه.یک زمان مشخص در روز انتخاب کن و اون زمان رو سرسختانه محافظت کن. نذار هیچ چیز دیگه حواست رو تو اون مدت زمان مشخص پرت کنه.
2. کوچک و مشخص شروع کن
وقتی سعی میکنیم چیزی جدید یاد بگیریم، اغلب بیش از حد از عهدهمون برمیداریم. با چیزی مشخص، ملموس و قابل دسترس شروع کن.
برای مثال، خواستن درک کامل یادگیری ماشین به عنوان یک مبتدی ممکنه به دلیل دامنه گسترده ریاضیات، مفاهیم و کدنویسی درگیر، طاقتفرسا به نظر برسه برای شروع کوچک، روی درک تفاوتهای بین هوش مصنوعی، یادگیری ماشین و یادگیری عمیق تمرکز کن.بعد میتونی مفاهیم سطح بالای مثل داده، آموزش مدل و ارزیابی رو یاد بگیری. ایده اینه که لقمههای کوچک برداری تا زود استرس نگیری یا گیج نشی.
3. مهارت رو تجزیه کن
یک مهارت معمولاً مجموعه ای از مهارت های کوچکتره که برای تشکیل اون مهارت ترکیب می کنیم.
برای مثال، یک مهندس کلود باید بدونه چطوری زیرساخت رو از طریق کد مستقر کنه. این مهارت نیازمند زیرمهارت هایی مثل درک دستورات ترمینال و پلتفرم های ابریه. با درکش شروع کنید و بعد مهارت رو به اجزای اصلی کوچکتر تقسیم کنید. الان باید روی چی تمرکز کنی و چی میتونه برای بعد باشه؟ اولین توجه خودتون رو به چیزی که بیشترین نتیجه رو خواهد داشت بدید.
4. به اندازه کافی یاد بگیر تا بتونی خودت رو تصحیح کنی
توانایی تصحیح اشتباهات نیازمند درک تفاوت بین خوب و بده.
این نیازمند تحقیقه. اما نمیخوای زمان زیادی رو تو این مرحله صرف کنی چون ممکنه شروع کنی به تعلل. فقط به اندازه کافی تحقیق کن تا زمینه کافی برای درک درست از غلط بدست بیاری تا بتونی خودت رو تصحیح کنی. اگه میخواستی یه آهنگ رو با گیتار بزنی، آکوردهای اون آهنگ رو یاد میگرفتی و از روی نت میخوندی. اگه آکورد غلط بزنی، متوجه میشی که چیزی درست صدا نمیده و سعی میکنی خودت رو تصحیح کنی. میتونیم همین منطق رو به هر چیزی که میخوایم یاد بگیریم، اعمال کنیم.
5. حواسپرتیها رو حذف کن
آخرین مورد اما نه کماهمیتترین، حذف همه حواسپرتیهاست.
اگر 40 دقیقه در روز رو به مطالعه اختصاص میدی، اما 10 دقیقه اولش رو صرف اسکرول کردن در شبکههای اجتماعی روی گوشیت میکنی، رسیدن به هدفت بیشتر طول میکشه. سختتر احساس میشه و به هدفت نمیرسی.هر کاری که از دستت برمیاد انجام بده تا بتونی تمرکزت رو حفظ کنی.
—-
مثل همیشه کنجکاو بمونید :)
🆔 @MdDaily
خیلی خلاصه بخوام بگم، دو مدل هدف داریم: عملکردی و یادگیری. هدف عملکردی یعنی فقط به نتیجه کار نگاه میکنی. مثلاً میگی میخوام برنامهنویس بشم، پس باید کلی دوره ببینم. اما اگه هیچی نسازی، آخرش چی؟ دلسرد میشی دیگه!هدف یادگیری اما فرق داره. اینجا مهم نیست چقدر دوره دیدی، مهم اینه که چقدر یاد گرفتی و پیشرفت کردی. مثلاً با یه زبان برنامهنویسی جدید، بجای نشستن پای فیلم آموزشی، خودت کد بنویس، اشتباه کن، از بقیه بپرس. اینجوری خیلی بیشتر حال میکنی و آخرشم نتیجه بهتری میگیری. این بحث خیلی گسترده تره و میشه باز ترش کرد و براش کلی مثال زد ولی فعلا بریم سراغ ادامه پست که تمرکزمون روی یادگیری هست.
اینو احتمالا شنیدی که میگن برای حرفه ای شدن تو هر کاری باید ده هزار ساعت تمرین کنی. این حرف از کتاب «Outliers» اومده، اما بر اساس یه برداشت اشتباه هست. طبق تحقیقات آندرس کی. اریکسون که این ادعا رو رد میکنه و میگه که این عدد جادویی نیست. بعضی ها خیلی کمتر تمرین میکنن و بازم خیلی خوب میشن.در نتیجه، هیچ عدد جادویی برای ساعت تمرین وجود نداره. عوامل بیشتری دخیلن.
مهندسان، توسعهدهندگان، تحلیلگرها، دانشجوها. این نقشها نیازمند مهارتهایی در موضوعات پیچیده زیادی هستن. اما با این همه چیز برای یادگیری و کمبود وقت، ممکنه احساس غرق شدن کنی.
خوشبختانه، یادگیری یه مهارت پیچیده، زمان کمتری از اون چیزی که فکر میکنی میگیره.
جاش کافمن میگه:
"تحقیقات نشون داده که چند ساعت اول یادگیری یه مهارت خاص، هم موثرترین و هم کارآمدترین زمان هست.
شما میتونید از صفر مطلق، خیلی سریعتر از چیزی که فکر میکنید، به سطح قابل قبولی از مهارت برسید.
[بر اساس تحقیقات من] حدود ۲۰ ساعت تمرین هدفمند کافیه."
دقت کن که کلمه "هدفمند" رو استفاده کرده. این همون کلمهای هست که اریکسون تو مقاله تحقیقاتیش استفاده کرده. یعنی باید فعالانه درگیر یادگیریت باشی. ۲۰ ساعت تماشای آموزشهای یوتیوب کافی نیست.
اما چطوری:
1. یادگیری رو تبدیل به عادت روزانه کن
20 ساعت، فقط 40 دقیقه در روز به مدت یک ماهه.
نیازی نیست که تمام وقتت رو پشت میز بنشینی و از وقت با ارزش با خانواده و دوستانت دور بمانی. این فقط منجر به خستگی ذهنی میشه.یک زمان مشخص در روز انتخاب کن و اون زمان رو سرسختانه محافظت کن. نذار هیچ چیز دیگه حواست رو تو اون مدت زمان مشخص پرت کنه.
2. کوچک و مشخص شروع کن
وقتی سعی میکنیم چیزی جدید یاد بگیریم، اغلب بیش از حد از عهدهمون برمیداریم. با چیزی مشخص، ملموس و قابل دسترس شروع کن.
برای مثال، خواستن درک کامل یادگیری ماشین به عنوان یک مبتدی ممکنه به دلیل دامنه گسترده ریاضیات، مفاهیم و کدنویسی درگیر، طاقتفرسا به نظر برسه برای شروع کوچک، روی درک تفاوتهای بین هوش مصنوعی، یادگیری ماشین و یادگیری عمیق تمرکز کن.بعد میتونی مفاهیم سطح بالای مثل داده، آموزش مدل و ارزیابی رو یاد بگیری. ایده اینه که لقمههای کوچک برداری تا زود استرس نگیری یا گیج نشی.
3. مهارت رو تجزیه کن
یک مهارت معمولاً مجموعه ای از مهارت های کوچکتره که برای تشکیل اون مهارت ترکیب می کنیم.
برای مثال، یک مهندس کلود باید بدونه چطوری زیرساخت رو از طریق کد مستقر کنه. این مهارت نیازمند زیرمهارت هایی مثل درک دستورات ترمینال و پلتفرم های ابریه. با درکش شروع کنید و بعد مهارت رو به اجزای اصلی کوچکتر تقسیم کنید. الان باید روی چی تمرکز کنی و چی میتونه برای بعد باشه؟ اولین توجه خودتون رو به چیزی که بیشترین نتیجه رو خواهد داشت بدید.
4. به اندازه کافی یاد بگیر تا بتونی خودت رو تصحیح کنی
توانایی تصحیح اشتباهات نیازمند درک تفاوت بین خوب و بده.
این نیازمند تحقیقه. اما نمیخوای زمان زیادی رو تو این مرحله صرف کنی چون ممکنه شروع کنی به تعلل. فقط به اندازه کافی تحقیق کن تا زمینه کافی برای درک درست از غلط بدست بیاری تا بتونی خودت رو تصحیح کنی. اگه میخواستی یه آهنگ رو با گیتار بزنی، آکوردهای اون آهنگ رو یاد میگرفتی و از روی نت میخوندی. اگه آکورد غلط بزنی، متوجه میشی که چیزی درست صدا نمیده و سعی میکنی خودت رو تصحیح کنی. میتونیم همین منطق رو به هر چیزی که میخوایم یاد بگیریم، اعمال کنیم.
5. حواسپرتیها رو حذف کن
آخرین مورد اما نه کماهمیتترین، حذف همه حواسپرتیهاست.
اگر 40 دقیقه در روز رو به مطالعه اختصاص میدی، اما 10 دقیقه اولش رو صرف اسکرول کردن در شبکههای اجتماعی روی گوشیت میکنی، رسیدن به هدفت بیشتر طول میکشه. سختتر احساس میشه و به هدفت نمیرسی.هر کاری که از دستت برمیاد انجام بده تا بتونی تمرکزت رو حفظ کنی.
—-
مثل همیشه کنجکاو بمونید :)
🆔 @MdDaily
👍9❤3✍2🔥1🤔1
Md Daily
دارم دوره ی هدف گذاری متمم رو گوش میکنم نکات جالبی گفته و میخوام این نکات رو بذارم کنار مقاله ی How I Make Learning New Things Feel Easy and Avoid Burnout و حاصلش بشه این پست :) خیلی خلاصه بخوام بگم، دو مدل هدف داریم: عملکردی و یادگیری. هدف عملکردی یعنی فقط…
جا داره چنتا نکته ی دیگه به این پست اضافه کنم. توی بحث هدف گذاری ای که مببتی بر اعداد و خروجی باشه مواظب باشید از یه جایی به بعد صرفا به خاطر اینکه به اون عدده برسید اون کار را انجام ندید مگر نه به احتمال زیاد یادگیری به پایین ترین حد خودش میرسه. مثلا اپ دولینگو، از یه جایی به بعد واردش نمی شید که یادگیریتون رو کامل کنید واردش میشید چون امتیازتون کم نشه.
میبینم هرجا صحبت از هدف گذاری میشه سریع میرن سراغ هدف گذاری SMART که آره اقا هدف باید قابل اندازه گیری باشه و مشخص و انقدری که یه سری از دوستان روی این نوع هدف گذاری تعصب دارن خود کسی که این ایده رو داده تعصب نداره و دست شما را باز گذاشته :)
این نوع هدف گذاری هایی که مثل SMART هستند بیشتر مناسب کسبوکار هستند تا زندگی شخصی همینکه شما تصمیم بگیرید فقط برید تو یه موضوعی تحقیق و گشتو گذار کنید صرفا برای اینکه ببنید نظرتون نسبت بهش چیه یه نوع ای از هدف گذاریه
مورد بعدی اینکه یه جایی از پست گفتم:
این مورد راجب هوش مصنوعی یا استفاده از کد های آماده هم صدق میکنه. مثلا خیلی ها معتقدن که از هوش مصنوعی نباید استفاده کرد چون شما را تنبل یا یادگیریتون رو کم میکنه. اگه بخوایم یه خط کش بذاریم و بگیم هرکی کجای خط کش وایساده باشه با هوش مصنوعی نه تنها یادگیریش کم نمیشه تازه هم میتونه چیزای جدید یادبگیره همینجایی که شما بتونید خروجی LLM ها را تحلیل کنید. به قول یه دوستی کدش که تو گیت هاب هست ما چه قدر الگوریتم و ساختار بلدیم و درک از کد داریم.
🆔 @MdDaily
میبینم هرجا صحبت از هدف گذاری میشه سریع میرن سراغ هدف گذاری SMART که آره اقا هدف باید قابل اندازه گیری باشه و مشخص و انقدری که یه سری از دوستان روی این نوع هدف گذاری تعصب دارن خود کسی که این ایده رو داده تعصب نداره و دست شما را باز گذاشته :)
این نوع هدف گذاری هایی که مثل SMART هستند بیشتر مناسب کسبوکار هستند تا زندگی شخصی همینکه شما تصمیم بگیرید فقط برید تو یه موضوعی تحقیق و گشتو گذار کنید صرفا برای اینکه ببنید نظرتون نسبت بهش چیه یه نوع ای از هدف گذاریه
مورد بعدی اینکه یه جایی از پست گفتم:
4. به اندازه کافی یاد بگیر تا بتونی خودت رو تصحیح کنی
توانایی تصحیح اشتباهات نیازمند درک تفاوت بین خوب و بده.
این مورد راجب هوش مصنوعی یا استفاده از کد های آماده هم صدق میکنه. مثلا خیلی ها معتقدن که از هوش مصنوعی نباید استفاده کرد چون شما را تنبل یا یادگیریتون رو کم میکنه. اگه بخوایم یه خط کش بذاریم و بگیم هرکی کجای خط کش وایساده باشه با هوش مصنوعی نه تنها یادگیریش کم نمیشه تازه هم میتونه چیزای جدید یادبگیره همینجایی که شما بتونید خروجی LLM ها را تحلیل کنید. به قول یه دوستی کدش که تو گیت هاب هست ما چه قدر الگوریتم و ساختار بلدیم و درک از کد داریم.
🆔 @MdDaily
❤🔥7👍2❤1🔥1