2011/12/31

بی‌شعوری

شاید جای این نوشته در این وبلاگ نباشد ولی مگر نه این که معضلات اجتماعی در محل کار نیز آزار دهنده است؟

تازگی‌ها به طور اتفاقی از طریق یکی از خوانندگان همین وبلاگ کتابی به دستم رسیده است به نام «بی‌شعوری» نوشته خاویر کرمنت ترجمه محمود فرجامی. این کتاب به خاطر لحن تند و بی‌پرده‌اش هرگز موفق به اخذ مجوز از وزارت فرهنگ و ارشاد نشده است ولی در عوض به صورت یک کتاب الکترونیکی منتشر شده و از خیلی از سایت‌های اینترنتی قابل دریافت است.

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

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

پ.ن.: نگاهی هم به این لینک بیندازید.




2011/12/30

‫کتاب Pro ASP.NET MVC 3

3هر وقت که مجبور شوم یک چیز جدید یاد بگیرم یکی از اولین کارهایی که انجام می‌دهم پیدا کردن یک منبع یا کتاب خوب برای یاد گرفتن آن است. برای کار روی یک پروژه ASP.NET MVC باید مقداری اطلاعات MVC خودم را به روز می‌کردم و چند مثال عملی می‌دیدم. به همین خاطر از چند جا پرس و جو کردم و به کتاب Apress Pro ASP.NET MVC 3 Framework by Adam Freeman and Steven Sanderson رسیدم.

اولین نکته‌ای که با خواندن این کتاب به ذهن می‌رسد این است که نویسندگان فرض کرده‌اند خواننده هیچ اطلاعات قبلی راجع به MVC ندارد. به همین خاطر کلی راجع به MVC توضیح داده‌اند. علاوه بر این مقدار زیادی هم راجع به C#‎ و Visual Studio توضیحات مفصل داده‌اند. به همین خاطر این کتاب برای کسانی که می‌خواهند از ASP.NET WebForm به ASP.NET MVC سویچ کنند و ضمناً مدت‌ها با C#‎ برنامه‌نویسی کرده‌اند کمی نامناسب شده است.

در کل این کتاب مخصوص مبتدی‌ها نوشته شده است. برای کسانی که می‌خواهند برنامه‌نویسی و برنامه‌نویسی وب را تازه با ASP.NET MVC شروع کنند. خوانندگان حرفه‌ای‌تر کتاب باید بعضی فصول را جا بگذارند و خیلی فصول دیگر را هم سرسری ورق بزنند. در یک کلام نباید گول حجم ۸۴۰ صفحه‌ای آن را بخورند.




2011/12/29

‫امکانات جانبی برای TFS

از زمانی که کار با TFS 2010 را شروع کرده بودم به تدریج کمبود بعضی امکانات را حس کردم. مثلاً Policy اجباری بودن comment به هنگام check-in یا تعیین کل buildهای در حال اجرا یا ابزارهایی برای ساده شدن مکانیزم backup/restore.

قرار بود یک سری از این ابزارها را خودمان بسازیم. مثلاً با API مربوطه در TFS کار کرده و تیکه کدی برای اعمال یک سری Policyهای خاص در زمان check-in بنویسیم. خوشبختانه این بار کمبود وقت و تنبلی به نفع ما تمام شد. چون طی مدت این یک سال خود مایکروسافت مجموعه‌ای از این ابزارهای کوچک و به در بخور را ایجاد، در کنار هم گذاشته و تحت عنوان TFS Power Tools منتشر کرده است.

این مجموعه علاوه بر این کار بیشتر درخواست‌های ما را پوشش داده بلکه تعدادی امکان مفید دیگر را هم اضافه کرده است. برای کسب اطلاعات بیشتر به لینک دریافت آن یعنی Team Foundation Server Power Tools December 2011 مراجعه کنید.




2011/12/28

Experiences with NuGet, Autofac and Autofac WCF

Days ago I started to work on a new multi-tenant WCF,EF,MVC project. A Visual Studio solution consisted of some projects. Data layer was handled by EF, communication between pieces of software was handled with WCF and front end was baked with ASP.NET MVC. Additionally all references were made via NuGet.

During this project I faced several problems. First of them was Autofac. Autofac is a nice .Net IoC library but I had some problems with it. I never knew that Autofac WCF is a separate assembly. One reason was that I thought NuGet will download all references for me. I spent many time to configuring Autofac WCF but because I had no reference to Autofac WCF I thought it is because my version of Autofac is old. So tried to compile it.

Another problem with Autofac was that documentations has a lot content on hosting a WCF service via Autofac but many poor content on how to consume a WCF service via Autofac. Because of this I was confused how to consume a WCF service via Autofac.

