همه نوشته‌ها

چطور برای شیرپوینت وب پارت بنویسیم؟ قسمت اول: سلام دنیا

چطور برای شیرپوینت وب پارت بنویسیم؟ قسمت اول: سلام دنیا

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

درس‌هایی از استیو جابز و اپل برای کسب و کار نرم‌افزار قسمت هفتم: اهمیت استفاده از پیشنهاد کارکنان

درس‌هایی از استیو جابز و اپل برای کسب و کار نرم‌افزار قسمت هفتم: اهمیت استفاده از پیشنهاد کارکنان

حکایت ۱۰۰ نفر اول اپل اپل شرکت بزرگی است. نیروی کار شرکت‌های بزرگ مدام در حال کم و زیاد شدن هستند. در ابتدای فصل سی کتاب زندگینامه جابز درباره ۱۰۰ نفر اول اینطور می‌خوانیم: … جابز سالی یک بار، ارزشمندترین کارمندان اپل را به تفرجی می‌برد که “۱۰۰ نفر اول” نام داشت. انتخاب بر اساس یک راهبرد ساده انجام می‌شد: اگر مجبور بودی فقط ۱۰۰ نفر را با خودت سوار قایق نجات کنی و به شرکت بعدی ببری، چه کسانی را انتخاب می‌کردی؟او در پایان هر تفرج، جلوی یک وایت‌بورد می‌ایستاد و می‌پرسید: ۱۰ پروژه بعدی که باید انجام دهیم چیست؟ افراد برای این که پیشنهادشان در فهرست قرار بگیرد می‌جنگیدند.

۳۰ روز با TDD: روز یازدهم - درباره Mocking

۳۰ روز با TDD: روز یازدهم - درباره Mocking

نوشته به زبان انگلیسی روز دهم را در این آدرس می‌توانید مطالعه کنید. هدف آزمون‌های واحد خوب نوشته شده این است که تست‌های شما را ایزوله نگه دارد. این جمله به آن معنی است که اگر حتی کد زیر تست شما، به کلاس یا سرویس خارجی دیگری وابستگی دارد، شما باید بتوانید تستی بنویسید که صرفنظر از آن وابستگی‌ها آنچه در کد کلاس یا متد شماست را تست کند. به نظر غیرممکن می‌‌‌آید؟ در واقع این طور نیست و اگر نوشته مربوط به Dependency Injection را مطالعه کرده باشید، نیمی از جواب را می‌دانید.

رفع خطاهای معمول و تکمیل راه‌اندازی Build Server برای TFS 2013

رفع خطاهای معمول و تکمیل راه‌اندازی Build Server برای TFS 2013

Build به کمک TFS اگر سری نوشته‌های تست جوئل را دنبال کرده باشید، حتماً درباره اهمیت build روزانهخوانده‌اید. برای داشتن یک روال build خوب ابتدا باید یک build serer داشته باشید. خوشبختانه TFS به خصوص در نسخه‌های جدید، کار build را برای پروژه‌های تیمی بسیار ساده کرده است. در این نوشته درباره خطاهایی که پس از نصب سرویس build در TFS ممکن است با آن‌ها برخورد داشته باشید و راه حل آن‌ها صحبت می‌کنیم.

توسعه ترس محور یا Fear Driven Development چیست؟

توسعه ترس محور یا Fear Driven Development چیست؟

توسعه ترس محور روز گذشته اسکات هنسلمن نوشته‌ای رو در وبلاگش منتشر کرد و از ترس‌هایی که تبدیل به یک روال توسعه نرم‌افزار می‌شوند گفت. او نام توسعه ترس محوریا Fear Driven Developmentرا برای این موضوع انتخاب کرده. شما هم در نظرات این نوشته از تجربیات خودتان درباره کار به روش ترس محور بگویید ترس سازمانی ترس سازمانی باعث می‌شود که برنامه‌نویس‌ها نگران اشتباه کردن، شکستن build یا ایجاد باگ‌های بشوند و سازمان را مشغول تمرکز بیشتر بر تولید کاغذ یا ایجاد بیش از حد پروسه‌ها و روال‌ها و خلاصه ایستادن در راه نوشتن کد.

