Обновить
1.5

Perl *

Высокоуровневый интерпретируемый динамический язык

Сначала показывать
Порог рейтинга
Уровень сложности

Перезапись специальных переменных Perl регулярными выражениями

Время на прочтение1 мин
Охват и читатели2.1K

Когда-то я стал писать на perl из-за встроенных в язык регулярных выражений. Просто пишешь "abc" =~ / (?<x> a) /x; и вуаля: устанавливаются переменные $&, $1, %+, $`, $'.

Однако эти же переменные перезаписываются при использовании следующей регулярки:

Читать далее

Dancer2 или современное web-приложение на PERL. Часть III

Время на прочтение5 мин
Охват и читатели2.1K

Современные web-приложения в большинстве случаях хранят данные в SQL базах данных. Для доступа к этим данным используются объекты модели, которые позволяют совершать все основные операции: SELECT, INSERT, UPDATE, DELETE, но не ограничиваясь ими.

В этой части мы поговорим про работу с базой в Dancer2, а также научимся создавать модели и миграции на основе DBIx::Class (можно сказать, что эта статья является вводным руководством и по нему).

Читать далее

Ищем дубликаты фотографий с помощью Perl

Время на прочтение4 мин
Охват и читатели5.8K

За 20 лет у меня скопилось несколько тысяч фотографий: праздники, свадьбы, рождение детей, и прочее, прочее... Понятно что снималось всё это на разные цифровики, присылалось почтой, сливалось через ICloud и GDrive, FTP, самба и т.п. По итогу всё это превратилось в дикий хаос папок и что-то найти в архиве можно было только с большим трудом.

В какой-то момент мне нечем было заняться это надоело и я за пару дней накидал скрипт, который всё это безумие раскидал по годам->месяцам->дням. Понятно, что и эта задача не такая простая как кажется на первый взгляд, что например делать с фото, у которых дата создания 1970? Но в этой статье я хотел бы рассказать о другом.

Читать далее

Dancer2 или современное web-приложение на PERL. Часть II

Время на прочтение4 мин
Охват и читатели2.6K

Лето близится к концу, однако ещё остались дни, чтобы насладиться солнцем, отпуском, Perl и Dancer2. Последним двум будет посвящена эта статья. Сегодня поговорим про шаблоны, сессии и флэш-сообщения.

Читать далее

Как удобно мониторить Citrix XenDesktop

Время на прочтение7 мин
Охват и читатели4.1K

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

Читать далее

Dancer2 или современное web-приложение на PERL

Время на прочтение5 мин
Охват и читатели5.5K

Perl, созданный аж в 1987 году, в 2021 продолжает успешно применяться в различных сферах IT. А вместе с фреймворком Dancer и с задачей создания web-приложения справляется легко и непринужденно.

Читать далее

SNMP MIB браузер (продолжение)

Время на прочтение6 мин
Охват и читатели27K

Сначала хочу немного вернуться назад. В первой части я не написал, для чего вообще нужен MIB браузер и сами MIB модули, ведь многие как-то и без всего этого обходятся и вполне себе мониторят свои сети. Как правило для этого используется цифровой OID вида ".1.3.6.1.4.1.171.11.113.1.3.2.2.3" и тематические форумы пестрят запросами "А подскажите OID для того чтобы ...". При желании можно и самому найти нужный OID сделав walk где-то поближе к ветке private.

MIB браузер как раз и является тем инструментом, который позволит Вам упростить работу с оборудованием. Это фактически тоже самое, что иметь иерархическую структуру в базе данных с быстрым и удобным поиском, индексами, типами данных. Вы получаете быстрый доступ ко всем датчикам и триггерам оборудования, с возможностью их создания/правки. Тем самым становится проще администрировать сети, выявлять ошибки и быстрее реагировать на неисправности. Особенно это важно при работе с новыми моделям, ранее неизвестными Вам.

Читать далее

SNMP MIB браузер на Perl и JavaScript

Время на прочтение3 мин
Охват и читатели9.8K

Что делать на работе, если не знаешь, чем бы еще заняться? Конечно же писать на Хабр!

Благодаря нашим доблестным законодателям, дальнейшее развитие бизнеса самостоятельно - нерентабельно и мы уходим под более крупного оператора. Вот у меня и сложилась такая ситуация, что смысла дорабатывать, переписывать и исправлять свои старые проекты - нет, у "крупняка" все сервисы свои. Сижу, курю. А потом думаю, а чего сидеть-то, напишу-ка я на Хабр. Статья прошла модерацию, «И тут Остапа понесло...».

Читать далее

Пишем PBX на Perl для Yate

Время на прочтение8 мин
Охват и читатели3.7K

Когда-нибудь я напишу что-то в духе "Как я стал программистом в 40 лет". Но точно не сегодня, к тому же мне давно уже не 40 и программистом я себя не считаю. А рассказать я хотел бы о своём опыте разработки PBX для собственных нужд. В качестве VoIP движка используется Yate, фронт- и бэкенд будет на Perl.

Часто встречаю в комментариях к статьям вопросы: "Почему не (далее идут любимые варианты комментаторов)?". Итак, по порядку.

Читать далее

Угон домена Perl.com

Время на прочтение9 мин
Охват и читатели19K

Прим. перев.: в конце января стало известно о том, что один из основных доменов языка программирования Perl — Perl.com — был угнан. Это вызвало смешанную реакцию в сообществе как любителей языка, так и его противников. Теперь, когда всё уже позади и справедливость восстановлена, один из самых известных сторонников Perl — brian d foy — рассказал о том, что же произошло и как сообщество добилось положительного исхода событий. Представляем вниманию перевод его заметки.

Читать далее

Как мы боролись с техдолгом, или От 15 000 подключений к базе данных до 100

Время на прочтение7 мин
Охват и читатели6.6K
Недавно новый сотрудник спросил меня за обедом: «Какой у нас техдолг?»

Услышав вопрос, я не мог не улыбнуться. Спрашивать инженеров-программистов о техническом долге компании – это то же самое, что спрашивать о кредитном рейтинге. Так программисты хотят узнать о сомнительном прошлом компании и о том, с каким багажом из прошлого придётся столкнуться. К техническому багажу нам не привыкать.

Как поставщик облачных услуг, который управляет собственными серверами и оборудованием, мы столкнулись с проблемами, с которыми многие другие стартапы в новую эру облачных вычислений не сталкивались. Эти сложные ситуации в конце концов привели к компромиссу, на который нам пришлось пойти, когда компания только начала работать. И, как известно любой быстрорастущей компании, технические решения, которые вы принимаете на раннем этапе, обычно догоняют вас.

Глядя на нового сотрудника, я глубоко вздохнул и начал: «Давай я расскажу о том, как у нас было 15 000 прямых подключений к БД…»

История, которую я рассказал нашему новому сотруднику, – это история крупной технической перестройки DigitalOcean. Работала вся компания, эта работа продолжалась несколько лет и преподала нам много уроков. 

Приятного чтения!

Софтовый датчик присутствия на Linux AP + ESP8266

Время на прочтение3 мин
Охват и читатели16K

Наблюдение за изменением уровня Wi-Fi сигнала от стационарно расположенных по дому IoT устройств позволяет сделать полностью программный (выделенное железо отсутствует) объёмный датчик движения в объёме квартиры, достаточно точно показывающий наличие активно перемещающихся людей.

Читать далее

Горячая четвёрка умирающих языков программирования

Время на прочтение4 мин
Охват и читатели99K
Я занимался поиском лучших языков программирования 2020 года и наткнулся на страницы, на которых шла речь о языках, теряющих популярность. Я программист, и я понимаю, что любому программисту крайне важно знать о том, какие технологии являются актуальными, а какие — нет.

Каждый программист — это писатель.

Серкан Лейлек


Я, после того, как насмотрелся на отчёты о языках программирования, теряющих актуальность, выбрал 4 языка, которые, как я полагаю, уже не стоят того, чтобы их изучали. Я, ради подкрепления своих выводов, прибегну к некоторым показателям популярности языков. В частности, речь идёт об индексе PYPL (PopularitY of Programming Language Index, индекс популярности языков программирования), о данных Google Trends и о некоторых сведениях, которые можно найти на платформе YouTube.


Фрагмент рейтинга PYPL (источник)

Платформа YouTube использовалась мной в качестве источника данных о перспективности языков программирования через оценку популярности видеоуроков по соответствующим языкам.

Хочу отметить, что анализ рейтингов языков программирования способен оказать большую помощь тому, кто планирует построить карьеру в сфере информационных технологий. Дело в том, что эти рейтинги позволяют выбирать языки, которые стоит учить, а правильный выбор языка может оказать огромное влияние на профессиональный путь программиста.

Но хватит предисловий. Поговорим об умирающих языках программирования.
Читать дальше →

Ближайшие события

Трюки с переменными среды

Время на прочтение8 мин
Охват и читатели8.9K
Интересные переменные среды для загрузки в интерпретаторы скриптовых языков

Вступление


В недавнем хакерском проекте мы получили возможность указывать переменные среды, но не выполняемый процесс. Мы также не могли контролировать содержимое файла на диске, а брутфорс идентификаторов процессов (PID) и файловых дескрипторов не дал интересных результатов, исключив удалённые эксплоиты LD_PRELOAD. К счастью, исполнялся интерпретатор скриптового языка, который позволял нам выполнять произвольные команды, задавая определённые переменные среды. В этом блоге обсуждается, как произвольные команды могут выполняться рядом интерпретаторов скриптового языка при вредоносных переменных среды.
Читать дальше →

Автоматизация аппаратного тестирования Embedded Систем

Время на прочтение3 мин
Охват и читатели5K
Продолжим цикл статей об автоматизации тестирования Embedded систем. В этой статье будет рассказано как можно быстро и относительно просто интегрировать возможность управления питанием тестируемого устройства из тестового скрипта а так же получить возможность имитировать нажатия механических кнопок по команде из тестового скрипта.

Итак, что имеем:

  1. Десятки Embedded устройств в которых нужно проводить тестирование новой версии FirmWare (если быть точнее — ежедневная сборка прошивки)
  2. В виду особенностей процедуры загрузки FW может потребоваться необходимость сбросить питание (т.н. режим загрузки прошивки в режиме Power On Capture)
  3. Хотелось бы в некоторые конкретные моменты времени по ходу выполнения тестового скрипта имитировать нажатия на механические кнопки размещенные на отладочной плате Embededed системы
Читать дальше →

Компиляция программ с помощью Notepad++

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели67K

Компиляция программ при помощи текстового редактора на примере Notepad++




Цель статьи: Научиться компилировать программы из командной строки. Научиться компилировать из текстового редактора Notepad++ (вернее научиться писать скрипты и связывать их), создавать скрипты и макросы, устанавливать системные переменные.

Сам текстовый редактор ничего не компилирует и не запускает. Также как и IDE не компилирует. Компиляция происходит с помощью компилятора. Выполнение производится некоторой средой выполнения. Это может быть интерпретатор команд или среда выполнения.
При компиляции программы на C# упаковываются в сборки. Код на языке IL автоматически преобразуется в код для конкретного процессора. Что касается языка java, то скомпилированные файлы .class выполняется виртуальной машиной Java. Файлы .java компилируются в бай-код, то есть некоторый промежуточный код. Компиляция в exe файл тоже производится компилятором.

.EXE (сокр. англ. executable — исполнимый) — расширение исполняемых файлов, применяемое в операционных системах DOS, Windows, Symbian OS, OS/2 и в некоторых других, соответствующее ряду форматов. Процесс получения exe файла состоит из следующих этапов: препроцессинг, ассемблирование, компилирование, линковка.

ОUT файлы — исполняемые файлы для UNIX-подобных операционных систем.
Файл может хранить исполняемый код, общую динамическую библиотеку или объектный код.

Терминология

Читать дальше →

Собираем Perl прямиком из 1987 года

Время на прочтение16 мин
Охват и читатели16K
Прочитав новость "Код интерпретатора Perl официально перенесён на GitHub" на ресурсе LINUX.ORG.RU я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub'е.

Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (попали в Issues), патчи (попали в PRs), релизы и ветки. Надпись "32 years ago" рядом с файлами вызывает невольную улыбку.

Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все уличные дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с последней версией GCC 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?


Демонстрация работы twm, одного из первых оконных менеджеров для X Window System, на современном дистрибутиве Arch Linux.

Чтобы было совсем уж аутентичненько и некромантненько, я развернул виртуальную машину с голыми иксами и оконным менеджером twm, который тоже родом из 1987 года. Кто знает, может быть Larry Wall писал свой Perl используя именно twm, так сказать bleeding edge technology того времени. Используемый дистрибутив — Arch Linux. Просто потому что в его репозитории есть некоторые полезные вещи, которые впоследствии мне пригодились. Итак, поехали!
Читать дальше →

Критика протокола и оргподходов Telegram. Часть 1, техническая: опыт написания клиента с нуля — TL, MT

Время на прочтение60 мин
Охват и читатели80K

В последнее время на Хабре стали чаще появляться посты о том, как хорош Telegram, как гениальны и опытны братья Дуровы в построении сетевых систем, и т.п. В то же время, очень мало кто действительно погружался в техническое устройство — как максимум, используют достаточно простой (и весьма отличающийся от MTProto) Bot API на базе JSON, а обычно просто принимают на веру все те дифирамбы и пиар, что крутятся вокруг мессенджера. Почти полтора года назад мой коллега по НПО "Эшелон" Василий (к сожалению, его учетку на Хабре стёрли вместе с черновиком) начал писать свой собственный клиент Telegram с нуля на Perl, позже присоединился и автор этих строк. Почему на Perl, немедленно спросят некоторые? Потому что на других языках такие проекты уже есть На самом деле, суть не в этом, мог быть любой другой язык, где еще нет готовой библиотеки, и соответственно автор должен пройти весь путь с нуля. Тем более, криптография дело такое — доверяй, но проверяй. С продуктом, нацеленным на безопасность, вы не можете просто взять и положиться на готовую библиотеку от производителя, слепо ему поверив (впрочем, это тема более для второй части). На данный момент библиотека вполне работает на "среднем" уровне (позволяет делать любые API-запросы).


Тем не менее, в данной серии постов будет не так много криптографии и математики. Зато будет много других технических подробностей и архитектурных костылей (пригодится и тем, кто не будет писать с нуля, а будет пользоваться библиотекой на любом языке). Итак, главной целью было — попытаться реализовать клиент с нуля по официальной документации. То есть, предположим, что исходный код официальных клиентов закрыт (опять же во второй части подробнее раскроем тему того, что это и правда бывает так), но, как в старые времена, например, есть стандарт по типу RFC — возможно ли написать клиент по одной лишь спецификации, "не подглядывая" в исходники, хоть официальных (Telegram Desktop, мобильных), хоть неофициальных Telethon?

Ответ на этот вопрос неоднозначен

Автоматический вход в Lync конференции в Linux

Время на прочтение7 мин
Охват и читатели14K
Привет, Хабр!

Для меня эта фраза сродни hello world, так как я добрался наконец до своей первой публикации. Долго откладывал этот замечательный момент, так как и писать было не о чем, а обсасывать то, что уже по куче раз обсосано, тоже не хотелось. Вообще для своей первой публикации хотелось что-то оригинальное, полезное другим и содержащее какой-то челленж и решение проблем. И вот я уже могу поделиться этим. Теперь обо всем по порядку.

Вступление


Началось все с того, что некоторое время назад я на рабочем компе накатил себе Linux Mint. Многие наверняка знают, что Pidgin с плагином Sipe вполне годная замена Microsoft Lync (сейчас называется Skype for business) для Linux систем. В силу специфики работы мне часто приходится участвовать в sip-конференциях, и в бытность виндузятника вход в конференции был элементарным: получаем приглашение по почте, кликаем на ссылку входа, готово мы внутри.

При переходе на темную сторону Linux все несколько усложнилось: вход в конференции в Pidgin конечно же тоже есть, но там для этого нужно в свойствах вашего sip-аккаунта выбрать пункт присоединения к конференции в меню и в открывшемся окне вставить ссылку на конференцию либо ввести имя организатора и conf id. И через какое-то время я начал задумываться: «а нельзя ли как-то это упростить». Ага, скажете вы, на кой черт тебе это понадобилось, сидел бы себе на винде и в ус не дул.
Читать дальше →

Вышел Perl 5.30

Время на прочтение3 мин
Охват и читатели4.4K

Вчера, 23 мая, состоялся релиз Perl 5.30.0. Новость была объявлена в Usenet-группе perl.perl5.porters одним из ключевых разработчиков Perl — Sawyer X.


По сравнению с предыдущим стабильным релизом, 5.28.0, вышедшим около 11 месяцев назад, было изменено около 620.000 строк кода, изменения затронули 1300 файлов, в разработке приняли участие 58 авторов. Изменения непосредственно исходного кода (только .pm, .t, .c и .h файлы) оцениваются в ~510.000 строк и 750 файлов.


Открыта разработка следующей ветки 5.31. Выпуск следующего стабильного релиза запланирован на май 2020 года.


Ключевые изменения

Вклад авторов