دامنهٔ جدید

امروز دامنهٔ hamireza.ir را گرفتم. این اسم (همیرضا) یادگار دورهٔ دبستان و راهنمایی است که همکلاسی‌ها عموماً اسمم را با انداختن دال وسطش صدا می‌کردند. دامنهٔ قبلی (hrmoh.ir) را هنوز هم دارم و تمام لینکهایش قرار است به این دامنهٔ جدید ری‌دایرکت بشوند. پیشتر از آن هم که دامنهٔ اینجا گزیر (gozir.com) بود که در اصل برای پیاده‌سازی یک ایدهٔ استارتاپی ثبتش کرده بودم و وقتی کار پیش نرفت تبدیل به دامنهٔ وبلاگم شد و با افزایش شدید چند سال اخیر هزینهٔ تمدید دامنه‌های بین‌المللی از خیرش گذشتم، البته در کل خیلی هم دوستش نداشتم.

راه حل مشکل اتصال RDP روی ویندوز سرور ۲۰۲۵ و همینطور کندی اجرا تحت ویرچوال

اخیراً روی سروری با ویندوز سرور ۲۰۲۵ با این مشکل مواجه شدم که اگر با ریموت دسکتاپ به آن وصل می‌شدم و بدون لاگ‌اوت قطع می‌شدم در هنگام تلاش برای اتصال مجدد ویندوز روی صفحهٔ ورود به حالتی شبیه قفل شده (فریز) باقی می‌ماند و هیچ اتفاقی نمی‌افتاد. راه حل را در تصاویر بعدی نشان داده‌ام. ابتدا Group Policy را با اجرای gpedit.msc بالا بیاورید و طبق تصویر این تنظیم را فعال کنید.

مسیر مشکل RDP
مسیر مشکل RDP
مشکل RDP

مشکل دیگری که روی این ویندوز -که تحت ویرچوال و با نرم‌افزار QEMU بالا آمده بود- می‌دیدم کندی و لختی نسبی اجرا بود. مثلاً کلیک‌ها با کندی باز می‌شدند و یک کوئری SQL که روی ویندوز دیگری در کمتر از ۱ ثانیه اجرا می‌شد روی دیتابیس مشابه بیشتر از ۶ ثانیه طول می‌کشید تا اجرایش تمام شود. آن را هم جستجو کردم و مشخص شد که در رول‌های سرور می‌بایست Hypervisor را فعال کنم (این رول که همان Hyper V است در اصل برای اجرای یک ماشین مجازی داخل خود ویندوز کاربرد دارد). بعد از نصب این role مشکل لختی و کندیی که از آن صحبت می‌کردم مستند به زمان اجرای همان اسکریپت حل شد.

راه‌اندازی سرویس ارسال ایمیل روی ویندوز سرور با اچ‌میل‌سرور

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

تذکر مهم: من تنها نیاز داشته‌ام و دارم که ایمیل ارسال کنم (ایمیل‌های تأییدیهٔ نام‌نویسی کاربران) و هیچگاه علاقمند به دریافت ایمیل نبوده‌ام! دریافت ایمیل قطعاً مراحل بیشتری مانند باز کردن پورتهای ورودی روی دیوارهٔ آتش سرور دارد که من تجربهٔ آن را ندارم.

۰. اولین گام، اگر سرور را تازه در اختیار گرفته‌اید این است که آی‌پی آن را در سرویس‌های لیست سیاه ارسال ایمیل مثل این جستجو کنید و مطمئن شوید که آی‌پی تمیز است. اگر بعداً متوجه شوید که آی‌پی سرور در این لیستها قرار دارد نیز می‌توانید برای حذف از آنها درخواست بدهید اما فرایند حذف از این لیستها زمانبر است. اگر همان ابتدا متوجه بشوید بدون صرف وقت برای گامهای بعدی می‌توانید مسئله را با ارائه‌کنندهٔ سرور در میان بگذارید که آی‌پی دیگری روی سرور تنظیم کنند.

۱. گام اول تنظیم رکوردهای dns دامنهٔ ارسال ایمیل است. در پیشخان DNS یک رکورد از نوع A با نام mail می‌سازیم (یا اگر وجود دارد مقدار آن را ویرایش می‌کنیم) و در مقدار آن IP سرور مقصد را می‌گذاریم:

ایجاد رکورد A با نام mail برای دامنه

سپس برای آن یک رکورد از نوع MX درست می‌کنیم و مقدار آن را mail.domainname.com می‌گذاریم، مثلاً برای مثال تصویر بالا مقدار آن باید مطابق تصویر بعدی باشد.

ایجاد رکورد MX

۲. اچ‌میل‌سرور (hMailServer) را دریافت و روی سرور نصب می‌کنیم. این نرم‌افزار مبتنی بر دات‌نت ۲ است و از این جهت باید روی ویندوزهای سرور از طریق سرورمنیجر رل مربوط به NET 3.5. را هم نصب کرده باشید. برای ذخیرهٔ اطلاعات من از SQL Server که پیشتر روی سرور استفاده کرده‌ام استفاده می‌کنم:

تنظیم پایگاه داده‌های hMailServer

برای hMailServer لازم است یک رمز ادمین تعیین کنید. در مراحل تنظیم نحوهٔ اتصال به SQL Server تعیین کنید که می‌خواهید پایگاه داده‌های جدیدی ایجاد شود. اتصال به SQL Server با Windows Authentication کار نمی‌کند و با این خطا مواجه می‌شود:

به جایش مجبورید روی SQL Server کاربر با دسترسی کافی بسازید تا hMailServer بتواند پایگاه داده‌هایش را بسازد.

لازم است سرویس SQL Server را هم برایش مشخص کنید که هر گاه سرویس اس.کیو.ال ری‌استارت شد این سرویس هم ری‌استارت شود.

در صورت بروز مشکل در مراحل پیکربندی برنامه را پاک کنید و سرور را ری‌استارت کنید و مجدداً آن را نصب کنید.

۳. مرحلهٔ بعد اجرای hMailServer Administrator و اضافه کردن نام دامنه و ایجاد رکورد DKIM در DNS برای اعتبارسنجی دامنه و اسپم نشدن آن در جیمیل است. ابتدا دامنه را در برنامه اضافه می‌کنیم.

در تنظیمات SMTP هم در قسمت نام سرور محلی نام دامنه را می‌زنیم (اگر این کار را نکنیم در ارسال ایمیل نام کامپیوتر سرور گذاشته می‌شود و در بررسی میزان اعتبار ایمیل ارسال شده این خطا ظاهر می‌شود: We check if there is a server (A Record) behind your hostname).

برای رکورد DKIM طبق این راهنمایی به این نشانی می‌رویم و فرم را مطابق شکل زیر پرمی‌کنیم (selector یک رشتهٔ دلخواه است که بعداً باید هر چه اینجا وارد کردیم را داخل نرم‌افزار هم وارد کنیم):

بعد از تولید کلید خصوصی تولید شده را در یک فایل متنی با پسوند pem ذخیره می‌کنیم و روی سرور در مسیر ثابتی که بدانیم فایل از آنجا پاک نمی‌شود کپی می‌کنیم -کلیدی که من در تصویر نشان داده‌ام واقعاً استفاده نشده وگرنه کلید واقعی را باید خصوصی نگه دارید- (من معمولاً آن را در پوشه‌ای در مسیر نصب اچ‌میل‌سرور کپی می‌کنم).

و سپس در اچ‌میل‌سرور آن را انتخاب می‌کنیم و selector را هم مطابق همان چیزی که وقت تولید کلید وارد کرده‌ایم وارد می‌کنیم.

طبق راهنمای تولید در تصویر یکی قبل‌تر یک رکورد DNS هم از نوع TXT به این صورت ایجاد می‌کنید:

۴. برای دامنهٔ مد نظر باید کلید متنی SPF را هم در DNS بسازید. ساخت این کلید آسان است و طبق الگوی تصویر بعد نام دامنه و آی.پی را با مقادیر مربوط به خودتان جایگزین کنید:

v=spf1 ip4:1.2.3.4 include:domain.com ~all

۵. رکورد DMARK هم مثل SPF با یک الگو ساخته می‌شود:

v=DMARC1; p=reject; rua=mailto:report-abuse@domain.com

۶. در hMailServer زیر دامنهٔ مد نظر در قسمت Accounts ایمیل مد نظر خود را بسازید. سپس نرم‌افزاری را برای ارسال ایمیل پشت سرور نصب کنید. من از تاندربرد استفاده می‌کنم. از POP3 با پورت ۱۱۰ برای دریافت و از SMTP با پورت ۲۵ به صورت ناامن برای اتصال استفاده کنید و مطمئن شوید پشت سرور با نرم‌افزار به میل‌سرورتان وصل می‌شوید.

۷. بهتر است دی‌ان‌اس معکوس آی‌پی ارسال کنندهٔ ایمیل (reverse dns یا rDns) برابر با دامنهٔ ارسال ایمیل (mail.domainname.com) باشد. در سرورهایی که من تا به حال در اختیار داشته‌ام انجام این تنظیم در اختیار سرویس‌دهنده است و برای این کار برایشان تیکت می‌زنم. اگر این کار انجام نشود یا مثلاً به لحاظ آن که سرویس‌دهنده میزبان چند دامنهٔ ارسال ایمیل باشد و فقط برای یکی بتواند انجام شد مشکل جدی ایجاد نمی‌شود.

۸. به سایت mail-tester.com بروید و با تاندربرد به ایمیل پیشنهادی آن یک ایمیل بزنید:

و در نهایت در سایت mail-tester نتیجه را ببینید.

شاهنامه‌گردی

شاهنامه‌خوانی را که رها کرده بودم دوباره شروع کرده‌ام. حوالی ضحاکم و چه داستانی! این که برای رهایی از ستم جمشید ایرانیان اژدهاپیکری را به دست خویش بر تخت می‌نشانند که سال‌ها از مغز جوانان وطن مارهای دوشش را خوراک می‌دهد و این صدها سال طول می‌کشد و بعد این که بزرگان به او مشورت می‌دهند و او را تأیید می‌کنند.

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

در میان این نسخه‌ها نسخه‌های عجیب زیبایی دیدم. نسخه‌های جالبی را هم پیدا کردم. مثلاً این یکی که معمولاً چیزی شبیه آن راست کار من نیست (نفاست نسخه‌ها برای من بیشتر اهمیت دارد تا قدمت یا ارزش متن آنها). ویژگی آن این است که در چند برگی که من دیدم برای نوشته‌های فارسی حرکت‌گذاری کرده بودند:

قسمتی از یک متن نجومی روی گنجینهٔ گنجور

این دسته از متن‌ها نشان می‌دهند که چند صد سال پیش کلمات واقعاً چطور خوانده می‌شدند تا نظریه‌های به نظر من عجیبی مثل این در ذهنمان جا نیفتد: در نقد روخوانی من از شعر سعدی نوشته‌اند:

در خوانش شعر فارسی درست است که حرف ربط را وُ بخوانیم، نه وَ

مثلاً در فایل صوتی اول می‌گوید تو پرده پیش گرفتی وَ ز اشتیاق جمالت. درست است بگوییم تو پرده پیش گرفتی وُ (اُ) ز اشتیاق جمالت. در تلفظ صحیح خوانش اشعار فردوسی، واو اول بیت را هم اُ می‌خوانند، حتی اگه شده یک کرسی ی زیر آن بگذاریم. مثلاً این مصراع سعدی مرا به هیچ بدادی یُ من هنوز بر آنم… 

در پاسخ نوشته بودم:

قاعدهٔ روخوانی متن برای مخاطب عام معاصر آن است که به زبان متداول و لهجهٔ معیار عصر خوانده شود.