گزارش آماری از دستمزد برنامه‌نویسان و طراحان وب در ایران

گزارش آماری از دستمزد برنامه‌نویسان و طراحان وب در ایران

گزارش آماری حقوق و دستمزد سال ۱۳۹۲ سایت ایران تلنت، گزارش جالبی را منتشر کرده و در آن حقوق و دستمزد متخصصان و مدیران ایرانی در ۲۳ گروه شغلی از جمله گروه کامپیوتر را ارزیابی و از نظر آماری نتایج آن را اعلام کرده است. در این نوشته، بخش‌هایی که مرتبط با دستمزد برنامه‌نویسان و طراحان وب است را بررسی می‌کنیم و در نوشته دیگری به تحلیل این دستمزدها خواهیم پرداخت.

۳۰ روز با TDD: روز دهم - بررسی بیشتر Refactoring‌ و NUnit

۳۰ روز با TDD: روز دهم - بررسی بیشتر Refactoring‌ و NUnit

در نوشته روز نهم، درباره Refactoring صحبت کردیم، نوشته به زبان انگلیسی روز دهم را در این آدرس می‌توانید مطالعه کنید. در روز دهم با امکانات بیشتری در NUnit و همچنین Refactoring آشنا خواهیم شد. بهترین شمشیرها از هر دو طرف می‌برند نه تنها مهم است که به صورت دوره‌ای کد business logic خودمان را refactor کنیم، بلکه لازم است به صورت دوره‌ای تست‌ها را نیز بررسی کنیم. به یاد داشته باشید که تست‌ها هم نوعی کد هستند و نیازمند نگهداری مشابه.

اگر مشتری پولتون رو نداد با بمب ساعتی منفجرش نکنید!

اگر مشتری پولتون رو نداد با بمب ساعتی منفجرش نکنید!

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

۳۰ روز با TDD: روز نهم - مقدمات Refactoring

۳۰ روز با TDD: روز نهم - مقدمات Refactoring

نوشته زبان انگلیسی مربوط به روز نهم را از این آدرس می‌توانید مطالعه کنید. درباره مفهوم Refactoring در ادامه توضیح خواهم داد. زمانی برای بازبینی کد (Code Review) درنوشته قبلی از این سری نوشته‌ها درباره defect ها صحبت کردیم. آخرین کدی که نوشتیم این بود: نقصی که برطرفش کردیم این بود که کاربر می‌توانست یک رشته دو حرفی را به عنوان پارامتر دوم به تابع FindNumberOfOccurences ارسال کند و exception ای از نوع FormatException بگیرد.

۳۰ روز با TDD: روز هشتم: برخورد با defect ها

۳۰ روز با TDD: روز هشتم: برخورد با defect ها

نوشته به زبان انگلیسی روز هشتم را در این آدرس می‌توانید مطالعه کنید. قبل از شروع لازم است درباره موضوع امروز یعنی defect و تفاوت آن با bug نکته‌ای را عرض کنم. defect که شاید بتوان آن را نقص ترجمه کرد در واقع انحراف از نیازمندی‌های نرم‌افزار است و bug نتیجه خطا در کدنویسی، اینجا را ببینید. defect بد در نرم‌افزار خوب مهم نیست که چقدر خوب کد بنویسید و چقدر پیاده‌سازی نیازمندی‌های اصلی را دنبال کرده‌اید و مهم نیست که چقدر نرم‌افزارتان را تست کرده‌اید، defect ها یک واقعیت در دنیای نرم‌افزار هستند.

۳۰ روز با TDD: روز هفتم - Software Factories و DI Frameworks

۳۰ روز با TDD: روز هفتم - Software Factories و DI Frameworks

