Design by Contract
شیوه ای که golang بخش مهمی از simplicityش رو مدیونشه
همون اول کار بگم که این ادعا یک برداشت شخصیه که هیچ منبع و مرجع خارجی ای نداره. فعلا یه draft از مقاله آماده شده، اما چون ممکنه اصل تحقیقات طولانی تر بشه بهتر دیدم که نسخه draftش رو هم در اختیار شما بذارم. این نوید رو هم بدم که با خوندن همین draft میتونید concept کلی رو متوجه بشید و بهش فکر کنید!!
آشنایی با DBC کمک میکنه خیلی عمیق تر interface های تعریف شده در کتابخونه های استاندارد گولنگ رو متوجه بشیم، و قطعا کمک میکنه ما هم قراردادهای بهتری برای سرویس و ماژول هامون تعریف کنیم.
نکته خیلی مهم DBC اینه که اگه خوب متوجه ش باشیم، نه تنها فهم ابزارهای موجود که یکیش میشه کتابخونه های استاندارد گولنگ رو بهتر متوجه بشیم و ما هم بهتر در گولنگ کد بزنیم. بلکه میشه به خیلی لایه های بالاتر تعمیمش داد. اگه داریم سرویسی مینویسیم که قراره یه apiی ارائه بده به یه سری کلاینت، که میتونه شامل همه rest api هایی که مینویسیم هم باشه، خیلی کمک میکنه طراحی بهتری برای api ها داشته باشیم، حتی و اگه داریم در شرکت های بزرگ کار میکنیم میتونیم تعامل بین تیمی رو تقویت کنیم و تعامل خیلی سازنده تری داشته باشیم.
این لینک draft مقاله، ببخشید که خیلی خامه، ولی مطمئن هستم اگه با دقت همین draft رو مطالعه کنید متوجه منظورم خواهید شد.
https://docs.google.com/document/d/11_Tj46PiJ0OK_smYr6wKYyRVMDCVzgqCzBgVjqtwwvo/edit?usp=sharing
قطعا ممکنه خود من هم کامل DBC رو متوجه نشده باشم، اما در حدی که متوجه شدم متقاعد شدم که بخشی از simplicity گولنگ مدیون اجرای صریح یا ضمنی این شیوه است و به خودمون هم خیلی میتونه کمک کنه.
منابع
برای اینکه با design by contract آشنا بشید اصل مقاله رو میتونید اینجا بخونید
http://se.inf.ethz.ch/~meyer/publications/old/dbc_chapter.pdf
همچنین خوندن فلسفه let it crash هم در اینجا توصیه میشه
https://media.pragprog.com/noscripts/jaerlang2/errors.pdf
و اگه بتونید قسمت Design by Contract از کتاب The Pragmatic Programmer, 20th Anniversary Edition رو هم بخونید که چه عالی
https://pragprog.com/noscripts/tpp20/the-pragmatic-programmer-20th-anniversary-edition/
@gocasts
#design_by_contract #golang #simplicity #let_it_crash #joe_armstrong
شیوه ای که golang بخش مهمی از simplicityش رو مدیونشه
همون اول کار بگم که این ادعا یک برداشت شخصیه که هیچ منبع و مرجع خارجی ای نداره. فعلا یه draft از مقاله آماده شده، اما چون ممکنه اصل تحقیقات طولانی تر بشه بهتر دیدم که نسخه draftش رو هم در اختیار شما بذارم. این نوید رو هم بدم که با خوندن همین draft میتونید concept کلی رو متوجه بشید و بهش فکر کنید!!
آشنایی با DBC کمک میکنه خیلی عمیق تر interface های تعریف شده در کتابخونه های استاندارد گولنگ رو متوجه بشیم، و قطعا کمک میکنه ما هم قراردادهای بهتری برای سرویس و ماژول هامون تعریف کنیم.
نکته خیلی مهم DBC اینه که اگه خوب متوجه ش باشیم، نه تنها فهم ابزارهای موجود که یکیش میشه کتابخونه های استاندارد گولنگ رو بهتر متوجه بشیم و ما هم بهتر در گولنگ کد بزنیم. بلکه میشه به خیلی لایه های بالاتر تعمیمش داد. اگه داریم سرویسی مینویسیم که قراره یه apiی ارائه بده به یه سری کلاینت، که میتونه شامل همه rest api هایی که مینویسیم هم باشه، خیلی کمک میکنه طراحی بهتری برای api ها داشته باشیم، حتی و اگه داریم در شرکت های بزرگ کار میکنیم میتونیم تعامل بین تیمی رو تقویت کنیم و تعامل خیلی سازنده تری داشته باشیم.
این لینک draft مقاله، ببخشید که خیلی خامه، ولی مطمئن هستم اگه با دقت همین draft رو مطالعه کنید متوجه منظورم خواهید شد.
https://docs.google.com/document/d/11_Tj46PiJ0OK_smYr6wKYyRVMDCVzgqCzBgVjqtwwvo/edit?usp=sharing
قطعا ممکنه خود من هم کامل DBC رو متوجه نشده باشم، اما در حدی که متوجه شدم متقاعد شدم که بخشی از simplicity گولنگ مدیون اجرای صریح یا ضمنی این شیوه است و به خودمون هم خیلی میتونه کمک کنه.
منابع
برای اینکه با design by contract آشنا بشید اصل مقاله رو میتونید اینجا بخونید
http://se.inf.ethz.ch/~meyer/publications/old/dbc_chapter.pdf
همچنین خوندن فلسفه let it crash هم در اینجا توصیه میشه
https://media.pragprog.com/noscripts/jaerlang2/errors.pdf
و اگه بتونید قسمت Design by Contract از کتاب The Pragmatic Programmer, 20th Anniversary Edition رو هم بخونید که چه عالی
https://pragprog.com/noscripts/tpp20/the-pragmatic-programmer-20th-anniversary-edition/
@gocasts
#design_by_contract #golang #simplicity #let_it_crash #joe_armstrong
Google Docs
Design by Contract in Golang
Design by Contract in Golang شیوه ای که گولنگ در کتابخانه های استانداردش به خوبی ازش بهره برده تا قرارداد های ساده ای رو تنظیم کنه و ماهم باید تو نوشتن سرویس هامون بهش توجه ویژه ای کنیم. داشتم مقاله اصلی Design by Contract رو میخوندم. نکته خیلی جالبش این…
👍11🔥2
سلام دوستان، @NikanCraft جان در یکی از گروه ها سوالی پرسید، فکر کردم مفید باشه پاسخم رو با شما به اشتراک بذارم
چه چیزی یه سینیور رو سینیور میکنه؟
دانش + تجربه
که دوتاش با انجام یکی دو تا پروژه به دست نمیاد. زمان میخواد، تو ایران مرسوم شده برنامه نویس های با دو سال به بالا تجربه رو سنیور میگن، ولی هیچ جای دنیا ازین خبرا نیست!
در نهایت، اصلا مهم نیست شما لقبتون سنیور باشه یا جونیور یا میدلول، از همین حالا به خودتون بگید سنیور، کی به کیه!
ولی مهم ترین نکته ای که برای ارتقای سطح کیفی خودتون باید در نظر بگیرید، توسعه شخصی به طور پیوسته است. مهم نیست در لحظه چقدر انرژی میذارید برای یادگیری و کسب تجربه از پروژه های مختلف، مهم اینه که چقدر این روند ادامه داره، اگه دو تا سه سال به توسعه خودتون بپردازید اونوقت تو ایران که قطعا سنیور هستید بقیه جاها هم هرچی باشید خوب هستید مهم نیست اسمش چیه 🙂
برای توسعه شخصی هم اگه از بنده حقیر بپرسن میگم
یک- باید تا میتونید بخونید، بخونید، بخونید. خوندن(به هرشکلش) هم در مورد تکنولوژی ای که باهاش کار میکنید هم به طور کلی در حوزه ای که هستید، مثلا اگه web کار میکنید در مورد ماهیت وب، تکنولوژی های فرانت، بکند، دیتابیس، اگه تو حوزه امنیت کار میکنید که خودش یه دنیای دیگه است، دنیای هوش مصنوعی هم همینطور. کسی زودتر سنیور میشه که دانش سطحی خوبی نسبت به خیلی از جوانب حوزه ای که کار میکنه داشته باشه، و یه دانش نسبتا عمیق نسبت به تخصص خودش.
دو - تا میتونید تو پروژه های مختلف و چالش های متفاوت مشارکت داشته باشید، این مشارکت تیمی soft skill شما رو هم که خیلی مهمه تقویت میکنه
اگرم با هدف ۲ سال و ۳ سال و ۵ سال اومدید تو این حوزه همه چیزایی که گفتم رو فراموش کنید، تا میتونید فقط کار کنید و سعی کنید یه بیزینسی به یه طریقی راه بندازید، چون من نگاهم به مهندسی نرم افزار یه چیزی تو این مایه هاست (Joe Armstrong)، تو ۶۵ سالگی تازه به بلوغ میرسی 😁
بنده حقیر بعد از ۱۰، ۱۲ سال جونیور هم نیستم
https://en.wikipedia.org/wiki/Joe_Armstrong_(programmer)
بنده حقیر به شخصه اول راهم، بعد از ۱۰، ۱۲ سال، شاید به سختی جونیور باشم! اگه خدا عمر و سلامتی و عزت بده فکر میکنم تا ۶۰، ۶۵ سالگی حداقل تو این حرفه بمونم، پس خیلی کوتاه مدت و عجولانه برای آینده تون تصمیم نگیرید. 🌹
@gocasts
چه چیزی یه سینیور رو سینیور میکنه؟
دانش + تجربه
که دوتاش با انجام یکی دو تا پروژه به دست نمیاد. زمان میخواد، تو ایران مرسوم شده برنامه نویس های با دو سال به بالا تجربه رو سنیور میگن، ولی هیچ جای دنیا ازین خبرا نیست!
در نهایت، اصلا مهم نیست شما لقبتون سنیور باشه یا جونیور یا میدلول، از همین حالا به خودتون بگید سنیور، کی به کیه!
ولی مهم ترین نکته ای که برای ارتقای سطح کیفی خودتون باید در نظر بگیرید، توسعه شخصی به طور پیوسته است. مهم نیست در لحظه چقدر انرژی میذارید برای یادگیری و کسب تجربه از پروژه های مختلف، مهم اینه که چقدر این روند ادامه داره، اگه دو تا سه سال به توسعه خودتون بپردازید اونوقت تو ایران که قطعا سنیور هستید بقیه جاها هم هرچی باشید خوب هستید مهم نیست اسمش چیه 🙂
برای توسعه شخصی هم اگه از بنده حقیر بپرسن میگم
یک- باید تا میتونید بخونید، بخونید، بخونید. خوندن(به هرشکلش) هم در مورد تکنولوژی ای که باهاش کار میکنید هم به طور کلی در حوزه ای که هستید، مثلا اگه web کار میکنید در مورد ماهیت وب، تکنولوژی های فرانت، بکند، دیتابیس، اگه تو حوزه امنیت کار میکنید که خودش یه دنیای دیگه است، دنیای هوش مصنوعی هم همینطور. کسی زودتر سنیور میشه که دانش سطحی خوبی نسبت به خیلی از جوانب حوزه ای که کار میکنه داشته باشه، و یه دانش نسبتا عمیق نسبت به تخصص خودش.
دو - تا میتونید تو پروژه های مختلف و چالش های متفاوت مشارکت داشته باشید، این مشارکت تیمی soft skill شما رو هم که خیلی مهمه تقویت میکنه
اگرم با هدف ۲ سال و ۳ سال و ۵ سال اومدید تو این حوزه همه چیزایی که گفتم رو فراموش کنید، تا میتونید فقط کار کنید و سعی کنید یه بیزینسی به یه طریقی راه بندازید، چون من نگاهم به مهندسی نرم افزار یه چیزی تو این مایه هاست (Joe Armstrong)، تو ۶۵ سالگی تازه به بلوغ میرسی 😁
بنده حقیر بعد از ۱۰، ۱۲ سال جونیور هم نیستم
https://en.wikipedia.org/wiki/Joe_Armstrong_(programmer)
بنده حقیر به شخصه اول راهم، بعد از ۱۰، ۱۲ سال، شاید به سختی جونیور باشم! اگه خدا عمر و سلامتی و عزت بده فکر میکنم تا ۶۰، ۶۵ سالگی حداقل تو این حرفه بمونم، پس خیلی کوتاه مدت و عجولانه برای آینده تون تصمیم نگیرید. 🌹
@gocasts
Wikipedia
Joe Armstrong (programmer)
British computer scientist (1950-2019)
👍16🤩3🔥2
Go Casts 🚀
Design by Contract شیوه ای که golang بخش مهمی از simplicityش رو مدیونشه همون اول کار بگم که این ادعا یک برداشت شخصیه که هیچ منبع و مرجع خارجی ای نداره. فعلا یه draft از مقاله آماده شده، اما چون ممکنه اصل تحقیقات طولانی تر بشه بهتر دیدم که نسخه draftش رو هم…
سلام دوستان
در ادامه پست قبلی، سعی کردم در یک ویدیو توضیح بدم که اگه مفهوم کلی design by contract رو متوجه بشیم، چطور میتونیم کد بهتری در گولنگ بنویسیم، امیدوارم که مفید باشه براتون
اینم لینک ویدیو در یوتیوب
https://youtu.be/uibCosfk4-Y
#golang #design_by_contract #simplicity
@gocasts
در ادامه پست قبلی، سعی کردم در یک ویدیو توضیح بدم که اگه مفهوم کلی design by contract رو متوجه بشیم، چطور میتونیم کد بهتری در گولنگ بنویسیم، امیدوارم که مفید باشه براتون
اینم لینک ویدیو در یوتیوب
https://youtu.be/uibCosfk4-Y
#golang #design_by_contract #simplicity
@gocasts
YouTube
design by contract - golang simplicity
در این ویدیو سعی کردم نشون بدم چطور میشه با ایده گرفتن از design by contract کد ساده و تمیز در golang بنویسیم. توضیحات مفصل تر رو در این پست از کانال تلگرام ببینید لطفا
https://news.1rj.ru/str/gocasts/116
https://news.1rj.ru/str/gocasts/116
👍7🤩3❤1
سلام دوستان، یه بوتکمپ بهتون معرفی می کنم برای یادگیری عمیق گولنگ از صفر صفر!
https://gocasts.ir/learning-golang-with-caleb-doxsey?utm_source=telegram&utm_medium=message&utm_campaign=1
@gocasts
#golang #bootcamp
https://gocasts.ir/learning-golang-with-caleb-doxsey?utm_source=telegram&utm_medium=message&utm_campaign=1
@gocasts
#golang #bootcamp
GoCasts
یادگیری عمیق گولنگ از صفر صفر به کمک caleb doxsey
امروز میخوام یه دوره ویدیویی رو به شما معرفی کنم که در عین حال که قدیمیه ولی فوق العاده ست. اگه به دنبال یادگیری عمیق گولنگ هستید و میخواید از صفر صفر شروع کنید، شاید تنها چیزی که لازم دارید که یک توسعه دهنده وب و گولنگ بشید دیدن همین دوره باشه.
👍5🔥1
چطوری یه فریمورک scalable برای پروژه های گولنگی انتخاب کنم؟
https://youtu.be/S15s8CIvz60
#scalability #golang #web #framework
@gocasts
https://youtu.be/S15s8CIvz60
#scalability #golang #web #framework
@gocasts
YouTube
انتخاب فریمورک مقیاس پذیر در گولنگ
یکی از دغدغه های برنامه نویسی در گولنگ انتخاب فریمورک وب مناسب هست که علاوه بر پوشش نیازمندی ها حتما مقایس پذیر هم باشه. در این ویدیو توضیحاتی رو ارائه دادم، امیدوارم که مفید باشه براتون.
#scalabality #golang #framework
برای مشاهده مطالب بیشتر، کانال تلگرام…
#scalabality #golang #framework
برای مشاهده مطالب بیشتر، کانال تلگرام…
👍11❤1
یه مقاله بسیار کوتاه و جالب خوندم که یه مورد از soft skill هارو نقد و بررسی میکنه. و اونم نحوه برنامه ریزی و مدیریت زمان و جزییات task هاست. یکی از چیزایی که تو هر پروژه خیلی مهمه اینه که همه افراد تیم نسبت به هدف و محصول نهایی vision و دیدگاه کامل داشته باشن. مشکلی که خودم باهاش بارها برخورد کردم و به دفعات دیدم که همین مشکل باعث میشه افراد تیم به خاطر نداشتن دید کافی نسبت به هدف محصول و اولویت ها، deadline هارو miss کردن و توسعه و launch محصول حتی تا چند ماه عقب افتاده.
مقاله میگه برای پروژه ها باید Hard Edge داشته باشید و Soft Middle.
خب این یعنی چی؟ یعنی اینکه وقتی برای release یه featureی از محصول برنامه ریزی می کنید. یه deadline خیلی سفت و سخت بذارید، مثلا ۶ هفته و خیلی شفاف و کامل هم به همه افراد تیم منتقل کنید که انتظارتون از feature و ویژگی هاش چیه. ولی به افراد تیم اجازه بدید خودشون برای این ۶ هفته برنامه ریزی کنن. مثلا اگه قراره یه featureی زده بشه که احتیاج به یک یا چند third-party library داره، شما در مورد جزییات تعیین تکلیف نکنید که پیاده سازی فلان کتابخانه باید ۱ هفته ای تمام بشه، بعد هفته بعد باید فلان بشه و غیره..
ایرادی که خودم بارها دیدم اتفاق افتاده اینه که برای دید کوتاه مدت مثلا sprint های ۲ هفته ای، تیم ها برنامه خیلی مفصل و دقیقی میچینن با یه لیست کامل از کارهای ریز و درشتی که باید انجام بشه. اما هیچ وقت vision درست و کاملی به تیم نمیدن که هدف از همه این اسپرینت ها و task ها اینه که مثلا ۲ ماه دیگه یه محصول با فلان ویژگی ship بشه.
بهتره سعی کنیم ددلاین های خیلی سفت و سخت روی خروجی نهایی داشته باشیم. اما اجازه بدیم افراد، خودشون برای جزییات و task هاشون برنامه ریزی کنن. یکی از لازمه های رخ دادن چنین اتفاقی وجود داشتن trust بین همه افراد تیم هست که اتفاقا خیلی نکته مهمیه.
اگه بین افراد تیم trust وجود داشته باشه افراد متعهد خودشون میدونن که با چه ددلاینی چه چیزی رو باید تحویل بدن، ممکنه اون فرد بخواد ۴ تا کتابخونه دیگه رو هم تست کنه یا نکنه، این به خودش بستگی داره.
پیشنهاد میکنم حتما بخونید
https://www.colemanm.org/post/hard-edges-soft-middle
#soft_skills
@gocasts
مقاله میگه برای پروژه ها باید Hard Edge داشته باشید و Soft Middle.
خب این یعنی چی؟ یعنی اینکه وقتی برای release یه featureی از محصول برنامه ریزی می کنید. یه deadline خیلی سفت و سخت بذارید، مثلا ۶ هفته و خیلی شفاف و کامل هم به همه افراد تیم منتقل کنید که انتظارتون از feature و ویژگی هاش چیه. ولی به افراد تیم اجازه بدید خودشون برای این ۶ هفته برنامه ریزی کنن. مثلا اگه قراره یه featureی زده بشه که احتیاج به یک یا چند third-party library داره، شما در مورد جزییات تعیین تکلیف نکنید که پیاده سازی فلان کتابخانه باید ۱ هفته ای تمام بشه، بعد هفته بعد باید فلان بشه و غیره..
ایرادی که خودم بارها دیدم اتفاق افتاده اینه که برای دید کوتاه مدت مثلا sprint های ۲ هفته ای، تیم ها برنامه خیلی مفصل و دقیقی میچینن با یه لیست کامل از کارهای ریز و درشتی که باید انجام بشه. اما هیچ وقت vision درست و کاملی به تیم نمیدن که هدف از همه این اسپرینت ها و task ها اینه که مثلا ۲ ماه دیگه یه محصول با فلان ویژگی ship بشه.
بهتره سعی کنیم ددلاین های خیلی سفت و سخت روی خروجی نهایی داشته باشیم. اما اجازه بدیم افراد، خودشون برای جزییات و task هاشون برنامه ریزی کنن. یکی از لازمه های رخ دادن چنین اتفاقی وجود داشتن trust بین همه افراد تیم هست که اتفاقا خیلی نکته مهمیه.
اگه بین افراد تیم trust وجود داشته باشه افراد متعهد خودشون میدونن که با چه ددلاینی چه چیزی رو باید تحویل بدن، ممکنه اون فرد بخواد ۴ تا کتابخونه دیگه رو هم تست کنه یا نکنه، این به خودش بستگی داره.
پیشنهاد میکنم حتما بخونید
https://www.colemanm.org/post/hard-edges-soft-middle
#soft_skills
@gocasts
colemanm.org
Hard Edges, Soft Middle
Defining hard objectives with permissive experimentation is the best way to build products.
👍10
Fallacy #1 - Network is Reliable!
سلام دوستان، اگه فکر میکنید که دونستن الگوهای distributed system ها به کار شما ارتباطی نداره بد نیست این ویدیو رو ببینید.
الگوی ارتباطی request/response یه الگوی خیلی رایج و شایع هست که خیلی از ما ها در بسیاری از پروژه هامون ازش استفاده میکنیم. با استفاده از retry pattern شما میتونید خیلی از مشکلات مرتبط با این الگو رو تا حدود زیادی مرتفع کنید.
این لینک ویدیو
https://youtu.be/gUeAzDokznQ
این لینک مقاله
https://gocasts.ir/go-retry-pattern?utm_source=telegram&utm_medium=message&utm_campaign=3
#distributedsystems #golang #retry_pattern
@gocasts
سلام دوستان، اگه فکر میکنید که دونستن الگوهای distributed system ها به کار شما ارتباطی نداره بد نیست این ویدیو رو ببینید.
الگوی ارتباطی request/response یه الگوی خیلی رایج و شایع هست که خیلی از ما ها در بسیاری از پروژه هامون ازش استفاده میکنیم. با استفاده از retry pattern شما میتونید خیلی از مشکلات مرتبط با این الگو رو تا حدود زیادی مرتفع کنید.
این لینک ویدیو
https://youtu.be/gUeAzDokznQ
این لینک مقاله
https://gocasts.ir/go-retry-pattern?utm_source=telegram&utm_medium=message&utm_campaign=3
#distributedsystems #golang #retry_pattern
@gocasts
👍5
Go Casts 🚀
Fallacy #1 - Network is Reliable! سلام دوستان، اگه فکر میکنید که دونستن الگوهای distributed system ها به کار شما ارتباطی نداره بد نیست این ویدیو رو ببینید. الگوی ارتباطی request/response یه الگوی خیلی رایج و شایع هست که خیلی از ما ها در بسیاری از پروژه هامون…
اگه در مورد سیستم های توزیع شده بیشتر میخواید بدونید بهتون یه دوره ۱۵۰۰ دلاری معرفی می کنم که برای ۹۰ روز رایگانه
این نمونه ویدیو که مرتبطه با ویدیویی که قرار دادم
https://www.youtube.com/watch?v=8fRzZtJ_SLk
اینم لینک دوره
Distributed Systems Design Fundamentals
https://learn.particular.net/courses/distributed-systems-design-fundamentals-online
#distributedsystems
@gocasts
این نمونه ویدیو که مرتبطه با ویدیویی که قرار دادم
https://www.youtube.com/watch?v=8fRzZtJ_SLk
اینم لینک دوره
Distributed Systems Design Fundamentals
https://learn.particular.net/courses/distributed-systems-design-fundamentals-online
#distributedsystems
@gocasts
YouTube
Fallacies of Distributed Systems #1: The Network is Reliable
See the full video and enroll for free in Udi Dahan's Distributed Systems Design Fundamentals course at https://go.particular.net/dsdf-course. Over 10 hours of content including:
- Common pitfalls in building scalable systems and how to avoid them
- The…
- Common pitfalls in building scalable systems and how to avoid them
- The…
👍9❤3
سلام دوستان، وقت بخیر، میخوام یه نظرسنجی کنم، ببینم اگه عزیزان تمایل داشته باشن و موافق باشن هفته ای یک جلسه یک تا یک ساعت و نیمه داشته باشیم ان شاءالله
این جلسه فقط در صورتی تداوم خواهد داشت که ان شاءالله عزیزانی که اعلام آمادگی می کنن واقعا علاوه بر تمایل برای حضور در جلسات، وقت هم داشته باشن، بنابراین لطفا اگه واقعا قصد دارید حتما در جلسه شرکت کنید اعلام آمادگی کنید، مرسی ❤️❤️
موضوع جلسه چی باشه؟ موضوع جلسه میتونه هر هفته یک موضوع خاص در مورد گولنگ، مهندسی نرم افزار، یا حتی مرور و تحلیل یک کتاب، یک دوره ویدیویی و یا یک talk باشه. بعضی جلسات هم ممکنه جنبه آموزشی و live coding داشته باشه.
حالا همونطور که گفتم، اگه واقعا قصد شرکت دارید، لطفا اعلام آمادگی کنید.
جلسات هفتگی ساعت ۱۹ هر دوشنبه خواهد بود ان شاءالله
@gocasts
این جلسه فقط در صورتی تداوم خواهد داشت که ان شاءالله عزیزانی که اعلام آمادگی می کنن واقعا علاوه بر تمایل برای حضور در جلسات، وقت هم داشته باشن، بنابراین لطفا اگه واقعا قصد دارید حتما در جلسه شرکت کنید اعلام آمادگی کنید، مرسی ❤️❤️
موضوع جلسه چی باشه؟ موضوع جلسه میتونه هر هفته یک موضوع خاص در مورد گولنگ، مهندسی نرم افزار، یا حتی مرور و تحلیل یک کتاب، یک دوره ویدیویی و یا یک talk باشه. بعضی جلسات هم ممکنه جنبه آموزشی و live coding داشته باشه.
حالا همونطور که گفتم، اگه واقعا قصد شرکت دارید، لطفا اعلام آمادگی کنید.
جلسات هفتگی ساعت ۱۹ هر دوشنبه خواهد بود ان شاءالله
@gocasts
❤6🤩2
Go Casts 🚀
سلام دوستان، وقت بخیر، میخوام یه نظرسنجی کنم، ببینم اگه عزیزان تمایل داشته باشن و موافق باشن هفته ای یک جلسه یک تا یک ساعت و نیمه داشته باشیم ان شاءالله این جلسه فقط در صورتی تداوم خواهد داشت که ان شاءالله عزیزانی که اعلام آمادگی می کنن واقعا علاوه بر تمایل…
لطفا در مورد جلسه هفتگی دوشنبه ها ساعت ۱۹، طبق توضیحات پست قبلی نظرتون رو اعلام کنید
Anonymous Poll
67%
حتما شرکت می کنم
27%
دوست دارم ولی وقتشو ندارم
6%
تمایلی به شرکت در جلسه ندارم (برو عمو، حوصله داری)
👍12
سلام دوستان، ببخشید که این چند وقت کانال آپدیت نشده. درگیر امیکرون هستم. ان شاءالله بعد از بهبودی با قدرت در خدمتم. امیکرون از چیزی که فکر میکنید به شما نزدیکتره، مواظب خودتون باشید ❤️❤️
❤5👍2
Go Casts 🚀
سلام دوستان، ببخشید که این چند وقت کانال آپدیت نشده. درگیر امیکرون هستم. ان شاءالله بعد از بهبودی با قدرت در خدمتم. امیکرون از چیزی که فکر میکنید به شما نزدیکتره، مواظب خودتون باشید ❤️❤️
معرفی دو تا کتاب
یکی از اشتباهاتی که خودم داشتم و متاسفانه میبینم اکثر برنامه نویس های جوان هم دچارش هستند، اینه که تمایل داریم تو یه مدت کوتاهی با انواع ابزارها و تکنولوژی ها تجربه کسب کنیم. این موضوع باعث میشه بعد از چند سال که به عقب برگردیم میبینیم که رزومه ای دارم «پر از تهی». یعنی وقتی نگاه میکنی میبینی که آره با پنج تا دیتابیس مختلف پروژه انجام دادی، اما حتی یکیش رو هم عمیق یاد نگرفتی. و این آسیب نه فقط در مورد دیتابیس، در مورد بقیه ابزارها و تکنولوژی ها هم هست. یه سری آدم ها مثل خود من در قدیم هم «ایده آل گرا» هستن، یعنی دوست دارن همه چیز رو عمیق یاد بگیرن، که با توجه به گستردگی موضوعات و عمر کوتاه انسان، این مورد هم منجر به همون دانش سطحی از همه چیز میشه که خیلی کمک کننده نیست.
کتابی که در حال حاضر مطالعه می کنم Designing Data-Intensive Applications هست که دانش عمیقی بصورت جنرال نسبت به Data store ها و data structure های رایج استفاده شده در دیتابیس ها میده. همچنین چون خودم بیشتر با دیتابیس mysql سر و کله میزنم قصد دارم این کتاب رو بخونم.
High Performance MySQL, 4th Edition
به شما قول میدم اگه فقط در یک استک (هر قسمتی فقط یک ابزار) تخصص داشته باشید فرصت های شغلی طلایی به سراغ شما میان. اینقدر اصطلاحا به دنبال buzzword ها نباشید. لازم نیست rest و grpc و thrift رو با هم بلد باشید. یا mysql و postgres و cassandra رو کار کرده باشید.
من نمیگم تجربه شون نکنید، ولی فقط یکی شون رو انتخاب کنید به عنوان هدف و تلاش کنید همون رو مسلط بشید. اونوقته که سنیور میشید، دانش سطحی از همه چیز شمارو سنیور نمیکنه. دانش عمیق از یه پکیج کوچیک راه درست تریه 🌹
در کامنت ها محمد جان @ilbeygi_m به نکته خیلی خوبی اشاره کرد. دوستان مطمئن باشید هیچ جادویی در مورد یادگیری عمیق وجود نداره، من برای آشنایی اولیه یا به اصطلاح hands-on شدن همیشه پیشنهاد میکنم ویدیو ببینید، اما در مورد عمیق شدن خیر. کتاب نتیجه چند سال تلاش و تجربه یک نویسنده است که سعی میکنه بصورت پله پله و عمیق همه چیز رو یاد بده، اما دوره های ویدیویی عموما برای یادگیری سطحی ساخته میشن. دلیل هم داره، دلیلشون مخاطب بیشتره. معمولا آموزش های عمیق مخاطبان خیلی کمتری دارن. به همین دلیله که آموزش های ویدیویی عموما به آموزش مباحث اولیه بیشتر میپردازن که من برای شروع پیشنهادشون میکنم ولی برای عمیق شدن خیر.
#designing_data_intensive_applications
#high_performance_mysql
@gocasts
یکی از اشتباهاتی که خودم داشتم و متاسفانه میبینم اکثر برنامه نویس های جوان هم دچارش هستند، اینه که تمایل داریم تو یه مدت کوتاهی با انواع ابزارها و تکنولوژی ها تجربه کسب کنیم. این موضوع باعث میشه بعد از چند سال که به عقب برگردیم میبینیم که رزومه ای دارم «پر از تهی». یعنی وقتی نگاه میکنی میبینی که آره با پنج تا دیتابیس مختلف پروژه انجام دادی، اما حتی یکیش رو هم عمیق یاد نگرفتی. و این آسیب نه فقط در مورد دیتابیس، در مورد بقیه ابزارها و تکنولوژی ها هم هست. یه سری آدم ها مثل خود من در قدیم هم «ایده آل گرا» هستن، یعنی دوست دارن همه چیز رو عمیق یاد بگیرن، که با توجه به گستردگی موضوعات و عمر کوتاه انسان، این مورد هم منجر به همون دانش سطحی از همه چیز میشه که خیلی کمک کننده نیست.
کتابی که در حال حاضر مطالعه می کنم Designing Data-Intensive Applications هست که دانش عمیقی بصورت جنرال نسبت به Data store ها و data structure های رایج استفاده شده در دیتابیس ها میده. همچنین چون خودم بیشتر با دیتابیس mysql سر و کله میزنم قصد دارم این کتاب رو بخونم.
High Performance MySQL, 4th Edition
به شما قول میدم اگه فقط در یک استک (هر قسمتی فقط یک ابزار) تخصص داشته باشید فرصت های شغلی طلایی به سراغ شما میان. اینقدر اصطلاحا به دنبال buzzword ها نباشید. لازم نیست rest و grpc و thrift رو با هم بلد باشید. یا mysql و postgres و cassandra رو کار کرده باشید.
من نمیگم تجربه شون نکنید، ولی فقط یکی شون رو انتخاب کنید به عنوان هدف و تلاش کنید همون رو مسلط بشید. اونوقته که سنیور میشید، دانش سطحی از همه چیز شمارو سنیور نمیکنه. دانش عمیق از یه پکیج کوچیک راه درست تریه 🌹
در کامنت ها محمد جان @ilbeygi_m به نکته خیلی خوبی اشاره کرد. دوستان مطمئن باشید هیچ جادویی در مورد یادگیری عمیق وجود نداره، من برای آشنایی اولیه یا به اصطلاح hands-on شدن همیشه پیشنهاد میکنم ویدیو ببینید، اما در مورد عمیق شدن خیر. کتاب نتیجه چند سال تلاش و تجربه یک نویسنده است که سعی میکنه بصورت پله پله و عمیق همه چیز رو یاد بده، اما دوره های ویدیویی عموما برای یادگیری سطحی ساخته میشن. دلیل هم داره، دلیلشون مخاطب بیشتره. معمولا آموزش های عمیق مخاطبان خیلی کمتری دارن. به همین دلیله که آموزش های ویدیویی عموما به آموزش مباحث اولیه بیشتر میپردازن که من برای شروع پیشنهادشون میکنم ولی برای عمیق شدن خیر.
#designing_data_intensive_applications
#high_performance_mysql
@gocasts
❤8👍3
چرا انتخاب uuid به عنوان primary key میتونه به شدت performance دیتابیس شمارو تحت تاثیر قرار بده؟
نمیتونم بگم این ویدیو چقدر دید خوبی میده به ما که چطور با دیتابیس برخورد کنیم. وقتی که دانش کافی و شناخت کافی از دیتابیس نداریم، خیلی تصمیمات اشتباهی میگیریم که در ابتدای راه خودشو بروز نمیده، حتی اگه هیچوقت scale نکنه اپلیکیشن ما شاید هیچوقت متوجه اشتباهمون نشیم. اما روی scale همه چیز متفاوته.
من تو بعضی از پروژه هام uuid رو به عنوان primary key در نظر میگرفتم. با دیدن این ویدیو به همین سادگی متوجه شدم چقدر این تصمیم اشتباهه، با این تصمیم چقدر دارم دیتابیس رو اذیت می کنم 🙂
خلاصه مطلب رو بخوام بگم اینه که هر دیتابیسی برای خودش یه بلاک کوچیک دیتا به اسم page داره و براش یه default page size داره، که همه read و write ها از طریق این page ها صورت میگیره. مثلا در postgres هر page بصورت پیشفرض ۸ کیلوبایت هست و در mysql هر page بصورت پیشفرض ۱۶ کیلوبایت هست. دیتابیس ها یه چیزی دارن به اسم buffer pool که اینpage هارو وقتی از disk میخونن در memory کش میکنن که بتونن عملکرد خوبی داشته باشن. خب قضیه از اینجا شروع میشه که اگه physical disk شما مثلا ssd باشه، خود ssd قاعده و قانون خودشو داره، در ssd هم ما block storage داریم یا همون page ولی اونجا page ها مثلا ۴ کیلوبایتی هستن، پس عملا هر وقت یه دیتابیس بخواد یه page خودشو روی disk بریزه داره بیشتر از یه عملیات io انجام میده و حتی یه سری کارهای بیشتر مثل shuffling و مپ کردن lba یا همون logical blcok address.
خب تا اینجا مشخص شد که دیتابیس ها برای write کردن دیتاشون روی disk به اندازه کافی دردسر دارن.
حالا بریم سراغ index های دیتابیس، که خود این ایندکس ها دارن توی یه سری page ذخیره میشن. اگه دیتای ایندکس مرتب شده نبود (که هست) کار دیتابیس ساده بود، همینطوری دیتای جدید رو پشت سر هم توی page ذخیره میکرد، تا جایی که به انتهای page میرسید و یه page جدید ایجاد میکرد.
ولی الان مساله اینه که ایندکس ها اساسا یه سری دیتای مرتب شده هستن و order مهمه. بنابراین اگه دیتای جدیدی که قراره ذخیره بشه قرار باشه وسط یه سری دیتای ایندکس شده ذخیره بشه، ما مجبور هستیم اون وسط یه جای خالی ایجاد کنیم و دیتای جدید رو ایندکس کنیم.
خب این کار باز تا وقتی که page ما به اندازه کافی جا برای ذخیره کردن همه رکوردها داشته باشه اوکیه. اما وقتی که به جایی میرسیم که page پر شده و قراره یه رکورد جدید رو وسط ایندکس های قدیمی قرار بدیم، مجبور میشیم page splitting انجام بدیم. فرض کنید میخوایم ایندکس ۴ رو به عنوان یه رکورد جدید تو pageی ایندکس کنیم که دیتای ۱ تا ۳ و ۵ تا ۱۰ رو داره. دیتابیس مجبور میشه یه page جدید بسازه و مثلا دیتای ۱ تا ۷ رو تو page قدیم و دیتای ۷ تا ۱۰ رو در page جدید ذخیره کنه.
اینو هم اشاره کنم که دیتابیس ها معمولا این کار رو نمیکنن، چون خیلی cost داره، اونا یه حرکت خیلی ساده تر میزنن، میگن اوکی، حالا که قراره ایندکس ۴ بیاد، و page جا نداره، ما یه page جدید میسازیم که ایندکس ۵ تا ۱۰ رو ذخیره کنه و یه page قدیمی هم دیتای ۱ تا ۴ رو ذخیره کنه. یه مساله ای که اینجا پیش میاد اینه که اینجا ما ۲ تا page داریم که هرکدومشون کلی فضای خالی دارن، و شما روی تعداد زیاد دیتا و ایندکس ببینید که چه تعداد page ایندکسی خواهید داشت که split شده هستن و کلی فضای خالی تو هر page وجود داره.
به این اتفاق میگن index fragmentation که ایندکس شما مدام شکسته میشه بین یه سری page. این fragmentation کجا شمارو دچار مشکل میکنه؟ وقتی که میخواید کوئری بزنید، اگه قبلا دیتابیس مجبور بود دیتای یه page رو بخونه برای کوئری شما الان مجبوره دو تا page رو بخونه و اصطلاحا ۲ تا logical io انجام بده. اینم در نظر بگیرید که این ۲ تا logical io با توجه به ساختار مثلا ssd عملا خیلی بیشتر از ۲ تا io هست، چون هر page دیتابیس خودش میتونه روی چندین بلاک ssd جداگانه ذخیره بشه و باید سمت ssd کلی کار انجام بشه که این ۲ تا logical io کامل بشه.
به همین دلیله که دیتابیس ها یه کانفیگی برای page هاشون دارن به اسم fillfactor که شما میتونی تنظیم کنی مثلا تا ۸۰ درصد هر page استفاده بشه و ۲۰ درصد بمونه برای ایندکس های جدید که splitting تا حدودی مدیریت بشه. تنظیم این fillfactor با توجه به نوع دیتای شما خیلی میتونه روی performance تاثیر بذاره.
#database #index #sql #uuid #hussein_nasser
@gocasts
نمیتونم بگم این ویدیو چقدر دید خوبی میده به ما که چطور با دیتابیس برخورد کنیم. وقتی که دانش کافی و شناخت کافی از دیتابیس نداریم، خیلی تصمیمات اشتباهی میگیریم که در ابتدای راه خودشو بروز نمیده، حتی اگه هیچوقت scale نکنه اپلیکیشن ما شاید هیچوقت متوجه اشتباهمون نشیم. اما روی scale همه چیز متفاوته.
من تو بعضی از پروژه هام uuid رو به عنوان primary key در نظر میگرفتم. با دیدن این ویدیو به همین سادگی متوجه شدم چقدر این تصمیم اشتباهه، با این تصمیم چقدر دارم دیتابیس رو اذیت می کنم 🙂
خلاصه مطلب رو بخوام بگم اینه که هر دیتابیسی برای خودش یه بلاک کوچیک دیتا به اسم page داره و براش یه default page size داره، که همه read و write ها از طریق این page ها صورت میگیره. مثلا در postgres هر page بصورت پیشفرض ۸ کیلوبایت هست و در mysql هر page بصورت پیشفرض ۱۶ کیلوبایت هست. دیتابیس ها یه چیزی دارن به اسم buffer pool که اینpage هارو وقتی از disk میخونن در memory کش میکنن که بتونن عملکرد خوبی داشته باشن. خب قضیه از اینجا شروع میشه که اگه physical disk شما مثلا ssd باشه، خود ssd قاعده و قانون خودشو داره، در ssd هم ما block storage داریم یا همون page ولی اونجا page ها مثلا ۴ کیلوبایتی هستن، پس عملا هر وقت یه دیتابیس بخواد یه page خودشو روی disk بریزه داره بیشتر از یه عملیات io انجام میده و حتی یه سری کارهای بیشتر مثل shuffling و مپ کردن lba یا همون logical blcok address.
خب تا اینجا مشخص شد که دیتابیس ها برای write کردن دیتاشون روی disk به اندازه کافی دردسر دارن.
حالا بریم سراغ index های دیتابیس، که خود این ایندکس ها دارن توی یه سری page ذخیره میشن. اگه دیتای ایندکس مرتب شده نبود (که هست) کار دیتابیس ساده بود، همینطوری دیتای جدید رو پشت سر هم توی page ذخیره میکرد، تا جایی که به انتهای page میرسید و یه page جدید ایجاد میکرد.
ولی الان مساله اینه که ایندکس ها اساسا یه سری دیتای مرتب شده هستن و order مهمه. بنابراین اگه دیتای جدیدی که قراره ذخیره بشه قرار باشه وسط یه سری دیتای ایندکس شده ذخیره بشه، ما مجبور هستیم اون وسط یه جای خالی ایجاد کنیم و دیتای جدید رو ایندکس کنیم.
خب این کار باز تا وقتی که page ما به اندازه کافی جا برای ذخیره کردن همه رکوردها داشته باشه اوکیه. اما وقتی که به جایی میرسیم که page پر شده و قراره یه رکورد جدید رو وسط ایندکس های قدیمی قرار بدیم، مجبور میشیم page splitting انجام بدیم. فرض کنید میخوایم ایندکس ۴ رو به عنوان یه رکورد جدید تو pageی ایندکس کنیم که دیتای ۱ تا ۳ و ۵ تا ۱۰ رو داره. دیتابیس مجبور میشه یه page جدید بسازه و مثلا دیتای ۱ تا ۷ رو تو page قدیم و دیتای ۷ تا ۱۰ رو در page جدید ذخیره کنه.
اینو هم اشاره کنم که دیتابیس ها معمولا این کار رو نمیکنن، چون خیلی cost داره، اونا یه حرکت خیلی ساده تر میزنن، میگن اوکی، حالا که قراره ایندکس ۴ بیاد، و page جا نداره، ما یه page جدید میسازیم که ایندکس ۵ تا ۱۰ رو ذخیره کنه و یه page قدیمی هم دیتای ۱ تا ۴ رو ذخیره کنه. یه مساله ای که اینجا پیش میاد اینه که اینجا ما ۲ تا page داریم که هرکدومشون کلی فضای خالی دارن، و شما روی تعداد زیاد دیتا و ایندکس ببینید که چه تعداد page ایندکسی خواهید داشت که split شده هستن و کلی فضای خالی تو هر page وجود داره.
به این اتفاق میگن index fragmentation که ایندکس شما مدام شکسته میشه بین یه سری page. این fragmentation کجا شمارو دچار مشکل میکنه؟ وقتی که میخواید کوئری بزنید، اگه قبلا دیتابیس مجبور بود دیتای یه page رو بخونه برای کوئری شما الان مجبوره دو تا page رو بخونه و اصطلاحا ۲ تا logical io انجام بده. اینم در نظر بگیرید که این ۲ تا logical io با توجه به ساختار مثلا ssd عملا خیلی بیشتر از ۲ تا io هست، چون هر page دیتابیس خودش میتونه روی چندین بلاک ssd جداگانه ذخیره بشه و باید سمت ssd کلی کار انجام بشه که این ۲ تا logical io کامل بشه.
به همین دلیله که دیتابیس ها یه کانفیگی برای page هاشون دارن به اسم fillfactor که شما میتونی تنظیم کنی مثلا تا ۸۰ درصد هر page استفاده بشه و ۲۰ درصد بمونه برای ایندکس های جدید که splitting تا حدودی مدیریت بشه. تنظیم این fillfactor با توجه به نوع دیتای شما خیلی میتونه روی performance تاثیر بذاره.
#database #index #sql #uuid #hussein_nasser
@gocasts
👍32❤5👎1
Go Casts 🚀
چرا انتخاب uuid به عنوان primary key میتونه به شدت performance دیتابیس شمارو تحت تاثیر قرار بده؟ نمیتونم بگم این ویدیو چقدر دید خوبی میده به ما که چطور با دیتابیس برخورد کنیم. وقتی که دانش کافی و شناخت کافی از دیتابیس نداریم، خیلی تصمیمات اشتباهی میگیریم…
حالا فاجعه uuid به عنوان primary key کجا اتفاق میفته؟ خب uuid عملا random هست و هیچ ترتیب خاصی نداره و وقتی دیتابیس بخواد از uuid به عنوان ایندکس استفاده کنه، چون نمیتونه به این راحتی ها ترتیب کلیدهارو حدس بزنه، مجبور میشه یه تعداد خیلی زیادی page بسازه، در واقع به زبان ساده تر احتمال اینکه رکورد جدید شما بخواد در همان page قبلی ایندکس بشه صفره! و این یعنی اینکه pageی که کش شده به کار نمیاد و باید page دیگه ای کش بشه!!
How index page splits affect SQL performance | The Backend Engineering Show
https://www.youtube.com/watch?v=fnR215jy-X8
ضمنا برام جالب شد فرصت کنم این دوره ش رو ببینم
Fundamentals of Database Engineering
Learn ACID, Indexing, Partitioning, Sharding, Concurrency control, Replication, DB Engines, Best Practices and More!
https://www.udemy.com/course/database-engines-crash-course
#database #index #sql #uuid #hussein_nasser
@gocasts
How index page splits affect SQL performance | The Backend Engineering Show
https://www.youtube.com/watch?v=fnR215jy-X8
ضمنا برام جالب شد فرصت کنم این دوره ش رو ببینم
Fundamentals of Database Engineering
Learn ACID, Indexing, Partitioning, Sharding, Concurrency control, Replication, DB Engines, Best Practices and More!
https://www.udemy.com/course/database-engines-crash-course
#database #index #sql #uuid #hussein_nasser
@gocasts
YouTube
Database page splits | The Backend Engineering Show
In this episode of the backend engineering show I discuss the ramification of index page splits which results in fragmented index yielding slow query performance when using indexes. I go through what a page is, how a page is read and written in the database…
👍17🎉2👎1🔥1
Go Casts 🚀
لطفا در مورد جلسه هفتگی دوشنبه ها ساعت ۱۹، طبق توضیحات پست قبلی نظرتون رو اعلام کنید
سلام صبح اول هفته همه دوستان بخیر
طبق نتیجه نظرسنجی ان شاءالله جلسات هفتگی رو برقرار می کنیم. البته هنوز قطعی نیست که هر هفته باشه، ممکنه که ۲ هفته یکبار برگزار بشه، بستگی به کیفیت جلسات داره.
حالا برای شروع به لطف خدا این هفته دوشنبه ۱۸ بهمن ساعت ۱۹ اولین جلسه رو برگزار می کنیم.
در مورد موضوع جلسه لطفا هر پیشنهادی دارید تا آخر امروز تو کامنت ها بگید، و من امشب سعی می کنم موضوع جلسه رو قطعی کنم.
امیدوارم هفته خیلی خوبی پیش رو داشته باشید
طبق نتیجه نظرسنجی ان شاءالله جلسات هفتگی رو برقرار می کنیم. البته هنوز قطعی نیست که هر هفته باشه، ممکنه که ۲ هفته یکبار برگزار بشه، بستگی به کیفیت جلسات داره.
حالا برای شروع به لطف خدا این هفته دوشنبه ۱۸ بهمن ساعت ۱۹ اولین جلسه رو برگزار می کنیم.
در مورد موضوع جلسه لطفا هر پیشنهادی دارید تا آخر امروز تو کامنت ها بگید، و من امشب سعی می کنم موضوع جلسه رو قطعی کنم.
امیدوارم هفته خیلی خوبی پیش رو داشته باشید
👍5🔥3
Go Casts 🚀
سلام صبح اول هفته همه دوستان بخیر طبق نتیجه نظرسنجی ان شاءالله جلسات هفتگی رو برقرار می کنیم. البته هنوز قطعی نیست که هر هفته باشه، ممکنه که ۲ هفته یکبار برگزار بشه، بستگی به کیفیت جلسات داره. حالا برای شروع به لطف خدا این هفته دوشنبه ۱۸ بهمن ساعت ۱۹ اولین…
دوستان گفتن در مورد clean code و software architecture باشه جلسه اول، من سعی می کنم در این مورد تو جلسه اول توضیحاتی بدم و اینکه جلسه اول یه جلسه آشنایی باشه با دوستان، همدیگه رو بیشتر بشناسیم و ببینیم برنامه ریزی موضوعی جلسات چطور باشه
ان شاء الله دوشنبه ساعت ۱۹ منتظرتون هستم 🌹
ان شاء الله دوشنبه ساعت ۱۹ منتظرتون هستم 🌹
👍13🎉4
Go Casts 🚀
دوستان گفتن در مورد clean code و software architecture باشه جلسه اول، من سعی می کنم در این مورد تو جلسه اول توضیحاتی بدم و اینکه جلسه اول یه جلسه آشنایی باشه با دوستان، همدیگه رو بیشتر بشناسیم و ببینیم برنامه ریزی موضوعی جلسات چطور باشه ان شاء الله دوشنبه…
سلام وقت همگی بخیر
جلسه فردا در گوگل میت برگزار میشه.
چون گوگل میت محدودیت ۶۰ دقیقه داره، سعی می کنیم راس ساعت ۱۹ شروع کنیم و راس ساعت ۲۰ جلسه رو تموم کنیم.
امیدوارم که برای همه مون یه شروع خوب باشه ان شاءالله
اینم لینک جلسه
https://meet.google.com/axo-xhmz-qfw
#meeting
@gocasts
جلسه فردا در گوگل میت برگزار میشه.
چون گوگل میت محدودیت ۶۰ دقیقه داره، سعی می کنیم راس ساعت ۱۹ شروع کنیم و راس ساعت ۲۰ جلسه رو تموم کنیم.
امیدوارم که برای همه مون یه شروع خوب باشه ان شاءالله
اینم لینک جلسه
https://meet.google.com/axo-xhmz-qfw
#meeting
@gocasts
Google
Real-time meetings by Google. Using your browser, share your video, desktop, and presentations with teammates and customers.
❤18👍3🎉1
Go Casts 🚀
سلام وقت همگی بخیر جلسه فردا در گوگل میت برگزار میشه. چون گوگل میت محدودیت ۶۰ دقیقه داره، سعی می کنیم راس ساعت ۱۹ شروع کنیم و راس ساعت ۲۰ جلسه رو تموم کنیم. امیدوارم که برای همه مون یه شروع خوب باشه ان شاءالله اینم لینک جلسه https://meet.google.com/axo-xhmz…
دوستان، جلسه شروع شد، ما ۵ دقیقه منتظر بقیه دوستان میمونیم
😢2🎉2
Go Casts 🚀
دوستان، جلسه شروع شد، ما ۵ دقیقه منتظر بقیه دوستان میمونیم
دوستان، ممنون از اینکه تشریف آوردید، خیلی لطف کردید، ان شاءالله که بتونیم جلسات بعد هم کار رو بخوبی پیش ببریم.
🔥13
خیلی خیلی ممنون محمد جان بابت فیدبک سازنده ت، ان شاء الله سعی میکنم تا جایی که در توانم هست برطرف کنم. منتظرم بقیه دوستان هم انتقادات سازنده شون رو ارائه بدن که ان شاء الله خیلی بهتر پیش بریم.
بازم تاکید می کنم که ان شاء الله ظرف چند روز آینده فیلم جلسه منتشر میشه، امیدوارم که مفید باشه 🌹
@bugoverflow
بازم تاکید می کنم که ان شاء الله ظرف چند روز آینده فیلم جلسه منتشر میشه، امیدوارم که مفید باشه 🌹
@bugoverflow
👍19
Go Casts 🚀
خیلی خیلی ممنون محمد جان بابت فیدبک سازنده ت، ان شاء الله سعی میکنم تا جایی که در توانم هست برطرف کنم. منتظرم بقیه دوستان هم انتقادات سازنده شون رو ارائه بدن که ان شاء الله خیلی بهتر پیش بریم. بازم تاکید می کنم که ان شاء الله ظرف چند روز آینده فیلم جلسه منتشر…
سلام دوستان، این هم از فیلم جلسه اول
بازم کوتاهی هارو به بزرگواری خودتون ببخشید، ان شاءالله سعی میکنم نواقص رو در حد توان رفع کنم در جلسات بعدی
https://www.youtube.com/watch?v=F0Wufb50wYY
اگه حوصله تماشای فیلم رو ندارید، من سعی کردم خیلی خلاصه نکات مهم جلسه رو تو این مقاله بگم، میتونید بخونید
https://gocasts.ir/software-architecture?utm_source=telegram&utm_medium=message&utm_campaign=5
#software_architecture
@gocasts
بازم کوتاهی هارو به بزرگواری خودتون ببخشید، ان شاءالله سعی میکنم نواقص رو در حد توان رفع کنم در جلسات بعدی
https://www.youtube.com/watch?v=F0Wufb50wYY
اگه حوصله تماشای فیلم رو ندارید، من سعی کردم خیلی خلاصه نکات مهم جلسه رو تو این مقاله بگم، میتونید بخونید
https://gocasts.ir/software-architecture?utm_source=telegram&utm_medium=message&utm_campaign=5
#software_architecture
@gocasts
YouTube
جلسه اول گفتگو هفتگی - معماری نرم افزار
❤21