حتی این که «و» در روزگار سعدی (یا حتی فردوسی) به شیوه‌ای که فرمودید خوانده می‌شده به نظر من به شدت زیر سؤال است (منظور جایی است که به طور مشخص می‌بایست va یا به قول شما vo خوانده شود و نه جایی که به ضرورت شعر قطعاً o خوانده می‌شود).

می‌فرمایید چرا؟

به تصویر زیر نگاه کنید. طبق اشارهٔ ارسال‌کنندهٔ تصویر (کتابخانه تخصصی تاریخ اسلام و ایران ذیل این نوشته) این متن فارسی اعراب‌گذاری شده در سال ۴۸۴ هجری قمری کتابت شده است که فاصلهٔ زیادی با عصر فردوسی ندارد. به اعراب «و» دقت کنید:

فارسی اعراب‌گذاری شده

و به این یکی (اصل تصویر اینجاست که تاریخ کتابت را ۹۲۲ هجری قمری ثبت کرده):

فارسی اعراب‌گذاری شده

این که بر مبنای ریشه‌شناسی واژه و احتمالاً مکتوبات محدودی که از زبان پهلوی یا حتی فارسی میانه به دست ما رسیده چنین داوری بکنیم و قاعده و قانون صادر کنیم کار درستی نیست. کما این که این حدس من راجع به مأخذ احتمالی قاعده‌ایست که عنوان فرمودید و حدس دیگرم آن است که این قاعده «من‌درآوردی» سره‌گرایانی باشد که چون فکر می‌کنند «وَ» از عربی وارد فارسی شده برای «o» و به تبع آن «vo» هویتی ملتی قائل شده باشند و تصور می‌کنند نفی صورت اول به نوعی نفی صورت عربی آن باشد. در کل، اگر برای این قاعده مأخذی مثل نقل قول از ادیبان یا زبان‌شناسان سرشناس عنوان بفرمایید بسیار عالی خواهد شد.

از این جهت به نظر من حتی اصالت تاریخی و درستی قاعده‌ای که مطرح فرمودید هم زیر سؤال است.

اما به فرض که اینطور نباشد، یعنی واقعاً در روزگار گذشته چنین خوانشی از «و» رایج بوده (من بعید نمی‌دانم با توجه به عدم وجود رسانه‌های صوتی و تصویری و تنوع بالاتر لهجه‌ها در مناطقی چنین تفاوتهایی دیده شود و نه تنها «وُ» که «و‌ ِ» هم جاهایی رایج بوده باشد (من بشخصه در لهجهٔ دوستان شهرکردی و در محاورهٔ معمول «وُ» را به کرات شنیده‌ام)! همچنان که شاه سابق «را» را «رِ» می‌گفت. این آخری را به حساب شوخی یک بیسواد در این حوزه‌ها بگذارید)، مگر فقط تفاوت در همین یک واژه بوده؟ شما همان تصاویر اعراب‌گذاری شده را ببینید. «یکی» را «یَکی» اعراب‌گذاری کرده و عموم کلمات منتهی به های ناملفوظ (مثلاً «جسته» را) با فتحه حرکت گذاشته. آیا در این مورد عقیده ندارید باید همه را عین آن روزگار بخوانیم؟

فقط اینها نیستند. عموم واژه‌های عربی در فارسی به نحوه‌ای دیگر تلفظ می‌شوند (منظورم حروف خاص زبان عربی نیست، بعضاً حرکت حروف هم تغییر کرده، مثلا عموماً ما «مَحَبت» را «مُحَبّت» یا حتی در زبان محاوره «مُحِبت» تلفظ می‌کنیم). آیا با توجه به این تغییرات باید همهٔ این کلمات را هم مانند زبان منبع آنها تلفظ کنیم؟

و اصلا مگر کسی ادعا کرده که متن را دارد مطابق روزگار نویسنده و شاعر می‌خواند؟ آیا کسی اصلاً می‌تواند چنین ادعایی بکند؟

