نظرات مطالب
EF Code First #5
من همین کاری که گفتید کردم سایتو آپلود کردم
ولی این error میده
Exception Details: System.Data.SqlClient.SqlException: Cannot open database "DataLayer.Context.MedicallexiconContext" requested by the login. The login failed.
Login failed for user 'ServerName\medicallexicon_web'.
تو stackoverflow   هم مطرح کرم جوای نگرفتم
نظرات نظرسنجی‌ها
به عنوان یک برنامه نویس به کدام گزینه بیشتر اهمیت می دهید؟
مرسی علی جان، من فکر می‌کنم، بیشتر برنامه نویس‌ها شغل دوم رو دارند و کارهای جانبی انجام می‌دهند. بیمه سابقه خیلی خوبه می‌تونه برای یک آدم محسوب بشه، بخصوص برنامه نویسی که کاری بدون تحرک و 35 به بالا باید خیلی مراقب باشی..
نظرات اشتراک‌ها
5 دلیل برای اینکه ویندوز8 شکست خورده است
با توجه به سابقه ویندوز ویستا و سون میشه امیدوار بود ویندوز 8 پایه ریزی سیستم عامل بعدی مایکروسافت باشه البته با این تفاوت که زمان کمتری داره و باید مراقب رقبای ریز و درشتی که هر روز داره به تعدادشون اضافه میشه ، باشه.
اشتراک‌ها
آیا سیستم و شبکه شما در برابر تروجان جدید واناکرای ایمن است؟

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

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

بنابراین بهترین راهکار پیشگیری قبل از درمان است. به روز رسانی MS17-010 را حتما انجام دهید. حتی اگر Auto Update ویندوز شما فعال است این کار را به صورت دستی انجام دهید. دیده شده است که در برخی از سیستم‌ها حتی با وجود فعال بودن Auto Update این آپدیت حیاتی(Critical) نصب نشده است. آنتی ویروس خود را به روز نمایید. از اطلاعات خود بر روی یک درایو اکسترنال پشتیبان تهیه نمایید. 

آیا سیستم و شبکه شما در برابر تروجان جدید واناکرای ایمن است؟
اشتراک‌ها
فعال و غیرفعال سازی DNS Shekan برای راحت کار کردن با سرویس های تحریم شده (صرفا ویندوز)

نکته مهم: من شرکت پشت سرویس shekan رو نمیشناسم، و برای همین این اسکریپت رو ساختم تا صرفا موقع دانلود از bintray.com به مشکل نخورم. توصیه می‌کنم شما هم بلافاصله بعد از تمام شدن کارتون، اسکریپت unset-shekan.cmd رو اجرا کنید تا مطمئن باشید بقیه ترافیک تون از سرورهای شکن رد نشه.

و مثل هر چیز دیگه ای توی اینترنت: مراقب باشید ریسک استفاده از این اسکریپت‌ها پای خودتونه!  

