همیشه دنبال خوشگلی نباش – یک داستان درمورد فایلهای ini
توسط کمانگیر در روز 3 ژانویه 2008ژانویه 3
برنامه نویسی که می کنی، انتخاب فرمت فایل نکته بسیار مهمی ه. زمانی که هنوز ساختارهای داده ای نهایی نشده اند استفاده از فایل باینری چندان راحت نیست، چون با اضافه کردن هر فیلد جدید باید مراقب باشی که ساختار نامناسب رو از فایل نخونی. به این دلیل، و به دلایل دیگه، مدتهاست از فرمت ini بکرات استفاده می کنم.
فایلهای ini فایلهای متنی ساختارداری هستند که در اونها میشه Section و Key تعریف کرد. به این ترتیب میشه براحتی اطلاعات متنی-عددی رو در یک فایل با ساختار مناسب ذخیره کرد. در سالهایی که برنامه نویسی کردم، و همین حالا هم، اکثر فرمت فایلهایی که تعریف کردم عملا ini بودند.
نکته حاشیه ای اینه که Delphi ساختاری به نام Tinifile داره، اگر اشتباه نکنم، که فایلهای ini رو پشتیبانی می کنه. مشکل اما اینه که این ساختار فقط ۶۴K اطلاعات رو می تونه ذخیره کنه. به همین دلیل سالها پیش ساختاری تعریف کردم به نام Mini که تمام کارهای Tinifile رو انجام می ده بدون اینکه محدودیت حجمی داشته باشه. فایلهای مورد استفاده در “کی به کیه؟” هم همگی Mini هستند. شکل روبرو قسمت ابتدایی یک فایل نوعی ini رو نشون می ده که توسط این ربات ساخته شده. تا اینجای فایل دو Section وجود داره و کلا پنج Key.
گفتم که شدیدا مشکل دارم با سرعت خوانده و نوشته شدن فایلها (ببینید: من و سگ و الهه دلفی و بانک اطلاعاتی). امشب، یا در واقع دیشب، در حالیکه در سرمای -۲۰ و دقیقا در ساعت ۱۲ نیمه شب پیاده از دانشگاه به خونه می اومدم بنظرم رسید که شاید مشکل همین Mini باشه. نکته اساسی اینه که هربار نوشتن در Mini مستلزم جستجو برای Section و Key مربوطه است. خوندن هم به همین ترتیب کار سنگینی ه.
ایده ام این بود که بیام به جای فایل بسیار “خوشگل”ی که Mini درست می کنه از یک فایل بدون ساختار استفاده کنم. یعنی فایلی که عملا چیزی نیست جز خط به خط نوشته اطلاعات. اینطور بود که ساختاری نوشتم به نام Mot یا Ordered Text. مجموعه کامل اطلاعات “کی به کیه؟” رو اینجا ندارم اما آزمایش با اطلاعات کمتر نشون می ده که شاید نیازی به استفاده از یک بانک اطلاعاتی نباشه. این یعنی احتمالا یکبار دیگه از یادگرفتن بانک اطلاعاتی جستم. شکل روبرو یک فایل ot رو نشون می ده. این فایل دقیقا نظیر فایل iniی است که در بالا نشان داده شده. بوضوح این فایل بسیار سریع تر خوانده و نوشته می شه.
اینجاست که معلوم می شه خوشگلی خرج داره و گاهی اوقات کمی بی ریختی هم همچین بد نیست. فردا باید تست کنم کد جدید رو. دعا بفرمایید بی زحمت.
سلام
جناب آرش خان مدت زمانی است که وبلاگ شما را مطالعه می کنم
می خواستم پیشنهاد بدم اگر دوست داشتی من حاظرم قسمت برنامه نویسی مربوط به بانک اطلاعاتی برنامه کی به کی را بدونه هیچ گونه هزینه ای انجام بدم
کمانگیر: بسیار ممنونم ار پیشنهاد شما. حتما با شما تماس می گیرم.
با استنباطی که من از کارت کردم شما میتونی از یک RDBMS (Relational Data Base Management System) استفاده کن. مطمئن نیستم میدونی RDBMS چیه یا نه. چون خیلی Web Developer میشناسم که در این مورد چیزی نمی دونه. اگر خودت میدوانی که RDBMS چیست و به دلیل ماهیت کارت نمیتونی ازش استفاده کنی که من را ببخش. ولی خوب اگر نمی دونی از یک چیزی مثل SQL Server یا Oracle استفاده کن. منتهی چون احتمالا پول خرید اوراکل هم نداری از SQL Server Personal Edition یا حتی MS Access استفاده کن.
مزایای استفاده از RDBMS رو برات لیست می کنم:
۱- عدم محدودیت درتعداد فیلدهای اطلاعاتی
۲- عدم محدودیت در تعداد رکوردهای اطلاعاتی
۳- عدم نیاز به دستکاری اساسی در کل برنامه با حذف یا اضافه شدن یک یا چند فیلد
۴- عدم محدودیت در نوع فیلدهای هر رکورد (حتی میتوانی فیلدی با محتوای Image یا تصویر داشته باشی)
۵- حذف٬ درج٬ ادیت و بازیابی اطلاعات با SQL که زبان استانداردی برای RDBMS ها است انجام میگیرد که بسیار برای یادگیری آسان است.
۶- میتوانی بعدا دیتا بیست را به یک ابزار گزارش گیری مثل کریستال ریپورت پلاگ کنی و گزارشات متنوعی از اطلاعاتت بگیری. اگر هم ابزارهای آماری مثل کاگنوس داشته باشی دیتابیست به آنها هم وصل میشود.
من البته هیچ وقت با دلفای کار نکرده ام ولی وقتی جوانتر بودم با Borland C++ کار کردم که مال همون کمپانی بوده و مطمئنم که با RDBMS مشکلی ندارند.
هه هه ! خط آخر مطلبت را تازه خوندم و فهمیدم که RDBMS را نمیشناسی. بهتره که اینقدر از یادگیریش طفره نری. 🙂
چیز خیلی به درد بخوریه.
کمانگیر: اصل نکته را گرفتی رفیق.
سلام اگر دوست داشتی من می تونم پروژه کی به کی رو با SQL و C# بنوسم یا با هم بنویسم اگه دوست داری با من تماس بگیر
کمانگیر: ممنونم رفیق. الان احتیاج به یک رویه تحت وب هست برای نمایش اطلاعات. یک برآوردی می کنی اینکار چقدر وقت و هزینه می بره؟