Pull to refresh
1
0
Александр @nefone

Junior разработчик

Send message

Книга «Экстремальное программирование: разработка через тестирование»

Reading time7 min
Views42K
image Возвращение знаменитого бестселлера. Изящный, гибкий и понятный код, который легко модифицировать, который корректно работает и который не подкидывает своим создателям неприятных сюрпризов. Неужели подобное возможно? Чтобы достичь цели, попробуйте тестировать программу еще до того, как она написана. Именно такая парадоксальная идея положена в основу методики TDD (Test-Driven-Development — разработка, основанная на тестировании). Бессмыслица? Не спешите делать скороспелые выводы. Рассматривая применение TDD на примере разработки реального программного кода, автор демонстрирует простоту и мощь этой методики. В книге приведены два программных проекта, целиком и полностью реализованных с использованием TDD. За рассмотрением примеров следует обширный каталог приемов работы в стиле TDD, а также паттернов и рефакторингов, имеющих отношение к TDD. Книга будет полезна для любого программиста, желающего повысить производительность своей работы и получить удовольствие от программирования.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments16

Локальный веб-сервер под Linux, с автоматическим поднятием хостов и переключением версий PHP

Reading time4 min
Views46K
Скорее всего какие-то части этой статьи уже знакомы многим хаброжителям, но в связи с покупкой нового рабочего ноутбука я решил собрать все крупинки воедино и организовать удобное средство для разработки. Мне часто приходится работать со множеством маленьких проектов, с разными версиями PHP, часто переводить старые проекты на новые версии. В далёком прошлом, когда я был пользователем Windows то использовал OpenServer. Но с переходом на Linux мне нехватало той простоты создания хостов и переключений версий которые были в нём. Поэтому пришлось сделать еще более удобное решение на Linux =)

Цели


  1. Использовать текущий на момент написания статьи софт
  2. Чтоб разграничить локальные домены, будем использовать специальный домен .loc
  3. Переключения версий PHP реализуем через поддомен c помощью fast-cgi
  4. Автоматическое создание хоста с помощью vhost_alias и dnsmasq

Что имеем в итоге. При переходе на
56.test.loc
Apache запустит c версией PHP 5.6.36
/var/www/test.loc/public_html/index.php
Поменяв поддомен на
72.test.loc
будет запущен тот же файл но уже с версией PHP 7.2.7

Другие версии доставляются аналогичным описанным ниже способом.

Для создания еще одного сайта просто создаем в /var/www/ папку имеющую окончание .loc, внутри которой должна быть папка public_html являющаяся корнем сайта

Вот собственно и все. Как без дополнительных мучений, перезапусков, и редактирований конфигов имеем автоматическую систему для работы с сайтами.
Читать дальше →
Total votes 13: ↑8 and ↓5+3
Comments14

Офис под Agile: где разместить тысячу разработчиков?

Reading time4 min
Views26K
Всем привет. Я работаю в московском офисе Технологического Центра Дойче Банка. Для тех, кто не знает, — мы занимаемся разработкой приложений для CIB (Corporate and Investment Banking) бизнеса в Нью-Йорке, Лондоне, Франкфурте, Токио, Сингапуре, Чикаго, Сиднее. В России в Техцентре работают более 1000 человек — это примерно 130 команд. Всего в мире таких центров у Дойче Банка четыре: в России (Москва и Санкт-Петербург), США, Румынии и Индии.



Примерно полтора года назад стало понятно, что мы перестали помещаться в наш офис и нам надо искать себе новый дом.
Читать дальше →
Total votes 53: ↑44 and ↓9+35
Comments73

Пятничный PHP: бесплатные вебинары от Skillbox

Reading time2 min
Views7.1K
В прошлый раз мы публиковали нашу подборку вебинаров в субботу. Сейчас решили попробовать пятницу: аналитики подсказывают, что так вам, читателям, будет удобнее.



Так вот, в сегодняшней подборке — бесплатные вебинары по PHP. Темы самые разные, полезную для себя информацию может почерпнуть как новичок (основной упор именно на них), так и программист с опытом.
Total votes 19: ↑18 and ↓1+17
Comments3

Composer — менеджер зависимостей для PHP

Reading time10 min
Views402K
Composer (getcomposer.org) — это относительно новый и уже достаточно популярный менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас! Причём Composer — это не менеджер пакетов в классическом понимании. Да, он оперирует с сущностями, которые мы будем называть «пакетами» или библиотеками, но устанавливаются они внутрь каждого проекта отдельно, а не глобально (это одно из основных отличий от старого-доброго PEAR).

Кратко, как это работает:
  1. У вас есть проект, который зависит от нескольких библиотек.
  2. Некоторые из этих библиотек зависят от других библиотек.
  3. Вы описываете в своём проекте те библиотеки, от которых непосредственно зависит ваш код.
  4. Composer находит нужные версии требуемых библиотек для всего проекта, скачивает их и устанавливает в папку вашего проекта.

При создании Composer авторы черпали идеи и вдохновение из аналогичных проектов: npm для Node.js и Bundler для Ruby.

Изначально он был спроектирован и разработан двумя людьми Nils Adermann и Jordi Boggiano, сейчас в проекте участвует более двадцати контрибьюторов, Проект написан на PHP 5.3, распространяется под лицензией MIT и доступен на github.

Первые коммиты были сделаны апреле 2011 года и на сегодняшний день Composer находится в стадии «alpha3». Однако, он уже достаточно стабилен и используется многими популярными PHP проектами (например, Symfony 2). Список проектов использующих Composer можно посмотреть на сайте packagist.org — это официальный репозиторий Composer пакетов. Кстати, на недавней конференции Devconf 2012 разработчик фреймворка Yii в своём докладе упомянул, что Yii2 скорее всего тоже будет использовать Composer.

В этой статье я кратко опишу основные возможности Composer и мы попробуем создать демонстрационный проект использующий Composer для загрузки необходимых библиотек. Все примеры будут доступны на github.com и bitbucket.org.

Читать дальше →
Total votes 73: ↑60 and ↓13+47
Comments43

Как мы перестали тратить неделю на выдачу dev-стенда

Reading time4 min
Views6.6K
Каждый разработчик хочет свой dev-стенд. Каждый тестировщик хочет свой тестовый стенд. И каждый специалист в препродакшне хочет свой стенд — чтобы все финально проверить и отрепетировать запуск в прод. Когда все эти хотелки сходятся в процессинге — одной из самых крупных и активных систем банка — расходы на инфраструктуру заставляют почесать затылок и поискать «варианты». О том, что нашли мы, расскажем в этом посте.

Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments7

Небольшие трюки с Elasticsearch

Reading time7 min
Views15K
Небольшая заметка, скорее для себя, о мелких трюках по восстановлению данных в Elasticsearch. Как починить красный индекс если нет бэкапа, что делать если удалил документы, а копии не осталось — к сожалению в официальной документации об этих возможностях умалчивают.
Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments5

Открытый вебинар «Создание Web-сайта на фреймворке Yii2»

Reading time4 min
Views6.8K
Всем привет!

На прошлой неделе наш новый преподаватель курса «Backend разработчик на PHP» провёл первый открытый урок на тему «Создание Web сайта на фреймворке Yii2». Предлагаем вашему вниманию запись и транскрипцию, собственно, вебинара.

Total votes 20: ↑15 and ↓5+10
Comments8

QA-meetup SuperJob

Reading time2 min
Views2.4K
28 июня провели QA-meetup SuperJob, рассказываем, что там было.

Алексей Захаров, президент компании Superjob открыл митап.


Первым с докладом «Эффективная автоматизация тестирования Superjob» выступил Антон Шкредов, специалист по автоматизации тестирования в SuperJob.ru.

Антон поделился опытом поднятия автоматизации с нуля на примере проекта Superjob.

«Столкнувшись с ситуацией, когда приёмочное тестирование занимает 10 часов, а цель компании — ежедневные релизы, приходит понимание того, что отделу тестирования необходимо соответствовать и менять устоявшиеся подходы. Для избавления от ежедневно повторяющейся деятельности очевидным лекарством является автоматизация этого процесса. Мы решили не превращать автоматизацию в ещё одну проблему. На примере нашего веб-проекта мы расскажем, как сделали тесты быстрыми и стабильными и какие универсальные способы для этого использовали».


