نظرات مطالب
شروع به کار با AngularJS 2.0 و TypeScript - قسمت دوازدهم - توزیع برنامه
یک نکته‌ی تکمیلی

به مستندات رسمی AngularJS 2.0، فصل جدیدی به نام «Introduction to Webpack» اضافه شده‌است. در اینجا می‌توان Webpack را جایگزین Gulp کرد و نکته‌ی جالب آن، امکان نوشتن یک چنین کامپوننت‌هایی هستند:
import { Component } from '@angular/core';
import '../../public/css/styles.css';

@Component({
      selector: 'my-app',
      template: require('./app.component.html'),
      styles: [require('./app.component.css')]
})
export class AppComponent { }
در اینجا معرفی template و css جداگانه‌ی تعریف شده‌ی در فایل‌های مجزای خودشان، توسط متد require مربوط به webpack انجام شده‌اند. مزیت آن این است که زمانیکه webpack کار bundling برنامه را انجام می‌دهد، تک فایل js حاصل، حاوی تمام فایل‌های html و css برنامه هم خواهد بود و دیگر نیازی به توزیع جداگانه‌ی آن‌ها نیست. به عبارتی شما در حین تهیه‌ی برنامه، inline کار نمی‌کنید، اما webpack آن‌ها را حین توزیع نهایی، به صورت خودکار تبدیل به قالب‌ها و شیوه‌نامه‌های inline می‌کند.
نظرات مطالب
بررسی ORM های مناسب جهت استفاده در اندروید
بله این رو هم دیدم ولی موردی که هست این یک ORM برای sqlite نیست و در واقع این یه لایه برای برقراری ارتباط با دیتابیس درونی خودش هست.

در سایت رسمی خودش هم در صفحه اول نوشته:
Realm is not an ORM on top SQLite.
 Instead it uses its own persistence engine,
 built for simplicity (& speed). Users tell us 
they get started with Realm in minutes, 
port their apps in hours & save weeks on each app.

در ابتدا برای IOS نوشتن و بعد هم برای اندروید ولی نکته ای که توی مقالات هست اینه که  این دیتابیس به خاطر اینکه کمپایل شده هست و نه مفسری، برای همین سرعت بالاتری داره ولی در مورد اندروید فکر نکنم صحت داشته باشه چون به این صورت وابسته به معماری سی پی یو خواهد شد و ممکن هست روی همه گوشی‌ها جواب نده.
ولی به نظر باید سر یک فرصت مناسب چکش کرد.به هر حال چیز جدید و نابیه و ارزش امتحان کردن رو داره
نظرات مطالب
EF Code First #7
- کدهایی که در ماخذ رسمی ذکر شدند، برای حذف پیش فرض‌های EF هست. به صورت پیش فرض OneToManyCascadeDeleteConvention وجود دارد. اگر بخواهید در همه جا آن‌را حذف کنید، modelBuilder.Conventions.Remove را بر روی آن فراخوانی کنید. اگر نیاز است فقط در یک رابطه‌ی خاص این مورد حذف شود از متد WillCascadeOnDelete با پارامتر false استفاده کنید.
- همچنین مطابق این ماخذ: اگر کلید خارجی مدنظر نال پذیر باشد (مانند نوع‌های nullable صریح و یا string و امثال آن)، حذف آبشاری را اعمال نمی‌کند. فقط یک سر رابطه را نال کرده و آن‌را حذف می‌کند.
If a foreign key on the dependent entity is nullable , Code First does not set cascade delete on the relationship, and when the principal is deleted the foreign key will be set to null
If a foreign key on the dependent entity is not nullable , then Code First sets cascade delete on the relationship 
نظرات مطالب
مفهوم READ_COMMITTED_SNAPSHOT در EF 6
بحث اصلی هم همین نحوه و محل ذخیره سازی snapshot است.
- Sanpshot مطابق واژه نامه مایکروسافت معنای «نگارش» را می‌دهد. در این حالت کلیه کوئری‌های داخل یک تراکنش، یک نگارش یا snapshot از دیتابیس را مشاهده خواهند کرد. این نگارش یا Row version، در tempdb نگه داری می‌شود. با فعال سازی SNAPSHOT isolation، هر زمانیکه یک ردیف به روز رسانی می‌شود، موتور SQL Server یک نسخه از اطلاعات اولیه این ردیف را در tempdb ذخیره می‌کند (اینجا بود که عنوان شد با یک کپی فقط خواندنی از اطلاعات در حین واکشی اطلاعات سر و کار خواهید داشت).
خلاصه الگوریتم کاری آن :
الف) با آغاز یک تراکنش، یک عدد متوالی منحصربفرد تراکنش (شماره نگارش) ایجاد شده و به آن نسبت داده می‌شود.
ب) در حین این تراکنش، موتور SQL Server، به tempdb مراجعه کرده و شماره نگارشی نزدیک و کمتر از شماره نگارش تراکنش جاری را پیدا می‌کند. همچنین SQL Server بررسی می‌کند که این شماره یافت شده حتما جزو تراکنش‌های پایان یافته سیستم باشد.
ج) بر اساس این شماره یافت شده، نگارش معتبری از اطلاعات از tempdb استخراج می‌شود.
به این ترتیب یک تراکنش، کلیه اطلاعات موجود در ابتدای کار خود را بدون قرار دادن قفلی بر روی جداول مرتبط، دریافت خواهد کرد.
اطلاعات بیشتر

