بازی خطوط و یک مجموعهٔ دیدنی

از بازیهای ساده و وقت‌پرکن خوشتان می‌آید؟ روی تصویر زیر کلیک کنید. باید در هر ردیف یا ستون حداقل ۵ توپ همرنگ را کنار هم بنشانید تا آنها را با هم ببرید و این کار را تا وقتی جا دارید تکرار کنید.

Lines Game

خالق این بازی چیز مهمتری هم درست کرده: او یک کتابخانهٔ جاوا اسکریپت برای آسان کردن کار با عناصر گرافیکی برداری ساخته که از فناوریهایی همچون SVG و VML استفاده می‌کند. مهم نیست که برنامه‌نویس وب باشید یا نه، به نظرم اگر سری به سایت این کتابخانه بزنید گالری نمونه‌کارهای قابل انجام با این کتابخانه جذبتان خواهد کرد. به اینجا بروید و روی نمونه‌ها یکی یکی کلیک کنید.

نمونه کارهای قابل انجام با کتابخانهٔ رافائل

صلاح کار کجا و …

دربارهٔ این بیت:

صلاح کار کجا و من خراب کجا؟

ببین تفاوت ره کز کجاست تا به کجا!

و اشکال قافیه‌اش بحثی در حاشیه‌های غزل در گنجور شده بود (اینجا). امروز آقای مهران ارشادی‌فر این حاشیه را گذاشته‌اند:

این را از قول برادر مرحومم مسعود ارشادی‌فر نقل می‌کنم که شاعر بود و حافظ را خوب می‌شناخت. در تفسیر این اشکال قافیه‌ای می‌گفت این را می‌گویند «اجرا در متن». انتخاب قافیهٔ «به» برای شعری که قافیه‌اش باید «ب» باشد، در واقع مصرع قبل -صلاح کار کجا و من خراب کجا- را تفسیر می‌کند: یعنی چون حال حافظ خراب است صلاح کار از دستش می‌رود و به جای قافیهٔ «ب» قافیهٔ «به» در شعر می‌آورد. این تعبیر به نظرم بسیار درست است چون با شناختی که از حافظ داریم بی‌گمان در انتخاب قافیهٔ مناسب دچار مشکل نمی‌شد.

این نظر را من بسیار می‌پسندم: حافظ را در نظر آورید که رندانه -و با لحن خرابانه- خواندن غزل تازه‌اش را می‌آغازد و با صدای لرزان، هنرمندانه، در پایان مصرع دوم میزان خرابی حال شاعر را با کسرهٔ نامنتَطَر در جایگاه قافیه می‌نمایاند.

فایرفاکس در فایرفاکس

این نشانی را با فایرفاکس مرور کنید (با کلیک کار نمی‌کند باید آن را به صورت دستی کپی کنید):

chrome://browser/content/browser.xul

انتظار دارم با چیزی در این مایه‌ها مواجه شوید:

فایرفاکس در فایرفاکس

دلیلش را لابلای این نوشته می‌توانید بیابید.

«در واقع»

گفتگوی ایران صدا دربارهٔ گنجور که پیشتر خبرش را داده بودم هم‌اکنون در آرشیو سایت ایران صدا در دسترس قرار گرفته است. علاوه بر آن که فرصت کافی برای طرح قسمت زیادی از مطالبی که آماده کرده بودم پیش نیامد مسألهٔ آزاردهندهٔ دیگر، تکرار پشت سر هم و بلاانقطاع عبارت «در واقع» در اول و وسط و آخر جمله‌ها توسط من بود که در نوع خودش -فکر می‌کنم- تعجب‌برانگیز و رکوردشکن باشد. با عذرخواهی پیشاپیش بابت این درواقع‌باران اعصاب‌خردکن غیرعمدی (و پساپس از دوستانی که به شکل زنده خود را در معرض آن قرار دادند، به ویژه مجری محترم برنامه و دست‌اندرکاران آن که مجبور به تحمل آن بودند) اگر احیاناً هنوز علاقمند بودید این گفتگو را بشنوید می‌توانید با مراجعه به این صفحه و انتخاب بخش مربوطه (آیکون سبزرنگ متناظر با آن در تصویر زیر مشخص است) آن را به شکل آنلاین بشنوید.

این صدای پارسی، گفتگو پیرامون گنجور

برای دریافت آن با سه کیفیت متفاوت نیز می‌توانید از سمت چپ‌ترین گزینه در پایین این صفحه استفاده کنید.

دریافت گفتگوی ایران‌صدا دربارهٔ گنجور

لطفاً ببخشید!

گنجور در ایران‌صدا

چهارشنبه بیستم بهمن، ساعت ۱ بعدازظهر در برنامهٔ زندهٔ رادیو-تی‌وی اینترنتی ایران‌صدا حضور خواهم داشت، موضوع بحث مرتبط با گنجور است. اینجا در این باره بیشتر بخوانید.

رابط برنامه‌نویسی گنجور رومیزی – بخش دوم

