دیتابیس json شهرهای ایران همراه با مختصات مکانی

برای یکی از پروژه‌ها احتیاج داشتم تا لیست تمامی استان‌ها و شهرهای معروف آن‌ها را همراه با مختصات مکانی سه‌بعدی (طول جغرافیایی، عرض جغرافیایی و ارتفاع از سطح دریا) را داشته باشم تا کاربر بتواند با انتخاب استان/شهر، فیلدهای مختصات جغرافیایی را پُر کند.

در کمال تعجب دیتابیس آماده‌ای از آن پیدا نکردم، بنابراین، یک دیتابیس شامل 344 شهر جمع‌آوری کردم و در قالب json در گیت‌هاب خودم منتشر می‌کنم:

از GitHub Gist من دریافت کنید

قالب آن به این صورت است:

 

برای تویی که دیگر نیستی…

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

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

کاش روزهای آخر جرئت می‌کردم و دستت را می‌بوسیدم؛ همان موقعی که از بالای تخت ما را نگاه می‌کردی…

کاش دستت را به نرده‌ها می‌گرفتی و «بالا» می‌آمدی…

کاش…

د آخه…

در یک مراسم بسیار مذهبی، در یک مکان بسیار مذهبی و با حضور بانوان بسیار مذهبی (مراسم روز مادر است) هستم و جلوی خودم را گرفته‌ام تا به مجریّن مراسم بابت ادبشان فحش ندهم!

اگر اینجا هم بانوی مذهبی و باحیا بناست در عذاب باشد (که می‌بینم)، پس… ؟

سيموت أو لا؟

باشد قبول، «الباطِلُ‏ یمُوت‏ بِتَرك‏ ذِكرِه»! اما این طوری که شما ولش کردید و آن‌ها سخت مشغول Streamاند، سکوتتان بیشتر شبیه علامت رضاست! و طولی نمی‌کشد که «كَيْفَ بِكُمْ إِذَا رَأَيْتُمُ اَلْمَعْرُوفَ مُنْكَراً وَ اَلْمُنْكَرَ مَعْرُوفاً؟!»…

 

پ.ن: حالا بماند که این جمله اصلاً حدیث نیست!

کراس کامپایل gcc armhf روی Debian

یکی از مشکلات برنامه‌نویسی پروژه‌ها روی چیپ‌های اقتصادی و نهفته‌ی دستگاه‌ها مانند نانوپای یا Luckfox Pico، این است که کامپایل برنامه‌ها روی آن‌ها بسیار طولانی و زمان‌بر است. در این مواقع امکان کامپایل میان-پردازنده‌ای (Cross-Compile) موجب افزایش سرعت بیلد و توسعه‌ی پروژه می‌گردد.

در این آموزش کوتاه یاد می‌گیریم که چگونه روی Debian (من به صورت WSL روی یک رایانه x64 نصب کرده‌ام)  برنامه‌ی C یا C++‎ را برای لینوکس armhf کامپایل کنیم.

 

1- ایجاد sysroot مخصوص Armhf با افزودن معماری Armhf به دبیان

 

2- نصب برنامه‌ها و کتابخانه‌های موردنیاز روی دبیان (نسخه‌ی مخصوص armhf به کمک علامت «:»)

 

3- تنظیم CMake

حالا CMakeLists.txt را به نحوی تنظیم می‌کنیم تا تنظیمات کلی و بدون مشکل برای معماری‌های مختلف در آن قرار گیرد:

 

و تنظیمات وابسته به بیلد armhf در cmake/Toolchain-armhf.cmake قرار می‌گیرد:

 

4- تنظیم Toolchain، نوع کامپایل، پوشه‌های سورس و خروجی و در نهایت، بیلد

برای مطمئن شدن از نوع معماری خروجی کامپایل، می‌توانید از دستور file استفاده کنید.

‎.gitignore کار نمی‌کند!

آیا اول پروژه‌ی خود را به نسخه رسانده‌اید و سپس تصمیم گرفتید پروژه را Gitدار کنید؟

آیا پرونده‌ی ‎.gitignore در گیت خود گذاشته‌اید اما انگار کار نمی‌کند؟

آیا از دیدن پرونده‌های Cache و Build پروژه که هی کم و زیاد می‌شوند و تغییرات گیت را بیخودی زیاد می‌کنند رنج می‌برید؟

راه حل شما تنها همین دو دستور گیت است تا Cache گیت را پاک کنید:

 

شیعةُ علیٍّ

شیعةُ علیٍّ هم الذین … و هم الذین لایراهم الله حیث نهاهم و لا یفقدهم حیث امرهم …

شیعیان علی(ع) کسانی هستند که … و خداوند آن‌ها را در جایی که نهی کرده، نمی‌بیند و در آن جا كه امر كرده، هميشه حاضر مى‌بيند …

 

امام حسن عسکری(ع)

(بحارالأنوار / ج65 / ص163)

 

جالب بود؛ خداوند آن‌ها را «نمی‌بیند» و «می‌بیند».

اتصال SSH‌ و SCP به WSL2 در شبکه محلی

اگر از یکی از توزیع‌های لینوکس به صورت WSL (Windows Subsystem for Linux) در ویندوز استفاده می‌کنید، شاید لازم داشته باشید تا از دستگاه دیگری در شبکه محلی به آن ssh بزنید.

اگر شبکه‌ی WSL به صورت NAT تنظیم شده باشد، IP لینوکس همان IP شماست؛ اما لینوکس IP خود را چیزی شبیه به ‎172.xxx.xxx.xxx/20 معرفی می‌کند.

پس چگونه باید به آن ssh بزنیم؟

پورت فورواردینگ در ویندوزِ میزبان

اتصال ssh به صورت پیش‌فرض روی پورت 22 انجام می‌شود (می‌توان از پرونده /etc/ssh/sshd_config  آن را تغییر داد)؛ برای اتصال از دستگاه‌های دیگر در شبکه، باید یکی از پورت‌های دستگاه میزبان (ویندوز خودمان) را به پورت 22 لینوکسمان فوروارد کنیم.

یک ترمینال Powershell با دسترسی Run As Administrator اجرا کرده و از دستور زیر استفاده کنید (نشانی IP را تغییر دهید) تا پورت 2222 ویندوز (یا هر پورت دیگری) به پورت 22 لینوکس فوروارد شود:

 

اجازه دادن به پورت در فایروال ویندوز

حالا با استفاده از همان ترمینال Powershell، دستور زیر را وارد کنید تا پورت 2222 برای استفاده TCP آزاد شود:

 

اتصال

حالا می‌توان با اضافه کردن مقدار پورت به دستورات ssh و scp، به لینوکس روی wsl متصل شد: