۱۰ سال و ۱۲ ماه قبل، شنبه ۲۷ مهر ۱۳۹۲، ساعت ۰۴:۳۶
۱۰ سال و ۱۲ ماه قبل، شنبه ۲۷ مهر ۱۳۹۲، ساعت ۰۴:۲۷
- توضیحات فوق مربوط به EF Code first بود و حتی با VS 2010 نیز قابل پیاده سازی و استفاده است.
- برای حالت database first نیاز به VS 2013 دارید تا از کلیه امکانات EF 6 استفاده کنید (یا باید به روز رسانی خاصی را برای VS 2012 نصب کنید). حالت Code first مستقل است از IDE (یک مزیت دیگر).
Entity Framework Designer همراه با VS 2012 فقط از EF 5 پشتیبانی میکند (در حالت پیش فرض) و از تغییرات انجام شده در EF 6 آگاه نیست. به همین جهت اگر با VS 2012 بخواهید با EF6 کار کنید (در حالت database first) باز هم همان اسمبلی قدیمی System.Data.Entity.dll را مورد استفاده قرار میدهد که در EF 6 اصلا کاربردی ندارد و با آن یکی شده است.
البته در کل میتونید با VS 2012 هم در حالت database first با EF 6 کار کنید ولی نیاز به یک سری تغییرات دستی خواهید داشت (EF قدیمی و همچنین اسمبلی اضافی یاد شده را باید دستی حذف کنید) و به علاوه از بهبودهای جدید آن (در حالت پیش فرض و بدون به روز رسانی) محروم خواهید بود.
Entity Framework Designer سورس باز نیست (برخلاف هسته EF) و جزئی از VS.NET است. قرار است در آینده این افزونه را هم سورس باز کنند تا بتوانند مستقل از چرخه طول عمر VS.NET، خود EF Database first را نیز به روز کنند.
ولی در کل اگر از Code first استفاده میکنید، EF6 حتی با VS 2010 هم سازگار است.
- زمانیکه با یک ORM کار میکنید (فرقی نمیکند به چه اسمی)، لایه DAL همان ORM هست. (دست به اختراع لایههای اضافی نزنید)
- برای حالت database first نیاز به VS 2013 دارید تا از کلیه امکانات EF 6 استفاده کنید (یا باید به روز رسانی خاصی را برای VS 2012 نصب کنید). حالت Code first مستقل است از IDE (یک مزیت دیگر).
Entity Framework Designer همراه با VS 2012 فقط از EF 5 پشتیبانی میکند (در حالت پیش فرض) و از تغییرات انجام شده در EF 6 آگاه نیست. به همین جهت اگر با VS 2012 بخواهید با EF6 کار کنید (در حالت database first) باز هم همان اسمبلی قدیمی System.Data.Entity.dll را مورد استفاده قرار میدهد که در EF 6 اصلا کاربردی ندارد و با آن یکی شده است.
البته در کل میتونید با VS 2012 هم در حالت database first با EF 6 کار کنید ولی نیاز به یک سری تغییرات دستی خواهید داشت (EF قدیمی و همچنین اسمبلی اضافی یاد شده را باید دستی حذف کنید) و به علاوه از بهبودهای جدید آن (در حالت پیش فرض و بدون به روز رسانی) محروم خواهید بود.
Entity Framework Designer سورس باز نیست (برخلاف هسته EF) و جزئی از VS.NET است. قرار است در آینده این افزونه را هم سورس باز کنند تا بتوانند مستقل از چرخه طول عمر VS.NET، خود EF Database first را نیز به روز کنند.
ولی در کل اگر از Code first استفاده میکنید، EF6 حتی با VS 2010 هم سازگار است.
- زمانیکه با یک ORM کار میکنید (فرقی نمیکند به چه اسمی)، لایه DAL همان ORM هست. (دست به اختراع لایههای اضافی نزنید)
۱۰ سال و ۱۲ ماه قبل، دوشنبه ۲۲ مهر ۱۳۹۲، ساعت ۰۳:۳۴
SQLCLR types به صورت پیش فرض با فرمت serialized binary value بازگشت داده میشوند.
در ابزارهای کوئری گرفتن ad-hoc مثل SSMS باید یک متد ToString را هم به انتهای نام ستون اضافه کنید تا مقدار نمایشی واضحی حاصل شود.
SELECT id, TestDate.ToString() FROM TestTable;
۱۰ سال و ۱۲ ماه قبل، شنبه ۲۰ مهر ۱۳۹۲، ساعت ۱۴:۴۱
- با easy hook میشه JIT Compiler دات نت رو هوک کرد. در اینجا فرصت خواهید داشت تا بدنه متد رو با کدهای IL بازنویسی کنید. در مورد JIT Hooking اگر اطلاعات بیشتری خواستید، اینجا
- CLR Injection: Runtime Method Replacer
- .NET CLR Injection: Modify IL Code during Run-time
- Hawkeye - The .Net Runtime Object Editor
- کار خود مایکروسافت است: Moles - Replace any .NET method with a delegate البته مایکروسافت برای کارهای Native ویندوز هم یک کتابخانه به نام detours دارد. نسخه 32 بیتی آن عمومی است و با C سازگار است.
- Modifying IL at runtime
- WPF Snoop
- CLR Injection: Runtime Method Replacer
- .NET CLR Injection: Modify IL Code during Run-time
- Hawkeye - The .Net Runtime Object Editor
- کار خود مایکروسافت است: Moles - Replace any .NET method with a delegate البته مایکروسافت برای کارهای Native ویندوز هم یک کتابخانه به نام detours دارد. نسخه 32 بیتی آن عمومی است و با C سازگار است.
- Modifying IL at runtime
- WPF Snoop
۱۰ سال و ۱۲ ماه قبل، پنجشنبه ۱۸ مهر ۱۳۹۲، ساعت ۱۳:۵۸
با برنامههای دات نت هم کار میکنه. مثلا متد new WebClient().DownloadData را در برنامه دات نتی خودتون فراخوانی کنید. بعد در برنامه API Monitor تیک قسمت مربوط به شبکه و اینترنت را قرار دهید (تصویر اول مقاله فوق). تمام فراخوانیهای شبکه برنامه را مونیتور میکند.
ضمنا برنامه API Monitor قابل بسط است. یعنی اگر به پوشه API آن مراجعه کنید یک سری فایل XML در آن قرار دارد که تعاریف توابع DLLهای مختلف در آن ارائه شدهاند. اگر تعریفی یا DLL ایی در آن نیست، قابل افزودن است. یا حتی اگر خودتان نمیتوانید اینکار را انجام دهید، فایل هدر آنرا در انجمن این برنامه ارسال کنید تا به شما کمک کنند.
ضمنا برنامه API Monitor قابل بسط است. یعنی اگر به پوشه API آن مراجعه کنید یک سری فایل XML در آن قرار دارد که تعاریف توابع DLLهای مختلف در آن ارائه شدهاند. اگر تعریفی یا DLL ایی در آن نیست، قابل افزودن است. یا حتی اگر خودتان نمیتوانید اینکار را انجام دهید، فایل هدر آنرا در انجمن این برنامه ارسال کنید تا به شما کمک کنند.
۱۰ سال و ۱۲ ماه قبل، سهشنبه ۱۶ مهر ۱۳۹۲، ساعت ۲۰:۴۸
قسمت (ب) ابتدای بحث کافی نیست. قسمت (الف) توضیح داده شده نیز باید انجام شود.
۱۰ سال و ۱۲ ماه قبل، سهشنبه ۱۶ مهر ۱۳۹۲، ساعت ۱۳:۳۰
بله. این یک مثال کلی هم هست.
+
- خوب؛ این کار فوق رایگان هست! (و همچنین سورس باز؛ حداقل میتونید بررسی کنید که آیا فقط تاریخ پروسه اکسپلورر را هوک کرده یا جاهای دیگری رو هم تحت نظر قرار داده)
- Global hook یا System wide hook نیست. کارهایی که قبلا انجام شدن، کل سیستم رو تحت نظر قرار میدن. کار فوق، فقط و فقط پروسه explorer ویندوز رو تحت نظر قرار میده. به همین جهت تاثیر خاصی روی سایر پروسههای سیستم نداره. همچنین چون کل سیستم رو مونیتور نمیکنه، روی کارآیی کلی آن هم تاثیر منفی نخواهد گذاشت. به علاوه روش فوق ساختارهای درونی تاریخ سیستم رو دستکاری نمیکنه. فقط رشته نهایی نمایشی (آرگومانهای lpDateStr یا lpTimeStr) را شمسی میکنه.
+
- خوب؛ این کار فوق رایگان هست! (و همچنین سورس باز؛ حداقل میتونید بررسی کنید که آیا فقط تاریخ پروسه اکسپلورر را هوک کرده یا جاهای دیگری رو هم تحت نظر قرار داده)
- Global hook یا System wide hook نیست. کارهایی که قبلا انجام شدن، کل سیستم رو تحت نظر قرار میدن. کار فوق، فقط و فقط پروسه explorer ویندوز رو تحت نظر قرار میده. به همین جهت تاثیر خاصی روی سایر پروسههای سیستم نداره. همچنین چون کل سیستم رو مونیتور نمیکنه، روی کارآیی کلی آن هم تاثیر منفی نخواهد گذاشت. به علاوه روش فوق ساختارهای درونی تاریخ سیستم رو دستکاری نمیکنه. فقط رشته نهایی نمایشی (آرگومانهای lpDateStr یا lpTimeStr) را شمسی میکنه.
۱۰ سال و ۱۲ ماه قبل، شنبه ۱۳ مهر ۱۳۹۲، ساعت ۰۰:۵۸
از چه دیتابیسی استفاده میکنید؟ اگر SQL Server است که تا قبل از نگارش 2008 آن چنین اجازهای رو به شما نمیده تا یک فیلد منحصربفرد نال پذیر داشته باشید. اگر 2008 به بعد است، باید ایندکس فیلتر شده برای اینکار تعریف کنید. مثلا:
اطلاعات بیشتر اینجا و اینجا
بر همین مبنا باید قسمت ADD CONSTRAINT متد ExecuteUniqueIndexes را در صورت نیاز بازنویسی کنید.
create unique nonclustered index idx on dbo.DimCustomer(emailAddress) where EmailAddress is not null;
بر همین مبنا باید قسمت ADD CONSTRAINT متد ExecuteUniqueIndexes را در صورت نیاز بازنویسی کنید.
۱۰ سال و ۱۲ ماه قبل، جمعه ۱۲ مهر ۱۳۹۲، ساعت ۱۵:۱۴
من روی تاریخ شیرپوینت وقت نگذاشتم ولی به نظر «OnetUtil.dll» رو باید مدنظر داشته باشید.
۱۰ سال و ۱۲ ماه قبل، جمعه ۱۲ مهر ۱۳۹۲، ساعت ۰۴:۳۰
سورس پروژه قابل دریافت هست و به عنوان یک قالب برای این نوع کارها میشه ازش استفاده کرد.
برای مثال در این قالب جایی که هوک تعریف میشه به این صورت تغییر خواهد کرد:
delegate آن چنین تعریفی خواهد داشت (توضیحات آن در متن فوق هست؛ قسمت (ج) نوشتن هوک):
و جایی که نهایتا درخواستهای DNS دریافت میشوند به صورت زیر تعریف خواهد شد:
در اینجا میشود درخواستهای DNS را تغییر جهت داد (مثلا گوگل را بلاک کرد)، یا همان تابع اصلی ویندوز را اجرا کرد و یا name دریافتی را در یک فایل مثلا لاگ کرد.
برای مثال در این قالب جایی که هوک تعریف میشه به این صورت تغییر خواهد کرد:
_getHostByNameHook = LocalHook.Create( InTargetProc: LocalHook.GetProcAddress("ws2_32.dll", "gethostbyname"), InNewProc: new GetHostByNameDelegate(getHostByNameHooked), InCallback: this);
[UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Ansi, SetLastError = false)] private delegate IntPtr GetHostByNameDelegate(string name);
private static IntPtr getHostByNameHooked(string name) { // redirect ... //if (name.StartsWith("www.google.com")) //{ // return Native.GetHostByName("127.0.0.1"); //} return Native.gethostbyname(name); }