اجرای کدهای python در لینوکس با استفاده از systemd

صوت مساله بسیار ساده‌ست، ما کد pythonمون رو نوشتیم، تست کردیم، حالا می‌خوایم بذاریمش یک گوشه به شکل دائم اجرا شه.
حداقل خواستمون اینه که:

۱− موقع روشن شدن سیستم کد به شکل خودکار اجرا شه
۲- اگر در هر صورت خطایی رخ داد که باعث کرش کردن برنامه شد به شکل خودکار کدمون مجددا راه اندازی شده

در بین همه‌ی گزینه‌های ممکن برای انجام این کار systemd راحت‌ترین و سرراست ترین راه رسیدن به خواسته‌های بالاست و کیه که ندونه من چقدر تنبلی رو دوست دارم!

پس با من همراه باشید تا در ادامه‌ی این آموزش آسون‌ترین راه ممکن برای اجرای اتوماتیک کدهای pytohn رو با هم یاد بگیریم.

Continue Reading

وارد کردن آمار فعالیت‌های GitLab در GitHub!

github-contributions

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

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

با این توصیفات دنبال راهی بودم که این آمار فعالیت رو بشه از GitLab برداشت آورد توی GitHub نشون داد، یکم گوگل بازی کافی بود تا به یک ابزار پایتون برای این کار برسم. ادامه‌ی این نوشته این ابزار رو معرفی می‌کنم و نحوه‌ی کار باهاش رو شرح می‌دم، در ادامه‌ی این نوشته با من همراه باشید.

Continue Reading

پاک کردن تمامی فایل‌های با پسوند خاص در linux

delete gif

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

مثلا فرض کنید یک سری فیلم آموزشی دانلود کردیم که همراهشون زیرنویس به زبان‌های مختلف رو هم دارن و خب ما چه نیازی داریم که زیرنویس چینی وسط فایل‌های ارزشمندمون باشن؟

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

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

Continue Reading

ایجاد کلید‌ SSH در Ubuntu برای زندگی راحت‌تر!

how to setup ssh in ubuntu

امر SSH زدن به سرور فی نفسه کار ساده‌ایه:
کافیه ترمینال رو باز کنیم و  ssh [email protected]_host

صدالبته جای username نام کاربری خودمون رو در سیستمی که می‌خوایم به اون SSH بزنیم جایگزین می‌کنیم و به جای remote_host آدرس سرور رو می‌ذاریم،‌ کلید Enter رو که بزنیم، ازمون رمز سرور رو می‌خواد، اون رو هم بهش می‌گیم و تمام. راحت مثل آب خوردن!

ولی دوتا مشکلی داریم این وسط: اول اینکه آدرسی که می‌خوایم بهش SSH بزنیم معمولا یک IPست ینگه دنیا. مثلا 51.178.11.24 می‌شه آدرس سرور ما و اگر ۳−۴ تا سرور داشته باشیم خیلی هنرمندی می‌خواد که بتونیم آدرس تک تک اون‌ها رو حفظ کنیم و یادمون بیاد کی کدومه. مشکل بعدی؟ اگر احمق نباشیم رمزی که برای سرور انتخاب کردیم رو یک چیز سخت گذاشتیم، مثلا uV82Hi*KX^L4Ae، حالا بهتر شد نه؟ ۳ تا سرور داریم که نه تنها باید یادمون باشه کی به کیه بلکه باید رمز اون‌ها رو هم حفظ کنیم.

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

Continue Reading

ویدئوهای مرتبط با پردازش تصاویر هوایی (از سال ۲۰۱۷ به بعد)

در ادامه‌ی این نوشته لینک ویدئوهای مرتبط با پردازش تصاویر هوایی‌ رو که می‌بینم و احیانا خلاصه‌ای ازشون رو منتشر خواهم کرد.

[طبیعتا این نوشته تا مدتی به روز خواهد شد.]

Continue Reading

پردازش تصاویر هوایی: فهرست مسابقات، دیتاست‌ها، مقالات و آموزش‌ها

به شکل کلی یادگیری ماشینی چهار نوع کاربرد در تصاویر هوایی دارد:

  • Image segmentation (cities, roads, water, forest, etc).
  • Object detection (buildings, ships, planes, etc).
  • Resolution enhancement of imagery.
  • Change detection at a site of interest.

منابع ادامه‌ی این نوشته رو سعی می‌کنم توی دسته بندی‌های بالا قرار بدم.

Continue Reading

لیست پایان‌نامه‌های مرتبط با پردازش تصاویر هوایی در سامانه‌ی «گنج»

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

در ادامه‌ی این نوشته پایان‌نامه‌های ثبت شده در سامانه‌ی «گنج» که مرتبط با پردازش تصاویر هوایی هستن رو میارم.

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

Continue Reading

دانلود تنها یک زیر پوشه از یک repository گیت‌هاب به سبک هلو برو تو گلو

صورت مسال اینه: ما تنها یک زیر پوشه از یک repository گیت‌هاب رو لازم داریم و می خوایم دانلودش کنیم. بذارید با مثال برم جلو، repositoryای داریم با عنوان TensorFlow Models که شخصا از قسمت Tensorflow Object detection API اون برای پردازش تصویر روی رزبری‌پای استفاده می‌کنم و زیاد پیش میاد که لازم بشه از اول دانلودش کنم.

همه‌ی آموزش‌های اون بیرون میان میگن اول کل ریپازیتوری رو دانلود کنید تا با این بخش Object Detection کار کنیم. که خوب این repository حجمی حدود ۷۰۰-۸۰۰ مگابات داره ولی ما برای کار پردازش تصویر فقط به زیر پوشه‌ی object_detection اون احتیاج دارم که حجمش تنها  ۱۲۴مگابایته.

بیایم و هربار کل repository رو دانلود کنم از یک سمت حجم زیادی از اینترنتم مصرف می‌شه و از اون طرف فایل‌هایی رو دانلود کردیم که به بهشون احتیاج نداریم و روی رزبری‌پای فضا اشغال کردن.

اگر مشکل پهنای باند و حجم اینترنت نداشته باشیم قابل قبوله که اول کل repository رو دانلود کنیم و بعد فایل‌های اضافی رو بریزیم دور، اما راه حل معقول اینه که فقط همون پوشه‌ای که بهش کار داریم رو به شکل مجزا دانلود کنیم.

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

Continue Reading

آموزش راه‌اندازی Raspberry Pi به صورت Headless

راه‌اندازی Raspberry Pi به صورت Headless از اون شترهایی هست که بخوایم و نخوایم در خونه‌ی همه‌ی ما می‌شینه. چون همیشه اینطوری نیست که ماوس و مانیتور به بغل Raspberry Pi رو راه اندازی کنیم، زیاد پیش میاد که یک لپ‌تاپ داریم و یک Raspberry Pi و قراره این مینی‌کامپوتر دوست داشتنی رو برای اولین بار راه بندازیم.

اگر کی‌برد و مانیتوری در کار نباشه تنها راه ارتباطی‌ای که با Raspberry Pi برامون می‌مونه SSH زدن است، اما برای اینکه SSH بزنیم باید بتونیم Raspberry Pi رو به مودم/اینترنت وصل کنیم و IP دستگاه رو بدونم و بدون کی‌برد و مانیتور مساله مرغ و تخم مرغ می‌شه، نه؟

در ادامه‌ی این نوشته ابتدا سیستم‌عامل Raspbian Stretch Lite رو نصب کرده و بعد با هم مراحل راه‌اندازی Raspberry Pi به صورت Headless رو خواهیم دید.

بدون حرف اضافه‌ی وقشه که بریم و این مرغ و تخم مرغ SSH و IP رو نیمرو کنیم 🙂

Continue Reading

تجربه‌ی یک شکست: چطور برد مدار چاپی(PCB) طراحی نکنیم؟

چندهفته‌ی پیش قرار شد برای اولین‌بار PCB مدارم رو خودم طراحی کنم که نتیجه‌ی کار یک شکست تمام و کمال بود.

خراب کاری کردن اونم در اولین تجربه‌ی طراحی اصلا عجیب نیست و الزاما چیز بدی هم نیست، تا چندتا خرابکاری نکنی بعیده بتونی چیزی یاد بگیری 🙂

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

مقدمه گفتن کافیه، وقتشه چوب خشک جمع کنید و بیاید با من در ادامه‌ی این نوشته همراه باشید تا براتون داستان طراحی PCBم رو بگم.

Continue Reading