Обновить
16K+

Perl *

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

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

Создаём гейт между конференцией xmpp и irc

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

Определимся с задачей


Есть комната в irc, есть комната в xmpp. соответственно нужно, чтобы всё, что пишут в xmpp оказалось в irc, и наоборот.
xmpp и irc в данном случае имеют кодировку utf-8, поэтому перекодировать ничего не нужно будет.

Начнём


Для всего этого будем использовать Anyevent.
Читать дальше →

Новости

Как Perl держит 30% продакшна Рунити и почему нас это устраивает

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.5K

Привет, Хабр! На связи команда идентификации и авторизации Рунити. Мы отвечаем за сервисы, через которые проходит каждый пользователь: регистрация, авторизация, верификация личных данных и жизненный цикл договора пользователя.

Perl принято хоронить примерно с 2010 года. В феврале 2026-го TIOBE вернул его в топ-10 — и это немного всколыхнуло профессиональное сообщество. В группе компаний Рунити на Perl работает 25–30% продакшн-сервисов: биллинг, авторизация, очереди, ядро платформы. Расскажем, почему так вышло, что происходит, когда мы пытаемся это переписать, и почему нам за это не стыдно.

Читать далее

Кастомизация Angie (njs, Lua, Perl)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.8K

Север Angie вобрал в себя всю функциональность, которая десятилетиями формировалась в Nginx. Кроме того, разработчики за несколько лет добавили еще несколько модулей и расширили возможности существующих. Тем не менее, при реализации сложных задач может потребоваться индивидуальное решение, нестандартное поведение сервера и кастомизированная конфигурация. В таких задачах полезно использовать модули для расширения функциональности сервера на базе различных языков программирования: доступны njs, Lua и Perl.

Читать далее

Релиз за две минуты и краш-тест процессов: как мы разработали Мультидоступ в личном кабинете доменного регистратора

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7.1K

Привет, Хабр! На связи команда архитекторов, разработчиков и тестировщиков Рунити, которые внедряли функцию «Мультидоступ» в личный кабинет Руцентра. В этой статье рассказываем, как добавляли ролевые проверки, перестраивали контур авторизации и дорабатывали существующую инфраструктуру личного кабинета доменного регистратора. Проект получился объемным, график — насыщенным, но обо всем по порядку :) 

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

Читать далее

Сбор и отправка APM-трейсов из разных сервисов: как мы приручили трейсинг в монолитах

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

Всем привет! Меня зовут Яна Курышева, и я тимлид одной из команд разработки бэкенда в Спортсе’’.

Мы – спортивное медиа. Наш продукт – это сайт и приложения со спортивной статистикой, новостями, редакционным и пользовательским контентом, пушами, рекомендациями и комментариями.

Чтобы вся система оставалась управляемой, мы активно используем трейсинг с помощью Elastic APM. Но существующие библиотеки не учитывали специфику нашей архитектуры и не решали всех задач.

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

Читать далее

День программиста: от CGI до Zope

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.4K

📅 Сегодня — День программиста. И это отличный повод вспомнить, что даже то, что кажется нам «естественным» и само собой разумеющимся, когда-то было революцией.

Мы привыкли к тому, что любой фреймворк — это набор правил и инструментов, который помогает нам работать быстрее, чище, правильнее. Но назвать «первый в мире фреймворк» — так же сложно, как назвать первого музыканта, сыгравшего рок-н-ролл. Понятие рождалось постепенно, размытое и спорное.

Читать далее

Видишь суслика? А он есть! Как главная страница Яндекса переезжала на Go

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели44K

Переезд большого сервиса с Perl на Golang едва ли кому-то покажется простой задачей. А теперь представьте, что это главная страница Яндекса, на которую ежедневно заходят миллионы пользователей. И что продукт постоянно дорабатывается, а значит, нельзя взять и остановить разработку на пару лет переезда. Представили? Сложно? А вот, оказывается, всё возможно. 

Привет, Хабр! Меня зовут Вячеслав Круглов. Я руковожу одной из команд разработки бэкенда главной страницы Яндекса. Расскажу, как мы переписывали бэкенд с Perl на Go, поделюсь интересными подробностями переезда, а также сравню компоненты и продуктовые блоки.

Читать далее

Цикл в RegEx для поиска подстрок с условием

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.4K

Я хочу поделиться своим изобретением, которое позволяет вам использовать только одно регулярное выражение, которое будет искать подстроку в строке с определенным условием. Если хотите, называйте это циклом в RegEx, которого раньше не существовало!

Я поделюсь с вами не только разными полезными шаблонами, но и покажу различные примеры от простых до сложных.

Посмотреть идеи и шаблоны

Простой вебсервис, на Perl, но не CGI

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

Просто хочу показать, как с помощью Perl можно сделать простой веб-сервис, на примере мониторинга свободного места на диске и свободной памяти.

Почему именно на Perl - потому что на примере минимального дистрибутива Debian, где Perl уже установлен по умолчанию, и для создания вебсервиса потребуются минимальные усилия.
Ну и заодно - как делаются библиотеки функций и автотесты.

Читать далее

Механика окружающей среды в фентезийном мире

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели2.6K

Я прочитал замечательную статью за авторством @rplacroixи загорелся идеей воплотить механики окружающей среды, подобные линейке игр Divinity: разлитую нефть можно поджечь, огонь можно потушить водой, а яд неожиданно взрывается от огня. Здесь я буду больше обращать внимание на реализацию в коде, чем на достоверную копию механик из игр Divinity. Я покажу некоторые кусочки кода с пояснениями, а в конце будет небольшая демонстрация прототипа игры с этой системой.

Сегодня я программирую на Raku. Raku — это молодой язык с длинной историей, сестринский язык к языку Perl. Я хочу продемонстрировать самые сильные стороны этого языка в контексте прототипирования игры и частично сравнить их с оригинальной статьей, языком имплементации которой был выбран Python. В течение статьи я буду оставлять раскрывающиеся блоки с объяснением тех или иных особенностей языка Raku, если вам интересно.

Читать далее

Perl 5.40.0: что нового спустя 11 месяцев? Изменения и дополнения в релизе

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

Не прошло и года, как разработчики дождались новой стабильной ветки языка программирования Perl — 5.40. При подготовке этого выпуска изменениям подверглись свыше 160 тыс. строк кода и 1 500 файлов. Всего в работе над релизом приняли участие 75 специалистов. Ну а подробности, как всегда, под катом.

Читать далее

Искусство README

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели12K

Привет, Хабр!

На связи Андрей из сообщества ITMO.OpenSource. Мы считаем, что важно делать открытую науку, поэтому пишем об открытом коде, проводим митапы «Scientific Open Source» и разрабатываем научные решения с открытым кодом.

Мы убеждены, что открытая наука – это не просто код на github, но и совокупность факторов, которые позволяют этим кодом эффективно воспользоваться: запустить, модифицировать, внедрить в другие проекты. Поэтому я решил перевести популярную статью JS-разработчицы Киры Окли «Art of README». Несмотря на разницу в экосистемах (я пишу преимущественно на Python), мне кажется, многие идеи этой статьи актуальны для любого проекта на любом языке.

Читать далее

Пролог в Perl

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели3.6K

Прогресс неумолимо стремится вперёд, заставляя программистов использовать git, docker и chat-GPT. В то же время древние технологии 60-х, 70-х, 80-х, 90-х и 2000-х предаются забвению...

Читать далее

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

Отладка приложений на Perl в Docker-контейнере

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели3.2K

Я Марсель Ардуанов, руководитель команды разработки VK и по совместительству Go-разработчик. После перехода в другое бизнес-подразделение я столкнулся с сервисами на языке Perl. Если вы посмотрите рейтинг языков программирования в 2023 году на Хабре, то увидите, что он не входит в этот список.

В компаниях до сих пор существуют сервисы на Perl, логику работы которых нужно понять и перенести на другой язык. Обычно в этом очень помогает отладчик. Но походив по интернету, я понял, что лёгкого решения для запуска отладчика нет, нужно разбираться. В этой статье я расскажу, как работать с зависимостями и отлаживать Perl-приложения с использованием современных технологий.

Читать далее

Инструменты сисадмина: Perl и Golang

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.7K

В статье отражен опыт применения языков Perl и Golang в повседневной работе бородатого сисадмина в качестве скриптового языка и показаны примеры использования.

Читать далее

Обзор сканера Nikto для поиска уязвимостей в веб-серверах

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

Перед проведением атаки на целевой веб-сайт злоумышленнику необходимо собрать о нем как можно больше информации, а также найти уязвимости. Однако есть способ, который позволит раньше других найти уязвимости и тем самым повысить безопасность веб-сайта. Для этих целей используют специальные типы программ — сканеры уязвимостей.

Одним из самых известных и в то же время бесплатных является сканер Nikto.

В статье мы расскажем о базовых функциях сканера и о том, как его можно использовать  в «боевой» среде. Продукт интересен тем, что позиционируется как сканер для поиска уязвимостей на веб-серверах, в то время как большинство аналогов (такие как OWASP ZAP, wapiti, Arachni и другие) предназначены именно для поиска уязвимостей в веб-приложениях.

Читать далее

Разворачиваем сеть на RHEL8-based хостах

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

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

Конечно, первоначальная установка и настройка — это всегда полевая работа: монтаж СКС, сетевого оборудования и серверов; конфигурирование DHCP и организация удалённого доступа; иногда — заведение VLAN-ов.

Читать далее

Пейджинг страниц в соцсетях

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

Для пагинации страниц используют смещение (OFFSET) и курсорную пагинацию (по ID), как более быструю. Тем не менее есть ещё один малоизвестный вид пагинации по меткам страниц (MARKS). Она является разновидностью курсорной пагинации, но использует не идентификатор, а ряд полей перечисленных в ORDER BY SQL-запроса.

Читать далее

perltidy и cp1251

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

В 2000-х определилась тенденция переводить проекты в национальных кодировках в utf-8. Однако не везде их перевели одним махом, а решили рубить собаке хвост постепенно. В результате во многих проектах часть файлов c кодом в utf-8, а часть осталась в национальной кодировке (например, cp1251).

Поэтому я сделал утилиту ru-perltidy, которая определяет кодировку файлов, конвертирует в utf-8, а после форматирования переводит обратно.

Из вкусносей тут то, что ru-perltidy может отформатировать только изменённые в репозитории git файлы (Рис.1).

Читать далее

use bigint в perl

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

В зависимости от версии мантисса целых чисел в perl 40-бит (5 байт) или 64-бит (8 байт).

Проверить сколько бит отводится на число в текущем perl довольно просто:

Читать далее
1
23 ...