Episodes
-
BASE
دیتابیس های بازی چند تا خصوصیت دارن. خصوصیت اولشون اینه که هر درخواستی رو جواب میدن. خصوصیت دومشون اینه که اگه عملیات رایت خارجی رو متوقف کنیم، کماکان تا مدتی دیتا درونشون تغییر میکنه. و خصوصیت نهاییشون اینه که در همون لحظه تضمین نمیکنن که تمامی قوانین دیتابیس و دیتا در یک هارمونی و یکنواختی قرار...
-
ACID
دیتابیس ها به دو دسته بزرگ اسیدی و بازی تقسیم میشن. دیتابیس های اسیدی یعنی دیتابیس هایی که چهار خصوصیت رو ساپورت میکنن. این خصوصیات رو توی این اپیزود با هم بررسی میکنیم.
-
Software testing
تست و تست نویسی یه مبحث بسیار داغه توی دنیای نرم افزار. اما وقتی میخواین واردش بشین، با یه جنگل از واژگان مواجه میشین. یه جنگل ترمینولوژیک. و از طرف دیگه به این دلیل که بسیار گرونه، افراد زیادی تجربه موفقی توی این زمینه ندارن. اما به هر حال ما مهندس نرم افزاریم، و قسمتی از کارمون اینه که اقلا در...
-
Association
ما در طراحی شی گرا، با دو مفهوم کلی سر و کار داریم. خود اشیاء، و ارتباط اشیاء. ارتباط اشیاء انواعی دارن که شناخت درست اونا میتونه به تحلیل و طراحی ما کمک کنه. آیا شیء اول نوعی از شیء دومه؟ آیا شیء اول از شیء دوم تشکیل شده؟ آیا شیء اول از شیء دوم استفاده میکنه؟ آیا شیء اول در واقع یه تجسم از شیء...
-
Continuous integration
یکپارچه سازی کد اعضای یک تیم با همدیگه از نقاط کلیدی توسعه تیمی محسوب میشه. اینکه من تو خلوت خودم یه هفته کد بنویسم و تو هم یه هفته بری رو کامپیوتر خودت روی همون پروژه کار کنی و بعد ببینیم که دو تا پروژه داریم که نمیدونیم چطور با هم یکیش کنیم، این صورت مساله جهانیه و تمام شرکت های نرم افزاری با…
more -
Taxonomy
در بسیاری از نرم افزارها ما باید دیتا رو دسته بندی کنیم. مفهوم دسته بندی یکی از مفاهیم مناسبه برای اینکه به عنوان یه زیرسیستم جدا، به صورت ماژولار طراحی بشه تا با استفاده مجدد از اون بتونیم هزینه تولید رو کاهش بدیم، سرعت تولید رو افزایش بدیم و کیفیت رو هم در سطح بالاتری نگه داریم. توی این اپیزود،...
-
Consistency
ثبات و یکنواختی در توسعه، یکی از رازهای موفقیت یه تیم نرم افزاریه. اینکه پروژه هامون هرچقدر بیشتر شبیه به هم نوشته بشه. اینکه ابزارهای یکسانی استفاده کنیم. اینکه قوانین درون تیمی خوبی داشته باشیم و پایبندی به اون قوانین رو به صورت سیستماتیک تضمین کنیم. اپیزود امروز در مورد معنی Consistency،…
more -
List Anatomy
ما به عنوان مهندس نرم افزار، لازمه که گاهی از رشته های دیگه درس بگیریم. دنیای پزشکی قدمت بالایی داره، و یکی از شاخه هاش که آناتومی موجودات زنده است، به دنبال اشتراکات موجودات گونه های جانوری میگرده. ما هم توی دنیای نرم افزار گونه های مختلفی از کامپوننت ها و نیازها داریم. مثلا ما مفهومی داریم به…
more -
QC & QA
کنترل کیفیت و تضمین کیفیت یه موضوعه که توی همه صنایع معنا داره. اول یه سری مفهوم ساده در این مورد یاد بگیریم، مثل اینکه کنترل کیفی پیش کنشانه است، و تضمین کیفی واکنشانه، یا مثلا کنترل کیفیت در مقیاس کوچیک در واقع تضمین کیفیت در مقیاس بزرگه. بعد راه هایی رو بررسی میکنیم که بتونیم با ابزارها و روال...
-
Check-in Policies
در نقطه ای که یه برنامه نویس که عضوی از یک تیمه، میخواد کدی که نوشته یا تغییر داده رو بفرسته روی مخزن کدها، یا همون VCS، بهتره مکانیسمی داشته باشیم برای بازنگری کد نوشته شده. در این صورت میتونیم خیلی از قوانین درون تیم رو به خوبی توسط ماشین کنترل کنیم. در دنیای TFVC در کنار Visual Studio، مفهومی...
-
AAA - Authentication, Authorization, Accounting - احراز هویت، مدیریت سطوح دسترسی، پروفایل کاربری
توی اکثر نرم افزارها ما باید قسمت هایی از نرم افزار رو فقط برای کاربرانی فراهم کنیم که بتونیم بشناسیمشون. و بعد از شناخت بتونیم میزان دسترسی اونها رو مدیریت کنیم. و ازشون اطلاعات کاربریشون رو ذخیره داشته باشیم. این نیازها بین خیلی از نرم افزارها مشترکه. پس ما میتونیم با استفاده از اصول مهندسی نرم...
-
Technology Stack - پشته فناوری
در لحظه ضبط این اپیزود، اونقدر تکنولوژی ایجاد شده توی دنیا، که من گاهی اوقات ترس برم میداره. حتی گاهی حالم بد میشه. چون انتخاب از بین این همه آپشن کار خیلی سختی میشه. درست مثل یه فروشگاه بزرگ، یه هایپرمارکت، و قفسه ماست. وقتی میری، ده ها برند میبینی، و توی هر برند، ده ها مدل و طعم مختلف. طوری که...
-
Divergence & Convergence - دیورژانس و کنورژانس - واگرایی و همگرایی
در انتخاب شغل دو تا فاز وجود داره. اول فاز واگرایی یا دیورژانس که توش ما باید در زمینه های مختلفی فعالیت کنیم تا علاقمون رو متوجه بشیم. اینطوری میتونیم بهتر تصمیم بگیریم که میخوایم چه مسیری رو ادامه بدیم. بعد فاز کنورژانس یا همگرایی، که اونجا باید متمرکز شیم روی یه کار و فقط اون رو ادامه بدیم.
-
VCS, Words & Anki
برای کار تیمی، به زیرساختی احتیاج داریم که بتونه از یک جای مرکزی کدهای ما رو مدیریت کنه. بفهمیم که چه چیزی رو چه کسی نوشته و فایلی که الان باز کردیم چه ورژن هایی در گذشته داشته و در چه زمانی توسط چه کسی چه تغییری کرده که الان این شده. و اگه همزمان روی یک فایل چند نفر کار کردن، بتونیم کار همه اونا...
-
باشگاه برنامه نویسی مهندس نعمتی
باشگاهی برای تربیت مهندسین توانمند نرم افزار. مهندسینی که از دل صنعت رشد کردن، و به صنعتی ترین حالت ممکن به رشد کشور و مردمش کمک خواهند کرد. در پناه حق.