Презентация
Total votes 12: ↑7 and ↓5+2
Comments1

Рендеринг HTML файлов: глава из книги «ReactPHP для начинающих» от разработчика Skyeng

Reading time11 min
Views6.9K


Бэкенд-разработчик мобильного приложения Skyeng Сергей Жук продолжает писать годные книги. На сей раз он выпустил учебник на русском языке для только осваивающей PHP аудитории. Я попросил Сергея поделиться полезной самодостаточной главой из его книги, ну и дать читателям Хабры скидочный код. Ниже — и то, и другое.

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments5

Низкоуровневая реализация префиксного дерева trie на PHP

Reading time4 min
Views5.9K

Предисловие


Описанная здесь реализация trie на PHP делает пока слишком жирный словарь, который соответственно довольно долго загружается в память, что нивелирует довольно неплохую скорость её работы. Скорость поиска составляет ~80 тыс. слов в секунду. Словарь сделан из списка лемм словаря opencorpora.org и включает в себя 389844 слова. В несжатом виде словарь весит ~150мб, а сжатый gzip ~6мб. Однако довольно неплохие результаты быстродействия доказывают, что на чистом PHP можно сделать вполне работоспособное префиксное дерево trie.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments26

Вебинары Skillbox: самое интересное — бесплатно

Reading time4 min
Views18K


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

Ну а если есть время, то почему бы не просмотреть пару-тройку бесплатных вебинаров Skillbox? Это записи, которые мы выложили на YouTube. Темы разные, поскольку мы решили не останавливаться на чем-то одном, как в наших обычных постах.
Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments7

Сообщения с сайта в ВК – просто и эффективно – PHP+CUrl

Reading time2 min
Views8.1K
Доставка сообщений в ВК удобна большинству сайтов разной направленности: емайлы многие не читают, в таких мессенджерах как Вотсап и Вайбер все сложно. А рассылка новостей и личных уведомлений с сайта в ВК – самое то – легко, просто и сразу видно пользователю.

Для своего сервиса уведомлений о новых объявлениях мне необходимо быстро и бесплатно доставлять уведомления о новых объявлениях пользователям. Базовый канал – емайл – не удобен. Другой хороший канал – мессенджер Телеграмм – решил побороться за приватность и стал не надежен. Поэтому пришлось добавить альтернативу в виде ВК (тем более что сервис умеет еще отслеживать группы в ВК на появление новых записей и комментариев). Был приятно удивлен простотой и продуманностью настройки, даже Телеграмм рядом не стоял.
Читать дальше →
Total votes 20: ↑10 and ↓100
Comments10

Как работают ИТ-специалисты. Алексей Рыбак, глава разработки Badoo

Reading time10 min
Views15K
image

7 и 8 ноября в Сколково прошла конференция HighLoad++ 2016. Более 200 экспертов выступали с докладами о высоконагруженных сервисах, проблемах работы с ними, администрировании и многом другом.

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

С каждым мы провели интервью в формате блиц-опроса. Будет интересно выяснить, что объединяет этих IT-специалистов, в чем они похожи. Возможно, их ответы помогут выявить какие-то общие закономерности, полезные советы, которые помогут многим из нас.
Читать дальше →
Total votes 41: ↑35 and ↓6+29
Comments23

Вышел PHP 7.2.0

Reading time1 min
Views17K
image

Вчера, 30 ноября 2017г. команда разработки PHP объявила о релизе PHP 7.2.0
Это второй минорный релиз в серии PHP 7.

PHP 7.2.0 включает в себя некоторые улучшения а также новый функционал.
Читать дальше →
Total votes 20: ↑15 and ↓5+10
Comments20

Как выявлять и развивать таланты в IT: результаты первого Team Leader meetup

Reading time44 min
Views7.9K

24 января 2018 года в Яндексе прошёл первый Team Leader meetup. Мероприятие посетили в общей сложности порядка семидесяти руководителей разработки из различных компаний.


