← на главную

Алексей Батищев. Заметки обо всём, что происходит со мной и окружающим миром

Избранное: мои фото- и видеоработы, забрать своё из облаков, КЭНК
Навигация: все теги, посты по годам

Алеша и программирование — 2

Продолжаю ностальгировать по языкам программирования

Java

Яву на учёбе нам показал (и научил) крутейший препод по предмету «Языки программирования высокого уровня» — собственно, тогда она только набирала ход и ещё ходила под ярлыком «новый язык, который недавно переименовали из OAK в JAVA». В целом на тот момент она показалась довольно синтетическим и плохо применимым на практике конструктом, неким «идеальным языком для прекрасного будущего». Сейчас это будущее наступило, но в моих задачах с явой я не сталкиваюсь совершено, хотя в компьютерно-мобильном окружающем быту на ней написано примерно половина всего.

По учебе на яве были писаны курсовые и лабораторки, а главная шутка и байка тут — про курсовую, которую я написал для однокашника С. , и которую тот, ни разу не появившийся на лекциях и семинарах, пошел сдавать. Он был невероятно талантлив в вопросах сдачи неизученного, и поэтому перед зачетом подробно расспросил у меня весь алгоритм программы. Конечно, преподу С. на все вопросы по тексту программы ответил, тут мол создаем массив, а здесь мол идем по циклу. Поняв, что этим его не пронять, препод задал вопрос-фаталити: «а как эту программу запустить?» С., ни разу не запускавший самостоятельно ничего со школы, ответил привычно — «Контрол Эф Пять», и был немедленно со сдачи выгнан.

Javascript

На жаваскрипте что-то писалось на учёбе, что-то потом в пору веб-строительства, да и до сих пор регулярно в исходниках сайтов копошусь, благо с начала 2000-х этот язык стал основой веба, и теперь с помощью актуальных фреймворков на нём шарашат примерно всё. Хотя тогда, например, друг Лёха делал на нём курсач для подсчёта простых чисел (и оно в этом вашем интернет эксплорере даже что-то считало).

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

PHP

PHP стал для меня в начале 2000-х окном в мир веб-разработки, в итоге на нём за много лет было запилено около двух десятков сайтов. Применялись и Joomla, и Drupal, и MODx, и конечно в какой-то момент был сделан собственный движок — потому что каждый программист PHP обязан за свою жизнь написать хотя бы одну CMS.

Среди работ были и несколько версий сайта семейного центра, сайт элитного часового бренда с крутейшей системой генерации картинки на лету в разделе «примерка», сайт нашего DIY-музыкального комьюнити U-CLUB (о да, у нас самодельный клуб и продакшен с образовательным и развлекательным контентом для ютуба ещё до того как это стало мейнстримом), сайт одного гитариста-виртуоза и его школы, визитки предприятий и интернет-магазины, и куча всего ещё. Большинство сайтов уже модернизированы или мертвы (ах, как меня расстраивает эта изменчивость веба), но кое-что работает до сих пор, как ни удивительно.

Lua

В середине 2000-х популярной была Direct Connect — p2p технология обмена файлами в локальной сети. Сервер для этой сети можно было запустить на виндовой программе PtokaX, которая поддерживала ботов на Lua. Документации по API хаба для бота не было совершенно, зато был чужой готовый бот, изучая и модифицируя исходный код которого, я написал в итоге свой (и попутно изучил Lua). Это был увлекательное приключение длиной почти в год, на выходе был уникальный по тем временам комбайн, следивший за чатом (анти-флуд, анти-мат и антиспам), добавляющий сервисные сообщения и прочие улучшайзеры для пользователей (моя любимая тема — роботы работают на пользу человеку). Также бот умел, благодаря придуманным ноу-хау, следить за обьёмами раздаваемого пользователями, чтобы добавить в изначально анархический и бесконтрольный мир DC++ немного управляемой справедливости, и дополнительно этим развивал сеть. В итоге бот ушел в народ, и ещё несколько лет назад на указанную в тексте почту приходили вопросы от админов по его работе и модернизации.

VBS

VBS — самый лёгкий в освоении и популярный на тот момент инструмент автоматизации рутинных действий офисных работников и сисадминов. Чего тут только не было, от автозаполняшек документов Microsoft Office, до инфраструктурных штук. На VBS я впервые начал пилить средства автоматизации, реально в промышленном масштабе экономящие силы людей (и деньги предприятий) — скрипты облегчали и автоматизировали работу техподдержки и отдела системного администрирования, собирали и систематизировали данные, генерили без устали красивые отчёты, выполняли рутину, сводя работу человека к мониторингу и редким управляющим воздействиям.

Любимая история тут — в стиле цитаты Доктора Хауса «Все врут»: один из процессов подразумевал, что у клиента появится нужный функционал после перезагрузки рабочей станции. Перезагружаться никто не любит, поэтому сотрудники часто звонили в техподдержку, жаловались что «ничего не работает, хотя я перезагрузился», и только после долгих разбирательств и препирательств выяснялось, что ребута не было. Тогда на предприятии уже был распространён мой скрипт, показывающий по клику на ярлыке спасательного круга на рабочем столе информацию о компьютере — обычно диспетчер просил запустить его, чтобы узнать адрес и имя машины. В этот скрипт был добавлен вывод информации о времени последней перезагрузки машины — и в итоге время работы по таким заявкам сократилось феноменально. Диспетчерам больше не нужно было спорить или убеждать клиентов, так как бездушная машина палила клиента на лжи о перезагрузке самостоятельно.

В итоге фокус с VBS в работе перешел на powershell как только тот стал достаточно распространённым на машинах клиентов на предприятии — а вместе с ним и в быту он стал для меня основным.

Powershell

Об этом божественном языке на заре его развития мне рассказал мудрый старец Юсуф, коллега по отделу, заставший в своей карьере еще поздние БЭСМ и прочие советские мейнфреймы, но до самого ухода на пенсию сохранявший остроту айтишного ума. Переходить на новый язык, имея зоопарк старых решений на VBS, было непросто — но я взял новую большую задачу, накинулся на неё с нулевым знанием PS, и изучение пошло в гору. Скоро будет 10 лет как я впервые что-то на нём написал, за это время он стал привычным инструментом, хотя год от года изучается и находится что-то новое (а прошлогодний код начинает выглядеть немножк так себе).

С углублением в область практической кибербезопасности для PS нашлось много новых применений — кроме привычной автоматизации рутины, на нём пишутся различные тулы для исследования инфраструктуры, управления угрозами и интеграции между системами, и фактически на нём написано 90% ядра системы управления уязвимостями, которая сейчас работает на предприятии. Ну а дома, в быту, на павершелле пишутся скрипты, переименовывающие файлы сьемок концертов c GoPro и фотиков, медиа-кодировщики, забираторы своего из облаков и бэкаперы, и куча всего другого полезного.

Python

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

Подробно сам python я разобрал во время марафона Яндекса в этом году — занятная и удобная для многих штук вещь оказалась.

Shell

Вообще я не большой любитель unix-систем, мне приятней и удобней за десятилетия встроившиеся в мозг привычки, софт и прочие атрибуты винды (например, меня бесит дизайн и динамика движения курсора мыши в оконных менеджерах Linux, это непросто объяснить — но бесит неимоверно). Но в современном мире без линукса никуда, а значит и автоматизировать всякое на нём и shell придётся. Главное, чтобы задача была. Так, однажды я за вечер написал на shell аналог Fail2Ban для системы которую мы поддерживали — классический вариант, смотрим кого в логах сейчас слишком много и неправильно, и обновляем сетевые правила (в нашем случае — конфиг HAProxy). Идеология линукса «всё-файл» для задач бытовой и наколеночной автоматизации прикольна, и shell в комбинации с утилитами дает хороший простор для манёвра, с достаточно низким порогом входа

Микро- и недо-программирование

Вообще, программирования в нашей повседневной жизни теперь очень много, хоть и не все об этом задумываются. Хотя, нутром это многие понимают — так, еще лет 15 назад к нам в отдел заходили бухгалтерши с просьбой «Ребят, вы же программисты? Запрограммируйте чтобы кондиционер за полчаса до нашего прихода включался и кабинет охлаждал!». Так что, с учетом доступности этих инструментов и моей тяги к автоматизации, постоянно и незаметно применяется много всякого недо-программирования:

  • Автоматизации в IOS (актуальная задача в дивные новые времена — автозапуск и автостоп VPN при открытии на телефоне определенных приложений)
  • Скрипты для Automator — языка (сервиса) автоматизации macOS. Делал на нём всякие переименования файлов и удаления старых выполненных задач из приложения Напоминания
  • скрипты преобразования файлов, расстановки меток и прочего для монтажки VEGAS
  • батнички в винде — люблю автоматизировать рутину, и если что-то можно сделать одним кликом, потеряв день на программирование — обязательно сделаю так. Например, сохранившее мне миллионы миллисекунд жизни решение для выноса часто нужной команды архивирования 7Zip в контекстное меню Проводника
  • бытовое программирование через сценарии для Алисы и других средств управления умным домом. Обожаю сообщать «Алиса, я пришёл» и смотреть как зажигается свет и включается любимая музыка

Подводя итог теме, хочу еще раз восхититься и признаться в любви к программированию. Когда-нибудь у программистов точно получится «make world a better place». Слава роботам!