Обновить
64K+

PHP *

Скриптовый язык общего назначения

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

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

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

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

Меня зовут Валерий, и я проработал инженером на заводе шесть лет. Звучит как начало занятий по групповой психотерапии для выгоревших сотрудников, но о моём выгорании и причинах этого я расскажу как-нибудь в другой раз. В данной статье хочу поделиться историей о том, как я воплощал свой Pet-проект в рамках промышленного предприятия и что из этого вышло. Впереди много картинок, так что добро пожаловать под кат!
Читать дальше →

Ваш собственный сайт задач за 30 минут — и совсем бесплатно :)

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

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

А может вы набираете стажёров в компанию - на позицию junior разработчика или тестера - или на внутренние курсы - тут не помешала бы возможность провести мини-соревнование - чтобы отфильтровать более целеустремлённых кандидатов. (конечно нужна аккуратность с любителями ИИ-генерации кода, но это отдельная тема) Можно использовать также и для сессий live-coding на собеседованиях.

Это просто! Вы можете за один присест развернуть готовый опенсорсный сайт (моё творение) на бесплатном PHP-хостинге. В зависимости от потребностей этого может хватить на годы. Я расскажу об основных возможностях и недостатках - и вкратце поясню как скачать, как задеплоить, как кастомизировать - так что вы сможете решить, подойдёт ли эта штука для ваших целей.

Читать далее

Как я узнаю ежедневные новости с помощью матричного принтера

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

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

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

Читать далее

1C:Enterprise 8.3 Remote Administrative Client Utility для веб приложения

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

В связи с переходом на отечественное ПО в организации пришлось искать замену Windows утилиты администрирования кластера. После изучения вопроса выяснилось, что для администрирования кластера 1С существует 3 подхода, но они не совсем подходят для комфортной работы.

Читать далее

Поддержка нескольких ботов в DefStudio Telegraph

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

Программный продукт Telegraph от DefStudio работает шустро и работать с ним одно удовольствие. Но не обошлось и без ложки дёгтя в этом меду - несмотря на возможность работы с несколькими ботами, обработчик для них всех будет лишь один. Благо есть лёгкий способ это исправить.

Итак, погнали!

Читать далее

Как внедрение CI/CD превратилось в эпопею с рефакторингом

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

Всем привет меня зовут Роман. Я CTO компании LikeSoft и сегодня я хочу поделиться кейсом как я переводил LMS платформу на облако.

Читать далее

Как встроить систему приглашений в свое приложение с помощью Laravel и GraphQL

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

Привет, Хабр! Меня зовут Екатерина Саяпина, я Product Owner личного кабинета платформы МТС Exolve. В этом посте расскажу, как встроить систему приглашений в приложение с помощью Laravel и GraphQL. Эту задачу можно выполнить не только по привычным каналам вроде email, но и через SMS API. Мы разберем процесс интеграции от создания модели на Laravel и работы с GraphQL до отправки сообщений через API Exolve. Все подробности — под катом.

Читать далее

PHP и Laravel дайджест новостей за август 2024 года

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

Дайджест новостей от CutCode с Сергеем Пантелеевым и Данилом Щуцким. Давайте посмотрим, что произошло в августе в мире PHP и Laravel.

Читать далее

За кулисами разработки: 5 практических советов по созданию плагина для СДО Moodle

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

Привет! Меня зовут Андрей, я работаю в iSpring более четырёх лет — развиваю десктопные продукты. Более двух лет пишу на PHP. Летом 2023 года мы решили интегрировать Moodle с нашим конструктором курсов iSpring Suite, чтобы пользователи могли загружать курсы в систему всего за пару кликов. После двух недель изучения гайдлайнов по разработке плагина и написания прототипа мы приняли решение создать собственный плагин для Moodle.

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

Статья будет полезна PHP-разработчикам, кто только начал писать плагин для Moodle или подумывает его написать.

Читать далее

Как настроить регистрацию и аутентификацию на Drupal с помощью SMS API

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

Подтверждение регистрации и аутентификация через SMS API — эффективный инструмент на множестве сайтов. Такая функция помогает уменьшить количество спам‑аккаунтов, улучшить взаимодействие с пользователями и предоставить ценные данные для целевых кампаний. Разберёмся, как реализовать такое подтверждение через МТС Exolve на сайтах с Drupal.

Читать далее

PHP и работа с базами данных: как выбрать и использовать ORM для максимальной производительности

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

ORM (Object-Relational Mapping, рус. Объектно-реляционное отображение) — это технология, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». С помощью ORM упрощается процесс сохранения объектов в реляционной базе данных и их последующего извлечения, так как она автоматизирует преобразования данных между двумя различными форматами.

По своей сути, ORM обеспечивает работу с базой данных на уровне объектов, что подразумевает соответствие структуры и данных в БД объектам кода. В ходе работы с этими объектами происходят изменения как в базе данных, так и в коде. Основные принципы функционирования ORM включают следующие тезисы:

Читать далее

Немного курочим стандартный валидатор Laravel или первый опыт с фасадами и сервис провайдерами

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

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

Читать далее

Подключение оплаты Тинькофф к Telegram-боту на чистом php

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

Недавно добавил оплату в свой Телеграм‑бот. После некоторых изысканий выбор пал на Тинькофф (ныне Т‑банк). Сам бот работает на php без вспомогательных библиотек. Возможно, кому‑то пригодится мой опыт и код. И бот.

Читать далее

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

Схематично, простыми словами о внутреннем устройстве PHP (Zend Engine, OPCache, JIT)

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

Данный пост нацелен на неопытных PHP-специалистов. От этой информации лучше программировать вы не станете. Ожидаемая польза:

Мне когнитивно и морально легче, когда уменьшается «магия» того, с чем работаешь. Может тебе тоже

Возможно чуть-чуть реже статьи на хабре будут тебя отпугивать

Объясню на 4 примерах — каждый лишь немного сложнее предыдущего.

Пример 1: запуск программы, написанном на компилируемом языке (Go): в полной статье

Пример 2: Запуск скрипта PHP без OPCache и JIT

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

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

Вот схематично представил всю последовательность работы PHP скрипта без включенных OPCache и JIT (каждый из них по отдельности рассмотрим в следующих двух примерах).

У нас привычный «исходный код» PHP (файл hello-world.php):

<?php echo "Hello world";

Опять идем по порядку, рассмотрим какие процессы происходят запустив команду:

php hello-world.php

Процесс №1 — Компиляция в байт-код
Сначала исходный код обрабатывается Zend Compiler — это PHP компилятор. Первый из двух основных компонентов Zend Virtual Machine.

В отличие от рассмотренного выше компилятора Go:

задача PHP компилятора — преобразовать исходный код не в машинный код, а в код-посредник - байт-код;

процесс компиляции происходит при каждом запуске программы (вместо лишь единоразового - до запуска программы, как в примере с Go)

В случае PHP этот байт-код назвали PHP OPCode.

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

Чтобы посмотреть результат работы компилятора — сам байт-код — выполним команду:

php -d opcache.opt_debug_level=0x20000 -d opcache.enable_cli=1 hello-world.php

Получим:

$_main: ; (lines=3, args=0, vars=0, tmps=1) ; (after optimizer) ; /hello-world.php:1-2 0000 EXT_STMT 0001 ECHO string("Hello World") 0002 RETURN int(1)

Вначале видим $_main: — обозначает, что следующие строки относятся к функции main. Появление такой функции в байт-коде для глобальной области видимости PHP — занятная историческая особенность, дошедшая из других языков;

Следующие 3 строки начинаются на ; — так обозначаются комментарии. Одна из целей — для дебаг-информации;

Последние 3 строки — непосредственно код нашего приложения, который будет выполняться виртуальной машиной в следующем шаге.

Процесс №2 — Выполнение байт-кода

Читать далее

Как починить пагинацию в своих расширениях для Joomla 5.1.3+. Backwards breaking changes

Время на прочтение2 мин
Охват и читатели862

Это информация о возможном сломе обратной совместимости в классе Pagination Joomla 5.1.3+. Релиз 5.1.3 был связан с закрытием уязвимостей (см. Joomla 5.1.3 and 4.4.7 Security and Bug Fix Release), в нём был изменён подход к генерации ссылок для страниц пагинации. Из‑за этого могут перестать работать ссылки страниц пагинации в сторонних компонентах Joomla. В компонентах ядра ошибки работы пагинации были исправлены в релизе 5.1.4.

Читать далее

Свой первый модуль для админки битрикс, первое субъективное впечатление

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

Итак после первых плагинов для ВордПресс и джумла пришла пора сделать что-то похожее в Битрикс.

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

И вот так получилось, что свежие мозги прошлись по ВордПрессу, Джумла и теперь взялись за Битрикс.

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

Главное отличие отечественной CMS - оплата вперед

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

Имеется ввиду, что так называемая демо версия (на месяц) виснет при установке и до конца ну никак не доходит.

Мы сначала подумали, что это потому, что мы устанавливаем на локалхост или потому, что это демо версия, но оказалось впоследствие, что так и должно быть. То есть и при установке демо и при установке нового сайта в рабочем Битриксе установка зависала на разных этапах по непонятным причинам.

Читать далее

Как поднять на VDS свой веб-сервер. Пошаговое руководство для новичков

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

Содержание статьи полностью соответствует заголовку: данный материал написан с целью помочь тем, кто никогда еще не устанавливал и не тюнинговал веб-сервер для своего корпоративного сайта или личного блога, передоверяя эту работу техническому специалисту либо используя шаред-хостинг. Автор step-by-step проведет вас через все перипетии данного действа, в результате чего, даже если подобное в новинку, вы без особых проблем (ну, я надеюсь) получите в итоге готовое и безопасное решение.

Читать далее

Проект «Статистика дрифта». Часть 2. Базовые сущности

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

Первая часть серии - Проект «Статистика дрифта». Часть 1. Настройка
Паблик во ВКонтакте с новыми сериями без задержек выпуска на habr - Пихта DEV

Читать далее

Генерация диаграммы «Сущность-Связь/ Entity-Relationship» с помощью Laravel

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

Laravel ERD (Схема сущность/связь)

Автоматическая генерация диаграмм базы данных под ваши сущности в Laravel

Читать далее

Решение задачи от Оборот.ру: Создаем прототип сборщика фруктов в саду на PHP

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

Привет, Хабр! Меня зовут Ник, мне 25, и я уже несколько лет работаю в сфере разработки. Недавно я столкнулся с интересной задачей, которую хотел бы обсудить с вами. Я получил её как тестовое задание — компании Оборот.ру, которая специализируется на автоматизации процессов. Задача заключалась в том, чтобы написать прототип сборщика фруктов в саду, реализовав его в парадигме объектно-ориентированного программирования (ООП) на PHP. В этой статье я расскажу, как я подошел к её решению.

Читать далее