فعال و غیرفعال سازی DNS Shekan برای راحت کار کردن با سرویس های تحریم شده (صرفا ویندوز)
نظرات مطالب
مفاهیم برنامه نویسی ـ مروری بر پروپرتی‌ها
متوجه نکته مورد نظر شما نشدم. بیان شد در زبان سی شارپ و ... ساختار کپسوله‌تر پروپرتی در مقایسه با متد‌های صریح تنظیم و بازیابی مقدار فیلدها در جاوا معرفی شده اند ولی پیاده سازی داخلی آن به همان صورت متد است. نکته دوست گرامی آقای فتح الهی هم گمان می‌کنم بیشتر به منظور اشاره به چگونگی پیاده سازی داخلی است و نه اینکه مراقب باشید تداخل نام پیش نیاید.
بازخوردهای دوره
طراحی روابط و ارجاعات در RavenDB
با سلام.
یک سوال در خصوص طراحی روابط  یک بلاگ دارم:
فرض کنید میخواهیم بخش تایم لاین را به برنامه اضافه کنیم بدین شرح: هر کاربری بتواند مشترک بلاگ‌های مورد علاقه اش شود و هر بار که به صفحه اول برنامه مراجعه میکند جدیدترین پست‌های بلاگ هایی که مشترک آنها بوده ببیند.
شاید یک نوع طراحی اینگونه باشد که جدولی داشته باشیم به نام «اشتراک» که در آن فیلد «نام کاربری نویسنده و نام کاربری مشترک» مورد نظر درج شود. سپس یک جدول هم داشته باشیم مثلاً به نام Timeline با فیلدهای «نام کاربری نویسنده، نام کاربری گیرنده، متن کامل مطلب و تاریخ ارسال».
هر زمان مطلب جدیدی منتشر شد، به ازای هر مشترک در جدول اشتراک، یک رکورد در جدول Timeline درج شود، در این حالت کار خواندن مطالب جدیدی که باید به کاربر نشان دهیم ساده میشود اما اگر یک کاربر مثلاً 10000 تا مشترک داشته باشد پس به ازای هر مطلب جدیدی که مینویسد باید 10000 رکورد در جدول Timeline درج شود، و اگر 100 نفر بخواهند مطلب بنویسند فکر کنم سیستم از کار بی افتد.
ممکن است من را راهنمایی کنید.  
ویرایش:
در این لینک صفحه 26   مطلب زیر رو هم پیدا کرم.

مطالب
بروز خطای TFS 54000 در Team Foundation Server
این خطا در بیشتر موارد ، به دلیل تداخل بین زمان‌های کامپیوتر کلاینت‌ها و سرور ایجاد می‌شود . مثلا تغییر TimeZone کاربران و سرور یا تغییر دستی تاریخ سرور TFS و مانند آن. در این پست راه حلی برای آن ارائه می‌گردد
اگر اختلاف زمانی کم باشد ، می‌توان تا رسیدن به آن تاریخ صبر کرد و سپس ادامه کار را از سر گرفت ولی راه حل دیگری نیز وجود دارد .
پایگاه داده TFS دارای یک Table به نام tbl_Changeset است . با دستوراتی می‌توان آنها را به روز کرد . برای مثال : 
UPDATE tbl_Changeset
SET CreationDate = CreationDate - number of days set ahead
WHERE CreationDate >= time when the clock got set ahead
توجه داشته باشید که قالب تاریخ در پایگاه داده UTC می‌باشد و باید به این نکته دقت کرد . همچنین در هنگام بروز رسانی مراقب باشید که فقط شما در حال استفاده از سرور باشید
 
نظرات نظرسنجی‌ها
به عنوان یک برنامه نویس به کدام گزینه بیشتر اهمیت می دهید؟
موافقم. ولی مبحث بیمه اونقدری مهم نیست که شما مثلا 1 میلیون کمتر از خواستتون بگیرین. 
به این دلیل که اکثر برنامه نویس‌ها در شرکت‌های خصوصی هستند و اگر خدای نکرده دو ماه نتونن برن سر کار بیمشون هم قطع میشه حتما. من تا حالا امتحان نکردم ولی یکی از دوستان من به طور کل خویش فرما بیمه رد میکنه برای خودش. 
از نظر این که سابقه بیمه ای مرتبط جایی لازم بشه هم بازم برنامه نویس‌ها زیاد کمکی بهشون نمیشه چون در نهایت باید تو مصاحبه خودشونو نشون بدن. سابقه بیمه ملاک خوبی نیست. میشه همون مدارک رو از شرکت هایی که فرد کار کرده هم به عنوان گواهی اشتغال به کار جمع آوری کرد.
موافقم برنامه نویس‌ها 35 به بالا باید مراقب باشند. ولی احتمال میدم خیلی از ماها 35 به بالا باید دنبال یه شغل دیگه باشیم مخصوصا اگر تو ایران موندیم. 
مطالب
آشنایی با Defensive programming - قسمت دوم

در ادامه یک سری از خط مشی‌های متداول در defensive programming را با هم مرور خواهیم کرد:

