Работа с ветками и 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 поддерживает модули, будем использовать именно их. Для примера можно разворатить пару готовых, я же постараюсь описать найденное мною. Модуль является контейнер в который мы можем складывать константы, переменные, контроллеры, сервисы и…

Читать далее »

Итоги 2014

В 2014 году в блоге не появилось ни одной новой записи, но помню про него, копится материал, появилась парочка черновиков и в 2015 обязательно разрожусь целым циклом постов. Год получился отличным, есть о чём рассказать. Помимо написания кода, активно начал заниматься обучением: появилась стажёрская программа, организуем воркшопы внутри компании, готовим небольшой хакатон, провел тьму собеседований. Приятно наблюдать как это всё приносит результаты, да ещё быстрее чем планировалось. Огромное спасибо за это HR и просто отличному человеку Ольге Бобко, которая дала возможность и подталкивает в этом направлении. А вот за код мне стыдно, он становится всё более пахнущим, работа в команде и бизнес требования…

Читать далее »

Continuous integration с Jenkins

Continuous integration или непрерывная интеграция — это практика создания  автоматизированной сборки проекта. Хотя это и звучит как-то заковыристо, но это то, что программист делает ежедневно. Мы пишем код и проверяем его на синтаксические ошибки, на соответствие стилю кодирования, прогоняем тесты, боремся с copy-past и тд. и т.п. В PHP существует масса инструментов. позволяющих это автоматизировать, в PEAR есть пакет phpqatools, который ставит сразу пачку таких утилит. Но прогонять их руками неудобно, к тому же хочется иметь какой-то графический интерфейс, чтобы просматривать отчёты, чтобы наблюдать как изменяется проект, иметь возможность смотреть на старые версии и т.д. Здесь на помощь приходит Jenkins.

Читать далее »