Мы хотели, чтобы участники встречи были активно вовлечены в дискуссию, поэтому сразу выбрали в качестве основного формат панельной дискуссии в противовес стандартным презентациям. Таким образом, в разговоре участвовали сразу несколько экспертов из ведущих IT-компаний: Яндекса, Mail.Ru, Skolkovo Foundation, Phillips Innivation Labs RUS, 1C GAMES STUDIO. У слушателей в зале была возможность реагировать на высказывания экспертов при помощи специального бота, который демонстрировал их эмоции в реальном времени на специальном экране, расположенном прямо в зале.


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


С момента первой встречи прошло уже несколько месяцев, и мы, наконец, готовы поделиться её результатами.


Total votes 30: ↑28 and ↓2+26
Comments3

Прямая линия с ТМ

Reading time1 min
Views14K
Мы не раз проводили семинары и тренинги для наших клиентов, где рассказывали как готовить материалы, как мотивировать авторов, как не бояться писать на Хабр. И при этом сами недавно словили упрёк, мол, «рассказали бы хоть что-то о том, как работаете, кто у вас там в офисе сидит». Некоторые думают, что мы вообще ненастоящие, c щупальцами и т.д.

image

При том, что, как оказалось, некоторые из наших сотрудников очень даже не против рассказывать о своей работе, но «не знали, что так можно». Засев очередной раз в переговорке, мы решили начать рассказывать о работе нашей компании.
Читать дальше →
Total votes 64: ↑62 and ↓2+60
Comments335

Опыт 1440 миграций баз данных

Reading time6 min
Views11K


Представьте себе Oracle DBA. Ему уже за тридцать, он слегка полноват, носит жилетку, на шее у него висит секретный токен доступа ко всем базам, а в резюме полстраницы пройденных им сертификаций. Суббота. День большого релиза. Кульминация. Время накатывать изменения на базу данных. Он набирает sqlplus, нажимает ENTER и по черному экрану куда-то вверх, в пустоту, устремляются километры SQL команд. Совсем как в звездных войнах. Спустя пять минут все готово. Через час релиз завершен. Работа сделана, день удался. Теперь можно и по паре пива.
На самом деле нет
Total votes 14: ↑13 and ↓1+12
Comments21

Что такое RESTful на самом деле

Reading time8 min
Views210K
А ваше приложение — RESTful? Чтобы ответить на этот вопрос нужно сначала разобраться что такое RESTful. Бытует мнение, что отдавать правильные коды ответов в HTTP — это уже RESTful. Или делать правильные идемпотентные HTTP-запросы — это вообще очень RESTful. Мы в Хекслете сделали практический курс по протоколу HTTP (отличия версий, отправка форм, аутентификация, куки и пр.), и в нем мы стараемся рассказать о правильном использовании запросов, но нужно понимать, что RESTful это не про HTTP, это вообще не про протоколы интернета. Современный веб и взаимодействие между браузером и сервером с помощью HTTP и URI могут удовлетворять принципам RESTful, а могут и не удовлетворять.

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

Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments103

Пишем свой API для сайта с использованием Apache, PHP и MySQL

Reading time9 min
Views159K

С чего все началось



Разрабатывая проект, я столкнулся с необходимостью организации клиент-серверного взаимодействия приложений на платформах iOS и Android с моим сайтом на котором хранилась вся информация — собственно БД на mysql, картинки, файлы и другой контент.
Задачи которые нужно было решать — достаточно простые:
регистрация/авторизация пользователя;
отправка/получение неких данных (например список товаров).

И тут-то мне захотелось написать свой API для взаимодействия с серверной стороной — большей своей частью для практического интереса.

Входные данные



В своем распоряжении я имел:
Сервер — Apache, PHP 5.0, MySQL 5.0
Клиент — Android, iOS устройства, любой браузер

Я решил, что для запросов к серверу и ответов от него буду использовать JSON формат данных — за его простоту и нативную поддержку в PHP и Android. Здесь меня огорчила iOS — у нее нет нативной поддержки JSON (тут пришлось использовать стороннюю разработку).
Читать дальше →
Total votes 55: ↑24 and ↓31-7
Comments25

Information

Rating
5,081-st
Location
Долгопрудный, Москва и Московская обл., Россия
Date of birth
Registered
Activity