چهارشنبه بیستم بهمن، ساعت ۱ بعدازظهر در برنامهٔ زندهٔ رادیو-تیوی اینترنتی ایرانصدا حضور خواهم داشت، موضوع بحث مرتبط با گنجور است. اینجا در این باره بیشتر بخوانید.
رابط برنامهنویسی گنجور رومیزی – بخش دوم
در ادامهٔ بحث نوشتهٔ پیشین در این نوشته به عنوان یک نمونهٔ عملی از نحوهٔ استفاده از رابط برنامهنویسی گنجور رومیزی، من قسمتی از یک فایل docx در دسترس از طریق سایت تصوف ایران -مربوط به اشعار وحدت کرمانشاهی- را به کمک تکه کدی که شرح آن در ادامه میآید به قالب گنجور رومیزی تبدیل کردهام (اصل فایل اینجاست، من آن را دریافت کردهام، با کمک ورد ۲۰۰۷ با پسوند docx ذخیره کرده و آن را در فایل زیپ پروژهٔ مربوط به این مطلب -قابل دریافت از این نشانی– گنجاندهام، بهروزآوری: پروژهٔ بهروز شده را میتوانید از گیتهاب دریافت کنید، از اینجا).
برای انجام این کار باید علاوه بر ویژوال استودیو (با امکان برنامهنویسی برای سکوی .NET ویرایش ۳.۵ یا ۴) کتابخانهٔ برنامهنویسی OpenXML را نیز نصب داشته باشید. این کتابخانه را از این صفحه دریافت و نصب کنید (OpenXMLSDKv2.msi با حجم کمتر از ۴ مگابایت برای مقصود مورد نظر ما کافیست، البته پیشنیاز نصب این کتابخانه سکوی .NET ویرایش ۳.۵ با سرویس پک ۱ است).
پس از نصب کتابخانهٔ یاد شده و ایجاد پروژه، ارجاع متناظر با آن را به فهرست ارجاعهای پروژه اضافه میکنیم تا فضاهای نام مورد نیاز در دسترس قرار گیرند.
برای پیادهسازی تبدیل مورد نظر لازم است الگوی تایپ فایل ورودی را استخراج کنیم. با بررسی ظاهر فایل ورودی الگوی عمومی زیر را مشاهده میکنیم:
بنابراین در ترتیب معمول بازخوانی محتوای این فایل (چگونه فایل تایپ شده): هر مصرع در تمام سلولهای حاوی متن از مصرعهای دیگر با یک break جدا شده است. محتوای سلول اول جدول (۱)، مربوط به مصرعهای اول ابیات است، بعد از این سلول، سلولی خالی داریم (۲)، محتوای سلول بعدی (۳) مربوط به مصرعهای دوم ابیات است، بعد یک سلول خالی (۴) (استثنایی وجود دارد که توضیح میدهم)، بعد سلولی شامل دو مصرع متوالی که مربوط به بیت تخلص شاعر است (۵) و پس از آن تا شعر بعدی یک سلول خالی دیگر داریم (۶).
پس ما در هنگام تبدیل فایل ورودی در هر لحظه انتظار یکی از سه نوع سلول جدول مصرعهای سمت راست، چپ یا وسط را میکشیم:
رابط برنامهنویسی گنجور رومیزی – بخش اول
یکی از نکاتی که شاید به کار برنامهنویسانی بیاید که دوست دارند در گسترش دامنهٔ دادههای گنجور با استفاده از گنجور رومیزی مشارکت کنند این است که بدانند تنها راه تبدیل منابع اینترنتی یا فایلهای موجود به فرمت گنجور رومیزی کپی دستی اشعار از این منابع در ویرایشگر گنجور رومیزی نیست و میتوان با استفاده از C# یا هر یک از دیگر زبانهای .NET تقریباً به آسانی فایلهای مناسب برای نمایش در گنجور رومیزی را ساخت.
البته همانطور که احتمالاً این دسته از دوستان مطلعند فایلهای گنجور رومیزی در واقع پایگاه دادههای SQLite هستند و راه متداول برای ایجاد آنها به کمک زبانهای برنامهنویسی، استفاده از دستورات SQL است که نیازمند بازبینی ساختار پایگاه دادههای برنامه و به دست آوردن روابط بین جداول است. اما روشی که در این نوشته در مورد آن توضیح خواهم داد آسانتر است.
مقدمهٔ کار در ویژوال استودیو، اضافه کردن یک ارجاع به اسمبلی ganjoor.exe است (فایل اجرایی گنجور رومیزی که در مسیر نصب برنامه قرار دارد) تا فضای نام ganjoor در برنامه در دسترس قرار گیرد.*
[code lang=”c#”]
using ganjoor;
[/code]
پس از این کار به کلاس اصلی مدیریت دادهها در گنجور رومیزی که DbBrowser نام دارد دسترسی داریم. تکهکد زیر -که به نظرم به اندازهٔ کافی گویاست- نشان میدهد که چگونه میتوان با استفاده از این کلاس (و کلاسهای جانبی فضای نام ganjoor که اطلاعات دادهها را در خود دارند) یک فایل سادهٔ gdb یا s3db ساخت که گنجور رومیزی توانایی نمایش اطلاعات آن را دارد:
سنگ پای قزوین
اخیراً دارند از فیلتر جیمیل هم عبور میکنند.
ای آنها که ندیدهاید …
این یک تبلیغ نیست ;)
اگر دوست دارید آلبومهای تصاویر دیجیتالتان را بر اساس چهرهٔ افراد دستهبندی کرده، عکسهای خودتان یا دوستانتان را به سادگی یک کلیک غربال کنید ویندوز لایو فتوگالری ۲۰۱۱ را امتحان کنید.
اطلاعیه: ساغر
پیرو نوشتهجات پیشین و جهت اطلاع معدود 😉 دوستانی که تازههای گنجور و صفحهٔ فیسبوک گنجور را دنبال نمیکنند ساغر (نرمافزار رایگان مرور اشعار فارسی با قابلیت اجرا تحت ویندوز، لینوکس و مک) منتشر شده است. جهت دریافت به این نشانی مراجعه کنید.
یاریگری هست؟
میدانید؟ اخیراً از جایی درخواست یک هدیه کردم (اینجا) و آن را تحویل گرفتم.
بد ندیدم، با یادکردی از آن لطف، با توجه به این که این روزها دست و دلم خیلی به کار نمیرود تقاضا(ها)یی بکنم برای کمک، شاید جیکوئریکاری پیدا شد ندای ما را لبیک گفت و از مشکلات گنجور کمی کم کرد. عموم تقاضاها -برای اهلش- به تخمین خودم چندان زمانبر نیست اما لطفی است بیحد در حق نه تنها من بلکه در حق تمام کسانی که با گنجور مشکلاتی از جنس آنچه شرح خواهم داد دارند.
اولین مشکل مربوط به اسکریپت جستجوی لغات با دوبار کلیک بر روی آنها در لغتنامهٔ دهخداست (اینجا را ببینید). مشکلش چیست؟ با کروم و سافاری و اپرا کار نمیکند. راهحلش چیست؟ تصور میکنم این باشد. اصلاً شاید خود همین باشد بدون نیاز به تغییر. کاری که شما باید برای من بکنید این است که مطمئن شوید با متون راست به چپ مشکلی ندارد، میشود اسکریپتهای لازمه را (از جمله کتابخانهٔ جیکوئری را) در ته صفحه قبل از بسته شدن تگ body (و نه در بالای صفحه) بارگذاری کرد و تمام. و البته، اگر مشکلی هست برایم رفعش کنید!
اما دومین و سومین مشکل را، اگر اولین مشکل را حل کردید، دنبالشان باشید: من اسکریپت سادهای برای شمارهگذاری ابیات در گنجور نوشتهام (اینجا را ببینید). این را برایم با جیکوئری بازنویسی کنید (اسکریپت را با بازبینی کد صفحات گنجور میبینید). مشکل سوم را البته اصراری روی حلش ندارم، احتمالاً سخت است ولی صورت مسألهاش این است که این مسأله را با استفاده از جیکوئری حل کنید.
نکتهٔ آخر که تصور میکنم از متن نوشته برداشت میشود ولی رک و راست گفتن آن خالی از فایده نیست آن که برای این مسائل من راهنمایی نمیخواهم، راهحل نهایی آمادهٔ نصب و صد در صد تضمینشده را میخواهم. گفتم که حواستان باشد اگر لطف میکنید ناقص نباشد!
برنامهنویسی با C++ آسان است؟!
البته که نه! برنامهنویسی با C# و به کمک سکوی .NET آسانتر است. بحث اینجا البته نه C++ است نه C#، نه سکوی .NET و نه حتی برنامهنویسی.
خواستم نکتهای را که مدتی پیش یاد گرفتهام به شما هم یاد بدهم. سعی کنید عنوان این مطلب را در Notepad ویندوز تایپ کنید. ابتدا آن را راست به چپ کنید و تایپ کنید «برنامهنویسی با C++ آسان است.» چه اتفاقی میافتد؟
چرا این اتفاق میافتد؟ آیا این ایراد نرمافزاری نوتپد است؟ من چنین تصوری داشتم و مطلب را در انجمن رایانش فارسی سؤال کردم (اینجا). پاسخ آن است که خیر این یک ایراد نیست. بر طبق الگوریتم دوسونویسی استاندارد یونیکد (UBA) نویسههایی مانند + و # کمتوان محسوب میشوند و جهت آنها در متن توسط نویسهٔ پرتوان بعدی آنها تعیین میشود. به همین جهت اضافه کردن یک نویسهٔ پرتوان استاندارد غیرقابل مشاهده مثل نویسهٔ LRM (Left-to-Right Mark) (قابل تایپ توسط Ctrl+Shift+3 در صفحهکلید استاندارد ویندوز در حالتی که صفحهکلید فارسی است) مشکل را حل میکند (برنامهنویسی با C++<LRM> آسان است).
نظیر همین مشکل برای تایپ «سکوی .NET» وجود دارد، در این مورد باید نویسهٔ کنترلی را پیش از نقطه گذاشت. البته من راجع به دلیلش مطمئن نیستم. طبق چیزی که بالا نقل کردم باید نویسهٔ بعدی نقطه جهت را چپ به راست میکرد، اما این گونه نمیشود و نیاز است قبل از آن نویسهٔ کنترلی بگذاریم. احتمالاً دلیلش با بررسی مستندات UBA مشخص میشود. اگر از دوستان کسی دلیلش را میداند بنویسد (بعدنوشت: جوابش را آقای سید رضی داد: اینجا).
علاوه بر این از نویسههای کنترلی LRM و RLM برای تایپ ممیزهای بین اعداد تاریخ طوری که در مرورگرهای مختلف متن نهایی یکسان دیده شود میتوان استفاده کرد. گویا مایکروسافت ورد این نویسهها را به صورت خودکار در جای لازم درج میکند و به همین دلیل کسانی که با ورد تایپ میکنند احتمالاً این مشکل را زیاد مشاهده نکردهاند.
دنبالهٔ ۱
پیرو بحث پاراگراف اول دربارهٔ تقابل C++ و C#، بارها دوستان تقاضا کردهاند گنجور رومیزی را روی لینوکس یا مکاوس بتوانند اجرا کنند. من پیشتر دنبال راه حلهایی مانند مونو بودم (اینجا را ببینید) که به نتیجه نرسید. با ویرایشهای جدیدتر مونو حتی در حد همان دلخوشکنک ابتدایی نمایش پنجرهٔ برنامه هم، برنامه اجرا نمیشود. آقای سیدرضی علویزاده در حال تهیهٔ برنامهای سازگار با پایگاه دادههای گنجور رومیزی با استفاده از Qt هستند که تحت سه سیستم عامل ویندوز، لینوکس و مک اجرا میشود. اطلاعات بیشتر راجع به «ساغر» را اینجا بخوانید و تصاویری از آن را ببینید.
دنبالهٔ ۲
از آنجا که حدس میزنم عنوان نوشته اغواگر جستجوگران اینترنتی «C++ آسان» باشد سایت پیسیکدنویس را به این دسته از مشتریان نوشته توصیه میکنم.
دنبالهٔ ۳
در راستای دنبالهٔ ۱ و بر اساس دلایلی که در اینجا راجع به آن صحبت کردهام صفحهٔ فیسبوک گنجور را راهاندازی کردهام (http://www.facebook.com/ganjoor). اگر اهل فیسبوک هستید و به گنجور علاقه دارید سری به آن بزنید و آن را به دوستانتان بشناسانید.
دنبالهٔ ۴
این نوشته را تقدیم میکنم به شیخنا.
خیام، مسافر تایتانیک؟
مجلهٔ دانشمند این ماه مقالهای دارد با عنوان «تایتانیک چرا غرق شد؟».
جدای از بحث اصلی که به نظرم برای خوانندهٔ عادی بسیار خواندنی است، در آن علاوه بر دلایل متداول ذکر شده برای حادثهٔ غرق شدن این کشتی، یک بحث مهندسی مواد با عنوان «تبدیل رفتار نرم به ترد فولاد» نیز طرح شده که برای متخصصین امر میتواند جالب باشد. اما در کنار این مطالب، یک مطلب حاشیهای در مورد گم شدن نسخهٔ اصلی رباعیات خیام در این کشتی مطرح شده که به نظرم جالب آمد:
شاید خیلی از ایرانیان ندانند که نسخهٔ اصلی و دستنویس کتاب رباعیات خیام با کشتی تایتانیک به عمق اقیانوس رفت و متأسفانه نابود شد. این کتاب بسیار پرارزش که «عمر اعظم» نام داشت سرگذشت بسیار غمانگیزی دارد و سه روایت دربارهٔ آن نقل شده است. بر اساس یک روایت، این کتاب را یکی از شاهزادگان قاجار برای فروش به آمریکا میبرده است و چون او یکی از سرنشینان کشتی تایتانیک بود این کتاب را با خود به قعر اقیانوس برد و به این ترتیب، برگی دیگر بر ماجرای قاچاق ثروتهای ملی ایران افزوده و یک اثر نفیس نابود شد. روایت دوم نیز دست کمی از روایت نخست ندارد. «بنیامین عمر بوساژ» که باخبر میشود نسخهٔ دستنویس رباعیات خیام (عمر اعظم) در دست یکی از شاهزادگان ایرانی است به ایران سفر میکند، دیگ طمع این شاهزادهٔ ضدملی را به جوش میآورد، کتاب را از او میخرد و هنگام بازگشت به آمریکا چون با کشتی تایتانیک سفر میکرده است این کتاب به قعر اقیانوس میرود و یک اثر نایاب از فرهنگ ایرانزمین -متأسفانه- نابود میشود. و اما بر اساس روایت سوم، صحافی به نام «فرانسیس ستکلایف تلاش» آن را خریداری کرده از نظر صحافی روی آن کار میکند و قصد فروش آن را داشته که به علت بحران اقتصادی انگلیس (سال ۱۹۱۲) تصمیم میگیرد آن را به آمریکا ببرد، [آن را] به یک مسافر آمریکایی میفروشد و چون خریدار مسافر کشتی تایتانیک بوده، کتاب با غرق کشتی به اعماق دریا میرود و نابود میشود. میگویند برادرزادهٔ صحاف انگلیسی، «استانلی»، از باقیماندهٔ کتاب و تصاویری که از آن داشته نسخهٔ دومی -نه به ارزش نسخهٔ اول که به روایتی به خط و نوشتهٔ خود خیام بوده است– تهیه میکند که این نسخه نیز در بمباران لندن طی جنگ جهانی دوم نابود میشود. وی دست از کار نمیکشد و نسخهٔ سومی از طرحها، عکسها و تصاویر نسخههای اول و دوم تهیه میکند که این نسخه در اختیار همسر و بازماندگان «استانلی بری» بوده است که چند سال پیش به موزهٔ بریتانیا تعلق گرفت. در این کتاب که هماکنون در موزهٔ بریتانیا موجود است، یکهزار قطعه جواهر، هزاران سنگ قیمتی رنگارنگ و چند متر مربع ورقهٔ طلا به کار رفته است. قصهٔ پر غصهٔ کتاب دستنویس رباعیات خیام را بسیاری از نویسندگان جهان که شیفتهٔ این دانشمند بزرگ ایرانی بودهاند با درد و اندوه نگاشتهاند.
منبع یا منابع این مقاله ذکر نشده است اما، با تکیه بر نامهای ذکر شده (که البته صورت لاتین آنها نقل نشده و من با آزمون و خطا صورت لاتین بعضی از آنها را پیدا کردم) جستجوهایی کردم. حدس من بر اساس یافتههایم این است که مطالب بالا ترکیبی از داستانپردازیهای تنظیمکنندهٔ مقاله، داستانپردازیهای نویسندهای که کتابی تخیلی با این موضوع نوشته (این کتاب) و ادعاهای نقل شده راجع به گم شدن نسخهای از ترجمهٔ انگلیسی شاعرانهٔ فیتز جرالد از رباعیات خیام -و نه یک نسخهٔ فارسی و یک ثروت ملی ایرانی- است. حتی در کتاب داستانِ یاد شده، ذکر شده که پایان کار تهیهٔ این کتاب جواهرنشان همان سال ۱۹۱۱ بوده (اینجا را ببینید) و نقلی از یک کتاب کهن ایرانی یا فارسی نیامده. در این صفحه هم میتوانید اطلاعات دیگری راجع به این واقعه و این کتاب بخوانید و تصاویری از کتاب یاد شده را ببینید. چیزی که بر تردیدها راجع به صحت مطالب یاد شده اضافه میکند این است که تا آنجا که من از حواشی شادروان فروغی بر رباعیات خیام در ذهن دارم تا پیش از دورهٔ صفوی کتاب مستقلی به نام رباعیات خیام وجود نداشته و اکثراً رباعیات این دانشمند بزرگ ایرانی در جُنگها و مجموعهشعرها در کنار آثار شاعران دیگر نقل شده است.
این مطلب، مرا یاد مقالهٔ دیگری در مجلهٔ اطلاعات علمی، شمارهٔ پیاپی ۳۴۲، مربوط به اسفندماه ۸۶ انداخت. در صفحهٔ ۱۶ این مجله، در مطلبی با عنوان «سرویس اینترنتی به کمک فاضلاب شهری» این دروغ آوریل گوگل که به انتخاب مجلهٔ پیسیورلد یکی از خندهدارترین دروغهای آوریل گوگل بوده (اینجا) به عنوان یک مقالهٔ علمی و به شکل کاملاً جدی ترجمه و ارائه شده است.