
از مستند داستان پایتون
سوء تفاهم نشود، مشکل جسمانی ندارد:
نوشتههای گاه و بیگاه حمیدرضا محمدی
این چیست؟
این راهکار خلاقانهٔ هوش مصنوعی کلود برای صفحهبندی یک فهرست از اطلاعات است!
این چند وقته من سرخوش از تواناییهای این هوش مصنوعی معجزهوار کارهای زیادی با آن انجام دادم و خیلی وقتها مطمئن از نتیجهٔ کار -بلافاصله پس از انجام کار- نتیجه را بازبینی نکرده منتشر کردم.
امروز سری به فهرست کاربران گنجور زدم که صفحهاش را به طور کامل کلود درست کرده و با این صحنه مواجه شدم!
پیشتر یک نسخهٔ آفلاین گنجور را (پشتیبان قدیمی از نسخهٔ اصلی با دستکاری کدها جهت عدم نیاز به مراجعه به cdnهای بینالمللی) برای دسترسی ایرانیان محصور راهاندازی کرده بودم. راجع به آن اینجا اطلاعرسانی کرده بودم.
چند وقت پیش از آن راه حلی برای ارجاع کاربر بر اساس آی.پی به دو سرور متفاوت پیدا کرده بودم و با استفاده از آن کنتور را روی دو سرور مختلف در دسترس گذاشتم (شمارهٔ ۲ در این مطلب).
پیشتر در این نوشته دربارهٔ فلسفهٔ پشت سرور خارجی برای گنجور اشارهای کرده بودم. فکرم این بوده که من و کسانی مثل من که اجباری برای استفاده از میزبانی سرورهای داخلی ندارند -درگاه پرداخت ندارند، کار تجاری نمیکنند و لازم نیست برای مجوزهای لازمه داخل میزبانی بشوند و …- اگر بودجهاش را بتوانند فراهم کنند بهتر است با انتقال میزبانی سایتهای مهم خودشان به خارج از ایران هزینهٔ قطع اینترنت را بالا ببرند.
با قطع این بارهٔ اینترنت -به لحاظ آن که اجباراً با قطع دسترسی به گنجوری که روی اینترنت و نه شبکهٔ داخلی ایران در دسترس بود مدتی از فرایند روزانهٔ رسیدگی به ویرایشها و خوانشها و … گنجور رهیدم- مدتی آسایش بیشتر داشتم و چندان ناراحت نبودم. بعد از آن هم با مشکلاتی که برای گنجور پیش آمد از آنجا که به عنوان یکی از مهمترین کاربران گنجور به آن دسترسی نداشتم آنقدرها ککم نگزید. تا آن که یواش یواش تماسها شروع شد و من متوجه شدم در دسترس نبودن گنجور برای محصورین با در دسترس نبودن آن به کلی تفاوت زیادی دارد. گنجور برگشت. همچنان که پیشتر گفتم مدتی بعد از آن گنجور آفلاین را راه انداختم که با چند اطلاعرسانی بالای دههزار بازدید در روز پیدا کرد.
بعد از آن و در پی طولانی ماندن قطعی اینترنت به صرافت آن افتادم که همان طرح کنتور را برای گنجور هم اجرا کنم.
چیزی که بعد از پیادهسازی این طرح (پاسخگویی بازدیدهای ایران با یک کپی قدیمی از گنجور و بازدیدهای خارج با گنجور با سرور اصلی) به نظرم جلب توجه کرد آن بود که بلافاصله تعداد بازدیدهای گنجور جمعاً به حدودی نزدیک به دوران قبل از قطعی اینترنت برگشت. قبل از قطع اینترنت گنجور روزانه نزدیک به پانصدهزار بازدید داشت.
بعد از راهاندازی راهکار دوسروره با احتساب بازدیدهای خارجی:
و بازدیدهای داخلی:
یعنی انگار بازدیدکنندهها پشت این در بسته، منتظر بازگشایی آن بودند تا با همان شدت چند ماه پیش به داخل هجوم ببرند.
تفسیر بدبینانهٔ این رخداد به نظرم آن است که بازدیدکنندگان گنجور عموماً گذری و ارجاعی موتورهای جستجو و … هستند و آنهایی که مستقیم مراجعه میکنند و باید مطلع بشوند گنجور برگشته تا به آن مراجعه کنند آنقدر کمند که تأثیرشان در آمار کلی قابل مشاهده نیست.
امروز برای دومین بار پایگاه دادههای کنتور را نابود کردم.
مدتهاست که درگیر مشکل حجم بالای اطلاعات درج شده در این پایگاه دادهها به خاطر بازدیدهای بالای گنجور بودم. اتفاقی که میافتاد این بود که با افزایش حجم دادهها گزارشگیری در آن به مشکل برمیخورد. برای حل مشکل تصمیم گرفتم ریز بازدیدها را در قالب گزارشات نهایی مورد نیازم جمعبندی کنم و بعد ریز بازدیدها را پاک کنم. منتهی مشکل به این راحتی قابل حل نبود. گزارشگیری و حذف اطلاعات از جدولی شامل نزدیک به سی میلیون رکورد برای همین کار هم زمانبر بود. تصمیم گرفتم دادههای قدیمی را با اجرای یک پرسوجوی حذف به صورت دستی حذف کنم. این هم فکر خوبی نبود و بعد از گذشت نزدیک به دو ساعت -وقتی اجرای پرسوجوی حذف به پایان نرسید و تلاش من برای توقف آن ناکام ماند- سرویس پایگاه دادهها را راهاندازی دوباره کردم و بعد، من ماندم و یک پایگاه دادههای گیر کرده در وضعیت بازیابی (recovery). درد سرتان ندهم: در غیاب چتجیپیتی کمی با نسخهٔ خنگ آفلاین دیپسیک سر و کله زدم و وقتی به نتیجه نرسیدم به امید آن که با حذف فایل لاگ (log) و بارگذاری مجدد پایگاه داده (با ساخت مجدد این فایل) وضعیت اصلاح شود فایل لاگ را پاک کردم. نتیجه آن چیزی که فکر میکردم نبود و سرویس پایگاه دادهها دیگر این فایل را گردن نگرفت. این شد که مجبور شدم پایگاه دادههای برنامه را از نو بسازم.
در این فرایند آمارهای سایتهای خودم آنقدرها اهمیتی نداشت. اما میدانم کنتور کاربران دیگری داشت که آمار سایتهای خودشان را از آن میگرفتند. غیر از آن که آمار آنها از دست رفته، حساب کاربریشان پاک شده و کدهای رهگیری که در سایتهایشان گذاشتهاند هم خطا میدهد.
این اولین بار نیست که دادههای کنتور را خراب میکنم. اگر این بار هوش مصنوعی کمکی به بازگرداندنش نکرد دفعهٔ قبل عامل اصلی خرابکاری بود.
برای حل همین مشکل سری قبل از چتجیپیتی پرسیدم که چطور میتوانم حجم بزرگی از دادهها را پاک کنم (قضیه مال چند ماه پیش است)، پیشنهاد داد جدول را TRUNCATE کنم و من بدون تحقیق در مورد پیشنهادش همان اسکریپتی را که نوشته بود اجرا کردم. نتیجه: دادههای آماری همه یکباره پاک شدند. حداقل دفعهٔ قبل اطلاعات کاربران و دامنههای تعریف شدهٔ آنها سر جایشان مانده بود.
در هر حال از جمله دستاوردهای خرابکاری اخیر شاید آزاد شدن ۲۵۰ گیگابایت فضا روی سرور باشد.
غیر از آن متوجه شدم که باز هنگام تلاش برای حل مشکلات رهگیری آمار بازدیدکنندگان نسکبان یکی از پیشنهادهای هوش مصنوعی را بدون بررسی جایگزین کرده بودم. پیشنهاد هوش مصنوعی فقط شامل بخشهای نیازمند تغییر کد بود و اشاره کرده بود که بقیهٔ بخشهای کد باید دست نخورده بماند و من بدون دقت پیشنهاد ناقصش را جایگزین کد کامل کرده بودم.
نکتهٔ دیگری هم فهمیدم.
من فکر میکردم که با قطع اینترنت و از آنجا که سروری که کنتور روی آن راهاندازی شده داخلی است و از روی اینترنت دیده نمیشود آمار گنجور باید صفر یا نزدیک به صفر باشد (خود گنجور روی اینترنت در دسترس است). از بررسی آمار قبل از حذف اطلاعات و حتی بعد از آن متوجه شدم که آمار سیمکارتهای سفید (آنها که هم اینترنت دارند و گنجور را میبینند و هم اینترانت داخلی و کنتور را میبینند) خیلی بیشتر از آن چیزی است که تصور میکردم. چون روی کنتور عملاً آمار اینهاست که ثبت میشود و در آن حدی که تصور میکردم کم نیستند (آمارهای پاک شده که تا ۳۰ روز پیشتر را هم روی رابط کاربری نشان میداد مشخص میکرد که این نیست که یک دفعه و به دلیل عرضهٔ رسمی اینترنت طبقاتی آمار اینها افزایش پیدا کرده باشد و در طول مدت این قطعیِ حالا بیش از یک ماهه اینها به اینترنت دسترسی داشتند). نکتهٔ جالبش این است که در میان این دوستان علاقمندان گنجور هم کم نیستند!
این آمار مال همان چند ساعت دیروز است که پایگاه دادههای کنتور را از نو ساختم:
پیشتر این رباعی را خطاب به گروهی از میان اینان ساخته بودم که اهل سیاست و صاحب مقامند و تغییرات توییتر ایلان ماسک در نمایش موقعیت صاحب حساب کاربری رسوایشان کرد:
در فنّ سیاهبازی این صاحب جاه
بودی تو به خود غرّه که ایلان ناگاه
از بازی روزگار کردت آگاه
خطّ تو سفید گشت و روی تو سیاه!
پینوشت: آمار یک روز کامل (۱۴ فروردین):
این یکی هم نشان میدهد که این بازدیدها را حدود ۱۴۰۰ سفیدخط مجزا مرتکب شدهاند:
و یادآور میشود که تعداد بازدیدکنندگان گنجور منطقاً درصد کوچکی از کل صاحبان این خطها باید باشد شاید اصلاً به درصد هم نرسد.
روزگاری دورتر بدون اینترنت و تنها با یک کامپیوتر میتوانستید برنامه بنویسید. آنقدر اینترنت کم بود که همراه ابزار برنامهنویسی سه عدد سی دی مستندات ابزار (MSDN) ارائه میشد که در زمان خودش حجیم محسوب میشد. هوش مصنوعی برای اتکا و رفع مشکل وجود نداشت و ابزار برنامهنویسی نه تنها نیازی به اینترنت نداشت که عموماً از وجود چنین پدیدهای بیاطلاع بود!
آن دوران گذشته و الان همهٔ ابزارهای برنامهنویسی بهروز به اینترنت وابسته هستند.
من این روزها عمدتاً در سمت سرور (backend) با NET. و در سمت کلاینت با فلاتر و گاهی با vue.js برنامهنویسی میکنم که همه برای ساخت یک برنامهٔ کامل به اینترنت نیاز دارند.
اما موضوع این روزهای من ساخت یک برنامه از اول نیست و عمدتأ نگهداری و بهروزرسانی برنامههای موجود است.
به نظرم رسید با توجه به عدم دسترسی به هوش مصنوعیها و جستجو و اینترنت نکتههایی که این روزها کارم را راه انداخته مستند کنم بلکه -خدای نکرده- بعداً باز به درد خودم یا به درد دیگران بخورد.
اولین مورد ساخت برنامههای وبی مبتنی بر فلاتر بدون اتکا به اینترنت جهانی است. وقتی یک برنامهٔ فلاتری مبتنی بر وب میسازید عمدتاً منابعی مانند اسکریپتهای اساسی (canvaskit.js) و همینطور فونتها را از روی CDNها دریافت میکند. برای جلوگیری از این کار اولاً تمام فونتهای مورد نیاز (به طور خاص Roboto که برای نمایش متون لاتین از آن استفاده میشود) را داخل pubspec.yaml بگنجانید. نکتهای که در مورد VS Code به آن باید توجه کنید که تغییر و ذخیرهٔ این فایل باعث تلاش برای دریافت بستههای مورد نیاز میشود. برای جلوگیری از این کار آن را خارج از VS Code ویرایش کنید و پس از باز کردن پروژه با VS Code تمایل به دریافت مجدد بستهها را تأیید نکنید. سپس در هنگام ساخت نسخهٔ وب از سوییچ عدم استفاده از cdnها استفاده کنید مثل این:
flutter build web --no-pub --no-web-resources-cdn
به این ترتیب خروجی نهایی مراجعه به cdnهای جهانی نخواهد داشت. این دو آرگومان اضافه را میتوانید در launch.json بگنجانید تا در ساخت نسخهٔ اشکالزدایی هم دچار مشکل نشوید.
سوییچ no-pub– روی ساخت خروجی اندروید هم کار میکند.
بیاینترنتی خصوصاً عدم دسترسی به یوتیوب و پادکستهای روزمره باعث شده به سرگرمیهای قدیمی برگردم.
سریال امن (safe) را بیشتر به خاطر بازیگر نقش اولش –دکستر خودمان– انتخاب کردم و دیدم. به نظرم فوقالعاده بود. پرکشش، پرماجرا و پر پیچش. به هرکسی که دنبال این ویژگیهاست توصیهاش میکنم
مستند Wild wild country دربارهٔ دار و دستهٔ اوشو را هم دیدم و پسندیدم. دربارهٔ یک گروه شبهمذهبی (هر چند در اصول عقاید ضدمذهبی) و تقابل جامعهٔ مسلط (بیشتر در آمریکا و کمتر در هند) با تابوشکنیهای آنهاست.
سریال نوجوانی را هم دیدم. جدای از بازیهای فوقالعاده و جابجایی زاویه دید روی شانهٔ بازیگران آنقدرها که ازش تعریف کرده بودند مرا جذب نکرد.
با توجه به این که حتی دیتاستترها اینترنت ندارند کم کم دارد زمان اعتبار گواهینامههای ssl سایتهایی که از آنها نگهداری میکنم تمام میشود. باید شروع کنم نسخههای http آنها را اولویت بدهم. احتمال دارد برای بعضی برنامههایی که از آنها نگهداری میکنم و پشتشان ارتباط اینترنتی دارند مشکل پیش بیاید. باید نسخههای وب مبتنی بر IP با ارتباط رمزگذاری نشده از آنها درست کنم. امکان ساخت بیلد جدید از آنها (که تقریباً همه با فلاتر درست شدهاند) به دلیل عدم دسترسی به مخازن برنامهنویسی که هنگام نسخهگذاری مورد نیاز است وجود ندارد.
گنجور را از ابتدای قطع اینترنت دیگر ندیدهام و نمیدانم که سرپاست یا نه.
در ایدهپردازی برای داستان گنجنامهٔ حاجی جلال در توجیه آن که کسی گنجی را در خانهاش پنهان کند به این فکر کرده بودم که بخواهد فرزندانش با انگیزهٔ رمزگشایی شعر گنج اهل ادب و فرهنگ بار بیایند.
امروز خبری را در کانال تلگرام بیبیسی فارسی دیدم (اینجا):
ایدهای هوشمندانه برای فروش یک کتاب! این گنج که پیدا شده اما طبق خبر دیگری در سایت بیبیسی این ایده مقلدانی هم داشته که گنجهای آنها هنوز پیدا نشده (داستان کامل آن کتاب را در این صفحهٔ ویکیپدیا بخوانید).
چند وقت پیش جایی -که حالا پیدایش نمیکنم- در مورد این خواندم که یک فرد یا گروه ترانهساز (خارجی) معروف، برای ساختن ترانههایشان از تکنیک قطع و برش استفاده میکردهاند به این صورت که خطوط بریده شدهٔ متون روزنامهها را به شکل تصادفی کنار هم میگذاشتهاند تا آن که متن حاصل فرم شعرگونه پیدا کند. چیزی شبیه خطوط شعر نو که در بسیاری موارد بدون هیچ زمینهٔ قبلی (انگارکن که ما مقدمهٔ متن را نخواندهایم) با یک جملهٔ بیربط و روی هوا شروع میشوند و در ادامه باز با جملاتی بیربط ما را در فضای شعری قرار میدهند:
سلام ای شب معصوم!
میان پنجره و دیدن
همیشه فاصلهایست.چرا نگاه نکردم؟
مانند آن زمانی که مردی از کنار درختان خیس گذر میکرد …چرا نگاه نکردم؟
انگار مادرم گریسته بود آن شب …
نه این که منظورم این باشد که فروغ از این تکنیک استفاده میکرده، خواستم مثال آورده باشم برای همان خطوط شعر نو که گفتم.
در سریال مرد هزار چهره به یاد دارید که چطور یک لیست خرید مایحتاج میتواند در فضایی متفاوت در قالب یک شعر بدیع و ناب و استعاری ارائه شود (قسمت نهم).
نمونه خروجیهای چنین تکنیکی را به کمک چتجیپیتی بخوانید:
متن اصلی (انگلیسی) با بریدن و چسباندن از مقالات روزنامهها ساخته شد.
ترجمهٔ آزاد فارسی:
متن بریده و چسباندهشده:
“ساعتها درون دیوارها نفس میکشند.
خطوط روزنامهها صدای بمبها را میبلعند.
نامها به عقب میچرخند،
جهان بر میگردد به زبانهای بیصاحب.”— دقیقههایی تا رفتن، ۱۹۶۰
“خون زمان در خیابانهای سایبری جریان دارد،
و کلمات مثل حشرات کوچک در سیمکشی مغز میخزند.
هر واژه یک در است،
هر در به فاجعهای دیگر باز میشود.”
“کتابها خواب میبینند.
گاه بیدارشان کن،
با تیغ، با قیچی، با نوار ضبطصوت.
از رویاهاشان چیزی تازه بساز،
چون ذهن سوم همیشه میان دو ذهن زاده میشود.”
به نظرم نکته اینجاست که ابزارهای کمکی تولید شعر جدید نیستند. قافیه در شعر و متون مصنوع و وزن سنتی و نیمایی علیرغم آن که محدودکنندهٔ زبان و کلمات قابل استفاده برای شاعر هستند به او برای ساخت شعر کمک میکنند. و در ارزیابی قدرت نظم شاعران میتوانیم به این توجه کنیم که مثلاً در قالبی مثل مثنوی آیا مصرع دوم هر بیت از نظر معنایی زاید نیست و فقط برای تکمیل مصرع اول و بر اساس قافیهٔ آن سروده نشده؟ آیا در قالبی مثل رباعی مصرعهای قبل از مصرع اصلی (به فرض آن که مصرع چهارم شاهمصرع رباعی باشد) فقط برای تکمیل آن سروده نشدهاند و در توضیح معنایی میتوان یکی دو تا از آنها را حذف کرد یا نه. و در قالبهای دیگر به همین صورت: شاهبیتها و شاهمصرعها را اگر جدا کنیم آیا این نیست که باقی مصاریع و ابیات برای تکمیل فرم و قالب شعری اضافه شدهاند؟ وقتی شاعری این آزمون را با موفقیت از سر میگذارند تازه بر قدرت نظم او صحه گذاشتهایم. یعنی فهمیدهایم که بیشتر مصاریع و ابیات او به طور مستقل ارزش زبانی دارند. در گام بعدی میتوانیم زبان شعری او را ارزیابی کنیم که آیا شعرگونگی زبان او، آن بخشی که ذهن از آن لذت میبرد هم قوی و متمایز است؟ بدیهی است که شاعری میتواند زبان و نظم ضعیفی داشته باشد اما زبان شعری متمایز و قابل قبولی داشته باشد.
برگردیم به تکنیک قطع و برش. چیزی که خروجیهای این تکنیک را زیبا و واجد زبان شعری میکند -به نظر من- این است که ذهن بین این جملات بیربط ارتباط میسازد و جالبیش این است که ذهنهای آدمهای متفاوت ارتباطات شبیه به همی برای آنها میسازد. به نوعی این ارتباطات را به شکل یکسان کشف میکند و از همین کشف لذت میبرد. شاید به نوعی شبیه حدس کلمهٔ قافیهٔ بیت بعدی یک شعر کهن که باز در آن حس کشف به ذهن مخاطب لذت میدهد.
در گذشتهٔ ما، کلماتی که میتوانستند با هم قافیه شوند در گام اول و کلماتی که میتوانستند در فاصلهٔ شروع و پایان یک مصرع بنشینند به نوعی بریدههای روزنامه هستند و حالا جاهایی که اسیر تکرار شدهایم استفاده از تکنیکهایی مثل قطع و برش در ترکیب با تکنیکهای قدیمیتر شاید کمک کنند تا بتوانیم از تکرار گذشتگان و گذشتهها خلاص شویم و مرزهای هنر سرودن را گستردهتر کنیم.
من تقریباً به این نتیجه رسیده بودم که خاطرهای که از تصویر در تصویر یوتیوب روی ویندوز داشتم توهمی بیش نبوده! چون توی مکاوس هر وقت روی علامت تصویر در تصویر یوتیوب میزدم به جای این که ویدیوی در حال پخش، آزادنه روی کل فضای مک و خارج از مرورگر قابل جابجا شدن باشد و بشود حتی در حین کار دیگر، آن را گوشهٔ صفحه قابل مشاهده داشت فقط در فضای خود صفحهٔ جاری قابل مشاهده بود.
یک بار هم به طور جدی دنبالش افتادم که با استفاده از چتجیپیتی یا موتور هوش مصنوعی دیگر راه حل انتقال آزادانهٔ تصویر کوچک را پیدا کردم نشد و هوش مصنوعی قانعم کرد که آنچه دنبالش هستم ممکن نیست!
اما این بار با جستجویی ساده به جواب رسیدم.
برای آزاد کردن تصویر یوتیوب از فضای مرورگر کافی است روی آن دو بار کلیک راست کنید و آنجا تماشای تصویر در تصویر را انتخاب کنید.
بعد از این کشف، تازه متوجه شدم که از همان مسیر اول هم به کمک دکمهای که در تصویر بعد مشخص شده میتوانستم به همین برسم.
در ادامهٔ کار طراحی سیستم آمارگیری از بازدید وبسایتها و در درگیری با چالش دادههای جغرافیایی بازدیدکنندگان چند باری به انحاء مختلف سرکار رفتم.
از آنجا که دیپسیک سرویس آنلاین رایگان و نامحدودی برای استخراج اطلاعات جغرافیایی از روی آیپی نمیشناخت به دنبال سرویسهای آفلاین رفتم (آنها که با یک دیتابیس آفلاین کار میکنند).
پیشنهاد اولیهٔ دیپسیک GeoLite2 از مکسمایند بود که مزیت مهمی هم دارد و آن ارائهٔ یک نوگت برای برنامهنویسان داتنت (منجمله اینجانب) بود.
همان اول کار برای نامنویسی در سایت مکسمایند و دریافت فایل دیتابیس به مشکل برخوردم (نفهمیدم مشکل از من بود یا از ایرانی بودنم بود یا از خود مکسمایند).
سراغ گزینهٔ دوم پیشنهادی یعنی DB-IP رفتم و تصمیم گرفتم فایل اکسل (CSV) منتشر شده توسط این سرویس را وارد دیتابیس برنامهام کنم و آیپیها را در آن بگردم.
پیادهسازی این روش پیچیده و سخت بود. اما در نهایت اتفاقی که افتاد این بود که نتایج تبدیل آیپی به کشور با استفاده از این سرویس کاملاً پرتوپلا بود. با وجود آن که عمدهٔ بازدیدکنندگان گنجور از ایران میآیند، ایران حتی در فهرست ۱۰ کشور برتر خروجی این سرویس نبود.
به گزینهٔ اول برگشتم. خوشبختانه یک سطر اطلاعات ورود به سایت مکسمایند را در سایت باگمینات پیدا کردم و با همان به آنچه میخواستم (آخرین دیتابیس شهرهای مکسمایند) دست پیدا کردم.
پیادهسازی پیدا کردن اطلاعات جغرافیایی از روی آیپی در این سرویس نسبتاً آسان بود و نتایج این بار معقول و نزدیک به واقعیت بودند.
گام بعدی که رابط کاربری نمایش اطلاعات جغرافیایی بود به کمک دیپسیک به سرعت به نتیجه رسید.
به مشکل عجیبی سر فرانسه برخوردم که بعداً فهمیدم که همان مشکل برای معدودی از کشورهای دیگر مثل نروژ وجود دارد. با وجود آن که تعداد قابل توجهی از بازدیدکنندگان طبق محاسبات سرویس من از فرانسه آمده بودند روی نقشه فرانسه را بدون بازدید نشان میداد. بعداً متوجه شدم که در دادههای نقشهها به دلیلی که دنبالش نگشتم کد ایزوی دو رقمی فرانسه را FR نزدهاند و برای پیدا کردن کشور از روی کد ایزو در سرویسی که من از آن استفاده کردهام به جای مراجعه به فیلدی به نام ISO_A2 به فیلد دیگری به نام ISO_A2_EH باید مراجعه میکردم (این را خودم و به کمک یار قدیمی -گوگل- فهمیدم و دیپسیک از یافتن و حل مشکل عاجز ماند).
خلاصه که فعلاً چالش استخراج دادههای جغرافیایی از روی آیپی حل شده به نظر میرسد: