تکنیکهایی برای برگرداندن اطلاعات از فایلهای SQL Server که خسارت دیده اند و خراب شده اند و از بخت بد، فایل Backup یا موجود نیست و یا روشهای معمول برگرداندن اطلاعات درست کار نمیکنند.
در این تمرین بانک اطلاعاتی نمونه AdventureWorksLT2008R2 بکار گرفته شده است.
در این تکنیک از کلاس RawDatabase که در پروژه منبع باز OrcaMDF که یک پارسر (Parser) تحت زبان #C برای خواندن فایلهای mdf. بانک اطلاعاتی SQL Server بدون Attach کردن یا اجرای SQL Server میباشد استفاده شده است.
حتی اگر تمام امیدتان را برای برگرداندن اطلاعات از دست داده اید ، هنوز هم گزینه های وجود دارد . ابزار OrcaMDF یا راه حلهای دیگر ممکن است به دلیل یک فاجعه به صورت یک ابزار ارزشمند درآمده باشد. البته این یک جایگزین خوب برای برگرداندن اطلاعات نیست.
فلسفه وجودی بخش finally در try catch چیست؟
- اینکه شما بروز یک مشکل رو با یک عدد منفی از یک متد بازگشت میدید یعنی هنوز دید زبان C رو دارید. در دات نت وجود استثناءها دقیقا برای ننوشتن return 0 یا -1 و شبیه به آن هست. در این حالت برنامه خودکار در هر سطحی که باشد، ادامهاش متوقف میشه و نیازی نیست تا مدام خروجی یک متد رو چک کرد.
- اینکه در یک متد کانکشنی برقرار شده و بسته شده یعنی ضعف کپسوله سازی مفاهیم ADO.NET. نباید این مسایل رو مدام در تمام متدها تکرار کرد. میشه یک متد عمومی ExecSQL درست کرد بجای تکرار مدام یک سری کد.
- یک سری از اشیاء اینترفیس IDisposable رو پیاده سازی میکنند مثل همین شیء اتصالی که ذکر شد. در این حالت میشه از using استفاده کرد بجای try/finally و اون وقت به دوتا using نیاز خواهید داشت یعنی شیء Command هم نیاز به try/finally داره.
private static string ParsPDFToString()
{
PdfReader reader = new PdfReader("c:/2v.pdf");
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
StringBuilder sb = new StringBuilder();
Console.WriteLine("reader.NumberOfPages : " + reader.NumberOfPages.ToString());
Console.ReadKey();
for (int i = 1; i <= reader.NumberOfPages; i++)
{
ITextExtractionStrategy strategy = parser.ProcessContent(
i , new SimpleTextExtractionStrategy()
);
sb.Append(strategy.GetResultantText());
}
return sb.ToString();
}
private static string ParsPDFToString()
{
PdfReader reader = new PdfReader("c:/2v.pdf");
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
StringBuilder sb = new StringBuilder();
Console.WriteLine("reader.NumberOfPages : " + reader.NumberOfPages.ToString());
Console.ReadKey();
for (int i = 1; i <= reader.NumberOfPages; i++)
{
ITextExtractionStrategy strategy = parser.ProcessContent(
i , new SimpleTextExtractionStrategy()
);
sb.Append(strategy.GetResultantText());
}
return sb.ToString();
}
- دریافت اینترنت اکسپلورر نسخه 9.0.3 | microsoft-focus | microsoft-focus.blogfa.com
- دنیس ریچی، خالق زبان برنامهنویسی C درگذشت | فرهاد جعفری | www.winbeta.net
- قرار دادن کدهای رنگی برای وبلاگ | mojtabasahraei | mojtabasahraei.blogfa.com
- مایکروسافت رسما صاحب اسکایپ شد | Mohammad | mymicrosoftlife.net
- نرمافزارهای Issue Tracking داتنتی | blog.fardapardaz.com
- نمودار گرافیکی با استفاده از ASP.NET | (Afshar Mohebbi) | blog.afsharm.com
- jQuery 1.7 Beta 2 منتشر شد | blog.jquery.com
- RavenDB Management Studio منتشر شد | ayende.com
- بررسی بهتر علت بروز صفحات آبی ویندوز با VS.NET 11 | rss.slashdot.org
- بررسی تفاوت بین ورژن کنترلهای توزیع شده و متمرکز | lostechies.com
- توضیحاتی در مورد ReJIT | blogs.msdn.com
- کدام بانک اطلاعاتی اس کیوال سرور بیشترین حافظه را مصرف کرده؟ | beyondrelational.com
- Kernel
- ماشین مجازی Dalvik
- application framework
- applications
هسته اندروید (kernel) چیست؟
اندروید بر روی هسته لینوکس نسخه 2.6 به بالاتر اجرا میشود. هسته، اولین و نخستین لایهی نرم افزاری در اندروید است که با سخت افزار به صورت کاملا مستقیم در تعامل میباشد. تغییرات در هسته و یا ساختن دوبارهی آن چیزی نیست که لازم باشد از ابتدا به ساکن و مجددا توسط یک برنامه نویس انجام شود! فقط سازندگان سخت افزار قادر به تغییرات درون هسته هستند و این یک امر غیرطبیعی و ناممکن برای برنامه نویسان خواهد بود؛ چرا که یک برنامه نویس تنها قادر است تا لایههای نرم افزاری را تغییر دهد نه سخت افزار آن را و این مورد تنها بهعهدهی افرادی است که با سخت افزار اندروید در ارتباط هستند.
کتابخانه ها
اجزای کتابخانهها بعنوان یک لایه مترجم بین هسته و فریم ورکها عمل میکنند. این کتابخانهها و اجزای درونی آنها با زبان C و ++C نوشته شدهاند؛ اما از طریق یک API در زبان جاوا در اختیار توسعه دهندگان قرار میگیرند تا به سهولت قابل استفاده باشند. برنامه نویسان و توسعه دهندگان میتوانند از طریق فریم ورکهای زبان جاوا برای دسترسی مستقیم به کتابخانههای اصلی C و ++C استفاده کنند.
برخی از کتابخانههای اصلی عبارتند از:
- LibWebCore
- Media libraries
- Graphics libraries
ماشین مجازی Dalvik چیست؟
در اصل آقای Dan Bornstein ماشین مجازی Dalvik را نوشت. ماشین مجازی دالویک برای اجرای برنامهها بر روی دستگاههای مختلف با منابع بسیار محدود نوشته شده بود و این یکی از اولویتهای این ماشین بود تا بتواند با منابع محدود بر روی دستگاه در تعامل باشد و برنامه را اجرا نماید. به طور معمول ماشین دالویک برای تلفنهای همراهای استفاده میشد که توان پردازشی پایین، عمر باتری کم و همچنین حافظهی اندکی داشتند. ماشین مجازی دالویک فایلهای با پسوند dex. را اجرا میکند. این فایلها با استفاده از کلاسهای جاوا کامپایل شدهاند که با در نظر گرفتن نوع کلاس class. یا jar. انجام میشوند و فایلهای class. را به یک ثابت (constant) مشترک و هماهنگ تبدیل مینمایند. ابزار DX، که در Android SDK موجود است، این تبدیل را انجام میدهد.
به تصویر زیر توجه کنید:
به تصویر زیر توجه کنید؛ پس از تبدیل، فایلهای dex. به طرز قابل توجهی کوچکتر و کم حجمتر میشوند!
Application Framework چیست؟
اپلیکیشن فریم ورک، یکی از بلاکهای مهم ساختن سیستم نهایی میباشد. این فریم ورکها مجموعهای از خدمات را درون سیستم برای برنامهنویس یا توسعه دهندگان جهت نوشتن یک برنامه بدون مشکل فراهم میکنند. بهعنوان یک توسعه دهنده شما کد را مینویسید و فقط از APIها برای تکمیل آنها در زبان جاوا استفاده میکنید. از طریق یک API در زبان جاوا قادر خواهید بود تا به هسته و کتابخانههای C و ++C دسترسی داشته باشید.
بعنوان نمونه : کد زیر به شما نحوه پخش یک فایل ویدئویی را نشان میدهد
package com.example.android.apis.media; import com.example.android.apis.R; import android.app.Activity; import android.os.Bundle; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; public class VideoViewDemo extends Activity { /** * TODO: Set the path variable to a streaming video URL or a local media * file path. */ private String path = ""; private VideoView mVideoView; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.videoview); mVideoView = (VideoView) findViewById(R.id.surface_view); if (path == "") { // Tell the user to provide a media file URL/path. Toast.makeText( VideoViewDemo.this, "Please edit VideoViewDemo Activity, and set path" + " variable to your media file URL/path", Toast.LENGTH_LONG).show(); } else { /* * Alternatively,for streaming media you can use * mVideoView.setVideoURI(Uri.parse(URLstring)); */ mVideoView.setVideoPath(path); mVideoView.setMediaController(new MediaController(this)); mVideoView.requestFocus(); } } }
متدهای async تقلبی
10 اشتباه رایج برنامه نویسهای سیشارپ
مورد ۴ (استفاده از Linq به جای foreach) را من خیلی با آن مواجه هستم. فکر میکنم عادت یا عدم تسلط به LINQ هم بخشی از علل عدم استفاده است.
فکر میکردم در راس این موارد، مورد null reference قرار داشته باشد. هر چند که بعدش فکر کردم این میتواند یک مشکل عمومی در همه زبانهای برنامه نویسی باشد نه فقط سی شارپ.