و حتی اگر مانند ادیبان و شاهنامه‌پژوهان چنین تلاش‌هایی در روخوانی اشعار صورت بگیرد نتیجه‌اش غیر از مصنوعی به نظر رسیدن تلاش فرد، بیشتر می‌تواند آن باشد که متنی را که فرد با گویش معاصر می‌توانست با شنیدن آن به راحتی بفهمد تبدیل به متون زمخت و غیرقابل درکی می‌کنند که شنونده می‌بایست با جستجو و پژوهش تازه به این برسد که مثلاً این «خُرامیدن» همان «خَرامیدن» خودمان است یا «مُقام» همان «مَقام» و به زعم شائبه‌ای که تلفظ متفاوت این اساتید ایجاد می‌کند (نکند اینطوری می‌خواند چون معنی دیگری دارد؟!) تفاوت معنایی ندارند (مثالهای بهتری برای این مورد وجود دارد که با آن برخورد کرده‌ام اما الان به ذهنم نمی‌رسند). حتی اگر چنین مشکلی رخ ندهد احتمال زیادی وجود دارد که خوانش‌های اینچنینی بیشتر شبیه قرائت اشعار با لهجه‌های ساختگی محلی به نظر برسد (خصوصاً زمانی که عمق اصالت‌گرایی به قواعد موهومی برای چیزی مثل قاعده‌ای که برای «و» عنوان فرمودید برسد، مثالش دم دست است: «وُزاشتیاق جمالت!»، شنونده‌ای که متن را نمی‌بیند و مثلاً از طریق پادکست به روخوانی گوش می‌کند به نظرتان اینجا چه فکرهایی می‌کند؟).

و در نهایت چه بسا که سرایندگان این ابیات به زعم باورمندان این قواعد اشعار خود را غلط می‌خوانده‌اند و نمی‌دانستند! گواهش همان تصاویر اعراب‌گذای شده.

و حالا این یک نسخه هم هست.

یک شاهنامه هم پیدا کردم که قرار بوده نقاشی‌های صحنه‌ها بعداً به آن اضافه شود و نشده و این فرایند کار را نشان می‌دهد:

شاهنامه با جای خالی برای نگارگری

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

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

جورچین فانوس خیال

این فانوس خیال را که درست کردم به نظرم رسید که می‌توانم با زحمت کمی ازروی کد پیشتر نوشته‌شدهٔ کاشی‌چینی یک بازی جورچین آنلاین بر اساس آن درست کنم.

برای کاشی‌چینی من باید می‌گشتم، عکس‌ها را پیدا می‌کردم، با اندازهٔ خاصی می‌بریدم و داخل برنامه می‌گذاشتم. اینجا یک مجموعهٔ پانزده‌هزارتایی بدون نیاز به پیدا کردن و بریدن داشتم.

همانطور که فکر می‌کردم کار سختی نبود و با کپی کدها در یک پروژهٔ جدید و تغییر ارجاعات عکس‌ها از تصاویر تعبیه‌شده داخل برنامه به نشانی‌های اینترنتی کار آماده شد. اسمش را هم فانوس خیال گذاشتم.

مشکلی که داشتم اندازهٔ مربعی عکس‌ها بود که آن هم -خداخواسته- با یک آگهی به سایر برنامه‌ها و کارهایم پر شد و در عوض برنامه را به رایگان منتشر کردم. قابلیتی هم در آن گذاشتم -و بعداً آن را به کاشی‌چینی هم اضافه کردم- که کسی که علاقه به بازی کردن ندارد و فقط می‌خواهد از آن به عنوان یک گالری برای مرور تصاویر استفاده کند بتواند با فعال کردن یک گزینه در پیکربندی -کم و بیش- به آن برسد.

