<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7752604992674614388</atom:id><lastBuildDate>Wed, 25 Jan 2012 12:24:46 +0000</lastBuildDate><category>flash</category><category>Visual Studio</category><category>باگ‌زیلا</category><category>کدباز</category><category>GD Library</category><category>Get</category><category>کد پلکس</category><category>news</category><category>Zen</category><category>Team Foundation Build</category><category>Session Management</category><category>Bug</category><category>Civil</category><category>String</category><category>UI</category><category>Java ME</category><category>RentACoder</category><category>Rhino Mocks</category><category>Exprience</category><category>Trouble Ticket Express</category><category>barnamenevis</category><category>Partial Class</category><category>Trace</category><category>Random Date</category><category>Error Handling</category><category>Test</category><category>query</category><category>cs</category><category>Job</category><category>Code</category><category>5S</category><category>uNHaddins</category><category>AI</category><category>ToString</category><category>IWAM_computer</category><category>ORM</category><category>Debugging</category><category>email</category><category>Disaster</category><category>SysCache</category><category>Named SQL Query</category><category>Solution</category><category>XML Schema</category><category>FNH</category><category>WinForms</category><category>ECE Protocol</category><category>IPv6</category><category>SCM</category><category>i18n</category><category>CDO</category><category>Subversion</category><category>IoC</category><category>Unit Test</category><category>GridView</category><category>ماتصا ۹۱۴۷</category><category>Event Listener</category><category>Decoupling</category><category>FOSS</category><category>Software Enginerring</category><category>MSBuild</category><category>IIS</category><category>Extreme Programming</category><category>founation</category><category>Namespace</category><category>ITIL</category><category>ويروس</category><category>interview</category><category>Unicode</category><category>Microsoft Ajax Library</category><category>DateTime</category><category>Projection</category><category>NuGet</category><category>بنیاد کدپلکس</category><category>Castle Windsor</category><category>clean code</category><category>prioritize</category><category>GFDL</category><category>NHibernate</category><category>Babouneh</category><category>MIDlet</category><category>proxy pattern</category><category>Damn</category><category>git-dot-aspx</category><category>Methodology</category><category>Load</category><category>SOPA</category><category>Blog</category><category>Sorting</category><category>Vista</category><category>Mocking</category><category>LibreOffice</category><category>introduction</category><category>Escrow</category><category>net</category><category>Cache</category><category>کپی‌لفت</category><category>Source Control</category><category>DDT</category><category>Review</category><category>.Net</category><category>DRY</category><category>Generator</category><category>Moq</category><category>Copyleft</category><category>Build</category><category>CTP</category><category>Idea</category><category>حسابداری</category><category>حق مولف</category><category>Dirty</category><category>Opinion</category><category>scraping</category><category>Profiler</category><category>Exception</category><category>Leadership</category><category>NHibernate 3</category><category>ios</category><category>Industry</category><category>Parameter</category><category>FxCop</category><category>CGI</category><category>Shared Hosting</category><category>business code</category><category>dynamic stat</category><category>فونت</category><category>FeedBurner</category><category>iDevCenter</category><category>SFD</category><category>Continuous Integration</category><category>Freelance</category><category>Declarative Programming</category><category>Software Development</category><category>RC</category><category>ALT.NET</category><category>مایکروسافت</category><category>CSV</category><category>gpedit.msc</category><category>MS SQL</category><category>Fun</category><category>Human</category><category>CpBT</category><category>vWorker</category><category>Web Scraping</category><category>Open Source</category><category>Advice</category><category>Profession</category><category>Castle ActiveRecord</category><category>Git-Web-Access</category><category>PHP</category><category>Company</category><category>IssueTracker.NET</category><category>Ruby</category><category>twitter</category><category>log</category><category>afsharm</category><category>Autofac</category><category>Tools</category><category>EF</category><category>وقف</category><category>Hard</category><category>WPF</category><category>TortoiseGit</category><category>Pascal</category><category>Tips and Tricks</category><category>Login</category><category>mobile</category><category>TF Build</category><category>Complain</category><category>Windows 2003</category><category>Mapping</category><category>weblog</category><category>Join</category><category>magazine</category><category>Software Engineering</category><category>Final</category><category>web application project</category><category>DatePicker</category><category>web</category><category>Game</category><category>kbdfa.dll</category><category>ITSM</category><category>programmers.stackexchange.com</category><category>Html Agility Pack</category><category>Persian</category><category>framework 3.5</category><category>حساب مرکز هزینه</category><category>حساب تفصیلی</category><category>Computer</category><category>كوئري</category><category>WF</category><category>stash</category><category>Community</category><category>standard</category><category>PerSession</category><category>Rhino</category><category>HBM</category><category>IIS 6.0</category><category>Extension Methods</category><category>Social Network</category><category>Career</category><category>AAA</category><category>Work</category><category>HR</category><category>Mono</category><category>SourceForge</category><category>Error</category><category>Unknowing</category><category>ezine</category><category>Operation</category><category>AAFS</category><category>ActivePerl</category><category>نمایشگاه</category><category>ELMAH</category><category>jQuery</category><category>QueryOver</category><category>odesk</category><category>TFS Build 2010</category><category>IEnumerable</category><category>Declarative</category><category>TFS2010</category><category>UML</category><category>XML</category><category>language</category><category>Developer</category><category>ICriteria</category><category>Experience</category><category>sample</category><category>Best Practices</category><category>Domain Drive Design</category><category>Pattern</category><category>poka yoke</category><category>ماتصا ۶۲۱۹</category><category>حساب معین</category><category>Developers</category><category>android</category><category>SourceSafe</category><category>market</category><category>Dynamic</category><category>Collaboration</category><category>Free</category><category>CodeActivity</category><category>Education</category><category>Serialization</category><category>Usability</category><category>Named SQL</category><category>MVC</category><category>Architecture</category><category>public</category><category>javascript</category><category>Technology</category><category>Award</category><category>Trigger</category><category>Dependency Injection</category><category>UTC</category><category>Date</category><category>user agent string</category><category>AJAX</category><category>Paging</category><category>Free Software</category><category>change</category><category>DataBinding</category><category>ansi</category><category>http</category><category>forum</category><category>America</category><category>ISession</category><category>اتوران</category><category>Server Application Error</category><category>Burndown Chart</category><category>Virus</category><category>Non-Clustered</category><category>ایده</category><category>Book</category><category>entlib</category><category>Error logging</category><category>hero</category><category>back asp browser</category><category>Outsourcing</category><category>Design Patterns</category><category>Build Conference</category><category>deploy</category><category>Foundation of Programming</category><category>lazy loading</category><category>debug</category><category>recommendation</category><category>me</category><category>Internet</category><category>CodePlexFoundation</category><category>dynamic language</category><category>Reservation</category><category>stream</category><category>git server</category><category>Autofac WCF</category><category>باگ زیلا</category><category>useragentstring.com</category><category>WP7</category><category>Workflow</category><category>employee</category><category>website</category><category>Java</category><category>سهو تالیف</category><category>student</category><category>ELECOMP</category><category>C#</category><category>Xml Namespace</category><category>Remoting</category><category>blogger</category><category>SysConfig</category><category>WCF</category><category>rsclientprint.dll</category><category>Singleton</category><category>RadGrid</category><category>PerCall</category><category>فاینال</category><category>ODBC</category><category>Time</category><category>Template Process</category><category>دبیرخانه</category><category>Customize</category><category>fiddler</category><category>karvis</category><category>Object Oriented</category><category>Versioing</category><category>Host</category><category>J2ME</category><category>addiction</category><category>Off Topic</category><category>Performance</category><category>xmlns</category><category>ISIRI</category><category>UTF</category><category>localization</category><category>Membership</category><category>C# 2008</category><category>Castle</category><category>Film</category><category>bonobo</category><category>Windows</category><category>Translation</category><category>Nostalgia</category><category>LINQ-to-Objects</category><category>UI Mocking</category><category>Team Work</category><category>Team Build 2010</category><category>Feed</category><category>TDD</category><category>RUP</category><category>Cuyahoga</category><category>Backup</category><category>git</category><category>IQueryable</category><category>University</category><category>FTP</category><category>Delphi</category><category>fresh</category><category>UpdatePanel</category><category>SmtpClient</category><category>assholism</category><category>FireFox</category><category>NUnit</category><category>micro blogging</category><category>StackOverflow</category><category>reading</category><category>Service</category><category>System</category><category>Feature Builder</category><category>Team Build</category><category>SQL Server 2005</category><category>Source Safe</category><category>تکنولوژی</category><category>OpenOffice</category><category>Design</category><category>Perl</category><category>Session</category><category>Professional</category><category>USB</category><category>Chinese Room</category><category>GPL</category><category>Cascade</category><category>Consultant</category><category>Assembly</category><category>report</category><category>VMware</category><category>Agile</category><category>TFS 2010</category><category>HttpContext</category><category>asp word</category><category>Scrum</category><category>جیرا</category><category>OOP</category><category>asp.net</category><category>ريكرسيو</category><category>کپی‌رایت</category><category>project</category><category>LINQ-to-NHibernate</category><category>app.config</category><category>Rubber Duck Debugging</category><category>Event</category><category>shci</category><category>Excel</category><category>Extension Method</category><category>Random</category><category>Architect</category><category>Innovation</category><category>PersiaBME</category><category>کدپلکس</category><category>WPF DataBinding</category><category>Duplex</category><category>Fardis</category><category>SilverLight</category><category>Remote</category><category>Podcast</category><category>ISO</category><category>Simple</category><category>recursive</category><category>Consulting</category><category>Durable Services</category><category>DataGrid</category><category>github</category><category>Restart</category><category>Mock</category><category>Non-Clustered Index</category><category>اطلاعات</category><category>Low Level</category><category>GNU</category><category>BizSpark</category><category>بتا</category><category>Data Type</category><category>Shiraz</category><category>mvp</category><category>برنامه نویس</category><category>Git Extensions</category><category>Hosting</category><category>JIT</category><category>steve jobs</category><category>Index</category><category>R and D</category><category>Joel Spolsky</category><category>gist</category><category>MCPD</category><category>Money</category><category>Method Stub</category><category>DDD</category><category>JSON</category><category>learning</category><category>markup</category><category>Facebook</category><category>Anonymous Methods</category><category>MIDP</category><category>share</category><category>Use Case</category><category>Manager</category><category>Reports</category><category>CopSSH. PuTTY</category><category>Copyright</category><category>استالمن</category><category>Cooking</category><category>Windsor</category><category>OTRS</category><category>Lock</category><category>header</category><category>writer</category><category>Restore</category><category>Server</category><category>migration</category><category>Mobile Programming</category><category>Per Session</category><category>Reporting Services</category><category>Linq-to-Sql</category><category>Instance Management</category><category>ISIR 6219</category><category>Reflection</category><category>Loud Thinking</category><category>Outsource</category><category>Active Record Pattern</category><category>حساب پروژه</category><category>Database</category><category>Linux</category><category>nhforge.org</category><category>FardaPardaz</category><category>Design Pattern</category><category>Data Binding</category><category>log4net</category><category>Authentication</category><category>Autoplay</category><category>If</category><category>TF Version Control</category><category>CDC</category><category>SchemaUpdate</category><category>Yalda</category><category>CMMI</category><category>CodePlex</category><category>Stub</category><category>Jira</category><category>install</category><category>TfsSdk</category><category>Team</category><category>WCF Facility</category><category>Server Error</category><category>Attachmate</category><category>Novell</category><category>SQL</category><category>Motivation</category><category>Exam 70-536</category><category>Code Analysis</category><category>Windows Workflow Foundation</category><category>Hibernate</category><category>CodeProject</category><category>Schema</category><category>Fear</category><category>Mark Zuckerberg</category><category>Faraconesh</category><category>product</category><category>XAML</category><category>Productivity</category><category>MSDN</category><category>KISS</category><category>RSS</category><category>grep</category><category>Beta</category><category>CRC</category><category>Social benefit</category><category>Native SQL</category><category>History</category><category>Windows Service</category><category>OperationContext</category><category>static stat</category><category>MS Office</category><category>windows phone</category><category>Green Hopper</category><category>web.config</category><category>humor</category><category>Off-Topic</category><category>LINQ</category><category>business</category><category>Project Management</category><category>MySQL</category><category>One-to-One</category><category>Store Procedure</category><category>Charting</category><category>BugNET</category><category>Gmail</category><category>utf-8</category><category>bada</category><category>Xml Serialization</category><category>TFS Power Tools</category><category>joel test</category><category>HQL</category><category>Virtual Server</category><category>DI</category><category>Up-to-date</category><category>Development</category><category>ASP.NET AJAX</category><category>View</category><category>Upgrading</category><category>NHDay</category><category>Upgrade</category><category>Telerik</category><category>Association</category><category>MSDN Way</category><category>stats</category><category>quality</category><category>Restrictions</category><category>Fluent NHibernate</category><category>CLDC</category><category>TortoiseSVN</category><category>Software Architect</category><category>Activity</category><category>Trick</category><category>dll</category><category>Windows 8</category><category>LGPL</category><category>revision control</category><category>Per Call</category><category>Developing</category><category>stat</category><category>XP</category><category>Farids</category><category>Academic</category><category>BugZilla</category><category>SQL Server</category><category>Friends</category><category>ISIRI 6219</category><category>CI</category><category>EnableSEOPaging</category><category>Clustered Index</category><category>Fetch</category><category>Authorization</category><category>Management</category><category>TFS Build</category><category>conference</category><category>Process Template</category><category>Security</category><category>remote connections</category><category>Visual Studio 2010</category><category>Font</category><category>Programming</category><category>ASP.NET MVC</category><category>winform</category><category>afsharm.com</category><category>Throttling</category><category>SMTP</category><category>ALM</category><category>Programmer</category><category>bare</category><category>FDL</category><category>IPv4</category><category>Assembla</category><category>Software</category><category>ISIRI 9147</category><category>Clustered</category><category>VM Ware</category><category>Report Viewer</category><category>Social</category><category>SSADM</category><category>convert</category><category>TFS</category><category>static</category><category>Scott Hanselman</category><category>FSF</category><category>SessionScope</category><category>ActivityPack</category><category>TTX</category><category>Caching</category><category>کد باز</category><category>ascii</category><category>Source Code</category><category>AjaxControlToolkit</category><category>Web Service</category><category>Sequence Diagram</category><category>ADO.NET</category><category>ASP.NET Health Monitoring</category><category>criticism</category><category>Iran</category><category>Stack Overflow</category><category>Concept</category><category>Issue Tracking</category><category>Confusion</category><category>Exhibition</category><category>MCTS</category><category>microsoft</category><category>SQL Express</category><category>Disaster Recovery</category><category>SVN</category><category>Training</category><category>zip</category><category>AnkhSVN</category><title>AfsharM</title><description>My experiences in software development</description><link>http://blog.afsharm.com/</link><managingEditor>noreply@blogger.com (Afshar Mohebbi)</managingEditor><generator>Blogger</generator><openSearch:totalResults>405</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Afsharm" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="afsharm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-6877332328419684030</guid><pubDate>Sun, 22 Jan 2012 10:55:00 +0000</pubDate><atom:updated>2012-01-22T14:23:38.464+03:30</atom:updated><title>‫Templify چیست؟</title><description>&lt;div style="direction:rtl; text-align:right"&gt; آیا شما هم از جمله کسانی هستید که هر چند وقت یک بار در شرکت‌تان یک پروژه جدید را new کرده و کار را با کپی کردن از یک سورس پایه و تغییر قسمت‌های مختلف آن از جمله نام پروژه، namespace، اسامی موجود در web.config و غیره ادامه می‌دهید؟ آیا از انجام این کار تکراری خسته شده‌اید؟ آیا اشتباهات ضمنی این کپی کاری آبروی شما را چندین بار در شرکت برده است؟ اگر جواب همه این سوالات مثبت است بهتر است نگاهی به ابزار Templify بیندازید.&lt;br&gt;&lt;br&gt;Templify ابزاری است که در نگاه اول کارش شبیه به Templateهای ایجاد پروژه در Visual Studio و ابزار NuPack به نظر می‌رسد. اما سازندگان این ابزار مدعی هستند Templify کارهایی می‌کند که دو ابزار فوق در انجام آن مشکل دارند. کار Templify ایجاد یک پروژه جدید بر اساس Templateهای از پیش تعریف شده است. فرض کنید پروژه‌ی پایه‌ای که هر روز در شرکت با آن سر و کار دارید یک Visual Studio Solution است که از چند Visual Studio Project با نام‌های BaseProj.Core، BaseProj.Web و BaseProj.Test تشکیل شده است. شما می‌توانید این solution را به صورت یک package به Templify معرفی کنید. من بعد می‌توانید با سادگی چند کلیک از Templify بخواهید که instance جدیدی از این پروژه برای شما بسازد. Templify یک نام از شما می‌گیرد و نام پروژه، namespaceها و دیگر موارد مشابه را خودش تغییر می‌دهد. مثلا اگر نام مورد نظر شما MyProj باشد، نام پروژه‌ها و اسمبلی‌ها و غیره به MyProj.Core، MyProj.Web و MyProj.Test تغییر می‌یابد. برای دیدن یک راهنمای خوب به &lt;a  href="http://weblogs.asp.net/alecwhittington/archive/2010/10/10/using-templify-to-create-a-new-s-arp-architecture-solution.aspx" target='_blank'&gt;اینجا&lt;/a&gt; مراجعه کنید. صفحه اصلی Templify هم در &lt;a  href="http://opensource.endjin.com/templify/" target='_blank'&gt;اینجا&lt;/a&gt; قرار دارد.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-6877332328419684030?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tx1qxgTLHwuMQztJmozb-vd4LZE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tx1qxgTLHwuMQztJmozb-vd4LZE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tx1qxgTLHwuMQztJmozb-vd4LZE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tx1qxgTLHwuMQztJmozb-vd4LZE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=hwGDD_NGcR4:kdIVSYFFfFE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=hwGDD_NGcR4:kdIVSYFFfFE:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=hwGDD_NGcR4:kdIVSYFFfFE:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2012/01/templify.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-292681411188798379</guid><pubDate>Wed, 11 Jan 2012 09:57:00 +0000</pubDate><atom:updated>2012-01-11T13:26:42.067+03:30</atom:updated><title>‫راه افتادن در ASP.NET MVC و jQuery</title><description>&lt;div style="direction:rtl; text-align:right"&gt; به خاطر پروژه‌ای که درگیرش هستم باید ASP.NET MVC و jQuery را هم بلد باشم. بخش MVC پروژه خیلی وقت است که شروع شده ولی jQuery آن تازه به جریان افتاده است. اولین استفاده از jQuery مربوط به است به نمایش یک Popup و دریافت اطلاعات از طریق آن. هنوز دستم در MVC و jQuery آنقدر راه نیفتاده که بتوانم در مورد بخشی از آن چیزی بنویسم ولی انتقال اولین تجربه‌های این دو خالی از لطف نیست.&lt;br&gt;&lt;br&gt;استفاده از MVC برای کسی که مدت‌ها برنامه‌نویس ASP.NET WebForm بوده تجربه دلهره‌آوری است. از روی شنیده‌ها می‌دانستم که MVC بخشی از کارهای خودکار WebForm را که باعث جدایی برنامه‌نویس و ماهیت طبیعی HTML و Web شده بود را حذف کرده است. یعنی در MVC از یک جایی به بعد این خود برنامه‌نویس است که باید ارتباط Server و Client را برقرار کند. هر چقدر که پروژه بیشتر جلو می‌رفت حس می‌کردم که فاصله‌ام با جدایی موعود کمتر و کمتر می‌شود. حسی شبیه به take-off هواپیما از روی زمین، با کمی اغراق.&lt;br&gt;&lt;br&gt;فکر می‌کنم که دیروز این لحظه جدایی فرا رسید و من یاد گرفتم که چطور یک Form را با کمک Html.BeginForm در MVC بسازم، اطلاعات آن را با کمک ‎$("#FormId").serialize()‎ و ‎$.post()‎ در jQuery به سرور ارسال کنم و در نهایت در سرور با استفاده از متودی در Controllerهای تعریف شده MVC سمت سرور اطلاعات را دریافت کرده و مورد پردازش قرار دهم. &lt;br&gt;&lt;br&gt;حالا که آن دلهره را پشت سر گذاشته‌ام (اقلاً بخشی از آن را)، آن حس تبدیل به حسی شیرین و ظفرمندانه شده است. علاوه بر این حس می‌کنم بعد از مدت‌ها توانسته‌ام با کد client side آشتی کرده و با احترام با آن برخورد کنم. در این رابطه باید ممنون پروژه و &lt;a  href="http://iwantmymvc.com/dialog-form-with-jqueryui-and-mvc-3" target='_blank'&gt;راهنمایی مفید یک سایت&lt;/a&gt; باشم.&lt;br&gt;&lt;br&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-292681411188798379?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-QI670D-spjYpMHVg477xDBKZNY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-QI670D-spjYpMHVg477xDBKZNY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-QI670D-spjYpMHVg477xDBKZNY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-QI670D-spjYpMHVg477xDBKZNY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=8IzBZf5EItU:-H9Cf2FBUL8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=8IzBZf5EItU:-H9Cf2FBUL8:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=8IzBZf5EItU:-H9Cf2FBUL8:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2012/01/aspnet-mvc-jquery.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>14</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-5233628671199844528</guid><pubDate>Tue, 10 Jan 2012 14:37:00 +0000</pubDate><atom:updated>2012-01-10T18:05:09.940+03:30</atom:updated><title>ارتباطات شبه دو طرفه</title><description>&lt;div style="direction:rtl; text-align:right"&gt; تویتر، فیس‌بوک، گوگل ریدر و بقیه خدمات مشابه چیزهای خیلی خوبی هستند. اما حیف که دو تا بدی دارند. اول این که اینترنتی هستند و به محض وقوع مشکل در اینترنت دچار مشکل می‌شوند. دوم این که به علت تعاملی بودن ممکن است مقدار زیادی از وقت کاربر را ببلعند. یعنی این که کاربر خود را دقایق طولانی به خود مشغول داشته و باعث پایین آمدن شدید «بهره‌وری» شخص گردند. اصلاً شاید به همین دلیل است که خیلی از شرکت‌ها استفاده از امکاناتی مثل تویتر را در داخل شرکت ممنوع اعلام می‌کنند.&lt;br&gt;&lt;br&gt;از طرف دیگر مزایای تویتر و… بیش از آن است که بتواند به سادگی اجازه قطع آنها را بدهد. شخصاً:&lt;br&gt;&lt;br&gt;* دوستان زیادی را از طریق شبکه‌های ارتباطی و به طور کلی اینترنت پیدا کرده‌ام، &lt;br&gt;* جواب خیلی از سوالاتم را از طریق همین شبکه‌ها پیدا کرده‌ام، &lt;br&gt;* این شبکه‌ها همیشه کمک بسیار خوبی برای شناساندن من به دیگران بوده است&lt;br&gt;* کمک کرده‌اند که از تنهایی دربیایم و چندین مزیت دیگر.&lt;br&gt;&lt;br&gt;&lt;br&gt;پس چه باید کرد که هم مزیت‌ها را داشت و هم از معایب آن دور بود؟ قدیم‌ترها که مشکل مشابهی با ایمیل‌های فراوان روزانه داشتم به روش «یک بار اول وقت، یک بار آخر وقت عمل» می‌کردم. یعنی ایمیل‌هایم را فقط در اول روز و آخر روز نگاه می‌کردم و به این ترتیب مقدار زیادی از وقتم صرفه‌جویی می‌شد. اما در مورد چیزی مثل تویتر نمی‌شود از چنین روشی استفاده کرد. چون یک موضوع خاص در یک لحظه خاص است که به ذهن آدم خطور می‌کند و همان لحظه باید تویت شود. اگر چنین چیزی به آخر وقت منتقل شود حتی ممکن است در اثر فراموشی از ذهن انسان خارج شده باشد.&lt;br&gt;&lt;br&gt;برای رفع این مشکل می‌خواهم از روش ارتباطات شبه دو طرفه (یک و نیم طرفه) استفاده کنم. یعنی هر نوع تویت یا updateی را در همان لحظه تبادر به ذهن ارسال کنم ولی بازخورد (واکنش دوستان، followerها و…) را فقط شب به شب نگاه کرده و جواب می‌دهم. برای ارسال هم صرفا از ابزارهای یک طرفه مثل «ایمیل به تویتر» و «SMS به تویتر» استفاده می‌کنم. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;* * *&lt;br&gt;&lt;br&gt;پ.ن. ۱: همینجا از دوستانی که ممکن است به «بازخوردشان» با زمان طولانی جواب بدهم عذرخواهی می‌کنم.&lt;br&gt;پ.ن. ۲: حساب تویتر من &lt;a  href="http://twitter.com/mohebbi" target='_blank'&gt;mohebbi&lt;/a&gt; است.&lt;br&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-5233628671199844528?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NEPpfD5KoKEFbWHv0qeNPVc80FM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NEPpfD5KoKEFbWHv0qeNPVc80FM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NEPpfD5KoKEFbWHv0qeNPVc80FM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NEPpfD5KoKEFbWHv0qeNPVc80FM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=L0uBQXTl_HQ:Go6a_YK5cso:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=L0uBQXTl_HQ:Go6a_YK5cso:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=L0uBQXTl_HQ:Go6a_YK5cso:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2012/01/blog-post.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-191102090327381596</guid><pubDate>Sun, 08 Jan 2012 06:39:00 +0000</pubDate><atom:updated>2012-01-08T10:07:17.612+03:30</atom:updated><title>‫مشکل عدم شناخت UpdatePanel توسط ویژوال استودیو</title><description>&lt;div style="direction:rtl; text-align:right"&gt; آنهایی که از اوایل Ajax در ASP.NET که با اسم رمز Atlas آغاز شد کار با آن را شروع کردند خوب می‌دانند که مایکروسافت چندین و چند بار اسم پروژه، Namesapceها، نام dll، شماره version و حتی بود و نبودش را در دل ‎.Net Framework عوض کرده است. ظاهراً هنوز هم مشکلات ویژوال استودیو با مجموعه UpdatePanel/ScriptManager و… حل نشده است.&lt;br&gt;&lt;br&gt;در یک Class Library چند فایل ascx داشتیم که داخل آنها از UpdatePanel و ScriptManager استفاده شده بود. به دلیل یک تغییر اسم کلی همه این فایل‌ها را یک بار باز و بسته کرده بودم و دقیقاً از همان لحظه دچار مشکل شده بودم. چون ویژوال استودیو نمی‌توانست پروژه را Build کند. عنوان خطا این بود که ویژوال استودیو نمی‌تواند System.Web.UI.WebControls.UpdatePanel را در dllهای موجود پیدا کند. چندین و چند بار رفرنس‌های System.Web و System.Web.Extensions را پاک کرده و دوباره اضافه کردم ولی مشکل حل نشد.&lt;br&gt;&lt;br&gt;نهایتاً گره این مشکل با راهنمایی یکی از دوستان خوب و دقیق ما یعنی سامان باز شد. این مشکل یک باگ شناخته شده ویژوال استودیو ۲۰۱۰ است. وقتی که فایل ascx (یا aspx) در ویژوال استودیو باز می‌شود، خود ویژوال استودیو به اشتباه namespace مربوط به UpdatePanel و بقیه را به System.Web.UI.WebControls.UpdatePanel تغییر می‌دهد در حالی که درست آن System.Web.UI.UpdatePanel است. یعنی تیکه WebControls اضافی بوده است. من این مشکل را در designer مشاهده کرده‌ام.&lt;br&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-191102090327381596?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RlYwhLj2XcYAL764C-iRWHNlA74/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RlYwhLj2XcYAL764C-iRWHNlA74/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RlYwhLj2XcYAL764C-iRWHNlA74/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RlYwhLj2XcYAL764C-iRWHNlA74/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=ZBdmuxMzw5w:-7e-ttBScBo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=ZBdmuxMzw5w:-7e-ttBScBo:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=ZBdmuxMzw5w:-7e-ttBScBo:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2012/01/updatepanel.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-100010896606002294</guid><pubDate>Sun, 08 Jan 2012 05:22:00 +0000</pubDate><atom:updated>2012-01-08T08:55:34.406+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">View</category><category domain="http://www.blogger.com/atom/ns#">Castle ActiveRecord</category><title>‫‫View به عنوان یک Domain Entity در Castle ActiveRecord</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;گاهی اوقات تلفیقی از چند جدول با شرایط خاص داریم که می‌خواهیم آن را به چشم یک Domain Entity نگاه کنیم. در حالت عادی انجام این کار خیلی ساده است. کافی است یک View از تلفیق آن جداول بسازیم و View را مطابق نمونه زیر به عنوان یک Domain Entity تعریف کنیم:&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="direction: ltr; text-align: left;"&gt;&lt;pre class="brush:csharp"&gt;[ActiveRecord("SampleView")]
    public class SampleDomain : ActiveRecordBase&amp;lt;SampleDomain&amp;gt;
    {
        [Property]
        public virtual string Prop1 { set; get; }

        [Property]
        public virtual string Prop2 { set; get; }
    }
&lt;/pre&gt;&lt;/div&gt;&lt;div style="direction: rtl; text-align: right;"&gt;در اینجا SampleView نام View دیتابیسی است و Prop1 و Prop2 نام دو تا از ستون‌های آن است.&lt;br /&gt;
&lt;br /&gt;
اما اگر ما یک Entity پایه داشتیم و حتماً باید همه Entityها از آن Entity پایه ارث‌بری می‌کردند چه باید می‌کردیم؟ Entityهای پایه معمولا دارای Propertyهای مشترکی مثل Id و LastModifyDate هستند. فرض کنید اسم آن Entity پایه EntityBase بود. آن وقت Domain Entity مورد نظر به شکل زیر در می‌آمد:&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style="direction: ltr; text-align: left;"&gt;&lt;pre class="brush:csharp"&gt;[ActiveRecord("SampleView")]
    public class SampleDomain : BaseEntity&amp;lt;SampleDomain&amp;gt;
    {
        [Property]
        public virtual string Prop1 { set; get; }

        [Property]
        public virtual string Prop2 { set; get; }
    }
&lt;/pre&gt;&lt;/div&gt;&lt;div style="direction: rtl; text-align: right;"&gt;تنها تفاوتی که به وجود آمد ارث‌بری از BaseEntity به جای خود ActiveRecordBase بود. البته View دیتابیسی مورد نظر باید شامل همه Propertyهای مشترک تعریف شده در BaseEntity هم باشد مثل Id و LastModifyDate.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-100010896606002294?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VimpatVLof5hiGl3-pPx0jiGnh0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VimpatVLof5hiGl3-pPx0jiGnh0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VimpatVLof5hiGl3-pPx0jiGnh0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VimpatVLof5hiGl3-pPx0jiGnh0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=cWxWC_i-Log:IoV2-oE33bA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=cWxWC_i-Log:IoV2-oE33bA:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=cWxWC_i-Log:IoV2-oE33bA:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2012/01/view-domain-entity-castle-activerecord.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-4115062701124251732</guid><pubDate>Sat, 31 Dec 2011 03:30:00 +0000</pubDate><atom:updated>2011-12-31T08:13:39.409+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">criticism</category><category domain="http://www.blogger.com/atom/ns#">assholism</category><title>بی‌شعوری</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;شاید جای این نوشته در این وبلاگ نباشد ولی مگر نه این که معضلات اجتماعی در محل کار نیز آزار دهنده است؟&lt;br /&gt;
&lt;br /&gt;
تازگی‌ها به طور اتفاقی از طریق یکی از خوانندگان همین وبلاگ کتابی به دستم رسیده است به نام «بی‌شعوری» نوشته خاویر کرمنت ترجمه محمود فرجامی. این کتاب به خاطر لحن تند و بی‌پرده‌اش هرگز موفق به اخذ مجوز از وزارت فرهنگ و ارشاد نشده است ولی در عوض به صورت یک کتاب الکترونیکی منتشر شده و از خیلی از سایت‌های اینترنتی قابل دریافت است. &lt;br /&gt;
&lt;br /&gt;
این کتاب راجع به آدم‌هایی است که خودشان را دانای مطلق و صاحب همیشگی حق می‌دانند و از این راه آزار و اذیت زیادی به دیگران و به جامعه اطرافشان می‌رسانند. «بی‌شعور» اسمی است که نویسنده کتاب به این دست آدم‌ها داده است.&lt;br /&gt;
&lt;br /&gt;
آیا شما هم در شرکت یا تیم‌تان با چنین افرادی برخورد داشته‌اید؟ برنامه‌نویسی که به غلط موفقیت یک پروژه را با حماقتش در کدنویسی، همکاری تیمی افتضاح و انگیزش انفعالی به چالش می‌کشد؟ طراح و تحلیل‌گری که تمام توانش را در تولید یک documentation بی‌ارزش و به درد نخور مصرف می‌کند؟ گرافیستی که همه هنرش فقط کپی ناشیانه و بلامصرفش از جستجوهای ناشیانه‌تر اینترنتی است؟ مدیر پروژه یا مدیر فنی که با نادانی تمام همه اصول ضروری را زیر پا گذاشته و فقط بر اساس تجربیات و حدسیات غلط خودش کار را جلو می‌برد؟ مدیر عاملی که تمام هم و غمش زرنگ‌بازی در امور قراردادها، کاهش مزایا و سو استفاده از حق و حقوق کارمندانش است؟ اگر فکر می‌کنید برخورد نداشته‌اید کمی بیشتر دقت کنید…&lt;br /&gt;
&lt;br /&gt;
پ.ن.: نگاهی هم به &lt;a href="http://webnote.ir/post/1390/06/22/information-transfer.aspx"&gt;این لینک&lt;/a&gt; بیندازید.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-4115062701124251732?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jN8xnMRUYDWSjdgOJeeNp1qvlpc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jN8xnMRUYDWSjdgOJeeNp1qvlpc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jN8xnMRUYDWSjdgOJeeNp1qvlpc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jN8xnMRUYDWSjdgOJeeNp1qvlpc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=k49uR1FvwNg:uzAYRYHBgtU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=k49uR1FvwNg:uzAYRYHBgtU:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=k49uR1FvwNg:uzAYRYHBgtU:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/blog-post_31.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-5902593016430302548</guid><pubDate>Fri, 30 Dec 2011 03:30:00 +0000</pubDate><atom:updated>2011-12-30T07:00:02.168+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET MVC</category><category domain="http://www.blogger.com/atom/ns#">Book</category><title>‫کتاب Pro ASP.NET MVC 3</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;3هر وقت که مجبور شوم یک چیز جدید یاد بگیرم یکی از اولین کارهایی که انجام می‌دهم پیدا کردن یک منبع یا کتاب خوب برای یاد گرفتن آن است. برای کار روی یک پروژه ASP.NET MVC باید مقداری اطلاعات MVC خودم را به روز می‌کردم و چند مثال عملی می‌دیدم. به همین خاطر از چند جا پرس و جو کردم و به کتاب Apress Pro ASP.NET MVC 3 Framework by Adam Freeman and Steven Sanderson رسیدم. &lt;br /&gt;
&lt;br /&gt;
اولین نکته‌ای که با خواندن این کتاب به ذهن می‌رسد این است که نویسندگان فرض کرده‌اند خواننده هیچ اطلاعات قبلی راجع به MVC ندارد. به همین خاطر کلی راجع به MVC توضیح داده‌اند. علاوه بر این مقدار زیادی هم راجع به C#‎ و Visual Studio توضیحات مفصل داده‌اند. به همین خاطر این کتاب برای کسانی که می‌خواهند از ASP.NET WebForm به ASP.NET MVC سویچ کنند و ضمناً مدت‌ها با C#‎ برنامه‌نویسی کرده‌اند کمی نامناسب شده است.&lt;br /&gt;
&lt;br /&gt;
در کل این کتاب مخصوص مبتدی‌ها نوشته شده است. برای کسانی که می‌خواهند برنامه‌نویسی و برنامه‌نویسی وب را تازه با ASP.NET MVC شروع کنند. خوانندگان حرفه‌ای‌تر کتاب باید بعضی فصول را جا بگذارند و خیلی فصول دیگر را هم سرسری ورق بزنند. در یک کلام نباید گول حجم ۸۴۰ صفحه‌ای آن را بخورند.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-5902593016430302548?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jDVZMuhKCW_pQiwHJJDYDCiWENg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jDVZMuhKCW_pQiwHJJDYDCiWENg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jDVZMuhKCW_pQiwHJJDYDCiWENg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jDVZMuhKCW_pQiwHJJDYDCiWENg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=pYBIRQ_8F1Q:hESK4KUe64Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=pYBIRQ_8F1Q:hESK4KUe64Y:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=pYBIRQ_8F1Q:hESK4KUe64Y:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/pro-aspnet-mvc-3.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-3480985230953092499</guid><pubDate>Thu, 29 Dec 2011 03:30:00 +0000</pubDate><atom:updated>2011-12-29T07:00:00.069+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">TFS Power Tools</category><category domain="http://www.blogger.com/atom/ns#">TFS</category><title>‫امکانات جانبی برای TFS</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;از زمانی که کار با TFS 2010 را شروع کرده بودم به تدریج کمبود بعضی امکانات را حس کردم. مثلاً Policy اجباری بودن comment به هنگام check-in یا تعیین کل buildهای در حال اجرا یا ابزارهایی برای ساده شدن مکانیزم backup/restore.&lt;br /&gt;
&lt;br /&gt;
قرار بود یک سری از این ابزارها را خودمان بسازیم. مثلاً با API مربوطه در TFS کار کرده و تیکه کدی برای اعمال یک سری Policyهای خاص در زمان check-in بنویسیم. خوشبختانه این بار کمبود وقت و تنبلی به نفع ما تمام شد. چون طی مدت این یک سال خود مایکروسافت مجموعه‌ای از این ابزارهای کوچک و به در بخور را ایجاد، در کنار هم گذاشته و تحت عنوان TFS Power Tools منتشر کرده است.&lt;br /&gt;
&lt;br /&gt;
این مجموعه علاوه بر این کار بیشتر درخواست‌های ما را پوشش داده بلکه تعدادی امکان مفید دیگر را هم اضافه کرده است. برای کسب اطلاعات بیشتر به لینک دریافت آن یعنی &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;Team Foundation Server Power Tools December 2011&lt;/a&gt; مراجعه کنید.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-3480985230953092499?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4YPG-c6sAU9ZE-hoof_WJ74EKKI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4YPG-c6sAU9ZE-hoof_WJ74EKKI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4YPG-c6sAU9ZE-hoof_WJ74EKKI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4YPG-c6sAU9ZE-hoof_WJ74EKKI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=fZzmeaY92YM:SG-F80vq6gA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=fZzmeaY92YM:SG-F80vq6gA:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=fZzmeaY92YM:SG-F80vq6gA:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/tfs.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-7079460464040237911</guid><pubDate>Wed, 28 Dec 2011 03:30:00 +0000</pubDate><atom:updated>2011-12-28T07:00:01.823+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Autofac WCF</category><category domain="http://www.blogger.com/atom/ns#">Autofac</category><category domain="http://www.blogger.com/atom/ns#">NuGet</category><category domain="http://www.blogger.com/atom/ns#">Experience</category><title>Experiences with NuGet, Autofac and Autofac WCF</title><description>&lt;div style="direction: ltr; text-align: left;"&gt;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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Initializing Autofac with MVC was not so problematic. Just using sample codes. ASP.NET MVC is great on receiving instances on constructors.&lt;br /&gt;
&lt;br /&gt;
NuGet bothered a little. It was because I was not very familiar with it. I was using it incorrectly.&lt;br /&gt;
&lt;br /&gt;
Entity Framework was not very problematic in first steps. Hope to not have no problems with it as a NHibernate fun.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-7079460464040237911?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A-z4AXFNUVfozxq8eUzIAV2a8a4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A-z4AXFNUVfozxq8eUzIAV2a8a4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A-z4AXFNUVfozxq8eUzIAV2a8a4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A-z4AXFNUVfozxq8eUzIAV2a8a4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=u5sLTAH20WQ:q2ZN43aAmDs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=u5sLTAH20WQ:q2ZN43aAmDs:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=u5sLTAH20WQ:q2ZN43aAmDs:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/experiences-with-nuget-autofac-and.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-6540133378931928206</guid><pubDate>Tue, 27 Dec 2011 06:43:00 +0000</pubDate><atom:updated>2011-12-27T10:13:20.130+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">SOPA</category><category domain="http://www.blogger.com/atom/ns#">Internet</category><category domain="http://www.blogger.com/atom/ns#">America</category><title>‫قانون SOPA</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;سوپا قانونی است که در کنگره آمریکا در حال تصویب است. تصویب این قانون اعتراضات بسیار زیادی را در آمریکا و اروپا بر انگیخته است. ظاهراً سوپا برای حفاظت از کپی رایت نوشته شده ولی خیلی‌ها معتقدند این قانون به کنگره و دولت آمریکا توانایی حذف هر گونه صدای مخالف را می‌دهد.&lt;br /&gt;
&lt;br /&gt;
سوپا افراد، شرکت‌ها و حتی موتورهای جستجو را ملزم می‌کند که اگر سایتی قوانین کپی‌رایت را رعایت نکرده بود آن را از لیست سرویس‌ها حذف کنند. مثلاً اگر شرکت مورد بحث گوگل است، آن سایت را در فهرست نتایج نیاورد، اگر ISP است، آن سایت را باز نکند. اگر facebook است آن سایت یا صفحه را پاک کند.&lt;br /&gt;
&lt;br /&gt;
این قانون فقط در آمریکا اجرا می‌شود. به همین علت خیلی از آمریکایی‌ها معتقدند این قانون باعث می‌شود بسیاری از آمریکایی‌ها برای فرار از این قانون اطلاعاتشان را در کشورهای اروپایی و آسیایی host کنند که این موضوع خود به خود باعث کاهش امنیت اطلاعات آمریکا خواهد شد. &lt;br /&gt;
&lt;br /&gt;
برای کسب اطلاعات بیشتر به &lt;a href="http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act"&gt;اینجا&lt;/a&gt;، &lt;a href="http://barsam.ir/archive/%D9%82%D8%A7%D9%86%D9%88%D9%86-%D9%81%DB%8C%D9%84%D8%AA%D8%B1%DB%8C%D9%86%DA%AF-%D8%A2%D9%85%D8%B1%DB%8C%DA%A9%D8%A7-%D9%88-%D8%B9%D9%88%D8%A7%D9%82%D8%A8-%D8%A2%D9%86/"&gt;اینجا&lt;/a&gt; و &lt;a href="http://barsam.ir/archive/%D9%86%DA%AF%D8%B1%D8%A7%D9%86%DB%8C-%D9%BE%D8%AF%D8%B1-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D8%B2-%D8%B1%D9%88%D8%A7%D8%AC-%D8%B3%D8%A7%D9%86%D8%B3%D9%88%D8%B1-%D8%A8%DB%8C%E2%80%8C/"&gt;اینجا&lt;/a&gt; نگاه کنید.&lt;br /&gt;
&lt;br /&gt;
نمی‌دانم قانون سوپا روی ما ایرانی‌ها چه تاثیری خواهد داشت.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-6540133378931928206?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bpyKc61AKtTi68zY9UQWYrKhwRU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bpyKc61AKtTi68zY9UQWYrKhwRU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bpyKc61AKtTi68zY9UQWYrKhwRU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bpyKc61AKtTi68zY9UQWYrKhwRU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=-YWIWs0EupY:1NRaSO7c3UU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=-YWIWs0EupY:1NRaSO7c3UU:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=-YWIWs0EupY:1NRaSO7c3UU:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/sopa.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-5531653473372347321</guid><pubDate>Mon, 26 Dec 2011 10:32:00 +0000</pubDate><atom:updated>2011-12-26T14:02:14.116+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">NuGet</category><title>‫کمی درباره NuGet</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;از بازار داغ شدن &lt;a href="http://nuget.org/"&gt;NuGet&lt;/a&gt; خیلی وقت است که می‌گذرد. طبق یک اصل احمقانه مبتنی بر ترس و بی‌اعتمادی به چیزهای جدید من هم مثل خیلی‌های دیگر چندان سراغی از NuGet نگرفته بودم. اما طی مدت اخیر مجبور شدم با NuGet کار کنم. بلد نبودن نحوه کار NuGet هم باعث شد وقتم تلف شود و هم بعد از این که کار با NuGet را یاد گرفتم فهمیدم که انجام کارها با NuGet می‌توانسته سرعت پیشرفت تعدادی از پروژه‌های قدیمی را افزایش دهد.&lt;br /&gt;
&lt;br /&gt;
NuGet ابزاری کمکی است که با نصب در Visual Studio به شما کمک می‌کند تا dllهای پروژه‌های Open Source یا رایگان را راحت‌تر به دست بیاورید. NuGet مدیریت updateهای شما را به عهده می‌گیرد یعنی می‌تواند نسخه‌های جدید dllها را به صورت خودکار یا دستی به روز رسانی کند. ظاهراً NuGet یک سری کارهای configuration مربوط به dll را هم انجام می‌دهد. NuGet شامل مجموعه‌ای از کتابخانه‌های مختلف است. این کتابخانه‌ها توسط سازندگانشان در مجموعه NuGet به روز رسانی می‌شوند. کتابخانه‌های بسیار زیادی در NuGet وجود دارند از مایکروسافتی‌ها بگیر تا مواردی مثل NHibernate و Castle.&lt;br /&gt;
&lt;br /&gt;
به نظر من دو تا از موانع مهم رواج NuGet در ایران یکی عدم دسترسی خوب به اینترنت برای همه developerهاست و دیگری تشویق developerها به استفاده از آخرین نسخه کتابخانه‌هاست که به مذاق خیلی‌ها در تیم‌های تولید نرم‌افزار ایرانی خوش نمی‌آید.&lt;br /&gt;
&lt;br /&gt;
جهت کسب اطلاعات بیشتر به &lt;a href="http://nuget.org/"&gt;سایت رسمی «نیو گت»&lt;/a&gt; یا به &lt;a href="http://www.dotnettips.info/2011/04/nuget.html"&gt;نوشته «وحید نصیری» در همین رابطه&lt;/a&gt; مراجعه فرمایید.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-5531653473372347321?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-A_1TbW7tD0BBkccuopLSsAN1ew/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-A_1TbW7tD0BBkccuopLSsAN1ew/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-A_1TbW7tD0BBkccuopLSsAN1ew/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-A_1TbW7tD0BBkccuopLSsAN1ew/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=_0dOX0fZHwQ:5cDxsw7kn8Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=_0dOX0fZHwQ:5cDxsw7kn8Y:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=_0dOX0fZHwQ:5cDxsw7kn8Y:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/nuget.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-9044628214231658158</guid><pubDate>Tue, 20 Dec 2011 13:04:00 +0000</pubDate><atom:updated>2011-12-20T16:36:40.115+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Autofac</category><category domain="http://www.blogger.com/atom/ns#">WCF Facility</category><category domain="http://www.blogger.com/atom/ns#">WCF</category><title>Wrong problem with Autofac WCF Integration</title><description>&lt;div style="direction: ltr; text-align: left;"&gt;&lt;a href="http://code.google.com/p/autofac/"&gt;Autofac &lt;/a&gt;is a brand new .Net Dependency Injection / IoC just like &lt;a href="http://stw.castleproject.org/Windsor.MainPage.ashx"&gt;Castle Windsor&lt;/a&gt;, etc. Autofac like Castle has a nice &lt;a href="http://code.google.com/p/autofac/wiki/WcfIntegration"&gt;WCF integration facility&lt;/a&gt;. 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. &lt;br /&gt;
&lt;br /&gt;
I tried Autofac samples but couldn't get them running. After all I tried &lt;a href="http://alexmg.com/post/2010/05/07/Self-Hosting-WCF-Services-with-the-Autofac-WCF-Integration.aspx"&gt;Alex's solution&lt;/a&gt; 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 &lt;a href="http://stackoverflow.com/questions/2483178/set-includeexceptiondetailinfaults-to-true-in-code-for-wcf"&gt;here&lt;/a&gt;. So my modified version of Alex's sample goes as here:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:csharp"&gt;private static void StartServerOriginal()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; ContainerBuilder builder = new ContainerBuilder();
&amp;nbsp;&amp;nbsp;&amp;nbsp; builder.Register(c =&amp;gt; new MySecurityManager()).As&amp;lt;IMySecurityManager&amp;gt;();

&amp;nbsp;&amp;nbsp;&amp;nbsp; using (IContainer container = builder.Build())
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uri address = new Uri("http://localhost:8046/MySecurityManager");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceHost host = new ServiceHost(typeof(MySecurityManager), address);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host.AddServiceEndpoint(typeof(IMySecurityManager), new BasicHttpBinding(), string.Empty);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IComponentRegistration registration;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!container.ComponentRegistry.TryGetRegistration(new TypedService(typeof(IMySecurityManager)), out registration))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("The service contract has not been registered in the container.");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment.Exit(-1);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (host.Description.Behaviors[typeof(ServiceDebugBehavior)] as ServiceDebugBehavior).IncludeExceptionDetailInFaults = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host.Description.Behaviors.Add(new AutofacDependencyInjectionServiceBehavior(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; container, typeof(MySecurityManager), registration));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true, HttpGetUrl = address });

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host.Open();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("The host has been opened.");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; host.Close();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Environment.Exit(0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&lt;/pre&gt;&lt;br /&gt;
By running WcfTestClient again I found that some of my own service contract's exceptions were not marked as Serializable!&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-9044628214231658158?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d9kCr2NjOTe0jGyBZPrdaz8OYNA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d9kCr2NjOTe0jGyBZPrdaz8OYNA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d9kCr2NjOTe0jGyBZPrdaz8OYNA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d9kCr2NjOTe0jGyBZPrdaz8OYNA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=wpoY3AKxirM:K-ng2XqkcHg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=wpoY3AKxirM:K-ng2XqkcHg:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=wpoY3AKxirM:K-ng2XqkcHg:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/wrong-problem-with-autofac-wcf.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-1725098751498932135</guid><pubDate>Mon, 19 Dec 2011 12:38:00 +0000</pubDate><atom:updated>2011-12-19T16:08:12.916+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">FardaPardaz</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">Java ME</category><category domain="http://www.blogger.com/atom/ns#">Babouneh</category><title>ادامه اولین تجربه با برنامه‌نویسی موبایل</title><description>&lt;div style='direction:rtl; text-align:right'&gt;مدتی بود که روی برنامه‌نویسی موبایل با جاوا مانور می‌دادم. &lt;a href="http://blog.afsharm.com/2011/11/platform.html"&gt;اینجا&lt;/a&gt;، &lt;a href="http://blog.afsharm.com/2011/11/java-me_19.html"&gt;اینجا&lt;/a&gt; و &lt;a href="http://blog.afsharm.com/2011/11/java-me.html"&gt;اینجا&lt;/a&gt; را ببینید. طی این مدت به عنوان نمونه روی یک نرم‌افزار جاوایی کار می‌کردم. چند روز پیش این نرم‌افزار در قالب &lt;a href="http://fardapardaz.com/products/nam-nameh-babouneh.html"&gt;برنامه‌های فردا پرداز&lt;/a&gt; به طور رسمی در سایت &lt;a href="http://download.com"&gt;download.com&lt;/a&gt; به &lt;a href="http://download.cnet.com/Babouneh/3000-2132_4-75627779.html?tag=rb_content;contentBody"&gt;این آدرس&lt;/a&gt; قرار گرفت و آماده دریافت شد. اطلاعات بیشتر در &lt;a href="http://blog.fardapardaz.com/post/2011/12/19/%D8%A7%D9%88%D9%84%DB%8C%D9%86-%D9%86%D8%B3%D8%AE%D9%87-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84%DB%8C-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%A7%D8%B3%D9%85.aspx"&gt;وبلاگ فردا پرداز&lt;/a&gt; موجود است.&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-1725098751498932135?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/edAaciOc0YOtR2AdrrmSTlr1Tew/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/edAaciOc0YOtR2AdrrmSTlr1Tew/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/edAaciOc0YOtR2AdrrmSTlr1Tew/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/edAaciOc0YOtR2AdrrmSTlr1Tew/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=ZnSXThGe9NI:jdotGI62RNM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=ZnSXThGe9NI:jdotGI62RNM:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=ZnSXThGe9NI:jdotGI62RNM:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/blog-post_19.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-5905789365130826018</guid><pubDate>Wed, 14 Dec 2011 09:22:00 +0000</pubDate><atom:updated>2011-12-14T12:52:17.711+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Foundation of Programming</category><category domain="http://www.blogger.com/atom/ns#">Translation</category><category domain="http://www.blogger.com/atom/ns#">Book</category><category domain="http://www.blogger.com/atom/ns#">Community</category><title>ترجمه کتاب اصول برنامه‌نویسی</title><description>&lt;div style='direction:rtl; text-align:right'&gt;کتاب &lt;a href="http://blog.afsharm.com/2011/08/foundation-of-programming.html" target="_blank"&gt;«اصول برنامه‌نویسی»&lt;/a&gt; همان طور که از اسمش پیداست، کتابی است راجع به اصول برنامه‌نویسی (مهندسی نرم‌افزار)، اما بر خلاف دیگر کتاب‌ها بیشتر یک کتاب عملی است تا یک کتاب تئوری. حدود چهار ماه پیش ترجمه این کتاب به صورت &lt;a href="http://blog.afsharm.com/2011/08/blog-post.html" target="_blank"&gt;یک کار گروهی داوطلبانه&lt;/a&gt; شروع شد.قرار بود ترجمه‌ها ۴ هفته‌ای تمام شوند که البته تمام شد. ولی مدت زمان زیادی صرف ویراستاری و تا اندازه‌ای هم صفحه‌بندی کتاب شد که آن هم خیلی غیر طبیعی نبود. به هر صورت ترجمه، ویراستاری و صفحه‌بندی کتاب هم اکنون به پایان رسیده و به صورت &lt;a href="http://foppersian.codeplex.com/" target="_blank"&gt;یک کتاب الکترونیکی&lt;/a&gt; منتشر شده و از &lt;a href="http://foppersian.codeplex.com/releases/view/78664"&gt;این آدرس&lt;/a&gt; قابل دریافت است. فهرست دوستانی که در این کار همکاری داشته‌اند به شرح ذیل است:&lt;br /&gt;
&lt;br /&gt;
ایلیا وکیلی: ویراستار&lt;br /&gt;
معمار نرم‌افزار&lt;br /&gt;
reticent at@sign gmail.com&lt;br /&gt;
&lt;br /&gt;
محمد صاحب: مقدمه&lt;br /&gt;
برنامه‌نویس&lt;br /&gt;
&lt;a href="http://dotnetdev.info/" target="_blank"&gt;dotnetdev.info&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
افشار محبی: فصل یک و دو&lt;br /&gt;
طراح و برنامه‌نویس دات‌نت&lt;br /&gt;
&lt;a href="http://afsharm.com/" target="_blank"&gt;afsharm.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
علیرضا ارومند: فصل سه&lt;br /&gt;
برنامه‌نویس دات‌نت&lt;br /&gt;
&lt;a href="http://oroumand.com/" target="_blank"&gt;oroumand.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
فاطمه علیمردانی: فصل چهار&lt;br /&gt;
برنامه‌نویس&lt;br /&gt;
alimardani.kh at@sign gmail.com&lt;br /&gt;
&lt;br /&gt;
صابر سلیمانی: فصل پنج و صفحه‌بندی&lt;br /&gt;
توسعه‌دهنده نرم‌افزار&lt;br /&gt;
&lt;a href="http://abugslife.ir/" target="_blank"&gt;abugslife.ir&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
امیر حسین رهنما: فصل شش&lt;br /&gt;
برنامه نویس دات نت و اندروید&lt;br /&gt;
amirrahnama at@sign gmail.com&lt;br /&gt;
&lt;br /&gt;
ابراهیم بیاگوی: فصل هفت&lt;br /&gt;
آزاد کار&lt;br /&gt;
ebrahim at@sign byagowi.com&lt;br /&gt;
&lt;br /&gt;
نادر مینایی: فصل هشت&lt;br /&gt;
برنامه‌نویس دات‌نت&lt;br /&gt;
nader.mineh at@sign gmail.com&lt;br /&gt;
&lt;br /&gt;
مهدی پرهیزی: فصل نه&lt;br /&gt;
برنامه‌نویس و توسعه‌دهنده، نویسنده برنامه "با ما به‌روز باشید" شبکه ۳&lt;br /&gt;
&lt;a href="http://parhizi.ir/" target="_blank"&gt;parhizi.ir&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
مصطفی ستاری: موخره&lt;br /&gt;
برنامه نویس&lt;br /&gt;
&lt;a href="http://hacking4fun.com/" target="_blank"&gt;hacking4fun.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
از تک تک دوستانی که در این کار شراکت داشتند صمیمانه تشکر می‌کنم به خصوص ایلیا وکیلی که زحمات زیادی را در رابطه با ویراستاری متحمل شدند.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
لینک‌های مرتبط:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://codebetter.com/karlseguin/2009/08/02/foundations-of-programming-small-update/" target="_blank"&gt;نسخه اصلی کتاب&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.afsharm.com/2011/08/foundation-of-programming.html" target="_blank"&gt;معرفی کتاب&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://foppersian.codeplex.com/" target="_blank"&gt;سایت پروژه ترجمه&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://foppersian.codeplex.com/releases/view/78664"&gt;لینک دریافت فایل PDF کتاب&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-5905789365130826018?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5GNiBlfHLgSjkaCac4mdFH94FQ4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5GNiBlfHLgSjkaCac4mdFH94FQ4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5GNiBlfHLgSjkaCac4mdFH94FQ4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5GNiBlfHLgSjkaCac4mdFH94FQ4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=7oXf5RncVFM:_vf_dBRm_b0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=7oXf5RncVFM:_vf_dBRm_b0:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=7oXf5RncVFM:_vf_dBRm_b0:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/12/blog-post.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>14</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-1030763197745825173</guid><pubDate>Wed, 23 Nov 2011 18:55:00 +0000</pubDate><atom:updated>2011-11-23T22:25:00.189+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Iran</category><category domain="http://www.blogger.com/atom/ns#">CodeProject</category><category domain="http://www.blogger.com/atom/ns#">Job</category><category domain="http://www.blogger.com/atom/ns#">Opinion</category><title>شیوه جذب نیرو</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;دوستی مدعی بود که غرب کمترین زحمت را برای جذب نیروهای نخبه می‌کشد و بیشترین عایدی را می‌برد. مثال او سایت CodeProject بود. او می‌گفت سایت‌هایی مثل CodeProject یک فضای رقابتی ایجاد کرده‌اند که در آن برنامه‌نویسانی از سراسر در دنیا مدام در حال رقابت بر سر کسب امتیازات بیشتر در آن هستند. آخر سر هم هر کدام از این برنامه‌نویس‌های نخبه را که بخواهند به راحتی جذب شرکت‌هایشان می‌کنند. درست و غلط این گفته به کنار، ما در شرکت‌های ایرانی تا بخواهیم یک برنامه‌نویس معمولی هم جذب کنیم پدرمان در می‌آید. راستی نمی‌شد ما هم در ایران راهی پیدا کنیم که با کمک آن بتوانیم بهترین برنامه‌نویسان کشور را جذب کسب و کار خودمان کنیم؟&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-1030763197745825173?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/np2VT5hb5h7DPOBZMSVnaM643Zs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/np2VT5hb5h7DPOBZMSVnaM643Zs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/np2VT5hb5h7DPOBZMSVnaM643Zs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/np2VT5hb5h7DPOBZMSVnaM643Zs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=4_FqTLPipZA:HLX7JOgB1IM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=4_FqTLPipZA:HLX7JOgB1IM:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=4_FqTLPipZA:HLX7JOgB1IM:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/blog-post_23.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-8113521083056616426</guid><pubDate>Tue, 22 Nov 2011 19:21:00 +0000</pubDate><atom:updated>2011-11-22T22:51:00.610+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">humor</category><category domain="http://www.blogger.com/atom/ns#">microsoft</category><title>سر سپردگی به مایکروسافت</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;عکس زیر میزان سر سپردگی یکی از دوستان بنده را نشان می‌دهد به مایکروسافت.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://afsharm.com/images/blog/ms-mobile.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://afsharm.com/images/blog/ms-mobile.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
عکسی از دفتر مایکروسافت در ردموند به عنوان background موبایل!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-8113521083056616426?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ruXkcZr_0X6ekEk0vd5KYBW_x4o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ruXkcZr_0X6ekEk0vd5KYBW_x4o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ruXkcZr_0X6ekEk0vd5KYBW_x4o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ruXkcZr_0X6ekEk0vd5KYBW_x4o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=D1M7hVDBUEM:KEkD2pV8BPc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=D1M7hVDBUEM:KEkD2pV8BPc:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=D1M7hVDBUEM:KEkD2pV8BPc:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/blog-post_22.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-1578819146692281387</guid><pubDate>Mon, 21 Nov 2011 06:29:00 +0000</pubDate><atom:updated>2011-11-21T09:59:00.337+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">prioritize</category><category domain="http://www.blogger.com/atom/ns#">clean code</category><category domain="http://www.blogger.com/atom/ns#">business code</category><title>برنامه‌نویسی تجاری</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;در بحث با یکی از دوستان که مدیر و گرداننده یک شرکت نرم‌افزاری است صحبت از تقابل احتمالی «برنامه‌نویسی زیبا و دقیق» و «برنامه‌نویسی تجاری و پول در آوردن» بود. ایشان معتقد بودند که ما هم برنامه‌نویسی زیبا و دقیق را دوست داریم چون در نهایت موجب افزایش کیفیت و کاهش هزینه‌های نگهداری می‌شود. اما گاهی اوقات در تنگنای زمانی یا هزینه‌ای قرار داریم و نمی‌توانیم از روش «زیبا نویسی» استفاده کنیم. بلکه مجبوریم با توجه به زمان کمی که در اختیار داریم یا با توجه به هزینه کمی که مشتری پرداخت می‌کند از روش‌های به درد نخورتری برای انجام کار استفاده کنیم. مثلاً به جای استفاده از ORM از ADO.NET استفاده کنیم یا به جای استفاده از یک switch case خوانا و منظم از چند if تو در تو استفاده کنیم.&lt;br /&gt;
&lt;br /&gt;
من هم در نوشتن یک برنامه موبایلی با Java ME از این ایده استفاده کردم. من برنامه‌نویس جاوا نیستم و معلوم هم نیست که بخواهم از جاوا به طور جدی استفاده کنم یا نه. بنابراین اهمیت زیادی به منظم بودن کد ندادم. برنامه‌ای که در حال نوشتنش بودم نیاز به دیتابیس داشت اما چون فقط در حال تست اولیه یک platform جدید و بازار سنجی بودم، به جای آن که بروم و روال‌های دیتابیسی را در جاوا و Java ME یاد بگیرم، از یک روش ابتکاری خیلی ساده‌تر استفاده کردم. کد چندان تمیزی از آب در نیامد ولی اقلاً توانستم وقتم را اولویت بندی کرده و از آن استفاده بهینه‌تری نمایم. در همین راستا &lt;a href="http://xkcd.com/974/"&gt;این کاریکاتور&lt;/a&gt; را ببینید.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-1578819146692281387?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nMBqDCR0Jaqv4w21KsrEFMw0Goc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nMBqDCR0Jaqv4w21KsrEFMw0Goc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nMBqDCR0Jaqv4w21KsrEFMw0Goc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nMBqDCR0Jaqv4w21KsrEFMw0Goc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=NQodEp-g7ew:vjwzpgntL0c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=NQodEp-g7ew:vjwzpgntL0c:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=NQodEp-g7ew:vjwzpgntL0c:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/blog-post_21.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-4199503011783735181</guid><pubDate>Sun, 20 Nov 2011 06:01:00 +0000</pubDate><atom:updated>2011-11-20T09:31:00.603+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Technology</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">ios</category><category domain="http://www.blogger.com/atom/ns#">mobile programming</category><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">History</category><title>تکرار تاریخ</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;چیزی حدود سی سال پیش یا بیشتر بازار سخت‌افزار و نرم‌افزار حسابی تازه و بکر بود. منظورم زمانی است که داس، ۸۰۸۶ و جی‌دبلیو بیسیک در حال تولد بودند یا تازه متولد شده بودند. رقابت‌هایی بین تولید کنندگان مختلف وجود داشت. رقابت‌هایی که آینده دنیای کامپیوتر را رقم زدند و باعث به وجود آمدن اصطلاحاتی مثل سازگار با آی.بی.ام یا به وجود آمدن شرکت‌هایی مثل مایکروسافت شدند. &lt;br /&gt;
&lt;br /&gt;
بازار نرم‌افزار حسابی بکر بود و هر کسی می‌توانست با یک نرم‌افزار ساده (اقلاً به مقیاس امروزی) کل بازار را قبضه کند. زمانی که هنوز نوجوان محسوب می‌شدم، یعنی ۱۵ سال بعد از تاریخ فوق‌الذکر، وقتی که سرگذشت آدم‌ها و شرکت‌هایی مثل آی.بی.ام، بیل گیتس و شرکت‌های گاراژی را از مجله‌هایی مثل «کامپیوتر» و «دنیای الکترونیک ؟» می‌خواندم حسابی هیجان‌زده می‌شدم و آرزو می‌کردم ای کاش من هم، هم عصر (و هم مکان) بیل گیتس، استیو جابز و دیگر پیش کسوتان می‌بودم و در آن انفجار تکنولوژیک شرکت می‌داشتم. &lt;br /&gt;
&lt;br /&gt;
حدود ۱۰ سال پیش یک انفجار مشابه رخ داد: عصر دات کام. ظهور سایت‌ها و تجارت‌های اینترنتی فراوان، رشد شدید برنامه‌های تحت وب و ظهور و بلوغ شرکت‌هایی مثل گوگل و یاهو.&lt;br /&gt;
&lt;br /&gt;
در خلال یکی دو سال اخیر، هم زمان با فراگیر شدن گوشی‌های قدرتمند و ظهور سیستم عامل‌هایی مثل آی.او.اس و اندروید به نظر می‌رسد باز هم تاریخ در حال تکرار شدن است. باز هم بازار بکر و رقابت شدیدی که بر سر تصاحب بازار شروع شده است. باز هم فرصتی برای کسانی که دوست دارند در این نبرد سهمی برای خود پیدا کنند. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-4199503011783735181?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6M7HB55oJTLnwwexN9Wr8R8Qqho/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6M7HB55oJTLnwwexN9Wr8R8Qqho/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6M7HB55oJTLnwwexN9Wr8R8Qqho/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6M7HB55oJTLnwwexN9Wr8R8Qqho/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=G6cgB-PypKo:okZWtNy7iT8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=G6cgB-PypKo:okZWtNy7iT8:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=G6cgB-PypKo:okZWtNy7iT8:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/blog-post_20.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-6411022055459887770</guid><pubDate>Sat, 19 Nov 2011 19:21:00 +0000</pubDate><atom:updated>2011-11-19T22:51:00.255+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">CLDC</category><category domain="http://www.blogger.com/atom/ns#">MIDP</category><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">J2ME</category><category domain="http://www.blogger.com/atom/ns#">Mobile Programming</category><category domain="http://www.blogger.com/atom/ns#">MIDlet</category><category domain="http://www.blogger.com/atom/ns#">Java ME</category><category domain="http://www.blogger.com/atom/ns#">CDC</category><title>‫اصطلاحات اولیه برنامه‌نویسی موبایل با Java ME</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;Java ME&lt;br /&gt;
Java Micro Edition ویرایش مخصوص جاوا برای استفاده در گوشی‌های موبایل و دیگر deviceهای مشابه است. بیش از دو میلیارد گوشی قابلیت اجرای برنامه‌های Java ME را دارند. J2ME نام قدیمی Java ME است.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuration/Profile/Optional API&lt;br /&gt;
&lt;br /&gt;
Configuration مشخصات گوشی‌های مختلف است و مشخص می‌کند که قدرت یک گوشی در چه حدی است و چه کارهایی را می‌تواند انجام دهد. انواع Configuration شامل CLDC و CDC می‌شود.&lt;br /&gt;
&lt;br /&gt;
Profile مشابه Configuration است و مشخص می‌کند که یک گوشی با یک Configuration خاص چه قدرت و امکاناتی دارد. معروف‌ترین Profile همان MIDP است.&lt;br /&gt;
&lt;br /&gt;
در ادامه همین تقسیم بندی، یک Profile مشخص می‌تواند از یک سری APIهای خاص پشتیبانی بکند یا نکند. مثلاً ارسال MMS را پشتیبانی بکند یا نکند. به این تقسیم بندی Optional API‌ گفته می‌شود.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CLDC&lt;br /&gt;
Connected Limited Device Configuration&lt;br /&gt;
یک configuration خیلی ساده است که توسط اکثر گوشی‌های موبایل پشتیبانی می‌شود. به چیزی حدود 256 KB رم و رام نیاز دارد. امکانات جاوایی آن در حداقل قرار دارد.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CDC&lt;br /&gt;
Connected Device Configuration&lt;br /&gt;
یک مدل بالاتر از&amp;nbsp; CLDC است. میزان حافظه آن در محدوده مگابایت است نه کیلو بایت.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MIDP معروف‌ترین Profile است. اگر گفته شود که یک گوشی MIDP را پشتیبانی می‌کند یعنی این که امکانات سخت‌افزاری، قدرت CPU و میزان حافظه به مقدار خاصی است. این میزان برای MIDP 2.0 عبارت است از 256KB ROM، مقدار ۸ کیلو بایت فضای ذخیره‌سازی، 128 KB RAM، صفحه نمایش 96*54، صفحه کلید و شبکه دو طرفه.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MIDlet&lt;br /&gt;
اصطلاحاً به برنامه‌نویسی Java ME بر اساس MIDP گفته می‌شود. تقریباً منظور از برنامه‌نویسی موبایل با استفاده از Java ME یا J2ME همین برنامه‌نویسی به روش MIDlet است.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
منبع: کتاب Beginning J2ME&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-6411022055459887770?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-Ud5jfJljn86L6HhXkvyrpQCcbc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Ud5jfJljn86L6HhXkvyrpQCcbc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-Ud5jfJljn86L6HhXkvyrpQCcbc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-Ud5jfJljn86L6HhXkvyrpQCcbc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=OlbEsJe-ZBY:4sTzHc-sBL8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=OlbEsJe-ZBY:4sTzHc-sBL8:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=OlbEsJe-ZBY:4sTzHc-sBL8:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/java-me_19.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-5481220306628833378</guid><pubDate>Fri, 18 Nov 2011 20:26:00 +0000</pubDate><atom:updated>2011-11-18T23:56:00.060+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Software Development</category><category domain="http://www.blogger.com/atom/ns#">Iran</category><category domain="http://www.blogger.com/atom/ns#">criticism</category><category domain="http://www.blogger.com/atom/ns#">forum</category><category domain="http://www.blogger.com/atom/ns#">barnamenevis</category><title>‫روش برنامه‌نویسی Forum Driven Development</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;تا حالا به فوروم‌های (انجمن‌های) برنامه‌نویسی ایرانی علی الخصوص &lt;a href="http://barnamenevis.org/"&gt;«سایت برنامه‌نویس»&lt;/a&gt; مراجعه کرده‌اید؟ به سوالات آن هم دقت کرده‌اید؟ تا حالا دیده‌اید که مثلاً شخصی تا حالا یک بار هم Socket Programming کار نکرده و هیچ علاقه‌ای هم به کار کردن با آن ندارد اما چون در یک پروژه به آن نیاز دارد به دنبال یک راهنمایی فقط برای رفع نیاز فعلی‌اش بدون فهم یا استفاده درست از آن راهنمایی است؟ تازه بعد از مدتی اعلام می‌کند که کار پروژه‌اش را با آن تیکه کد یا اسمبلی راه انداخته است؟ تا حالا دقت کرده‌اید که تا یک نفر جواب یک سوال خیلی ساده را می‌دهد چقدر به او استاد استاد گفته می‌شود یا این که تا بحثی در باب بهتر بودن یک روش یا تکنولوژی باب می‌شود چقدر بحث‌های متعصبانه و گاه اشتباه در می‌گیرد؟&lt;br /&gt;
&lt;br /&gt;
اگر جواب همه سوالات را مثبت داده‌اید باید عرض کنم که متاسفانه این روش یادگیری و استفاده و انجام پروژه تبدیل به یک الگوی کاری در توسعه نرم‌افزار در تعدادی از افراد و شرکت‌ها شده است. یعنی این که طرف هیچ اطلاعات درست و حسابی از یک موضوع خاص ندارد ولی با اعتماد به نفسی کاذب این موضوع را ساده پنداری کرده و با وصله پینه کردن کدها و روش‌هایی که از این طور انجمن‌ها به دست آورده پروژه مورد نظر را سر هم کرده و به مشتری نگون بخت تحویل می‌نماید. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;توجه&lt;/b&gt;: منظور از این متن کم ارزش کردن زحمات مدیران یا کاربران فعال و باسواد «انجمن برنامه‌نویس» یا دیگر انجمن‌های برنامه‌نویسی ایرانی نیست، بلکه مخاطب افراد سطحی نگری هستند که با عملکرد اشتباهشان کیفیت کار برنامه‌نویسی را در ایران به شدت پایین آورده‌اند.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-5481220306628833378?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YvJtg_KkY62kTtvb7b_Y3SjkUtk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YvJtg_KkY62kTtvb7b_Y3SjkUtk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YvJtg_KkY62kTtvb7b_Y3SjkUtk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YvJtg_KkY62kTtvb7b_Y3SjkUtk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=7EfibKCA_I8:buDa4Ghfl9Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=7EfibKCA_I8:buDa4Ghfl9Q:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=7EfibKCA_I8:buDa4Ghfl9Q:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/forum-driven-development.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-5844770140690667669</guid><pubDate>Thu, 17 Nov 2011 19:32:00 +0000</pubDate><atom:updated>2011-11-17T23:02:00.609+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">Mobile</category><category domain="http://www.blogger.com/atom/ns#">Java ME</category><title>‫اولین برنامه با Java ME</title><description>&lt;div style='direction:rtl; text-align:right'&gt;خوشحالم که به عنوان یک برنامه‌نویس دات‌نت اولین Hello World جاوایی‌ام (Java ME) را نوشتم. از Java ME برای برنامه‌نویسی با موبایل‌های سازگار با جاوا، یعنی اکثر گوشی‌های جهان، استفاده می‌شود. کدهای Java ME را می‌توان با کمک netBeans و Eclipse و pluginهای مربوطه نوشت یا این که از Java ME SDK استفاده کرد. نقطه شروع کار خیلی سخت نیست. کافی است از کلاس خاصی به اسم MIDlet ارث‌بری کرده و کار را شروع کرد. وقتی که کد نوشته شده به یک فایل jar کامپایل شد می‌توان آن را به گوشی موبایل منتقل کرده و اجرا نمود.&lt;br /&gt;
&lt;br /&gt;
گفته می‌شود که برنامه‌های نوشته شده با Java ME و به طور کلی با جاوا کند هستند. حتی محیط برنامه‌نویسی جاوا هم کند است. اما اگر Cross Platform بودن بین گوشی‌ها و OSهای مختلف برایتان مهم است باید آن را تحمل کنید.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-5844770140690667669?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tCw2YqsW0Hn-gK_wn9v836FEHoQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tCw2YqsW0Hn-gK_wn9v836FEHoQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tCw2YqsW0Hn-gK_wn9v836FEHoQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tCw2YqsW0Hn-gK_wn9v836FEHoQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=fDkdhtxue2o:cbzTV4iHoT8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=fDkdhtxue2o:cbzTV4iHoT8:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=fDkdhtxue2o:cbzTV4iHoT8:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/java-me.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-3307897575269104064</guid><pubDate>Wed, 16 Nov 2011 19:56:00 +0000</pubDate><atom:updated>2011-11-16T23:26:00.086+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">mobile</category><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">ios</category><category domain="http://www.blogger.com/atom/ns#">bada</category><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">windows phone</category><title>‫انتخاب platform برنامه‌نویسی موبایل</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;بازار برنامه‌نویسی موبایل در آمریکا و اروپا به شدت داغ است. این بازار در ایران هم به شدت رو رشد است. کافی است نگاهی به آگهی‌های کارویس بیندازید &lt;a href="http://karvis.ir/Job/JobList.aspx?tag=mobile"&gt;+&lt;/a&gt; &lt;a href="http://karvis.ir/Job/JobList.aspx?tag=J2ME"&gt;+&lt;/a&gt; &lt;a href="http://karvis.ir/Job/JobList.aspx?tag=Android"&gt;+&lt;/a&gt; &lt;a href="http://karvis.ir/Job/JobList.aspx?tag=ios"&gt;+&lt;/a&gt;. این روزها به هر برنامه‌نویسی واجب است که اطلاعاتی راجع به برنامه‌نویسی موبایل داشته و یکی از platformهای موجود را برای شروع انتخاب کند. پلتفورم‌های موجود عبارتند از آندروید (گوگل - جاوا)، iOS (اپل - Objective C)، ویندوز فون (مایکروسافت - دات‌نت)، بادا (سامسونگ - C++‎)، جاوا (cross-platform - جاوا) و چند سیستم عامل متفرقه دیگر.&lt;br /&gt;
&lt;br /&gt;
دیروز در ارتباط با همین موضوع بحث داغی داشتیم با چند تا از دوستان. هدف این بود که با یک سری از پیش فرض‌ها یک platform مناسب برای برنامه‌نویسی موبایل انتخاب شود. پیش‌فرض‌های مورد نظر عبارتند از:&lt;br /&gt;
&lt;br /&gt;
* ما برنامه‌نویس دات‌نت هستیم.&lt;br /&gt;
* ما چند برنامه‌نویس هستیم که عمری در کار توسعه برنامه‌های داده محور مثل برنامه‌های دیتابیسی بوده‌ایم و قاعدتاً مهارت‌ها و ایده‌هایمان هم در همین حول و حوش چرخ خواهند زد.&lt;br /&gt;
* ما ایرانی هستیم و محدودیت‌های زیادی در رابطه با موضوع تحریم داریم.&lt;br /&gt;
* هدف اولیه بازار داخل است ولی بازار خارج و storeهای مختلف applicationها به هیچ وجه منتفی نیستند.&lt;br /&gt;
* مهم است که برنامه‌های ما در بیشتر گوشی‌ها اجرا شود. باید سعی کنیم محدودیت platform و محدودیت سخت‌افزار را به نوعی دور بزنیم.&lt;br /&gt;
&lt;br /&gt;
خلاصه‌ای از بحث:&lt;br /&gt;
iOS و Windows Phone محدودیت‌های زیادی برای ما ایرانی‌ها دارند. اما جاوا و اندروید کمتر. جواب قطعی به cross platform بودن جاوا است. اما مشکل کندی آن و عدم دسترسی مستقیم به سخت‌افزار گوشی هست. نرم‌افزارهای معتبر به ازای هر platform یک بار بازنویسی می‌شوند. مثلاً یک بار برای اندروید، یک بار برای iOS و یک بار برای Windows Phone. بادا کمترین ساپورت، کوچکترین جامعه developer و کمترین طرفدار را در ایران دارد اما گوشی‌های به نسبت ارزان قیمت‌تری دارد. گوشی‌های Windows Phone و iOS گوشی‌های گرانقیمتی هستند. گوشی‌های اندروید بیشترین آمار را در ایران دارد. البته تقریباً همه گوشی‌های موجود جاوا را پشتیبانی می‌کنند. قیمت گوشی‌های اندروید در حال حاضر (اواخر آبان ۱۳۹۰) از حدود ۲۰۰ هزار تومان شروع می‌شود. بازار کلی دنیا هم درباره انتخاب platform خیلی شک دارد. رقابت خیلی داغ است و ممکن است در چند سال آینده شاهد تغییرات زیادی باشیم.&lt;br /&gt;
&lt;br /&gt;
نتیجه گیری شخصی:&lt;br /&gt;
من با توجه به شرایط شخصی خودم به عنوان یک برنامه‌نویس دات‌نت که هیچ تجربه‌ای روی موبایل ندارد و کسی که می‌خواهد برنامه‌هایش روی بیشترین طیف گوشی‌ها اجرا شود تصمیم گرفته‌ام از یک راه حل ترکیبی استفاده کنم. به این ترتیب که اول از جاوا که روی همه گوشی‌ها کار می‌کند شروع می‌کنم سپس هر جا که دچار محدودیت سرعت یا دیگر محدودیت‌ها شدم از اندروید استفاده کنم. این طوری حین کار با جاوا با مسائل خاص برنامه‌نویسی موبایل آشنا شده‌ام و در صورت تغییر مسیر ضرر کمتری می‌کنم چون هنوز به platform خاصی وابسته نشده‌ام. ضمن این که غیر از دات‌نت فقط مجبور به یادگیری Java می‌شوم نه چیز دیگر.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-3307897575269104064?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QISz4TkAWPlWrl2vr0C9SEqGZy8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QISz4TkAWPlWrl2vr0C9SEqGZy8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QISz4TkAWPlWrl2vr0C9SEqGZy8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QISz4TkAWPlWrl2vr0C9SEqGZy8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=Gou2pPCLCA4:R1tf8EgUmbo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=Gou2pPCLCA4:R1tf8EgUmbo:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=Gou2pPCLCA4:R1tf8EgUmbo:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/platform.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>15</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-9046433053455029121</guid><pubDate>Tue, 15 Nov 2011 20:11:00 +0000</pubDate><atom:updated>2011-11-15T23:41:08.966+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Technology</category><category domain="http://www.blogger.com/atom/ns#">addiction</category><category domain="http://www.blogger.com/atom/ns#">Fear</category><title>ترس از دست دادن اطلاعات</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;هر کسی در زندگی‌اش ترس‌هایی دارد. یکی از ترس‌هایی که گریبانگر ما شده است ترس از دست دادن اطلاعات است. اطلاعات hostingهای مختلف، applicationهای مختلف نصب شده در IISها، user name و passwordهای شخصی و کاربران، دیتابیس سایت‌های مختلف، مطالب و عکس‌های وبلاگ‌ها، حفظ مالکیت domainها، حفظ page rank به دست آمده از گوگل، از دست ندادن قدرت SEO، تنظیمات موبایل، تنظیمات مودم، divert تلفن‌های مختلف و ده‌ها چیز دیگر.&lt;br /&gt;
&lt;br /&gt;
در کنار این ترس‌ها اضافه کنید مشکلات اعتیاد به کار، اعتیاد به اینترنت، اعتیاد به gmail و سرویس‌های اجتماعی، اعتیاد به ORM و…&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
خدا به ما رحم کند با این ترس‌ها و عادت‌ها.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-9046433053455029121?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wT0ZDJWYTCcKVu_bp5SnODoXzM0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wT0ZDJWYTCcKVu_bp5SnODoXzM0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wT0ZDJWYTCcKVu_bp5SnODoXzM0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wT0ZDJWYTCcKVu_bp5SnODoXzM0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=iMlk4b4ugpI:oBEzP8SwxrM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=iMlk4b4ugpI:oBEzP8SwxrM:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=iMlk4b4ugpI:oBEzP8SwxrM:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/blog-post_15.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-3822521187852641914</guid><pubDate>Sun, 13 Nov 2011 19:52:00 +0000</pubDate><atom:updated>2011-11-13T23:22:00.340+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">BugNET</category><category domain="http://www.blogger.com/atom/ns#">migration</category><category domain="http://www.blogger.com/atom/ns#">MS SQL</category><category domain="http://www.blogger.com/atom/ns#">Database</category><title>‫انتقال دیتابیس bugnet به MS SQL 2008</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;bugnet (نرم‌افزار issue tracking دات‌نتی) را در جایی نصب کرده بوده و دیتابیسش را در SQL Server 2005 Express قرار داده بودم. به دلایلی تصمیم گرفتم دیتابیس را به نسخه‌ای از MS SQL 2008 منتقل کنم. یک دیتابیس خام با استفاده از installer باگ‌نت درست کردم و سعی کردم دیتا را از SQL 2005 Express به آن export کنم اما به خطاهایی برخورد کردم و موفق نشدم. به همین دلایل از روال دیگری برای انتقال دیتا استفاده کردم:&lt;br /&gt;
&lt;br /&gt;
۱- یک دیتابیس خالی ساختم و دیتای قبلی را با استفاده از امکان Export به آن کپی کردم.&lt;br /&gt;
۲- روال Export قدرت تشخیص viewها را نداشت. در صفحه انتخاب جداول باید تیک viewها برداشته شود.&lt;br /&gt;
۳- باگ‌نت را به دیتابیس جدید وصل کردم. اولین خطایی که دیده می‌شد خطای Could not find stored procedure 'BugNet_HostSetting_GetHostSettings'.  بود.&lt;br /&gt;
۴- یک دیتابیس خام و خالی را با کمک installer باگ‌نت ساختم.&lt;br /&gt;
۵- با استفاده از گزینه Tasks - Generate Scripts دیتابیس مرحله قبلی را انتخاب کرده و گزینه‌های Stored Procedures و Views را انتخاب کنید.&lt;br /&gt;
۶- اسکریپت حاصله را در دیتابیس مرحله اول که همان دیتابیس اصلی است اجرا کردم. اصلاح use database نباید فراموش شود.&lt;br /&gt;
۷- یک بار خطای Item has already been added. Key in dictionary: 'AdminNotificationUsername'  Key being added: 'AdminNotificationUsername'  را دیدم. علت آن installer بود. که رکوردهای جدول HostSettings را duplicate کرده بود. رکوردهای تکراری این جدول باید پاک می‌شدند.&lt;br /&gt;
۸- اگر مقدار InstallationDate در AppSettings وجود نداشته باشد رکوردهای تکراری مجدداً اضافه می‌شود.&lt;br /&gt;
۹- همه مراحل اینجا را می‌شد یک جور دیگر هم انجام داد. ایجاد دیتابیس آماده توسط باگ‌نت، پاک کردن فقط جداول آن، export داده از دیتابیس حاوی داده‌ها.&lt;br /&gt;
۱۰- از اینجا به بعد مشکل login کردن وجود دارد. bugnet از ASP.NET Membership استفاده می‌کند. پس با کمی شناخت از مدل ASP.NET به راحتی می‌توان مشکلات login و کاربری را حل کرد. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-3822521187852641914?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Kt0ZKy3P71GNTW_WkYY1t0QbmNo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kt0ZKy3P71GNTW_WkYY1t0QbmNo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Kt0ZKy3P71GNTW_WkYY1t0QbmNo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kt0ZKy3P71GNTW_WkYY1t0QbmNo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=i2sAkqABAEs:Kix-Kov5yf8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=i2sAkqABAEs:Kix-Kov5yf8:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=i2sAkqABAEs:Kix-Kov5yf8:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/bugnet-ms-sql-2008.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7752604992674614388.post-6141375557239396937</guid><pubDate>Sat, 12 Nov 2011 19:52:00 +0000</pubDate><atom:updated>2011-11-12T23:22:24.844+03:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Login</category><category domain="http://www.blogger.com/atom/ns#">Authentication</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">Web Scraping</category><title>‫‫login به سایت ASP.NET</title><description>&lt;div style="direction: rtl; text-align: right;"&gt;در بیشتر پروژه‌های Web Scraping (استخراج اطلاعات از لابلای صفحات وب) نیاز به login به وب‌سایت حاوی اطلاعات هست. برای آن که&amp;nbsp; کسی بتواند به یک وب سایت لاگین کند باید با روش‌های Authentication و حفظ State در تکنولوژی‌های مختلف مثل ASP.NET و PHP آشنا باشد. &lt;br /&gt;
&lt;br /&gt;
روش Login در ASP.NET مبتنی بر ارسال اطلاعات login به یک صفحه خاص مثل Login.aspx و دریافت cookie از آن است. cookie دریافت شده باید به تمامی Requestهای بعدی الصاق شود تا سرور مطمئن باشد شما همانی هستید که چند لحظه پیش به سایت login کرده است (حفظ state).&lt;br /&gt;
&lt;br /&gt;
برای انجام این کارها در دات‌نت می‌توان از آبجکت‌های Request/Response استفاده کرد. گام‌های تقریبی انجام کار عبارتند از:&lt;br /&gt;
&lt;br /&gt;
۱- درخواست دریافت محتوای صفحه Login.aspx با استفاده از آبجکت Request.&lt;br /&gt;
۲- استخراج ViewState از محتوای دریافتی که با کمک آبجکت Response دریافت شده است.&lt;br /&gt;
۳- از اینجا به بعد اگر با صفحه‌ای بیش از یک بار کار داشتیم باید ViewState مرحله قبلی را با آن ارسال کنیم.&lt;br /&gt;
۴- دریافت Cookie با استفاده از امکانات آبجکت Response و ارسال آن در تمامی مراحل بعد.&lt;br /&gt;
۵- ارسال user name و password با استفاده از فرمت WebForm به صفحه Login.&lt;br /&gt;
۶- دریافت پاسخ از سرور و پروسس آن برای تعیین این که آیا login موفقیت آمیز بوده یا نه.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7752604992674614388-6141375557239396937?l=blog.afsharm.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_-6r4rtAjbjE2zcp3L7KyTny6cw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_-6r4rtAjbjE2zcp3L7KyTny6cw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_-6r4rtAjbjE2zcp3L7KyTny6cw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_-6r4rtAjbjE2zcp3L7KyTny6cw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=H-ftFHCUMbU:b5IsGahXndA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Afsharm?a=H-ftFHCUMbU:b5IsGahXndA:-LR1_4ybTb4"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Afsharm?i=H-ftFHCUMbU:b5IsGahXndA:-LR1_4ybTb4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.afsharm.com/2011/11/login-aspnet.html</link><author>noreply@blogger.com (Afshar Mohebbi)</author><thr:total>0</thr:total></item></channel></rss>

