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

یک تجربه
سالها پیش یکی از همکاران تعریف می‌کردند که یک شرکت نرم افزاری برای مشاوره معماری نرم افزار از ایشان دعوت به همکاری کرده است. پس از مراجعه به شرکت متوجه شدند که تیم اصلی برنامه نویسان درگیر تولید ORM ای برای پروژه جدید شرکت هستند که برای تولید این ابزار بیش از 4 ماه را وقت صرف کرده‌اند؛ اما در مراحل نهایی کار دچار مشکلات زیادی شده اند. به نحوی که از ایشان برای کمک به رفع مشکل ORM ( به جای تولید نرم افزار مشتری) دعوت کرده‌اند.
 
در آن زمان یادم هست که EF 5 (که تقریبا نسخه سوم  بعد از 3.5 و 4 می‌باشد - جزئیات در اینجا) توسط مایکروسافت ارائه شده بود. همچنین NHibernate هم همزمان با EFها (تاریخچه نسخه‌ها در اینجا) قابل دسترسی بوده‌است. با این حال تیم فنی به این دلیل که کوئری‌های تولیدی توسط EF کند هستند، اقدام به ساخت ORM کرده بودند. جالب اینکه با بررسی بیشتر مشخص شده‌است که حجم داده‌های پروژه در بدترین حالت در یک جدول به 5 هزار رکورد می‌رسد.

4 ماه صرف وقت و هزینه تیم 2 نفره برای طراحی و پیاده سازی و تست ORM ای که در نهایت به دلیل مشکلات Performance کنار گذاشته شد و از EF استفاده کردند. شاید در این 4 ماه می‌توانستند 30 درصد پروژه اصلی را پیاده سازی کنند.

شاید بتوان 3 دلیل عمده «فنی» شکست برخی از پروژه‌های نرم افزاری در ایران را به شرح زیر عنوان کرد:
- عدم استفاده مناسب از ابزارها و راهکار‌های موجود و انجام دوباره کاری
- استفاده غیر ضروری و عجولانه از تکنولوژی‌های جدید (بدون داشتن نیروی کار مسلط)
- پایین بودن سطح فنی و به‌روز نبودن برخی از برنامه نویسان ایرانی


متن باز (Open Source)
با پیشرفت توسعه نرم افزار و تمایل شرکت‌های بزرگ دنیا به تولید کامپوننت‌های متن باز (Open Source) ریسک استفاده از این نوع ابزار‌ها نیز کمتر شده است. بطوریکه درصورت نیاز می‌توان کامپوننت را برای پروژه‌ها سفارش سازی کرد.
شاید کمتر کسی باور می‌کرد که روزی شرکت مایکروسافت محصولات خود را Open Source کند. اما امروز، در سال 2017 میلادی، شرکت مایکروسافت اقدامات مهمی را در این زمینه انجام داده است که می‌توانید جزئیات پروژه‌های متن باز این غول کامپیوتری دنیا را در اینجا و همچنین اینجا ملاحظه کنید.

 
یک سناریو
فرض کنید یک پروژه تحت وب را شروع کرده اید. بدون در نظر گرفتن جزئیات پروژه می‌توان گفت به ابزارهای زیر نیاز خواهید داشت:

ابزار
مثال
  ORM   EF , NHibernate , Dapper , LLBLGEN 
 IOC COntainer   Unity , StructureMap , Autofac , Castle.Windsor, LightInject , Ninject 
 Report Tools   CrsytalReport , Stimusoft , DevExpress Report, Telerik Report Tools, EasyReport 
 UI Component   Telerik , JqueryUI , Bootsrap ,CompnentArt, ComponentOne 
 Error Logger   ELMAH , NLog , log4net 
 Mapper Tools   AutoMapper , ValueInjecter 
همانطور که ملاحظه می‌کنید برای همه‌ی موارد فوق ابزارهای مناسبی وجود دارند که برای پیاده سازی هر کدام، سالها وقت و هزینه صرف شده‌است. همچنین قابلیت اطمینان این ابزار‌ها به مراتب بالاتر از ابزارهای دست ساز خواهد بود. شاید برای ساده‌ترین ابزار فوق 3 ماه زمان لازم باشد تا یک نسخه  باگ دار تهیه شود!


ملاحظات استفاده از ابزارها
توجه به چند نکته در استفاده از ابزارها و کتابخانه‌های آماده ضروری می‌باشد، بدین شرح:
- ابزار مورد نیاز را با R&D (تحقیق و توسعه) انتخاب کنید. ابزارهایی که در پروژه‌های واقعی استفاده شده‌اند، بسیار مناسب می‌باشند.
- توجه داشته باشیدکه استفاده از چندین ابزار باعث ایجاد تداخل در پروژه نشود (این مورد معمولا در کامپوننت‌های UI مانند JqueryUI و Bootsrtap اتفاق می‌افتد)
- مستندات مربوط به ابزار‌ها را حتما مطالعه کنید. لطفا بدون تسلط از ابزاری استفاده نکنید.

گاهی پیش می‌آید که یک برنامه نویس بدون مطالعه مستندات مربوط به یک IOC Container از آن ابزار استفاده میکند و در Register اولیه ویژگی LifeCycle مربوط به Context  را با حالت Singleton مقداردهی میکند. بدین ترتیب پس از نیم ساعت، پروژه به دلیل آنچه که می‌توان "چاقی Context" نامید، DONE یا حداقل کند می‌شود که رفع این مشکل ساعت‌ها زمان می‌برد.

درصورت امکان از ابزارها بصورت مستقیم استفاده نکنید. یک لایه واسط مخصوص خودتان را برای تنظیمات کلی ابزار‌ها تهیه کنید که در آینده به دردتان خواهد خورد! (بیشتر در سمت سرور)

فرض کنید در پروژه WPF از کامپوننت‌های زیبای DevExpress استفاده میکنید. به ازای هر کامپوننت یک کلاس به پروژه اضافه کنید که از کلاس اصلی آن کامپوننت Devexspress ارث می‌برد و در لایه UI خود از کلاس جدید خود استفاده کنید. با این کار می‌توانید ویژگی‌های عمومی کامپوننت‌ها را یکبار برای کل پروژه اعمال کنید.


  نتیجه گیری
  اگر بخواهیم چرخ را اختراع نکنیم و از تجربیات موفق موجود استفاده کنیم، می‌توان نتیجه گرفت که استفاده از ابزارهای آماده برای توسعه نرم افزار با رعایت دستورالعمل استفاده امری مفید می‌باشد. اما باید توجه داشته باشیم که استفاده از هر ابزاری به هرقیمتی در هرپروژه‌ای، حرفه ای نیست. همه‌ی راهکارها، ابزراها و تکنولوژی‌های مورد استفاده باید در راستای هدف اصلی «تولید و تحویل به موقع نرم افزار با کیفیت به مشتری» باشد؛ هدفی که در بسیاری از موارد فراموش شده و بیشتر زمان پروژه، صرف کارهای غیر ضروری می‌شود.