در ادامهٔ بحث نوشتهٔ پیشین در این نوشته به عنوان یک نمونهٔ عملی از نحوهٔ استفاده از رابط برنامه‌نویسی گنجور رومیزی، من قسمتی از یک فایل docx در دسترس از طریق سایت تصوف ایران -مربوط به اشعار وحدت کرمانشاهی- را به کمک تکه کدی که شرح آن در ادامه می‌آید به قالب گنجور رومیزی تبدیل کرده‌ام (اصل فایل اینجاست، من آن را دریافت کرده‌ام، با کمک ورد ۲۰۰۷ با پسوند docx ذخیره کرده و آن را در فایل زیپ پروژهٔ مربوط به این مطلب -قابل دریافت از این نشانی– گنجانده‌ام، به‌روزآوری: پروژهٔ به‌روز شده را می‌توانید از گیتهاب دریافت کنید، از اینجا).

برای انجام این کار باید علاوه بر ویژوال استودیو (با امکان برنامه‌نویسی برای سکوی ‎.NET ویرایش ۳.۵ یا ۴) کتابخانهٔ برنامه‌نویسی OpenXML را نیز نصب داشته باشید. این کتابخانه را از این صفحه دریافت و نصب کنید (OpenXMLSDKv2.msi با حجم کمتر از ۴ مگابایت برای مقصود مورد نظر ما کافیست، البته پیش‌نیاز نصب این کتابخانه سکوی ‎.NET ویرایش ۳.۵ با سرویس پک ۱ است).

پس از نصب کتابخانهٔ یاد شده و ایجاد پروژه، ارجاع متناظر با آن را به فهرست ارجاعهای پروژه اضافه می‌کنیم تا فضاهای نام مورد نیاز در دسترس قرار گیرند.

ارجاعهای لازم برای دستیابی به کتابخانهٔ OpenXML شامل DocumentFormat.OpenXml و WindowsBase است

برای پیاده‌سازی تبدیل مورد نظر لازم است الگوی تایپ فایل ورودی را استخراج کنیم. با بررسی ظاهر فایل ورودی الگوی عمومی زیر را مشاهده می‌کنیم:

سلولهای جدول حاوی متن اشعار در فایل ورودی مورد نظر

بنابراین در ترتیب معمول بازخوانی محتوای این فایل (چگونه فایل تایپ شده): هر مصرع در تمام سلولهای حاوی متن از مصرعهای دیگر با یک break جدا شده است. محتوای سلول اول جدول (۱)، مربوط به مصرعهای اول ابیات است، بعد از این سلول، سلولی خالی داریم (۲)، محتوای سلول بعدی (۳) مربوط به مصرعهای دوم ابیات است، بعد یک سلول خالی (۴) (استثنایی وجود دارد که توضیح می‌دهم)، بعد سلولی شامل دو مصرع متوالی که مربوط به بیت تخلص شاعر است (۵) و پس از آن تا شعر بعدی یک سلول خالی دیگر داریم (۶).

پس ما در هنگام تبدیل فایل ورودی در هر لحظه انتظار یکی از سه نوع سلول جدول مصرعهای سمت راست، چپ یا وسط را می‌کشیم:

ادامه خواندن “رابط برنامه‌نویسی گنجور رومیزی – بخش دوم”

رابط برنامه‌نویسی گنجور رومیزی – بخش اول

یکی از نکاتی که شاید به کار برنامه‌نویسانی بیاید که دوست دارند در گسترش دامنهٔ داده‌های گنجور با استفاده از گنجور رومیزی مشارکت کنند این است که بدانند تنها راه تبدیل منابع اینترنتی یا فایلهای موجود به فرمت گنجور رومیزی کپی دستی اشعار از این منابع در ویرایشگر گنجور رومیزی نیست و می‌توان با استفاده از ‎C#‎ یا هر یک از دیگر زبانهای ‎.NET تقریباً به آسانی فایلهای مناسب برای نمایش در گنجور رومیزی را ساخت.

البته همانطور که احتمالاً این دسته از دوستان مطلعند فایلهای گنجور رومیزی در واقع پایگاه داده‌های SQLite هستند و راه متداول برای ایجاد آنها به کمک زبانهای برنامه‌نویسی، استفاده از دستورات SQL است که نیازمند بازبینی ساختار پایگاه داده‌های برنامه و به دست آوردن روابط بین جداول است. اما روشی که در این نوشته در مورد آن توضیح خواهم داد آسان‌تر است.

مقدمهٔ کار در ویژوال استودیو، اضافه کردن یک ارجاع به اسمبلی ganjoor.exe است (فایل اجرایی گنجور رومیزی که در مسیر نصب برنامه قرار دارد) تا فضای نام ganjoor در برنامه در دسترس قرار گیرد.*

اضافه کردن ارجاع در ویژوال استودیو
ارجاع به اسمبلی گنجور رومیزی در ویژوال استودیو
[code lang=”c#”]
using ganjoor;
[/code]

پس از این کار به کلاس اصلی مدیریت داده‌ها در گنجور رومیزی که DbBrowser نام دارد دسترسی داریم. تکه‌کد زیر -که به نظرم به اندازهٔ کافی گویاست- نشان می‌دهد که چگونه می‌توان با استفاده از این کلاس (و کلاسهای جانبی فضای نام ganjoor که اطلاعات داده‌ها را در خود دارند) یک فایل سادهٔ gdb یا s3db ساخت که گنجور رومیزی توانایی نمایش اطلاعات آن را دارد:

ادامه خواندن “رابط برنامه‌نویسی گنجور رومیزی – بخش اول”