فایل‌های پروژه‌ها
PdfRpt-1.5.zip
- کاهش حجم نهایی فایل تولیدی با کش کردن تصاویر
- به تاریخ نمایش داده شده در DefaultFooter ، پشتیبانی از RTL اضافه شد.
- یک تغییر کوچک: هر جایی PdfPTable بود به PdfGrid تبدیل شد.
- چندین مثال جدید اضافه شدند (
^):
نحوه استفاده از html برای تعریف header و همچنین footer
نحوه تعریف بارکد
و مثال InlineProviders برای ساده سازی تعاریف هدرها و فوترهای سفارشی
نظرات مطالب
تعامل MATLAB (متلب) با دات نت - قسمت دوم
آموزشتون عالی بود. ممنون
ولی من نمی‌تونم برنامه را اجرا کنم. با پیغام زیر مواجه می‌شم
Could not load file or assembly 'MWArray, Version=2.11.0.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' or one of its dependencies. 
برنامه را با VS 2010 و متلب R2011a در ویندوز 7 ، 64 بیتی نوشتم. از اینکه راهنمایی می‌کنید سپاسگزارم.
سوال دیگه ای که دارم، اینه که، چه جوری می‌تونم به جای برنامه ماتریس جادویی از شبکه عصبی استفاده کنم؟ آیا تغییر این دو برنامه فقط در تب Bulid است و نیازی به تغییر در تب package ندارد؟
بازخوردهای پروژه‌ها
خطا هنگام خروجی تصویر
با سلام. من از کتابخانه Ghostscript موجود در این پروژه استفاده کردم، اما چون پروژه من بصورت Any CPU تنظیم شده است و ویندوز من هم 64 بیتی هست، خطای زیر را دریافت میکنم. با تشکر.
Could not load file or assembly 'Iris.Pdf.ServiceLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.

اشتراک‌ها
استفاده از Mozilla Location Service

برای این که انحصار اطلاعاتی گوگل را کاهش دهیم باید این قبیل  از پروژه‌ها بیشتر پشتیبانی شوند.

استفاده از Mozilla Location Service
نظرات مطالب
EF Code First #3
اگر بخواهیم فیلدی به اسم Id کلید جدول باشد ولی Identity نباشد چکار باید کرد؟
من میخوام یک سری دیتا رو از یک تیبل دیتابیس قدیمی، منتقل کنم به دیتابیس جدیدم ولی اگر Identity باشه نمیشه دیتا رو Paste کرد توی تیبل دیتابیس جدید.
دیتابیس من SQL CE 4.0 هستش. ممنون.
مطالب
MongoDB #7
انوع داده‌ها در MongoDB
MongoDB انواع داده‌هایی را که در زیر لیست شده اند، پشتیبانی می‌کند:
  • String: این نوع پرکاربردترین نوع داده برای ذخیره اطلاعات است. رشته در MongoDB باید بصورت یونیکد (utf-8) معتبر باشد.
  • Integer: این نوع برای ذخیره کردن یک مقدار عددی استفاده می‌شود. Integer بسته به نوع سرور می‌تواند 32 یا 64 بیت باشد.
  • Boolean: این نوع برای ذخیره کردن یک مقدار بولی (true/false) استفاده می‌شود.
  • Double: این نوع برای مقادیر با ممیز شناور استفاده می‌شود.
  • کلیدهای Min/Max: این نوع برای مقایسه یک مقدار با کمترین یا بیشترین عناصر BSON استفاده می‌شود.
  • Array: این نوع برای ذخیره آرایه‌ها یا لیست یا چندین مقدار در یک کلید استفاده می‌شود.
  • Timestamp: این نوع می‌تواند برای ضبط زمان تغییرات (مثلا وقتی یک سند درج می‌شود یا تغییر می‌کند) مفید باشد.
  • Object: این نوع برای سندهای توکار استفاده می‌شود.
  • Null: این نوع برای ذخیره مقدار تهی (Null) استفاده می‌شود.
  • Symbol: این نوع بطور یکسان برای ذخیره رشته استفاده می‌شود، اما عموما برای زبان‌هایی که از یک نوع نماد (Symbol) مشخص استفاده می‌کنند تعبیه شده است.
  • Date: این نوع برای ذخیره تاریخ یا زمان جاری به فرمت زمان در یونیکس (UNIX) استفاده می‌شود. با ساخت یک شی از نوع Date و ارسال روز، ماه و سال به آن می‌توانید تاریخ مشخص خود را داشته باشید.
  • Object ID: ای نوع برای ذخیره سازی شناسه سند استفاه می‌شود.
  • Binary Data: این نوع برای ذخیره سازی داده باینری استفاده می‌شود.
  • Code: این نوع برای ذخیره سازی کد جاوا اسکریپت داخل سند استفاده می‌شود.
  • Regular Expression: این نوع برای ذخیره سازی عبارت باقاعده استفاده می‌شود.