نظرات مطالب
بررسی دقیق‌تر صفحات آبی ویندوز
سلام
من فایل دامپ رو با نرم افزار Debugging tools for windows باز کردم نتیجه رو در لینک زیر قرار دادم لطفا بررسی بفرمایید ببینید مشکل چیه که صفحه آبی دارم
منتظر جواب شما هستم
http://tinypaste.com/6aff65b
نظرات مطالب
تغییر عملکرد و یا ردیابی توابع ویندوز با استفاده از Hookهای دات نتی
درسته توی apimonitor باید صبر کنیم فایل اجرایی کامل اجرا شه تا کامل لاگ رفتاریشو استخراج کنیم
ولی من میخوام در حین اجرای فایل با رسیدن به هر فراخوانی نرم افزار متوقف بشه پارامترای داخلشو بگیرم بعد فایل به اجرا ادامه بده. چجوری میتونم این کارو بکنم. نمیخوام هیچ تابعی رو تغییر بدم فقط میخوام مقادیر داخل apiها رو بگیرم
با easyhook در سی# نمیشه؟
من برای شناسایی بدافزار با استفاده از apimonitor لاگ رفتاری رو استخراج کردم از روش با استفاده از فراخوانیای سیستمی و پارامترای داخلش مدل ساختم و برای مرحله تشخیص میخوام یه فایل رو در حین اجرا تشخیص بدم بدافزار هست یا نه
فقط شما بفرمایید چجوری با رسیدن به هر فراخوانی من به دامش بندازم و اطلاعات درونشو بگیرم
ممنون
نظرات مطالب
استخراج متن از فایل‌های PDF توسط iTextSharp
استخراج متن PDF، به همراه ساختار متن آن نیست. فقط text است که در متن جاری توضیح داده شده‌است. اگر نیاز به بررسی ساختاری سطح پایین آن‌را دارید، نیاز است با نرم افزاری به نام itextrups آشنا شوید. در دو مطلب زیر، از این نرم افزار برای تحلیل ساختار فایل PDF و سپس دستکاری آن استفاده شده‌است:
نظرات اشتراک‌ها
رایگان شدن بیش از ۷۰۰۰ دوره سایت Pluralsight
آیا نرم افزار امنیتی خاصی بر روی سیستم شما نصب هست؟ تصور من این است کسانیکه عنوان می‌کنند برنامه کار نمی‌کند، هدرهای صحیحی را نمی‌توانند به سمت سرور ارسال کنند (این هدرها توسط برنامه‌ای خاص در بین راه (بین برنامه‌ی اصلی و سرور) حذف می‌شود).
اشتراک‌ها
از Repository Pattern وEntity-framework درست استفاده کنیم.

یکسری مقاله و مطالب درباره Repository Pattern وجود داره که همه آنها درست نیستند و برداشت اشتباه از این الگو باعث شده مارو به اشتباه بندازه در مورد استفاده از این الگو  که الگوی خوبی نیست برای طراحی برنامه که اتفاقا یکی از بهترین الگوها برای پیاده سازی نرم افزار هست.

در این ویدئو به مزایای این الگو و نحوه پیاده سازی آن اشاره شده.

از Repository Pattern وEntity-framework درست استفاده کنیم.
نظرات مطالب
برنامه نویسی اندروید با Xamarin.Android - قسمت دوم
1- حل شد ، دفعه اول باید یه 10 دقیقه ای صبر کنیم تا ویژال استدیو بعضی api‌ها رو نصب کنه
2- میشه این تولبار رو هم معرفی کنید چون تولید نرم افزار 2 تا فاز طراحی و برنامه نویسی داره که مرحله طراحی با این روش خیلی سخت به نظر می‌رسه
باز هم ممنون
نظرات مطالب
نصب Mono 3.0 بر روی Ubuntu
اینکار رو انجام ندید. نصب MonoDevelop از طریق مرکز نرم افزار آن یا صدور فرمان sudo apt-get install monodevelop نگارش 3 این برنامه را نصب خواهد کرد (نگارش جاری آن تا این تاریخ 4 است) و همچنین مونوی قدیمی را هم به اجبار اضافه می‌کند (مونوی نگارش 2).
نظرات مطالب
Subversion 1.6.0
در واقع دلیل استفاده از ویژوال استودیو 6 پشتیبانی از برنامه ای هست که کاربران زیادی داره و متعهد به پشتیبانی اون هستیم و با وجود اینکه مدتی هست در حال انتقال سکو هستیم هنوز نتونستیم مشتریان رو قانع کنیم تا نرم افزار رو ارتقا بدهند.
ممنون از پاسخ و کمک شما