Обновить
34.82

PHP *

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

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

Всепротокольный бот на PHP за 10 минут, или как Microsoft Bot Framework и Azure Functions облегчают нам жизнь

Время на прочтение12 мин
Количество просмотров25K
Абсолютно невозможно отрицать, что развитие естественных паттернов в интерфейсах дало фантастический толчок к развитию всей ИТ-индустрии в целом. И речь не только и не столько о голосовых интерфейсах, сколько о повсеместном внедрении жестов, гигантском сдвиге в парадигме мобильных платформ и, конечно, существенных работах в области UI и UX в целом. В то время как индустрия стремится стать все более дружелюбной для все более широких масс людей, обычная и, в определенной степени, рутинная разработка превращается в бесконечные попытки объять необъятное. Если раньше нас в основном заботили уровни абстракции языков и фреймворков, то сейчас перед нами стоят куда более глобальные вопросы. Как найти баланс между сложным и функциональным интерфейсом? Стоит ли начинать новый проект с микросервисов? На эти вопросы я не могу ответить, зато я могу рассказать вам об инструментах, которые уже сейчас существенно облегчают и удешевляют освоение и применение новых технологий и подходов к разработке.
Читать дальше →

Регистрация и авторизация пользователя на сайте — одним кликом — через кастомную кнопку Facebook. 2017

Время на прочтение4 мин
Количество просмотров42K
Итак, начал я разрабатывать один проект по фану. Основная идея проекта проста: площадка, где все могут ставить на всё что угодно, заключать пари, сделки и БЕЗ каких либо ограничений. Развлекательный проект по сути своей.

Ну и конечно стал вопрос Удобной авторизации пользователей с наименьшим «трением». Подумав немного, я выбрал авторизацию через Facebook, но думаю, на этом я не остановлюсь и вы прочтете ещё несколько статей, с авторизацией через Google Acc, VK и Tweet.

image
Итак к делу! В интернете я нашел несколько тем, которые описывают вопрос авторизации, некоторая информация мне помогла, но я не нашел ни одной, которая бы решила поставленную мной задачу, поэтому, завершив задачу я и решил написать эту статью.
Читать дальше →

У компании есть еще похожие вакансии

Время на прочтение5 мин
Количество просмотров8.6K

2 марта я выступал с докладом на Data Science Meetup, который проходил в нашем офисе. Я рассказал об опыте создания алгоритма по схлопыванию похожих вакансий в поисковой выдаче. По ссылке вы можете ознакомиться с отчетом о прошедшей встрече, там же будут доступны записи выступлений и ссылки на презентации. Для тех же, кто предпочитает воспринимать информацию в текстовом виде, я написал эту статью.


Мы столкнулись с проблемой, когда в поиске по вакансиям выдача заполнялась одинаковыми вакансиями от одного работодателя. Например, по запросу «водитель» посетитель мог получить 30—40 вариантов одной и той же вакансии на одну и ту же позицию.


Читать дальше →

Опрос. Какой php-фреймворк вы используете?

Время на прочтение1 мин
Количество просмотров42K
Давно не делали опрос о популярности php-фреймворков. Это, конечно, не волшебный мир JavaScript, где всё меняется каждые полгода-год, но всё-таки и в php тоже постоянно идут изменения.

Выпускаются новые версии, что-то устаревает, что-то входит в моду и т.д. Один фреймворк более «компонентный» и лучше следует принципам SOLID, другой удобен для быстрого старта, третий имеет хорошее комьюнити.

Итак, опрос для тех, кто использует php в своей практике.
Читать дальше →

Генерируем оглавление для текста

Время на прочтение5 мин
Количество просмотров6K
Доброго времени суток! В данной публикации хочу рассказать и расскажу о том, как генерировать оглавление текста на PHP. Почему хаб «Laravel»? Данное решение вылилось в пакет, который можно просто подключить через composer.


Читаем, изучаем

Запрещенные изменения в коде или продолжение истории ремонта одного крана

Время на прочтение6 мин
Количество просмотров13K

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

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

Откладывание рефакторинга на потом ведет к увеличению технического долга и созданию задач (user story) на рефакторинг, которые не имеют business value для product owner-a, а соответственно такие задачи не будут попадать в топ продуктового беклога.
Читать дальше →

Выборка случайной записи из таблицы с 700*10^6 строк

Время на прочтение6 мин
Количество просмотров13K

Многие ли из нас сталкивались на практике с этим модным словом "Big Data", работая в заурядных компаниях веб-разработчиками? Скорее вы, как и мы, разрабатываете каждый день одинаковые сайты на одинаковых CMS, часто даже не задумываясь об их производительности.


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


Это рассказ о том, как пара амбициозных веб-разработчиков впервые столкнулась с задачей обработки "больших данных".


image


Читать дальше →

Готовимся к собеседованию по PHP: Всё об итерации и немного про псевдотип «iterable»

Время на прочтение7 мин
Количество просмотров77K
Не секрет, что на собеседованиях любят задавать каверзные вопросы. Не всегда адекватные, не всегда имеющие отношение к реальности, но факт остается фактом — задают. Конечно, вопрос вопросу рознь, и иногда вопрос, на первый взгляд кажущийся вам дурацким, на самом деле направлен на проверку того, насколько хорошо вы знаете язык, на котором пишете.

И, разумеется, какими бы вам странными и некорректными ни казались вопросы на собеседовании, приходить нужно всё-таки подготовленным, зная тот язык, за программирование на котором вам собираются платить.

image

Третья часть серии статей посвящена одному из самых объемных понятий в современном PHP — итерации, итераторам и итерируемым сущностям. Я постарался свести в один текст некий минимум знаний об этом вопросе, пригодный для самоподготовки к собеседованию на позицию разработчика на PHP.

Две предыдущие части:


Добро пожаловать под кат!

PHP-Дайджест № 105 – интересные новости, материалы и инструменты (13 – 26 марта 2017)

Время на прочтение3 мин
Количество просмотров15K


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →

Пузырьковая сортировка и бинарный поиск на PHP (обучение, эксперименты)

Время на прочтение10 мин
Количество просмотров20K

Введение


Хотел бы поделиться с сообществом своей реализацией пузырьковой сортировки и бинарного поиска. Проект сделал исключительно в учебных целях.

Когда меня раньше спрашивали на собеседовании об алгоритмах сортировки и реализации поиска по массивам данных — я терялся и считал, что для реализации подобных вещей надо быть как минимум талантливым отличником-олимпиадником, что это сложно-долго-малоизучено и т.п. :) Так же я находил курсы, где за несколько недель (месяцев) предлагают научить всех желающих всему-всему по алгоритмам, сортировкам, криптографии. Но ведь сейчас есть Интернет, а в нем уже все выложено и известно? Остается только поднять и изучить нужные знания и практически реализовать и закрепить приобретенные знания.

Итак, приступим к реализации самих алгоритмов. Забегая вперед скажу, что статья состоит из трех логических частей: реализация алгоритмов, тестирование написанного кода (PHPUnit) и проведение нагрузочных тестов (базовые функции языка VS написанный код).

Т.е. как бы имитируется разработка некой системы (выполнение практической задачи) и прохождение по всем обязательным этапам (исходя из существующих на сейчас «стандартов» разработки).


Читать дальше →

О том, как мы начинали разрабатывать собственную систему управления проектами и что из этого получилось

Время на прочтение6 мин
Количество просмотров11K

… На дворе стояла середина жаркого лета 2013-го. В компанию Х устроился молодой и слегка зеленый сисадмин, с базовым пониманием об администрировании и еще более базовыми знаниями php и сопричастными mysql, html, css, js.


Компания та была пропитана модными веяниями и на понятие «ИСУП» (Информационная Система Управления Проектами), разве что не молились, полагая что с введением оной, польются молочные реки и по нажатию 1 кнопки любой заказ будет выполнен четко, качественно и полностью автоматически.


Но, в связи с некоторыми особенностями работы компании Х, «стандартные» системы из коробки, к с частью или к сожалению, не подходили и именно с этого момента началась эта история…


Читать дальше →

Как мы интегрировались с ownCloud и Nextcloud: подводные камни и их преодоление

Время на прочтение6 мин
Количество просмотров25K
Однажды один из наших пользователей написал, что ONLYOFFICE и ownCloud — это брак, заключенный на небесах (простите, в оригинале было match made in heaven) и странно, что никто еще не додумался запилить какой-нибудь плагин. Мы прикинули и подумали, что он прав. Тем более мы очень любим интегрироваться! В плане, что, конечно же, хотим, чтобы нашими редакторами пользовались всегда, везде и там, где удобно.

В общем, мы сами и сделали приложение для интеграции наших редакторов документов с ownCloud (а потом и Nextcloud) и в этой статье немножко об этом расскажем. Непреодолимых преград на нашем пути не было, но кое-какие трудности возникли и мы поделимся с вами опытом их преодоления. Во-первых, может, вам пригодится, а во-вторых, мы больше не можем держать это в себе! То есть, давно ничего не писали в блог.


Читать дальше →

Политика обратной совместимости при разработке фреймворка на примере Magento 2. Часть 1

Время на прочтение7 мин
Количество просмотров10K
image
*Поломанный кран в офисе Magento и быстрое решение воплощенное в жизнь одним из инженеров — типичный Backward Compatible фикс.
Читать дальше →

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

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

Время на прочтение4 мин
Количество просмотров9.8K
Прошлый год был богат на сообщения о взломах соцсетей, организаций и крупных проектов, и почти в каждом фигурировали “часто используемые пароли”, которые, несмотря на свою небезопасность, тем не менее продолжают использоваться миллионами пользователей.

Применение стойких хеш-алгоритмов и “соление” паролей в разы усложняет задачу их грубого перебора, поэтому следующей легкой целью злоумышленников становятся распространенные среди широких масс пароли, которые несложно подобрать “по словарю”. Такой подход и проще, и результативнее, ведь не важно насколько стойкий у вас алгоритм хеширования, популярные пароли могут составить львиную долю всей украденной базы, и раз их можно перебрать за минимальное время, то есть все шансы успеть ими воспользоваться прежде, чем утечка будет обнаружена и пользователи сменят пароли.

Можно ли с этим бороться? — легко! Борются ли с этим? — не встречал. Значит, пора начать.

image
Читать дальше →

Magento U опубликовало бесплатный курс Fundamentals of Magento 2 Development

Время на прочтение1 мин
Количество просмотров7.5K
image

Magento U опубликовало 4 бесплатных курса:


Которые будут доступны до 31го марта 2017 года абсолютно бесплатно для всех желающих.
Курсы включают набор видео уроков, а также pdf материалы и презентации с задачами и тестами в конце каждого урока, которые помогут быстрей разобраться с архитектурой Magento 2.

Содержание курса под хабракатом.
Читать дальше →

Web PUSH Notifications быстро и просто

Время на прочтение17 мин
Количество просмотров368K

Добрый день. В этой небольшой заметке я хочу рассказать как быстро и просто настроить push-уведомления на вашем сайте. Эта статья ни в коем случае не претендует на звание исчерпывающего руководства, но, я надеюсь, что она даст точку старта для дальнейшего изучения.


Информации по этой теме в интернете полно, но она фрагментирована, разбросана по разным ресурсам и перемешена с уведомлениями для мобильных устройств с примерами на Java, C++ и Python. Нас же, как веб-разработчиков, интересует JavaScript. В этой статье я постараюсь саккумулировать всю необходимую и полезную информацию.


Web PUSH Notifications


Я думаю, вы уже знаете что такое push-уведомления, но я всё же напишу коротко о главном.


Пользователь, заходя на сайт, вытягивает (pull) с него данные. Это удобно и безопасно, но с развитием интернет ресурсов, появилась необходимость оперативно доставлять информацию пользователям не дожидаясь пока те сами сделают запрос. Так и появилась технология принудительной доставки (push) данных с сервера клиенту.

Читать дальше →

PHP-Дайджест № 104 – интересные новости, материалы и инструменты (1 – 12 марта 2017)

Время на прочтение4 мин
Количество просмотров19K


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Читать дальше →

Надёжная авторизация для веб-сервиса за один вечер

Время на прочтение9 мин
Количество просмотров105K
image

Предыстория


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

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

Достаточно рассмотреть простейший пример: кто-то подобрал пароль, или человек каким-то образом скомпрометировал его. Конечно, у нас в базе данных хранятся хэши с использованием соли, мы даже настолько продвинуты, что используем только HTTPS… Но это никак не спасёт нас от человеческого фактора.
Читать дальше →

Stacker: что нового?

Время на прочтение2 мин
Количество просмотров9.1K
Frameworks a lot - he's one!

Привет, Хабр!) Тем, кто пока не имеет представления, советую почитать предыдущую статью А если кратко, то речь пойдет об окружении для локальной веб разработки, которое полностью настроено и готово для запуска большинства фреймворков и cms. Запускайте Symfony, Laravel, Yii2, и другие фреймворки легко! По принципу клонировал -> запустил. Забудьте про постоянные настройки веб сервера и рабочего окружения. Все что вам нужно уже есть в Stacker


Основные лозунги проекта


Их много — он один!
Все просто, не нужно миграций!
Быстро развернул и начал работать!
Хватит настраивать! Пиши код!
Держи зоопарк под Docker, пусть хостовая машина остается чистой!

Читать дальше →

Yii2, быстрый старт. Самый простой сайт на Yii2 со статическими страницами без использования БД

Время на прочтение3 мин
Количество просмотров20K
Сначала я написал пространное предисловие к этому тексту, а потом удалил его. В общем, этот текст для тех, кто как и я, любит сначала сделать, а потом уже разбираться с тем, что же он такое сделал. Чтобы собрать нижеизложенную информацию мне пришлось три дня усиленно рыться в различных источниках. Так что, надеюсь кому и пригодится. Это годная шпаргалка.

1. Устанавливаете Yii2 Basic на сервер, как написано в документации. Описано там всё четко и по делу, добавить мне нечего.

Разве что вот: локально на OpenServer поставилось без сучка, без задоринки. А вот удаленно, на KVM Ubuntu 16.04 с 1Gb оперативки Composer-у не хватило памяти. Бился часа два, так и не осилил. Благо, что с локального сервера на удаленный, сайт можно легко перенести простым копированием.

2. Повторюсь, установка — basic (допустим, в папку /www/site/basic, но далее мы для простоты изложения будем вести отсчет именно от папки basic в которую вы создали проект, как рекомендуется в руководстве).

Папку basic/web сразу устанавливаете как DocumentRoot — как это сделать, тоже есть в официальном руководстве на русском языке.
Читать дальше →