درج سند در MongoDB
متد ()Insert
برای درج داده در یک مجموعه نیاز است تا از متد ()insert یا ()save در MongoDB استفاده کنید.

گرامر
گرامر پایه دستور ()insert به شکل زیر است:
>db.COLLECTION_NAME.insert(document)
مثال
>db.mycol.insert({
   _id: ObjectId(7df78ad8902c),
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'tutorials point',
   url: 'http://www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
})
در اینجا mycol نام مجموعه‌ی ما است. اگر مجموعه از قبل در پایگاه داده موجود نباشد، MongoDB این مجموعه را خواهد ساخت؛ سپس سند را داخل آن درج خواهد کرد.
در درج این سند، اگر پارامتر _id را مشخص نکنید، MongoDB یک ObjectId یکتا را به این سند اختصاص می‌دهد.
برای درج چند سند در یک کوئری می‌توانید آرایه ای از سندها را به دستور ()insert پاس دهید.

مثال
>db.post.insert([
{
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'tutorials point',
   url: 'http://www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   title: 'NoSQL Database', 
   description: 'NoSQL database doesn't have tables',
   by: 'tutorials point',
   url: 'http://www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 20, 
   comments: [
      {
         user:'user1',
         message: 'My first comment',
         dateCreated: new Date(2013,11,10,2,35),
         like: 0 
      }
   ]
}
])
برای درج سند می‌توانید از (db.post.save(document نیز استفاده کنید. اگر پارامتر _id را در سند مشخص نکنید، متد ()save مانند متد ()insert عمل خواهد کرد. اگر پارامتر _id را مشخص کنید، مقدار آن در سند، جایگزین مقدار پیش فرض _id می‌شود.
نظرات مطالب
EF Code First #1
آیا در EF این امکان وجود دارد که بتوان filegroups ایجاد کرد و هر کدام از جداول را در filegroups مخصوص قرار داد؟ یا اینکه تنظیمات ابتدایی ساخت دیتابیس را برای آن تعیین کرد؟
مثلا در sql server حجم ابتدایی دیتابیس و Filegrowth را تعیین کنیم؟
با تشکر
نظرات مطالب
چند نکته کاربردی درباره Entity Framework
- سورس آزمایش به عمد ارسال شد، تا بتونید خودتون اجراش کنید و اندازه گیری کنید. این‌ها چشم بندی نبوده یا نظر شخصی نیست. یک سری اندازه گیری است.
- توضیح دادم در انتهای همان آزمایش. برای تکرار مجدد: چون یکبار رفت و برگشت کمتری داره به دیتابیس. چون تغییر State یک شیء و ورود آن به سیستم ردیابی، خیلی سریعتر است از واکشی اطلاعات از بانک اطلاعاتی. اما در مورد لیستی از اشیاء، توسط context.Factors سیستم EF دسترسی به IDها پیدا می‌کنه (در هر دو حالت متصل و منقطع). اگر سیستم ردیابی خاموش شود، برای اتصال مجدد این‌ها زمان خواهد برد (چون IDهای دریافت شده از بانک اطلاعاتی ردیابی نمی‌شوند)، اما در حالت متصل، همان بار اولی که کوئری گرفته شده، همانجا اتصال هم برقرار شده و در حین به روز رسانی اطلاعات می‌داند چه تغییراتی رخ داده و چگونه سریعا باید محاسبات رو انجام بده. اما در حالت منقطع توسط متد DetectChanges تازه شروع به اتصال و محاسبه می‌کند.
مطالب
بهبود کارآیی برنامه‌های قدیمی که از SQL Server استفاده می‌کنند
برنامه‌های قدیمی، الزاما خیلی قدیمی هم نیستند؛ برنامه‌هایی هستند پر از کوئری‌های ذیل:
 SELECT * FROM table1 WHERE OrderDate ='12 Mar 2004'

SET @SQL = 'SELECT * FROM table2 WHERE OrderDate = ' + '''' + @Var + ''''
EXEC (@SQL)
ویژگی مهم این نوع کوئری‌ها که با جمع زدن رشته‌ها و یا مقدار دهی مستقیم فیلدها تشکیل شده‌اند، «غیر پارامتری» بودن آ‌ن‌ها است.
این نوع مشکلات با بکار گیری ORMها به نحو قابل توجهی کاهش یافته‌است؛ زیرا این نوع واسط‌ها در اغلب موارد، در آخر کار کوئری‌هایی پارامتری را تولید می‌کنند.


مشکل کوئری‌های غیر پارامتری چیست؟

استفاده‌ی وسیع از کوئری‌های غیرپارامتری با SQL Server، مشکلی را پدید می‌آورد به نام «Cache bloat» یا «کش پُف کرده» و این «پُف» به این معنا است که کش کوئری‌های اجرا شده‌ی بر روی SQL Server بیش از اندازه با Query plan‌های مختلف حاصل از بررسی نحوه‌ی اجرای بهینه‌ی آن‌ها پر شده‌است. هر کوئری که به SQL Server می‌رسد، جهت اجرای بهینه، ابتدا پردازش می‌شود و دستور العملی خاص آن، تهیه و سپس در حافظه کش می‌شود. وجود این کش به این خاطر است که SQL Server هربار به ازای هر کوئری رسیده، این عملیات پردازشی را تکرار نکند. مشکل از زمانی شروع می‌شود که SQL Server کوئری‌هایی را که از نظر یک برنامه نویس مانند هم هستند را به علت عدم استفاده‌ی از پارامترها، یکسان تشخیص نداده و برای هر کدام یک Plan جداگانه را محاسبه و کش می‌کند. این مساله با حجم بالای کوئری‌های رسیده دو مشکل را ایجاد می‌کند:
الف) مصرف حافظه‌ی بالای SQL Server که گاهی اوقات این حافظه‌ی اختصاص داده شده‌ی به کش کوئری‌ها به بالای یک گیگابایت نیز می‌رسد.
ب) CPU Usage بالای سیستم


