عملگر typeid  : به دست آوردن نوع یک متغیر

عملگر typeid در زبان C++ برای به دست آوردن نوع یک متغیر یا یک عبارت به کار می رود. این عملگر در فایل < typeinfo > تعریف شده است. در زیر نحوه ی استفاده از این عملگر توضیح داده شده است. این عملگر خرجی را به صورت یک شی type_info که بیانگر نوع ورودی ارسال شده است، برمی گرداند و به همین خاطر نمیتوان به صورت مستقیم آن را در خروجی نشان داد ولی به صورت زیر میتوان نتیجه را در خروجی نشان داد. خروجی تابع name() به صورت const char* می باشد.

نوع یک متغیر :

// #include < typeinfo >

int a = ...;

cout << typeid (a).name();    // prints : "int"

نوع یک عبارت :

int a = ...;

double d = ...;

cout << typeid (a * d).name();    // prints : "double"    

کلاس BigInteger

کلاس BigInteger در محیط دات نت برای کار با اعداد بزرگ خارج از محدوده ی انواع استاندارد مانند int و long ایجاد شده است. این کلاس دارای مشخصات و توابع زیادی است که همه ی آنها را می توانید در صفحه ی زیر مشاهده کنید.

http://msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

این کلاس در فایل Numerics قرار دارد و برای استفاده از آن ابتدا باید پروژه ی خود را به آن ارجاع دهید و سپس آن را فراخوانی کنید. برای اضافه کردن این فایل به برنامه خود بر روی نام پروژه کلیک راست کرده و گزینه ی Add Reference (یا  C++ : Reference) را انتخاب کنید. سپس از درون لیست Assemblies نام System.Numerics را پیدا کرده و تیک آن را بزنید و پنجره فعلی را OK کنید. با این کار ارجاعی به این فایل در برنامه ایجاد می شود. حالا برای استفاده از این کلاس آن را با دستور Using به برنامه الحاق کنید : 

C# : using System.Numerics;

C++ : using namespace System::Numerics;

حالا کلاس BigInteger در برنامه قابل استفاده است. برای مثال :

BigInteger big = 1216845972115566256;

استفاده از موسیقی متن فیلم های خارجی برای فیلم های سینمایی درست است ؟


استفاده از موسیقی فیلم های سینمایی خارجی برای فیلم های سینمایی، تبلیغات و دیگر محصولات چند رسانه های داخلی چیز تازه ای نیست حتی شاید قدمتش از سن من هم بیشتر باشد (سن من برای شما مجهول است!). آخرین برخورد من با انها چند روز قبل بود که در فیلم "ابابیل" (که مورد حوداث 9 دی سال 1388 بود) در برخی از قسمت هایش از موسیقی متن فیلم Inception و بازی ویدئویی Modern Warfare 2 استفاده شده بود. در حالی که شاید این موسیقی زیاد برای این قسمت ها مناسب هم نبود ! به هر حال برای من این سوال پیش می آید که "آیا استفاده از موسیقی فیلم های دیگر برای یک فیلم، از اصالت آن کم نمی کند؟" یا "آیا ما در کشور مشکل کمبود آهنگساز برای سینما داریم؟" یا دلیل دیگری پشت این کار است...
شاید اکثریت مخاطب فیلم های سینمایی این کپی برداری ها را متوجه نشوند یا با آن مشکلی نداشته باشند ولی آیا واقعا کپی برداری از موسقی متن فیلم های دیگر در یک اثر کار صحیحی است؟ ...

Track و Cylinder در هارد دیسک


Track (ترک) دایره هایی هم مرکز در پلاتر (صفحه ی گردان هارد دیسک) هستند که اطلاعات روی انها نوشته می شود. هر ترک به بخش های کوچکتری به نام سکتور (Sector) تقسیم می شود که کوجکترین واحد قابل آدرس دهی در هارد به حساب می آیند و معمولا 512 بایت گنجایش دارند. سیستم عامل و هارد دیسک از طریق شماره Track ها و Sector ها به اطلاعات دسترسی پیدا می کنند. هارد دیسک های امروزی از هزاران ترک تشکیل شده اند.
یک Cylinder (سیلندر) به مجموعه ترک های با فاصله ی یکسان از مرکز، در تمام پلاتر ها گفته می شود. (برای درک بهتر، آنها را به صورت یک استوانه توخالی تصور کنید). برای مثال اگر یک هارد دیسک شامل 4 پلاتر (4 صفحه) و هر پلاتر شامل 600 ترک باشد، آنگاه 600 سیلندر در هارد دیسک وجود دارد. و هر سیلندر شمل 8 ترک خواهد بود؛ چرا که هر پلاتر دارای دو سطح (پشت و رو) است و مجموعا 8 ترک با فاصله ی یکسان از مرکز در هارد دیسک وجود دارد. به بیرونی ترین سیلندر در هارد دیسک، سیلندر صفر (Cylinder Ziro) گفته می شود. شکل زیر، ترک و سیلندر و سکتور را در هارد دیسک نمایش می دهد.


