У великому бізнесі нерідко трапляються ситуації, коли впроваджуються і використовуються завідомо збиткові інформаційні системи. Ці проекти починаються як крута власна розробка компанії, під її процеси, з урахуванням всіх особливостей. Але вже після здачі з'ясовується, що то тут, то там недоробки, недоліки. Що необхідні звіти і графіки отримати неможливо, оскільки їх не змогли чи забули врахувати в ТЗ. Керівництво вимагає, потім просить що-небудь зробити, але система закрита для змін, а підрядник перебуває з нами у процесі арбітражної тяжби. Проте, безвихідних ситуацій звичайно ж не буває.
Читати далі →

Одного разу, з оновленням Firefox мій улюблений плагін Firebug було деактивовано. Причиною тому стала інтеграція Firebug консоль Firefox. Все це дуже добре, за винятком того, що перестав працювати мій другий улюблений плагін FirePHP, про його можливості писали тут і тут.
Я трохи засмутився і вже подумав переробити свої проекти під щось нове, але вирішив подивитися невеликий вихідний код FirePHP. І тут з'ясувалося, що нова консоль Firefox підтримує протокол Chrome Logger, тому з невеликими змінами я зробив власну версію FirePHP, яка працює за замовчуванням у браузері Firefox і Chrome, і звичайно ж з використанням Composer.
Читати далі →

Як створити Viber-бота з допомогою PHP

У листопаді 2016 року Viber впровадив публічні акаунти (Viber public account, або просто PA). З їх виходом стало доступно і api, який дозволяє:
  • вести листування з користувачем
  • перевіряти статус передплатників (онлайн, офлайн)
  • отримати інформацію про конкретному абонента
  • вносити записи (пости) на свою сторінку
Все це дозволяє створити досить непоганого бота, або ж інтегрувати бота у вже існуючий проект, що цілком може поліпшити якість взаємодія з користувачами. Якщо ви вже створювали ботів для telegram або slack — то створити бота для Viber не складе великої праці.
Читати далі →

Реліз LiveStreet 2.0



Вийшов новий реліз блого-соціального движка LiveStreet 2.0.

Нові можливості:
  • Нова структура файлів движка. Фреймворк повністю відділений від програми.
  • Перероблений фронт на базі компонентів
  • Механізм універсальних категорій. Можливість прив'язки категорій до різних об'єктів.
  • Механізм додаткових полів (EAV) для різних об'єктів
  • Універсальний механізм управління медіа-файлами
  • Керування типами топіків і їх кастомізація
  • Вбудована підтримка превью зображень для топіків
  • Можливість вставляти в топік кілька опитувань
  • Система управління правами користувачів
  • Центральний крон

Читати далі →

Зберігання php-сесій в Redis з блокуваннями

Стандартний механізм зберігання даних користувача сесій в php — зберігання в файлах. Однак при роботі програми на декількох серверах для балансування навантаження, виникає необхідність зберігати дані сесій в сховище, доступному кожному серверу програми. В цьому випадку для зберігання сесій добре підходить Redis.

Найбільш популярне рішення — розширення phpredis. Досить встановити розширення і налаштувати php.ini й сесії будуть автоматично зберігатися в Redis без зміни коду додатків.

Проте таке рішення має недолік — відсутність блокування сесії.

Читати далі →

Платформа для швидкого створення RESTful API

За останні кілька років мені довелося створити багато API на PHP. Велика частина з них була RESTful. Перший раз це було цікаво — годинник обговорення формату відповіді, вмісту помилок, варіантів авторизації та іншої романтики. Вдруге не покидало відчуття дежавю. На третій раз вже було зрозуміло — треба щось змінювати…

Ну і на четвертий раз, коли переді мною поставили завдання створення API, паралельно розробці основного проекту, я приступив до створення універсальної платформи для створення API в якому вже будуть вирішені всі «головні» питання:

  1. Формат відповіді (у тому числі і помилок)
  2. Форматування дати
  3. Ведення документації
  4. Авторизації і аутентифікації
  5. Валідація запитів
  6. і багато іншого

Читати далі →

Створення web-додатку на PHP з використанням Firebird і Laravel

firebird-logoПривіт Хабр!

У минулій статті я розповідав про пакет для підтримки СУБД Firebird у фреймворку Laravel. На цей раз ми розглянемо процес створення веб-додатки з використанням СУБД Firebird на мові PHP з використанням Laravel.

Огляд драйверів для роботи з Firebird
В PHP є два драйвери для роботи з СКБД Firebird:
Огляд розширення Firebird/Interbase
Розширення Firebird/Interbase з'явилося раніше і є найбільш перевіреним. Для установки розширення Firebird/Interbase в конфігураційному файлі php.ini необхідно розкоментувати рядок

extension=php_interbase.dll

або для UNIX-подібних систем рядок

extension=php_interbase.so

Це розширення вимагає, щоб у вас була встановлена клієнтська бібліотека fbclient.dll/gds32.dll (для UNIX-подібних систем fbclient.so) відповідної розрядності.

Зауваження для користувачів Win32/Win64

Для роботи цього розширення системної змінної Windows PATH повинні бути доступні DLL-файли fbclient.dll або gds32.dll. Хоча копіювання DLL-файлів з директорії PHP в системну папку Windows також вирішує проблему (тому що системна директорія за замовчуванням знаходиться в змінній PATH), це не рекомендується. Цього розширення потрібні наступні файли у змінній PATH: fbclient.dll або gds32.dll.

Читати далі →

Запускаємо Gulp з вотчерами на звичайному хостингу через адмінпанель

У тебе є сайт з админпанелью і ти використовуєш чи тільки збираєшся використовувати Gulp в цьому проекті? Хочеш максимально працювати з сайтом через адмінпанель, включаючи контроль над генератором ресурсів Gulp? Тоді під катом я покажу тобі простий спосіб управління Gulp'ом з вотчерами на сервері прямо з адмінпанелі.
Читати далі →

Об'єднуємо Code Coverage від PHPUnit і phpspec

Сьогодні та чи інша бібліотека на Github, у якої немає тестів, вже не сприймається серйозно. Тести допомагають нам сміливо робити рефакторинг і бути впевненими, що модуль, клас чи функція працюють так, як це задумувалося. Вони дозволяють нам тестувати наш код на різних версіях PHP і виявляти помилки заздалегідь. Це гарант якості і стабільності вашого коду.



Прагнути до стовідсоткового покриття коду немає ніякого сенсу, однак розуміти в середньому який відсоток коду покритий вашими тестами — хороша метрика при безперервному інтегруванні.

Ми можемо налаштувати оповіщення при падінні відсотка покриття, наприклад, нижче 50, можемо додавати автоматичні коментарі від ботів в пул реквестах, показувати тенденцію зміни Code Coverage на графіках з плином часу і т. д.

image

Але що робити, якщо ви використовуєте кілька бібліотек для тестування? Як отримати загальне покриття коду?

Читати далі →

Налаштування оточення для PHP розробників

У даній статті ми розглянемо налаштування оточення для PHP розробників з використанням Vagrant, Docker, Xdebug, PHPUnit і інтеграцію з IDE PHPStorm.

+

Вимоги
  • Оточення має розгортатися на Windows, MacOS, Linux
  • Установка повинна бути максимально простою
  • Швидка робота з файловою системою
  • Інтеграція з IDE PHPStorm
  • Кілька версії PHP інтерпретаторів (5.6, 7.0)

Читати далі →