- در متن ذکر گردید که از SQL Server 2005 به بعد قابلیت فوق اضافه شده.
- همچنین SQL Server 2000 دیگر پشتیبانی رسمی ندارد و استفاده از آن حداقل از لحاظ امنیتی معقول نیست.
نظرات مطالب
زیر نویس فارسی ویدیوهای ساخت برنامه‌های مترو توسط سی شارپ و XAML - قسمت اول
- کار خیلی ارزشمندیه واقعا. و یه سبک نویی هست در تولید محتوا به زبان فارسی.
- توی support سایت گفتن که به زودی زیرنویس برا همه‌ی Course ها خواهیم گذاشت.
- اگر امکان براتون داشته باشه، یه پستی بزنین که نحوه‌ی تولید اسکریپت رو توش توضیح بدین. چون مشکل اصلی اینجاست.
- از اونجایی که فکر میکنم، این کار احتمالا دستی انجام میگیره(یعنی به راحتی نیست)
  یه پیشنهاد دارم: به دلیل تایم‌های کوتاه هر section و بعد از اون هر part از section ها که خیلی کوتاهند. میشه تا اقدام رسمی خود پلورال‌سایت به تولید زیرنویس، فقط حرفهایی که در کلیپ توسط مدرس زده شده نوشته شود(بدون توجه به زمانبدی).
که این میتونه دوجور باشه:
- یکی از الف تا ی.
 - یکی دیگه، صرفا اشاره و رساندن موضوع به صورت تیتر وار.
خب از مزیت‌های این کار:
 - کاهش شدید زمانبری تولید محتواست.
 - توان تولید محتوا(یا اصلاح محتوا) توسط افراد بیشتر.
 - با توجه به ادای شفاف کلمات مدرسان، و با وجود همچین چیزی احتمالا اکثر مطالب قابل فهم‌تر خواهد بود.
 - و شاید جالب‌تر از اینها، گزیده‌‌ نوشته‌هایی خواهند شد، که برای مرور کردن دوره‌ها در آینده بسیار مفید و کارا خواهد بود.
مطالب
نحوه استفاده صحیح از لوسین در ASP.NET
بر مبنای پیاده سازی متداولی که در n هزار سایت اینترنتی می‌توان یافت، نحوه کار با جستجوگر لوسین حدودا به این شکل است:
var directory = FSDirectory.Open(new DirectoryInfo(Environment.CurrentDirectory + "\\LuceneIndex"));
using (var searcher = new IndexSearcher(directory, readOnly: true))
{
      //do something ...

       searcher.Close();
       directory.Close();
}
و ... اینکار به این شکل غلط است!
مطابق مستندات رسمی لوسین، این کتابخانه thread-safe است. به این معنا که در آن واحد چندین و چند کاربر می‌توانند از یک وهله از شیء‌های Reader و Searcher استفاده کنند و نباید به ازای هر جستجو، یکبار این اشیاء را ایجاد و تخریب کرد. البته در اینجا تنها یک Writer در آن واحد می‌تواند مشغول به کار باشد.
مشکلاتی که به همراه باز و بسته کردن بیش از حد IndexSearcher وجود دارد، مصرف بالای حافظه است (به ازای هر کاربر مراجعه کننده، یکبار باید ایندکس‌ها در حافظه بارگذاری شوند) و همچنین تاخیر اولیه این بارگذاری و کندی آن‌‌را نیز باید مدنظر داشت.

نتیجه گیری:
برای کار با جستجوگر لوسین نیاز است از الگوی Singleton استفاده شود و تنها یک وهله از این اشیاء بین تردهای مختلف به اشتراک گذاشته شود.
 
مطالب
بلاگر و دومین سفارشی

سلام؛ نوروز مبارک!
امیدوارم در این سال جدید برقرار به مانند سیسکو، محبوب مثل گوگل، پایدار همانند اینتل، به دور از گزند مثل ویندوز 7 و موفق همانند مایکروسافت باشید!

یک دامنه‌ی جدید به نام dotnettips.info برای وبلاگ تهیه و تنظیم کردم که شرح انجام آن برای علاقمندان به صورت زیر است:

الف) خرید یک دامنه (برای مثال من از اینجا تهیه کردم)
ب) تنظیمات CNAME و A Records آن دامنه
برای مثال ممکن است کنترل پنل دامنه‌ی شما به صورت زیر باشد. در این حالت به قسمت DNS مراجعه کرده:



و در ادامه تغییرات ذیل را اعمال نمائید:
در قسمت A Records چهار آدرس IP مربوط به گوگل باید وارد شوند:



4 رکورد جدید را باید ایجاد کنید:



سپس CNAME مربوط به بلاگر باید وارد شود:



ج) اکنون به تنظیمات بلاگ خود مراجعه کرده و نام دامنه جدید را وارد نمائید:



اعمال این تغییرات بین 7 ساعت تا 24 ساعت طول خواهد کشید (مدتی طول می‌کشد تا گوگل آدرس شما را فعال کند؛ مدتی هم طول خواهد کشید تا اطلاعات DNS شما در سراسر سرورهای مرتبط در دنیا به روز شود). بنابراین در این بین، انجام این تنظیمات و رها کردن سایت به حال خود کفایت می‌کند.

ماخذ IP ها و همچنین CNAME فوق مستندات رسمی گوگل است: (+)

اگر هم برای سایت خود یک فید از نوع feedburner ثبت کرده باشید، خوانندگان فید وبلاگ شما نیاز به هیچ نوع تغییر و تنظیمی نخواهند داشت.

نظرات نظرسنجی‌ها
کدامیک از روش‌های زیر را برای تولید App های موبایل ترجیح می‌دهید؟ چرا؟
نظر من Native, به این دلیل که :1- گوگل به طور رسمی ازش پشتیبانی میکنه پس خیلی سریع به آخرین تغییرات و api‌های مرتبط دسترسی وجود داره  2- توسعه بصورت رایگان هست . 3- کامیونیتی بزرگ‌تری برای اون وجود داره ، حین برنامه نویسی احساس تنهایی نمیکنم :) 4- قدمت بیشتری داره بنابرین بسیاری از سوالات و مشکلاتی که حین توسعه پیش میاد ، قبلا برای سایر دولوپر‌ها پیش اومده و با یه سرچ کوچیک میشه به جواب رسید 5- یادگیری یه زبان و پلتفرم دیگه برام لذت بخش هست 6- روش‌های native به اصطلاح پخته‌تر و stable‌تر هستند .  7- و شاید بزرگترین دلیل اینکه خیالم راحته ، از این نظر که میدونم ابزاری که استفاده میکنم به احتمال قریب به یقین تا چند سال آینده تغییر چندانی نخواهد کرد ، با خاطر آسوده فقط به موضوع فنی که یه برنامه نویس باید مسلط باشه تمرکز میکنم و نگرانی ندارم که ممکنه ظرف مدت زمان کوتاهی مجبور شم سوئیچ کنم به یک محیط و ابزار دیگه .
دلایل ریز‌تر دیگه ای هم برای من وجود داره که به اندازه دلایل سبعه فوق (!) اهم نیستند .
نظرات اشتراک‌ها
چرا از آنگولار به ری اکت + ری داکس سوئیچ کردم!
به نظرم اگر بر اساس مطالبی که فقط در این پست، کاربر «مرتضی رییسی»  مطرح کرده اند باشد، استفاده از نفرت پراکنی شاید زیاده روی باشد. خوب هست که بگذاریم نظرات مخالف و موافق بیان شود، هر چند که دارای جبهه گیری خاصی باشد. این که فلان کتابخانه را چون فلان شرکت توسعه داده به درد نمی‌خوره شاید نشان از تعصب داشته باشد. قبلا که مایکروسافت به صورت انحصاری عمل می‌کرد جامعه‌ی نرم افزار آزاد آن را می‌کوبیدند، الان هم که به صورت آزاد کتابخانه‌ها و فریم ورک هایش را منتشر می‌کنند باز هم به دلایلی دیگر از جمله مواردی اینجا هم بهش اشاره کردند آن را می‌کوبند.
قرار نیست اینجا کاربری، کاربر دیگری را قانع کند. هر کسی نظرات و تجربه هایش را بیان می‌کند. بقیه کاربران هم می‌توانند تحقیق کنند و از این بحث‌ها استفاده مفید ببرند. اگر کسی علیه انگولار صحبت کرد تا زمانی که بحث تعصب پیش نیامده است، بقیه کاربران می‌توانند بروند تحقیق کنند و نتیجه گیری درست را انجام بدهند.
اشتراک‌ها
معرفی کامپوننت EasyQuery

از کامپوننت EasyQuery برای ارائه یک رابط کاربر پسند (UserFriendly) جهت جستجو و فیلترینگ پیشرفته بر روی اطلاعات توسط کاربران استفاده می‌شود. این کامپوننت به کاربران اجازه می‌دهد تا اطلاعاتی را که نیاز دارند به راحتی و بدون نیاز به کمک شما یا تیم پشتیبانی، فراهم نمایند.

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

نسخه‌های آزمایشی دیگر  بر روی ASP.NET MVC و Silverlight و ASP.NET AJAX و Win Forms

Screenshots

دانلود کدهای نسخه آزمایشی تحت وب

 

معرفی کامپوننت EasyQuery