قبل از هر چیز، نوشته زبان انگلیسی روز هفتم را در این آدرس می‌توانید مطالعه کنید. لازم است یادآوری کنم معتقدم در کار برنامه‌نویسی تا حد امکان نباید عبارات تخصصی را ترجمه کرد (مثل ترجمه کردن نام داروها و ترکیبات شیمیایی آن‌ها در پزشکی) مگر اینکه معادل مناسبی برای آن‌ها وجود داشته باشد. در مورد نوشته امروز هم این نکته صادق است. اگر مشکل را نبینم پس مشکلی نیست. درسته؟ تزریق وابستگی (DI) یک تکنیک برای تولید برنامه‌های با پیوند ضعیف به وابستگی‌ها (loosely bound dependencies) هست.

۳۰ روز با TDD: روز ششم - تزریق وابستگی (Dependency Injection) چیست؟

۳۰ روز با TDD: روز ششم - تزریق وابستگی (Dependency Injection) چیست؟

نوشته به زبان انگلیسی روز ششم را در این آدرس می‌توانید مشاهده کنید. در روز پنجم درباره اصل Dependency Inversion گفتم و اینکه با Dependency Injection یا تزریق وابستگی متفاوت است. امروز می‌خواهیم بیشتر درباره تزریق وابستگی صحبت کنیم. Tinker Toy و Lego همان‌طور که قبلاً هم در این سری نوشته‌ها گفتم، اتصال (Coupling) و انقیاد (binding) در نرم‌افزار یک حقیقت است. به عنوان برنامه‌نویس سعی می‌کنیم که اتصالات برنامه‌مان تا حد ممکن ضعیف باشد (به اصطلاح loosely coupled باشد) اما در نهایت برای اینکه اجزای مختلف برنامه‌ای که می‌سازیم قابل استفاده باشد باید آن‌ها را bind کنیم.

30 روز با TDD: روز پنجم - کد SOLID ایجاد کنید

30 روز با TDD: روز پنجم - کد SOLID ایجاد کنید

نوشته روز پنجم به زبان انگلیسی را در این آدرس می‌توانید مطالعه کنید. در روز سوم اولین تست‌مان را نوشتم و در روز چهارم هم مطابق با روش TDD کدمان را تکمیل کردیم تا اولین تستی که نوشته بودیم Pass شود. امروز می‌خواهیم کمی درباره مباحث تئوریکی که پایه کارهای آینده در این سری نوشته‌هاست صحبت کنیم. آیا کد شما SOLID است؟ اصول SOLID در توسعه نرم‌افزار اصولی هستند که توسط رابرت مارتین معرفی شده‌اند.

30 روز با TDD: روز چهارم - Pass کردن اولین تست

30 روز با TDD: روز چهارم - Pass کردن اولین تست

نوشته زبان انگلیسی را در این آدرس می‌توانید مشاهده کنید. در روز سوم، اولین تست‌مان را نوشتیم. هدف این بود: “یک متد بنویسید که یک جمله و یک کاراکتر را به عنوان ورودی دریافت کند و عددی را برگرداند که مشخص کند آن کاراکتر چند بار در آن جمله استفاده شده است” کدی در پایان نوشته روز سوم، داشتیم کد زیر بود. در این کد فقط متد مربوط به تست را نوشتیم و امروز کاری خواهیم کرد که این تست Pass شود.

30 روز با TDD: روز سوم - اولین تست شما

30 روز با TDD: روز سوم - اولین تست شما

نوشته انگلیسی مربوط به روز سوم را در این آدرس می‌توانید بخوانید. امروز می‌خواهیم آستین‌ها را بالا بزنیم و اولین تست خودمان را بنویسیم. قبل از شروع لازم است به برخی ابزارها و نرم‌افزارهایی که به آن‌ها در طول این دوره 30 روزه TDD احتیاج پیدا می‌کنیم نگاهی داشته باشیم. اولین و مهترین ابزاری که به آن نیاز داریم Visual Studio هست. من از نسخه 2013 ویژوال استودیو برای مثال‌های این سری نوشته استفاده می‌کنم.