چون تصاویر را هوش مصنوعی تولید کرده شاید آن کارکردی که کاشی‌چینی برای کمک به دقت بیشتر در جزئیات تصاویر را در هنگام استفاده به عنوان یک پازل دارد نداشته باشد ولی با توجه به تعداد بی‌شمار تصاویر یک سرگرمی تمام‌نشدنی برای کسی است که اینجور پازل‌ها را دوست دارد.

خاطرات و خطرات

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

آن زمانها کامپیوتر را از نزدیک ندیده بودم اما احتمالاً ایدهٔ درستی راجع به توانایی‌های آن داشتم. این روزها آن ایده را خیلی جدی نمی‌گیرم و فکر می‌کنم هر کسی از تجربه‌های شخصی خودش هر چه بگوید و بنویسد غنیمت است و تکراری نیست.

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

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

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

به این نوشته رسیدم. با افتخار متن نوشته مربوط به قبل از کشف چت‌جی‌پی‌تی است و فکر می‌کنم به انگلیسی خوبی نوشته شده. حیفم آمد که آن خاطره و نوشته را در وبلاگم نگذارم.
منتهی، شوربختانه به اینجای نوشته که رسیده‌ام انرژیم را از دست داده‌ام. از این جهت ترجمه و بازگویی ماجرا را به استاد چت.جی.پی‌تی می‌سپارم:

حذف روخوانی‌های من از گنجور

این داستان ممکن است از آن مواقع نادری باشد که از وجود یک باگ در برنامه‌نویسی خوشحال باشید، و حالا دقیقاً در چنین موقعیتی هستم!

داستان از شب قبل شروع شد، وقتی که یکی از طرفداران دکلمه‌های شعرم (بله درست خواندید، برخی افراد واقعاً ادعا می‌کنند که صدای من و دکلمه‌های شعرم را دوست دارند و به نظر می‌رسد که کاملاً جدی هستند!) با من تماس گرفت و شکایت کرد که سایت شرور گنجور تمام دکلمه‌های ارزشمندم را به طور مخرب حذف کرده است (او نمی‌دانست که من خودم مالک آن سایت “وحشتناک” هستم!) و دنبال جای دیگری می‌گشت تا صدای “زیبای” من را گوش کند.

من فوراً پاسخ دادم که چنین چیزی امکان ندارد، او اشتباه می‌کند و هیچ مشکلی در دکلمه‌های من وجود ندارد. اما بعد، برای اطمینان از هرگونه مشکل جزئی، رفتم تا یکی از دکلمه‌هایم را گوش کنم و…
بوم!!!
حتی یک دکلمه از من در سایت نبود! نکته جالب این بود که دکلمه‌های بقیه افراد به خوبی و بدون هیچ مشکلی در دسترس بودند.

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

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

اما این سناریو منطقی به نظر نمی‌رسید. چه کسی چنین دانش عمیقی از ساختار داده‌ها دارد؟ و این شخص باید از صدای من به شدت متنفر باشد!

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

آن بخش از داده‌ها را به پایگاه داده فعال وارد کردم و پس از کمی تلاش، داده‌ها را بازگرداندم و درست کار کردند. به “طرفدار” عزیز اطلاع دادم که داده‌ها بازگردانی شده‌اند تا بتواند لذت ببرد و چون عادت دارم زود بخوابم، به رختخواب رفتم، اما نمی‌توانستم بخوابم. این اتفاق چگونه رخ داده بود؟ اگر حمله‌ای هکری بود، ممکن بود دوباره اتفاق بیفتد، و اگر یک باگ بود، باز هم ممکن بود تکرار شود.

بلند شدم و بررسی کردم ببینم چه اتفاقی افتاده است. اگر دسترسی مستقیم به پایگاه داده نباشد، دو API وجود داشت که می‌توانستند این کار را انجام دهند.

اولین API، به کاربر اجازه می‌دهد دکلمه‌هایش را حذف کند، فایل‌های فیزیکی سیستم را نیز پاک می‌کند و یک گزارش ثبت می‌کند. احتمالاً این مورد نبود، چون فایل‌های فیزیکی دست‌نخورده بودند و هیچ گزارشی از این API وجود نداشت. اگر این API باعث این مشکل شده بود و فرض کنیم یک باگ از حذف فایل‌ها جلوگیری کرده باشد، باید بیش از ۲۰۰۰ بار فراخوانی می‌شد تا تمام داده‌ها حذف شوند، و فکر نمی‌کنم هیچ هکری آن‌قدر صبر داشته باشد!

API دوم، اجازه می‌دهد کاربر حساب کاربری خود را حذف کند، که این یک ویژگی حریم خصوصی است. و این احتمال بیشتری داشت، چون می‌توانست تمام داده‌ها را در یک مرحله حذف کند. به یاد آوردم که صبح همان روز یک حساب موقت را حذف کرده بودم (قبل از گرفتن نسخه پشتیبان). اما لینک حذف نهایی را زمانی کلیک کرده بودم که با حساب اصلیم لاگین شده بودم.

یک باگ در میانهٔ راه باعث شده بود که حساب اصلی من به طور کامل حذف نشده باشد. دوباره بررسی کردم و دیدم که تمام نظراتم هنوز موجود هستند.

بنابراین، هیچ هکری وجود نداشت و آن شخص حائز دانش دقیق برای هدف‌گیری داده‌های من (و صاحب تنفری شدید از صدای من) کسی نبود جز خودم!

خیالم راحت شد و توانستم بخوابم.
امروز یک اصلاحیه اضافه کردم تا مطمئن شوم که لینک حذف فقط توسط همان کاربری که درخواست داده، کلیک شود و متأسفانه باگ دوست‌داشتنی‌ای که باعث نجات من شد را از بین بردم! چه ناسپاس!

هوش مصنوعی بازی

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

شاهنامه‌خوانی را به دلیل سرگرمی دیگری که تصادفاً به آن برخوردم رها کردم. داشتم در لینکدین پرسهٔ بیهوده می‌زدم که فراخوان شرکتی را دیدم که خواسته بود پروژه‌های بازمتن و شرکتها از اعتبار رایگان اعطاییشان برای استفاده از سرویس‌های هوش مصنوعی استفاده کنند. اول فکر کردم که خوب با آن چه کنم؟ بعد خاطرم آمد که چقدر در همان جریان شاهنامه‌خوانی، کار سختی است برگرداندن شعر به نثر سادهٔ امروزی و فکر کردم اگر یک پیش‌نویس اولیه -هر چند نادقیق و نادرست- آماده شده باشد کار چقدر راحت‌تر خواهد شد.

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

هوش مصنوعی و تعبیراتش از شعرها، خوب، همه جا خوب نیست. خیلی جاها به طنز شبیه شده و باعث خنده.

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

برگردیم به مقدمهٔ ماجرا: من هوش مصنوعی را می‌خواستم که کار شاهنامه‌خوانیم را آسان کند و بعد شاهنامه‌خوانی را به خاطر هوش مصنوعی رها کردم! شد غلامی که آب جوی آرد، آب جوی آمد و غلام ببرد!

ابْرِ فرصت

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

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

قبل از آن و بعد از آن تا امروز دیگر در تهران و اراک هوا را این شکلی ندیدم.

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

من خودم را آدم تجربه‌دیده‌ای نمی‌دانم. چندان سفر نرفته‌ام و با آدمها زیاد دمخور نبوده‌ام. اینها باعث می‌شود که تجربیاتم محدود به دنیای کامپیوتر و اینترنت و کتابها باشد. اما فکر می‌کنم همین باعث می‌شود تجربیات و خاطرات من برای دیگرانی که جور دیگری زندگی کرده‌اند جالب باشد.

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

پی‌نوشت: در حاشیه‌ای بر این شعر منبع عنوان این نوشته را نشان داده‌ام:

متن شعر در «دیوان حافظ، قاسم انوار و شمس مغربی به خط میر علی کاتب سلطانی نسخه‌برداری شده در سال ۹۲۷ قمری» این است:

بگذشتن فرصت ای برادر
در گرم روی چو باد باشد

دریاب که عمر بس عزیز است
گر فوت شود فساد باشد

در روایتی که اینجا آورده شده به جای «باد» «میغ» گذاشته و برای تصحیح قافیه به جای «فساد» «دریغ» آورده. فارغ از این که این شعر اصلاً از آن چه کسی است روایت اینجا تلاشی برای تبدیل این شعر به ترجمهٔ منظوم این حدیث امام علی (ع) است:

قال علیٌ (علیه‌السّلام): «الفُرصَه تمُّر مرِّ السَحاب فانتَهِزوا فُرَصَ الخَیّر»

امام علی (علیه‌السلام) فرمود: «فرصت مانند ابر  می‌گذرد، پس مواقعی که فرصت‌های خیری پیش می‌آید غنیمت بشمارید و از آن‌ها استفاده کنید».

ناخوانایی پاسخ کد دستوری (USSD)

چند وقتیه جواب کد دستوری (مثلاً #1*) روی موبایل من این شکلی شده:

USSD Response Codepage problem

روی همراه اول و ایرانسل هر دو امتحان کردم پس به اپراتور ربط نداره. تنظیمات زبان گوشی (اندرویدی، پوکوفون اف۱) روی فارسیه و تنظیمی رو اخیراً تغییر نداده‌م (یه بار هم زبان گوشی رو انگلیسی کردم مشکل حل نشد). گوشی هم مدتهاست آپدیتی نگرفته. گشتم راه حلی پیدا نکردم.

اگر کسی راه حلش رو می‌دونه لطفاً توی نظرات بنویسه به درد بقیه هم ممکنه بخوره.

پیاده در گشت شاهنامه

می‌دانید؟ من تا پایم را روی زمین جایی نگذاشته باشم احساس نمی‌کنم آنجا رفته‌ام، هر چند از آنجا سواره بارها عبور کرده باشم! و از آنجاهایی که پا بر زمینشان گذاشته‌ام؟ خاطرهٔ چندانی ندارم! همینقدر پوچ!

سالها پیش در سرم افتاد که بوستان و گلستان را بخوانم.

من بر خلاف بعضی آدمهایی که دیده‌ام -آنها که وقت خواندن لبشان هم می‌جنبد- با چشم و عبوری چیزها را می‌خوانم. کلمات را جا می‌اندازم و از متن کلیت و مفهومش را می‌فهم. سریع اما کم‌مایه. خواندنم شبیه سواره عبور کردن است. خواندن حساب نمی‌شود.

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

کار پرزحمتی بود و انجامش دادم. و البته در کنار آن کارهای پرزحمت دیگری هم مثل فهرست‌گذاری نسخه‌های خطی و چاپی گلستان روی گنجینهٔ گنجور را هم به پایان رساندم. بعدها تصاویر کتاب شرح گلستان دکتر خزائلی و همینطور نسخهٔ خطی منسوب به یاقوت مستعصمی را هم به آن اضافه کردم. به نظرم الان گلستان گنجور که پیشتر مهمترین مایهٔ دشنام و خجالت بود مایهٔ آبروی گنجور هم هست.

من در دوران بچگی از روی یک دورهٔ چهارجلدی برگردان مثنوی (که در ذهنم نام محمد محمدی ری‌شهری به عنوان مؤلف آن ثبت شده!) و جایزه یا هدیه گرفته بودمش مثنوی را –سواره– خوانده‌ام. اما شاهنامه را هیچگاه نخوانده‌ام.

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

غیر از آن تلاش می‌کنم تصاویر نسخه‌های خطی شاهنامه‌های گنجینهٔ گنجور را هم به شعرها اضافه کنم. امیدوارم با وجود تلاشی که برای پیدا کردن کلمات در این دستنوشته‌ها لازم است برای شاهکارهای آینده‌ام چشمی باقی بماند!

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

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

محض خالی نماندن عریضه پس از یک ماه سکوت تحریر شد!