Рубрика «php» - 20

Именно таким вопросом мы задались, встретив ребят оттуда на казанском PHP-митапе. Оказалось, всего за месяц они смогли раскачать местное сообщество — небольшое расследование со ссылками на городские чаты, активности и каналы под катом.

Йошкар-Ола, вообще, айтишный город? - 1

А если вам точно не хватало развиртуализации, приходите 1 февраля на 2-й PHP-митап от местного чата.
Читать полностью »

PHP-Дайджест № 172 (14 – 27 января 2020) - 1

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференций, стримы и многое другое.

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

Читать полностью »

Привет жителям Хабра.

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

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

Исходный код в моем репозитории на гите.

Мне захотелось использовать MVC структуру, что оказалось на мой взгляд не совсем верным, так как view не был задействован и это уже нельзя назвать mvc, но да ладно…
Читать полностью »

Предыстория

До начала работы с Алисой мне уже приходилось сталкиваться с разработкой чат-ботов для telegram, viber, вконтакте.

Чат-бот с расписаниями автобусов без Алисы

Чат-бот был разработан как дополнительный сервис к информационному порталу.

Продвигался через существующее мобильное приложение с расписанием.
Статистика использования была очень скучной: 1-20 чел. в день, при активныx ~2000 в моб. приложении. Как минимум? был один человек, для которого бот был нужен.

Читать полностью »

Привет хабр.

image

Да, это очередной пост на тему тестирования. Казалось бы, что тут уже можно обсуждать? Все кому надо — пишут тесты, кому не надо — не пишут, все счастливы! Факт же в том, что большинство постов о юнит-тестировании имеют… как бы так никого не обидеть… идиотские примеры! Нет, ну правда! Сегодня я попытаюсь это исправить. Прошу под кат.

Читать полностью »

Продолжение цикла о Zip-архивах и PHP. Предыдущие статьи: Часть 1, Часть 2, Часть 3

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

В этой статье я покажу как прочесть уже существующий архив и для примера мы возьмем photos.zip из прошлой статьи. Чтоб не повторять все процедуры воспользуемся готовым — https://github.com/userqq/images/raw/master/photos.zip.

А теперь давайте на минутку отвлечемся и вспомним, из чего состоит наш архив: сначала идет набор данных упакованных файлов, где каждый упакованный файл предварён структурой Local File Header (LFH), после всех данных у нас идет набор структур Central Directory File Header (CDFH) — это такое оглавление по нашему архиву, в котором перечислены все элементы и позиции их смещения относительно начала файла. А завершает архив End Of Central Directory Record (EOCD) — тут указана позиция начала структур CDFH, их количество и общая длина в байтах. Поэтому архив следует читать с конца, чтоб сначала найти EOCD, потом прочесть структуры CDFH и таким образом получить список файлов в архиве.

FYI: А некоторые форматы, например JPEG, читаются с начала. Поэтому мы можем склеить картинку с архивом, даже банально через cat image.jpeg archive.zip > imagearchive.jpeg, не потеряв функционала. Браузеры и приложения для просмотра картинок будут без каких-либо проблем показывать нам картинку. В то время как любое приложение для чтения zip-архивов, будь то 7z или unzip, сможет преспокойно работать с файлом как с архивом. Например, вот — https://github.com/userqq/images/blob/master/jpegarchive.jpg (Осторожно, эта штука весит около 20мб, поэтому не советую открывать с телефонов или если вам дорог трафик). Таким образом, если вы знаете хостинг картинок, на котором изображения не перекодируются и не обрезаются, вы можете заливать туда не только картинки:) Хотя, мне кажется, сейчас таких уже не найти.
Читать полностью »

Чистые тесты на PHP и PHPUnit - 1

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

Тесты — это особая разновидность документации. Как я ранее писал о TDD на PHP, тест всегда будет (или хотя бы должен) ясного говорить о том, в чём заключается задача конкретной части кода.

Если один тест не может выразить эту идею, то тест плохой.

Я подготовил набор методик, которые станут подспорьем для PHP-разработчиков в написании хороших, удобочитаемых и полезных тестов.
Читать полностью »

Всем привет! В преддверии старта курсов «Framework Laravel» и «Backend-разработчик на PHP», продолжаем делиться интересным материалом по теме. Поехали.


За последние несколько лет популярность Laravel резко возросла. Сообщество Laravel даже придерживается мнения, что Laravel сделал процесс работы на PHP приятнее, по сравнению с той болью, которая была раньше. В Laravel 6 есть несколько новых интересных функций. Получение супер-масштабируемого рабочего URL-адреса для вашего приложения занимает часы, если не дни. А создание чего-то вроде Kubernetes – это тяжелейшая задача. Именно в таких случаях Google Cloud Run выступает в лучшем свете, ведь с его помощью вы можете получить рабочий HTTPs URL-адрес для любого из ваших контейнерных приложений в считанные минуты.

Google Cloud Run является бессерверным и полностью управляется Google. Вы получаете супер-масштабирование, посекундную оплату, HTTPs URL и собственный маппинг домена.

Если вы хотите запустить stateless контейнеры, Cloud run – самый простой способ это сделать. В этой статья я подробно расскажу, как заставить ваше приложение Laravel 6 работать на Google cloud run с Continous Integration (CI).Читать полностью »

Правила работы с динамическими массивами и пользовательскими классами коллекций - 1

Правила работы с динамическими массивами и пользовательскими классами коллекций
Здесь представлены правила, которых я придерживаюсь при работе с динамическими массивами. По сути, это руководство по проектированию массивов, но я не захотел помещать его в руководство по проектированию объектов, потому что не в каждом объектно-ориентированном языке есть динамические массивы. Примеры написаны на PHP, потому что он похож на Java (с которым вы, возможно, уже знакомы), однако с динамическими массивами вместо встроенных классов коллекций и интерфейсов.
Читать полностью »

Запись звука JS c микрофона или голосовые комментарии

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

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

Постановка задачи

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js