Initializing Autofac with MVC was not so problematic. Just using sample codes. ASP.NET MVC is great on receiving instances on constructors.

NuGet bothered a little. It was because I was not very familiar with it. I was using it incorrectly.

Entity Framework was not very problematic in first steps. Hope to not have no problems with it as a NHibernate fun.




2011/12/27

‫قانون SOPA

سوپا قانونی است که در کنگره آمریکا در حال تصویب است. تصویب این قانون اعتراضات بسیار زیادی را در آمریکا و اروپا بر انگیخته است. ظاهراً سوپا برای حفاظت از کپی رایت نوشته شده ولی خیلی‌ها معتقدند این قانون به کنگره و دولت آمریکا توانایی حذف هر گونه صدای مخالف را می‌دهد.

سوپا افراد، شرکت‌ها و حتی موتورهای جستجو را ملزم می‌کند که اگر سایتی قوانین کپی‌رایت را رعایت نکرده بود آن را از لیست سرویس‌ها حذف کنند. مثلاً اگر شرکت مورد بحث گوگل است، آن سایت را در فهرست نتایج نیاورد، اگر ISP است، آن سایت را باز نکند. اگر facebook است آن سایت یا صفحه را پاک کند.

این قانون فقط در آمریکا اجرا می‌شود. به همین علت خیلی از آمریکایی‌ها معتقدند این قانون باعث می‌شود بسیاری از آمریکایی‌ها برای فرار از این قانون اطلاعاتشان را در کشورهای اروپایی و آسیایی host کنند که این موضوع خود به خود باعث کاهش امنیت اطلاعات آمریکا خواهد شد.

برای کسب اطلاعات بیشتر به اینجا، اینجا و اینجا نگاه کنید.

نمی‌دانم قانون سوپا روی ما ایرانی‌ها چه تاثیری خواهد داشت.




2011/12/26

‫کمی درباره NuGet

از بازار داغ شدن NuGet خیلی وقت است که می‌گذرد. طبق یک اصل احمقانه مبتنی بر ترس و بی‌اعتمادی به چیزهای جدید من هم مثل خیلی‌های دیگر چندان سراغی از NuGet نگرفته بودم. اما طی مدت اخیر مجبور شدم با NuGet کار کنم. بلد نبودن نحوه کار NuGet هم باعث شد وقتم تلف شود و هم بعد از این که کار با NuGet را یاد گرفتم فهمیدم که انجام کارها با NuGet می‌توانسته سرعت پیشرفت تعدادی از پروژه‌های قدیمی را افزایش دهد.

NuGet ابزاری کمکی است که با نصب در Visual Studio به شما کمک می‌کند تا dllهای پروژه‌های Open Source یا رایگان را راحت‌تر به دست بیاورید. NuGet مدیریت updateهای شما را به عهده می‌گیرد یعنی می‌تواند نسخه‌های جدید dllها را به صورت خودکار یا دستی به روز رسانی کند. ظاهراً NuGet یک سری کارهای configuration مربوط به dll را هم انجام می‌دهد. NuGet شامل مجموعه‌ای از کتابخانه‌های مختلف است. این کتابخانه‌ها توسط سازندگانشان در مجموعه NuGet به روز رسانی می‌شوند. کتابخانه‌های بسیار زیادی در NuGet وجود دارند از مایکروسافتی‌ها بگیر تا مواردی مثل NHibernate و Castle.

به نظر من دو تا از موانع مهم رواج NuGet در ایران یکی عدم دسترسی خوب به اینترنت برای همه developerهاست و دیگری تشویق developerها به استفاده از آخرین نسخه کتابخانه‌هاست که به مذاق خیلی‌ها در تیم‌های تولید نرم‌افزار ایرانی خوش نمی‌آید.

جهت کسب اطلاعات بیشتر به سایت رسمی «نیو گت» یا به نوشته «وحید نصیری» در همین رابطه مراجعه فرمایید.




2011/12/20

Wrong problem with Autofac WCF Integration

Autofac is a brand new .Net Dependency Injection / IoC just like Castle Windsor, etc. Autofac like Castle has a nice WCF integration facility. I was trying hard to establish a self hosted WCF server using Autofac. But was not successful at all. I guessed that is because of IP, Windows Firewall, Administration rights, version incompatibility and everything you say.

I tried Autofac samples but couldn't get them running. After all I tried Alex's solution for second or third time and realized that his sample works very fine. By watching error messages from Microsoft WcfTestClient more carefully that was clear that an internal error was occurring. But how an internal error could be viewed by WcfTestClient? Yes you are right, by using IncludeExceptionDetailInFaults. I found that in a question on SO here. So my modified version of Alex's sample goes as here:

private static void StartServerOriginal()
{
    ContainerBuilder builder = new ContainerBuilder();
    builder.Register(c => new MySecurityManager()).As<IMySecurityManager>();

    using (IContainer container = builder.Build())
    {
        Uri address = new Uri("http://localhost:8046/MySecurityManager");
        ServiceHost host = new ServiceHost(typeof(MySecurityManager), address);
        host.AddServiceEndpoint(typeof(IMySecurityManager), new BasicHttpBinding(), string.Empty);

        IComponentRegistration registration;
        if (!container.ComponentRegistry.TryGetRegistration(new TypedService(typeof(IMySecurityManager)), out registration))
        {
            Console.WriteLine("The service contract has not been registered in the container.");
            Console.ReadLine();
            Environment.Exit(-1);
        }

        (host.Description.Behaviors[typeof(ServiceDebugBehavior)] as ServiceDebugBehavior).IncludeExceptionDetailInFaults = true;
        host.Description.Behaviors.Add(new AutofacDependencyInjectionServiceBehavior(
            container, typeof(MySecurityManager), registration));
        host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true, HttpGetUrl = address });

        host.Open();

        Console.WriteLine("The host has been opened.");
        Console.ReadLine();

        host.Close();
        Environment.Exit(0);
    }
}

By running WcfTestClient again I found that some of my own service contract's exceptions were not marked as Serializable!

Oh Autofac, please forgive me, as I am a former user of Castle WCF Facility, I was thinking root cause of problem was you! Sorry, the problem was in my own code.




2011/12/19

ادامه اولین تجربه با برنامه‌نویسی موبایل

مدتی بود که روی برنامه‌نویسی موبایل با جاوا مانور می‌دادم. اینجا، اینجا و اینجا را ببینید. طی این مدت به عنوان نمونه روی یک نرم‌افزار جاوایی کار می‌کردم. چند روز پیش این نرم‌افزار در قالب برنامه‌های فردا پرداز به طور رسمی در سایت download.com به این آدرس قرار گرفت و آماده دریافت شد. اطلاعات بیشتر در وبلاگ فردا پرداز موجود است.




2011/12/14

ترجمه کتاب اصول برنامه‌نویسی

کتاب «اصول برنامه‌نویسی» همان طور که از اسمش پیداست، کتابی است راجع به اصول برنامه‌نویسی (مهندسی نرم‌افزار)، اما بر خلاف دیگر کتاب‌ها بیشتر یک کتاب عملی است تا یک کتاب تئوری. حدود چهار ماه پیش ترجمه این کتاب به صورت یک کار گروهی داوطلبانه شروع شد.قرار بود ترجمه‌ها ۴ هفته‌ای تمام شوند که البته تمام شد. ولی مدت زمان زیادی صرف ویراستاری و تا اندازه‌ای هم صفحه‌بندی کتاب شد که آن هم خیلی غیر طبیعی نبود. به هر صورت ترجمه، ویراستاری و صفحه‌بندی کتاب هم اکنون به پایان رسیده و به صورت یک کتاب الکترونیکی منتشر شده و از این آدرس قابل دریافت است. فهرست دوستانی که در این کار همکاری داشته‌اند به شرح ذیل است:

ایلیا وکیلی: ویراستار
معمار نرم‌افزار
reticent at@sign gmail.com

محمد صاحب: مقدمه
برنامه‌نویس
dotnetdev.info

افشار محبی: فصل یک و دو
طراح و برنامه‌نویس دات‌نت
afsharm.com

علیرضا ارومند: فصل سه
برنامه‌نویس دات‌نت
oroumand.com

فاطمه علیمردانی: فصل چهار
برنامه‌نویس
alimardani.kh at@sign gmail.com

صابر سلیمانی: فصل پنج و صفحه‌بندی
توسعه‌دهنده نرم‌افزار
abugslife.ir


امیر حسین رهنما: فصل شش
برنامه نویس دات نت و اندروید
amirrahnama at@sign gmail.com

ابراهیم بیاگوی: فصل هفت
آزاد کار
ebrahim at@sign byagowi.com

نادر مینایی: فصل هشت
برنامه‌نویس دات‌نت
nader.mineh at@sign gmail.com

مهدی پرهیزی: فصل نه
برنامه‌نویس و توسعه‌دهنده، نویسنده برنامه "با ما به‌روز باشید" شبکه ۳
parhizi.ir

مصطفی ستاری: موخره
برنامه نویس
hacking4fun.com



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


لینک‌های مرتبط: