Почему фреймворки используют папку public и что такое document root

Отвечая на вопросы новичков встретил непонимание для чего в современных фреймворках точка входа находится не в корне проекта из-за чего у них возникают проблемы с развёртыванием на шаред хостингах. Немножко поверхностной теории. Данные которые лежат на сервере клиенты получают от вебсервера. В основном это nginx, но встречаются и древние apache. У них в настройках указывается директория куда они смотрят это root и dociment root соответственно. Файлы и директории в документ руте доступны относительно этой директории. Например у вас root это /var/www в нём файл config.ini, он будет доступен по адресу https://site.name/config.ini. После всяких трэшкурсов вроде попова разработчики зачем-то дают php…
Читать далее »Удобная фича при работе с форматами даты

При работе с датами часто возникает ошибка, что сгенерировав текущую дату забывают о хвостах вроде времени. По умолчанию все неуказанные значения берутся из текущего таймстампа. Но в формат даты можно подставлять спецсимволы, чтобы управлять этим процессом: |, !, +, & https://www.php.net/manual/ru/datetimeimmutable.createfromformat.php
Читать далее »Работа с ветками и pull request
При разработке всегд используются системы контроля версий, обычно это git. Есть популярная система работы с ветками и репозиториями git-flow, но она больше подходит для оупенсурс разработки. В обычном же проекте обычно всё чуть по другому. Обычно есть один главный репозиторий с UI для него вроде github, gitlab или bitbucket. Заводятся две рабочие ветки:1. master — продакшен код2. develop — текущая разработка Разработчик делает ветку от develop с названием по номеру в системе трекинга и кратким описанием: для фичи git checkout -b feature/PRJ-123—task-description origin/develop или для багофикса использует другой префикс ветки git checkout -b bug/PRJ-123—bugfix origin/develop. Разработка фичи ведётся в этой…
Читать далее »Поговорим о проблемах кэширования

Существует две главные проблемы программирования: именование переменных и инвалидация кэша. Поговорим о второй. Но для начала разберёмся с самим термином — кэширование. Я нашёл много определений, но мне они не очень нравятся. Приведу моё: Кэширование — от английского cacher (прятать, завёртывать), сохранение данных данных в другом месте или виде. Пункт, который меня смутил в других определениях — повсеместное упоминания ускорения. Но это не всегда так. Мы можем складывать данные и в более медленное хранилище, чтобы разгрузить основное. Тем самым уменьшив нагрузку на основной сторадж. Можем преобразовать данные в вид более удобный для парсинга как то xml или json. Можем разбрасывать…
Читать далее »Как исправить проблему с установкой viber в kubuntu 18.04
В новой версии kubuntu 18.04 используется libcurl4, а в зависимостях viber 3-я версия. Соответственно при установке viber просит установить старую версию и сносит новую libcurl4 и софт зависящий от неё. Лучший известный мне способ исправить данную проблему — пересобрать пакет. И всё работает. Печалит то, что современные приоритеты месенджеров кроются в продажах стикеров и информации, а вот потратить пару человекочасов на нормальный способ дистрибуции — жалко.
Читать далее »Рефакторинг блога.
Бложек немного приболел, дроплет на DO полетел, унеся с собой блог. Занимаюсь сейчас ремонтом и восстановлением из бэкапа. А заодно надо почистить лютый треш из стрых записей. А то многие статьи самому страшно перечитывать и хочется поломать руки тому говнокодеру…
Читать далее »Недостатки laravel
Я очень люблю фреймворк laravel, пользуюсь им начиная с 3-й версии, тогда он был как глоток свежего воздуха на фоне zend и symfony. Уважаю Тейлора за проделанную работу, за принесённую в php фреймворки идею удобного апи и умение копировать лучшее из других фреймворков вроде RoR. О плюсах сказано уже много, но у него есть свои недостатки. Эти недостатки не фатальны, а некоторые и вовсе мои личные привычки, которые другим покажутся надуманными. Всё дерьмо вылитое ниже не сильно влияет на мою оценку laravel, который считаю лучшим фреймворком в мире PHP. И спасибо @kotchuprik и его статье, который подтолкнул высказаться и дал некоторые идеи.
Читать далее »Проблемы с обновлением ubuntu
Недавно на kubuntu 14.10 столкнулся с проблемой при обновлении Ош http://by.archive.ubuntu.com utopic-backports/main Sources 404 Not Found Ош http://by.archive.ubuntu.com utopic-backports/restricted Sources 404 Not Found Ош http://by.archive.ubuntu.com utopic-backports/universe Sources 404 Not Found Ош http://by.archive.ubuntu.com utopic-backports/multiverse Sources 404 Not Found Ош http://by.archive.ubuntu.com utopic-backports/main i386 Packages 404 Not Found Ош http://by.archive.ubuntu.com utopic-backports/universe i386 Packages 404 Not Found Ош http://by.archive.ubuntu.com utopic-backports/multiverse i386 Packages 404 Not Found В кэше http://by.archive.ubuntu.com utopic-backports/main Translation-en В кэше http://by.archive.ubuntu.com utopic/restricted Translation-ru Долго не мог найти решение, но всё же нарыл в очередной заход sudo -i apt-get clean cd /var/lib/apt mv lists lists.old mkdir -p lists/partial apt-get clean apt-get update Спасибо…
Читать далее »Continuous Integration, delivery, deployment
Данный пост противопоказан и может оскорблять чувства верующих в церковь Мартина Фаулера, так как является довольно вольной трактовкой, но обтесанной годами моей практики. Сидит программист, пишет свой код, думает о пиве и здесь появляется другой программист, с ним тестировщик и, прости Господи, проектный менеджер. Здесь уже не до пива, код больше нельзя править на сервере через удалённый доступ. Приходится разворачивать git, лепить ветки, создавать билды и гонять тесты и в дело вступает супергерой Continuous. Последнее время принято мешать три шага Continuous в одну кучу, хотя эти шаги сильно отличаются по целям и подходам. Эти шаги — Continuous Integration, Continuous Delivery и Continuous Deployment.
Читать далее »Модули в angularjs
Поговорим о повторно используемом коде. Чтобы код повторно использовать его нужно оформлять особым способом и выносить в пакеты. Сейчас все нормальные фреймворки в разных языках программирования имеют поддержку пакетов и пакетные менеджеры для управления ими, а так же для решения проблем с версиями и зависимостями. В javascript для управления пакетами применяется bower. Теперь же рассмотрим как писать код, чтобы его можно было внедрять в проекты, в качестве препарируемого будет angularjs. Angularjs поддерживает модули, будем использовать именно их. Для примера можно разворатить пару готовых, я же постараюсь описать найденное мною. Модуль является контейнер в который мы можем складывать константы, переменные, контроллеры, сервисы и…
Читать далее »