Яжпрограммист! Почти официально! =))

Нет, работу не сменил и не планирую пока, но давно уже пытаюсь в питон, просто из интереса, и вот подвернулся годный курс. Курс про написание графических приложений  с использованием Qt-фреймворка, который сейчас много где юзается, но на который мне мозгов не хватало, чтобы самостоятельно его вкурить. Начал гуглить и нашел — курс довольно старый, расчитанный на Python 2, PySide и Qt4, но с легкостью адаптируемый под Python 3, PySide2 и Qt5 (я даже не поленился и повыкладывал соответствующие исходнички). При этом чел, который, как я понял, сам по себе программист, а не препод по жизни, довольно хорошо его составил — все по шагам, четко, с объяснениями, почему то да сё, и с финалом в виде написания рабочего приложения и даже подготовке его к дистрибуции — всё по взрослому. Так что прям годный курс и купил я его за смешные 12 баксов, хотя, как оказалось, он уже давно выложен автором на ютуб. Ну зато сертификатик теперь есть =))

Забавно, что не так просто найти в Москве подобные курсы за адекватные цены. Понятно что большая часть их не дистанционна (а аренда помещений стоит денег , бла-бла-бла), но так или иначе цены на что-то адекватное начинаются, кажется, от 15-20 тыр. Какой-нить питон для начинающих легком может оказаться в этой цене, хотя если поискать на просторах инета — можно найти значительно дешевле, да и выбора больше. Хотя, конечно, есть нюанс — курсы в основном на английском. Так что наверное мне даже повезло что этот курс вел серб — его английский я отлично понимал =)) В общем теперь я МОГУН! Надо будет попрактиковаться, благо есть на чем =)

CyrTranscoder — свой велосипед для борьбы с кракозябрами

В качестве лишней практики написал перекодировщик кракозябр, наподобие старой-доброй утилки «Штирлиц».

Утилка жрет текст построчно и пытается угадать какая пара кодировок была закосячена. Существует в двух вариантах: с графическим интерфейсом и консольный вариант. Оба варианта — просто скрипты на питоне, но для удобства пользования для винды собран гуевый бинарник.

Скачать можно на гитхабе: https://github.com/qiwichupa/cyrtranscode/releases

Мой первый большой и серьезный кусок кода

Сегодня у меня появился небольшой повод для гордости. Я, конечно, не программист, но админ-  периодически небольшие скрипты писать приходится. Но сегодня я дописал (до юзабельного состояния, не идеального, не суперкрасивого, но юзабельного) свой первый большой скрипт-гуй для бэкапа LVM-разделов и, собственно, восстановления из бэкапа. Процентов на 70 это была тренировка питона, ибо написано все на нем, и процентов на 30 — решение своей хотелки управления бэкапами более-менее наглядно и без переписывания неинтерактивных скриптов по каждому чиху.

Итак, что и как оно выглядит (май ингриш из вери перфект, так что возможны смешные косяки).
Скрипт запускается под обычным юзером и в этом случае умеет вызывать судо:

Стартовый экран выглядит вот так:

При первом запуске он запоминает текущую директорию, в которой был запущен, и делает ее рабочей при последующих запусках. Если потом его запустить в другой дире (как на текущем скрине) — будет предлагать сохранить ее как рабочую.
Тут же, не отходя от кассы можно набить список исключений.

Допустим мы хотим забэкапиться, выбираем бэкап!

Скрипт сам находит все смонтированные LVM-разделы и позволяет пометить те, которые хочется забэкапить. В результате бэкапа образуются файлы — первый всегда полный бэкап, последующие автоматом инкрементируются.

Если инкрементов накопилось дофига и больше, и какие-то промежуточные хочется убить — это можно сделать опцией мерджинга. Выделенный файл бэкапа поглотит тот, что перед ним (таким образом можно слить два файла разных разделов — я пока не понял это скорее баг или фича ))).

Ну и наконец — восстановление.
Выбираем файл, который хотим восстановить:

Видим список файлов, которые распакуются один за другим, если мы выбрали инкремент. Выбираем одну из смонтированных директорий (список формируется автоматом), ставим галочку, если перед восстановлением хотим очистить эту директорию от содержимого.

В общем вышла такая себе управлялка бэкапами, для наглядного процесса копирования и восстановления.

Код на гитхабе: https://github.com/qiwichupa/lvmdarbackuper/blob/master/lvmdarbackuper.py