Partition Alignment چیست و چرا اهمیت دارد ؟


هارد دیسک های جدید به گونه ای ایجاد می شوند که از سکتور های 4 کیلوبایتی به جای سکتور های رایج 512 بایتی استفاده کنند. دلیل اینکار استفاده ی بهینه تر از فضای فیزیکی دیسک است، چرا که برای هر سکتور اطلاعات کوچکی برای "تصحیح خطا" (Error Correction) در دیسک وجود دارد؛ و نقل مکان از 0.5 کیلو بایت (512 بایت) به 4 کیلو بایت به این معنی است که فضای کمتری برای "تصحیح خطا" در کل دیسک در نظر گرفته خواهد شد. شکل زیر از ویکیپدیا، این موضوع را نشان می دهد.


دلیل align کردن یا "تطبیق" کردن دیسک، نرم افزاری (نرم افزار هایی) است که برای استفاده از سکتور های 512 بایتی به جای سکتور های 4 کیلو بایتی طراحی شده است. اگر نرم افزار سکتور های 512 بایتی را انتظار داشته باشد، در نتیجه ممکن است اطلاعات را در جایی که "فکر می کند" سکتور دوم یک کلاستر است بنویسد در حالی که این 512 بایت بعدی همان سکتور 4 کیلو بایتی است.
مشکل درایوهایی که یک سکتور 512 بایتی را برای سیستم عامل شبیه سازی می کنند، ولی در اصل با سکتور های 4 کیلوبایتی کار می کنند، این است که یک سکتور تنها "در یک مرحله" می تواند نوشته شود. برای نوشتن "آن" 512 بایت دوم، کل 4 کیلوبایت سکتور باید خوانده شود و دوباره در درایو نوشته شود. و این یک پروسه کند تر نسبت به این است که خیلی ساده بگوییم کل سکتور 4 کیلو بایتی را دوباره بنویس.
حتی اگر سیستم عامل از وجود درایو های 4 کیلوبایتی مطلع باشد، باید به طور صحیح درایو به طور صحیح تطبیق داده شده باشد تا مرز های بین سکتور ها، درست همان جایی باشد که درایو می گوید و همان جایی که سیستم عامل فکر می کند. در SSD ها هم این مشکل می تواند وجود داشته باشد و فشار اضافی را برای دسترسی به اطلاعات بر دوش درایو بگذارد.
برای این اکثر برنامه های پارتیشن بندی جدید 1 مگابایت را برای مرز بندی در کل دیسک در نظر می گیرند. که به طور شسته رفته، نیاز تشخیص اینکه چه نوعی از سکتور ها را در اختیار دارید را از میان می برند. البته تطبیق پارتیشن ها بیشتر در SSD ها اهمیت دارد و اگر از هارد دیسک استفاده می کنید احتیاج نیست زیاد نگران این قضیه باشید. برای اینکه متوجه شوید درایو شما به طور صحیح پارتیشن بندی شده است چندین راه وجود دارد؛ یکی از انها پنجره ی msinfo32 در ویندوز است. برای ورود به این پنجره نام آن را در منو Start تایپ کنید و آن را پیدا کنید. در این صفحه به قسمت
Components > Storage > Disks
بروید و به دنبال نام درایو خود بگردید و گزینه ی Partition Starting Offset را پیدا کنید. اگر عدد مقدار این گزینه، مضرب 4096 بود، درایو شما به درستی تطبیق شده است وگر نه باید به سراغ "تطبیق مجدد" یا Realign کردن آن بروید. برنامه ی Gparted live CD یکی از برنامه های معروف برای اینکار است.

فاکتور های تاثیز گذار در سرعت هارد دیسک


- زمان دستیابی (Seek Time) : مدت زمان مورد نیاز برای حرکت فیزیکی هد های هارد در سطح دیسک برای خواندن یا نوشتن اطلاعات.

- تاخیر (Latency) : مدت زمان لازم برای بارگذاری اطلاعات از یک سکتور خاص؛ که به سرعت دیسک و زمان دستیابی بسته است و معمولا بر حسب میکروثانیه بیان میشود.

- نرخ انتقال : حجم اطلاعات منتقل شده در واحد زمان. معمولا بر حسب "مگابایت بر ثانیه" یا "مگابیت بر ثانیه".

- سرعت رابط : سرعت تئوری انتقال اطلاعات از طریق کابل رابط هارد دیسک و مادر بورد. برای مثال نثل دوم رابط ساتا (SATA) از نرخ 3 گیگابیت بر ثانیه پشتیبانی می کند.

- حجم بافر هارد دیسک : بافر یا کش در هارد دیسک، در نقش حافظه ی موقت هارد دیسک است. مسلما هر چه این حافظه بیشتر و سریعتر باشد، عملکرد هارد دیسک بالاتر خواهد بود.

- حجم کار و نوع اطلاعات : هارد دیسک ها الگوریتم های کشینگ (catch) را پیاده سازی می کنند که ممکن است برای موقعیت های مختلف مناسب یا غیر مناسب باشند.

- سرعت گردش دیسک : واضح است که هرچه سرعت گردش دیسک بالاتر باشد، سرعت جابه جایی اطلاعات بیشتر خواهد بود. البته سرعت بالاتر معمولا به معنی عمر کوتاه تر و تولید گرمای بیشتر نیز خواهد بود. سرعت های رایج برای هارد دیسک ها 5400 ، 7200 و 10000 دور در دقیقه هستند.


عواملی که دست خودتان است :

- پارتیشن بندی منظم و مناسب : پارتیشن بندی صحیح به همراه فضای های آزاد دقیق (مخصوصا برای هارد دیسک های جدید و SSD ها) می تواند در سرعت هارد دیسک تاثیر به سزایی داشته باشد.

- یکپارچه سازی یا Defragmentation هارد دیسک. معمولا فایل های روی هارد دیسک پس از مدتی (به دلیل حذف یا انتقال اطلاعات) از حالت یکپارچه و پست سر هم بودن خارج می شوند و هد هارد برای دسترسی به آنها باید مدام تغییر مکان دهد. این باعث کاهش سرعت دستیابی به اطلاعات می شود. یکپارچه سازی اطلاعات با برنامه های مخصوص اینکار، باعث افزایش سرعت انتقال و دسترسی به اطلاعات میشود.
به غیر از این عوامل، عوامل دیگری نیز در سرعت هارد درایو تاثیر گذار هستند که در این پست به آنها اشاره نشده است. این صفحه در ویکی پدیا دارای اطلاعات زیادی در مورد این عوامل است. 
http://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics

"یک حبه قند" ساده، زیبا، بی ریا، شایسته ی سینمای ایران...


"یک حبه قند" نام یک فیلم خانوادگی به کارگردانی آقای میرکریمی است که امسال به نمایش درآمد و مطمئنا از فیلم های غنی امسال هم در بحث محتوا و هم در بحث تکنیک است. 

برای من در میان فیلم های ایرانی و خارجی این فیلم یکی از بی ریا ترین فیلم هایی بود که تا به حال دیده ام. شاید در هنگام تماشا فیلم فکر کنید که دارید یک مستند می بینید یا کسی یک دوربین برداشته و از یک خانواده فیلم برداری می کند! قصد تعریف بیجا نیست ولی باید گفت تک تک صحنه های فیلم به دل میشیند و باور پذیر است به احتمال زیاد دلیلش این است که ایرانی بودن خود را حفظ کرده. 

در یک کلام اگر دنبال فیلم های سطحی کمدی برای خندیدن یا ستاره های سینما هستید که فیلم را به خاطر انها ببینید این فیلم به درد شما نمیخورد و به احتمال زیاد پس از دیدن فیلم یا قسمتی از آن می گویید "آه چه مزخرفی". به شوخی بگویم، در میان بحبوحه ی توجه به ظاهر پر زرق و برق و بازیگران آنچنانی در فیلم های داخلی و خارجی، می توانید این فیلم فیلم را چماغ کنید و جولان دهید !  

Boot Sector و انواع آن


Boot Sector یا Boot Block به قسمتی از هارد دیسک، فلاپی دیسک یا دیگر حافظه های جانبی گفته می شود که کد های ماشین برای بارگذاری در حافظه ی اصلی (RAM) را نگهداری می کند. هدف بوت سکتور، آغاز مراحل راه اندازی یک برنامه (معمولا سیستم عامل) است که در همان وسیله ذخیره شده است. محل و اندازه ی بوت سکتور به طراحی پلتفرم، مرتبط و وابسته است.
برای مثال در یک کامپیوتر سازگار با IBM ، BIOS دیسک راه اندازی را انتخاب کرده و و اولین سکتور آن را در حافظه اصلی لود می کند. برای دستگاه های دیگر این پروسه ممکن است کاملا متفاوت باشد.

انواع بوت سکتور :

  : Master Boot Record (MBR)

اولین سکتور حافظه جانبی که پاتیشن بندی شده است. MBR ممکن است که شامل کد هایی برای تشخیص پارتیشن های فعال و فرخواندن VBR آن باشد.

  : Volume Boot Record (VBR)

اولین سکتور حافظه ی جانبی که پارتیشن بندی نشده، است یا یا اولین سکتور پارتیشن خاصی از یک حافظه ی جانبی که پارتیشن بندی شده است؛ که می تواند شامل کد های برای فراخوانی سیستم عامل یا دیگر برنامه های مستقل باشد که در آن پارتیشن ذخیره شده اند. 

بنچمارک AS SSD


برنامه AS SSD یکی برنامه کم حجم و پرتابل برای ارزیابی حافظه های جانبی SSD است. این برنامه به همراه برنامه های دیگر مانند ATTO به یکی از برنامه های بنچمارک اصلی برای ارزیابی عملکرد وسایل ذخیره سازی تبدیل شده اند.
کار با این برنامه بسیار ساده است و تنها با یک کلیک می توانید دیسک خود را در برابر تست های مختلف ارزیابی کنید. این برنامه تست های رایج مانند خواندن و نوشتن ترتیبی ، بلوک 4 کیلوبایت ، زمان دستیابی و ... و نتیجه را به صورت IOPS یا MB/S و زمان دستیابی را بر حسب میلی ثانیه، به شما نشان می دهد و در آخر نتیجه ی کلی را به صورت یک امتیاز به شما نشان می دهد. AS SSD همچنین دارای تست های دیگری مانند تست کپی و تست مقایسه ای است که ابزار های جالبی برای ارزیابی عملکرد یک دستگاه هستند. این بنچمارک رایگان بوده و میتوانید با یک جست و جوی ساده، آن را از اینترنت دریافت نمایید. (بنچمارک = ارزیابی)  

کمربند ها را ببندید، "هابیت" آمد !

نمی دانم شما هم مانند من ارباب حلقه هایی هستید یا نه، هرچند احتمالش کم است (!) ولی اگر نه که هیچ، ولی اگر هستید حتما می دانید که مجموعه ی "هابیت" اثر نوسنده ی ارباب حلقه ها آقای "تالکین" ، که روایت گر داستان قبل از ارباب حلقه ها و فرودو است، به دست کارگردان ارباب حلقه ها آقای پیتر جکسون در حال ساخته شدن است و قسمت اول آن در این هفته به اکران در امده است. 
خلاصه تقریبا همه چیز برای ما ارباب حلقه ای ها جور شده است، همان کارگردان، همان آهنگ ساز، همان بازیگران (البته نه همه)، همان استدیو و در یک کلام همان حال و هوا و البته همان "گالوم" و "گاندالف" !! اگر دسترسی به سینمایی دارید که این فیلم را نمایش می دهد که بشتابید و اگر مانند من، دسترسی ندارید و اصلا در شهرتان سینما هم وجود ندارد (حالا چه نمایش دهد یا نه !) کمربند ها را ببندید و منتظر بمانید تا موقعی که کیفیت خوب این فیلم به دستتان برسد.
هنوز معلوم نیست که از لحاظ کمی و کیفی این مجموعه موفقیت ارباب حلقه ها را تکرار می کند یا نه. اگر از فروش فیلم خواسته باشید در طول هفته اول، فروش 90 میلیون دلاری در آمریکا و فروش کلی 220 میلیون دلاری برای قسمت اول رقم خورده است.