سیستم قدیمی است؛ امکان تغییر کدها را نداریم.

بدیهی است بهترین راه حلی که در اینجا وجود دارد، پارامتری ارسال کردن کوئری‌ها به SQL Server است تا به ازای هر تغییری در مقادیر آن‌ها، این کوئری‌ها باز هم یکسان به نظر برسند و SQL Server سعی در محاسبه‌ی مجدد Plan آن‌ها نکند. اما ... اگر این امکان را ندارید، خود SQL Server یک چنین قابلیت‌هایی را به صورت توکار تدارک دیده‌است که باید فعال شوند.


فعال سازی پارامتری کردن خودکار کوئری‌ها در SQL Server

اگر نمی‌توانید کدهای یک سیستم قدیمی را تغییر دهید، SQL Server می‌تواند به صورت خودکار این‌کار را برای شما انجام دهد. در این حالت فقط کافی است یکی از دو دستور ذیل را اجرا کنید:
  --Forced
ALTER DATABASE dbName SET PARAMETERIZATION FORCED

--Simple
ALTER DATABASE dbName SET PARAMETERIZATION SIMPLE
حالت simple بیشتر جهت پارامتری کردن خودکار کوئری‌های select بکار می‌رود. اگر می‌خواهید تمام کوئری‌های select, insert, update و delete را نیز پارامتری کنید، باید از حالت forced استفاده نمائید.



فعال سازی بهبود کارآیی SQL Server با کوئری‌های Ad-Hoc زیاد

به کوئری‌های غیرپارامتری، کوئری‌های Ad-Hoc نیز گفته می‌شود. اگر سیستم فعلی شما، تعداد زیادی کوئری Ad-Hoc تولید می‌کند، می‌توان فشار کاری SQL Server را برای این مورد خاص، تنظیم و بهینه سازی کرد.
فعال سازی گزینه‌ی ویژه‌ی «Optimize for Ad hoc Workloads» سبب می‌شود تا SQL Server پس از مدتی به صورت خودکار کش Plan کوئری‌هایی را که به ندرت استفاده می‌شوند، حذف کند. همین مساله سبب آزاد شدن حافظه و بهبود کارآیی کلی سیستم می‌گردد. همچنین باید درنظر داشت که کش Plan کوئری‌ها نامحدود نیست و سقفی دارد. به همین جهت آزاد شدن آن، کش کردن کوئری‌هایی را که بیشتر استفاده می‌شوند، ساده‌تر می‌کند.
برای اعمال آن به یک بانک اطلاعاتی خاص، نیاز است دستورات ذیل را اجرا کرد:
 use dbName;
-- Optimizing for Ad hoc Workloads
exec sp_configure 'show advanced options',1;
RECONFIGURE;
go
exec sp_configure 'optimize for ad hoc workloads',1;
RECONFIGURE;
Go


برای مطالعه‌ی بیشتر
Fixing Cache Bloat Problems With Guide Plans and Forced Parameterization
Optimizing ad-hoc workloads
Optimizing for Ad hoc Workloads
نظرات مطالب
اتصال به بانک اراکل بدون نیاز به نصب oracleclient و یا استفاده از کنترلهای Devart
سلام
من از database first استفاده می‌کنم . می‌خوام از طریق edmx به دیتابیس اراکل وصل شم ولی پروایدر اراکل رو تو لیست پروایدر‌های entity model نشون نمیده . حتی خواستم odac.net رو واسه اراکل دانلود کنم ولی همه لینکها ... . اگه ممکنه راهنمایی بفرمایید با تشکر