1- بررسی نال بودن اشیاء
سعی در استفاده از اشیاء نال، به یک NullReferenceException منتهی خواهد شد. اگر به هر دلیلی امکان نال بودن یک شیء وجود داشت، پیش از استفاده از آن، حتما این وضعیت ‌را بررسی نمائید.
بهترین ابزاری هم که برای این منظور می‌توان استفاده کرد، نگارش جدید افزونه‌ی ReSharper است که زیر شیء‌ایی را که احتمال نال بودن آن می‌رود یک خط آبی رنگ می‌کشد.



2- بررسی آرگومان‌های دریافتی
برای نمونه اگر متد شما تاریخی را بر اساس DateTime دریافت می‌کند، حتما حدود آن‌را بررسی نمائید. برای مثال دریافت تاریخ 31 اسفند از کاربر، به یک ArgumentOutOfRangeException منتهی خواهد شد. بنابراین آرگومان‌های دریافت شده باید انتظارات مربوطه را برآورده کنند و پیش از استفاده حتما بررسی گردند تا بتوان مشکلات را به کاربر به صورت واضحی گوشزد کرد. (خطای ArgumentOutOfRangeException برای کاربر نهایی بی‌معنی است)

3- وضعیت اشیاء را بررسی کنید
برای مثال بستن یک کانکشن به دیتابیس در صورت بسته بودن آن،‌ به یک InvalidOperationException منتهی می‌شود. بنابراین بهتر است ابتدا وضعیت این شیء بررسی شده و سپس عملیات خاصی بر روی آن صورت گیرد.

4- هنگام کار با آرایه‌ها دقت کنید
اگر اندیس فراخوانی شده کمتر از صفر یا بیشتر از اندازه‌ی آرایه باشد به یک IndexOutOfRangeException بر خواهید خورد. بنابراین همواره بهتر است که این بررسی پیش از بروز واقعه انجام شود.

5- مراقب الگوریتم‌های بازگشتی باشید
هر چند متدهای بازگشتی در بعضی از موارد کار راه انداز هستند اما اگر بدون دقت از آن‌ها استفاده شود ممکن است سبب ایجاد یک حلقه‌ی بی نهایت شده و نهایتا برنامه با یک StackOverFlowException خاتمه می‌یابد (این مورد در دات نت فریم ورک تنها حالتی است که با try و catch قابل مهار نیست).

6- هنگام تبدیل اشیایی از نوع object‌ مراقب باشید
اگر قصد تبدیل یک شیء را به نوعی داشته باشید که با مقدار ذخیره شده در آن مطابقت ندارد، یک InvalidCastException حاصل خواهد شد. بنابراین در اینگونه موارد بهتر است از اپراتورهای as و یا is استفاده کنید. هنگام استفاده از as اگر عملیات تبدیل با موفقیت صورت نگیرد، حاصل عملیات تنها یک شیء نال خواهد بود و استثنایی رخ نخواهد داد.

7- بجای متد Parse از TryParse استفاده کنید
برای مثال در دات نت جهت تبدیل یک رشته به مقداری عددی می‌توان از int.Parse و یا int.TryParse استفاده کرد. در حالت اول اگر عملیات تبدیل میسر نباشد حتما یک FormatException رخ خواهد داد اما در حالت دوم در صورت موفقیت آمیز بودن عملیات تبدیل، خروجی true خواهد بود و حاصل اصلی را با یک پارامتر از نوع out در اختیار شما قرار می‌دهد.


و به صورت خلاصه
- ورودی‌های کاربر را محدود کرده (مثلا اگر قرار است عددی را وارد کند، از یک تکست باکس عددی (masked edit controls) استفاده کنید) و یا آن‌ها را دقیقا بررسی نمائید تا احتمال بروز خطاهای بعدی را کاهش دهید.
- زمانیکه می‌توان از بروز یک exception جلوگیری کرد، بهتر است مدیریت آن‌را به قسمت catch بلاک try/catch واگذار نکرد.
- و هنگامیکه با برنامه نویسی نمی‌توانید تمامی خطاهای ممکن را پیش بینی کرده و آن‌ها را مدیریت کنید، برای مدیریت استثناء‌ها برنامه داشته باشید.