Как стать автором
Обновить
16
0
Илья Агафонов @Tairesh

Веб-программист

Отправить сообщение

Наследование ActiveRecord's, описывающих одну таблицу (паттерн single table inheritance) в Yii2

Время на прочтение3 мин
Количество просмотров15K
В большинстве реляционных баз данных, к сожалению, нет поддержки наследования, так что приходится реализовывать это вручную. В этой статье я хочу кратко показать, как реализовать такой подход к наследованию, как «single table inheritance», описанный в книге «Patterns of Enterprise Application Architecture» by Martin Fowler.

В соответствии с этим паттерном, нужно использовать общую таблицу для наследуемых моделей и в этой таблице добавить поле type, которое будет определять класс-наследника этой записи.

В этой статье будет использоваться следующая структура наследования моделей:

Car
|- SportCar
|- HeavyCar

Таблица `car` имеет следующую структуру:

CREATE TABLE `car` (
    `id` int NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `type` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
);

INSERT INTO `car` (`id`, `name`, `type`) VALUES (1, 'Kamaz', 'heavy'), (2, 'Ferrari', 'sport'), (3, 'BMW', 'city');

Модель Car можно сгенерировать с помощью Gii.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии15

Хэширование паролей в PHP 5.5 с использованием нового API

Время на прочтение3 мин
Количество просмотров77K
Использование BCrypt является общепринятым и лучшим способом для хэширования паролей, но большое количество разработчиков по-прежнему используют старые и слабые алгоритмы, вроде MD5 и SHA1. Некоторые разработчики даже не используют соль для хэширования. Новый API хэширования в PHP 5.5 ставит своей целью привлечь внимание к BCrypt, упрощая работу с ним. В этой статье я расскажу об основах использования нового API для хеширования в PHP.

Новый API хэширования паролей предоставляет четыре простых функции:
  • password_hash() — используется для хэширования пароля.
  • password_verify() — используется для проверки пароля на соответствие хэшу.
  • password_needs_rehash() — используется для проверки необходимости создать новый хэш.
  • password_get_info() — возвращает имя алгоритма хеширования и различные параметры, используемые при хэшировании.

Читать дальше →
Всего голосов 30: ↑21 и ↓9+12
Комментарии13

Полезные сниппеты на HTML5

Время на прочтение4 мин
Количество просмотров84K
Эта подборка полезных сниппетов, использующих HTML5, может помочь вам улучшить ваш сайт.

Автозаполнение в текстовых полях


Используя HTML5-элемент datalist вы можете создать текстовое поле с автозаполнением. Очень удобно!
<input name="frameworks" list="frameworks" />

<datalist id="frameworks">
	<option value="MooTools">
	<option value="Moobile">
	<option value="Dojo Toolkit">
	<option value="jQuery">
	<option value="YUI">
</datalist>

Читать дальше →
Всего голосов 73: ↑59 и ↓14+45
Комментарии27

Подборка инструментов для фронт-энд разработки

Время на прочтение2 мин
Количество просмотров134K
Как разработчику, мне очень нравятся инструменты, которые помогают сэкономить время или упростить процесс разработки фронт-энда. В этой статье я собрал мои любимые веб-инструменты для упрощения разработки веб-интерфейсов.

Картинки кликабельны.

Form builder


Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
image
Читать дальше →
Всего голосов 202: ↑184 и ↓18+166
Комментарии40

Представлен работающий прототип ховербайка

Время на прочтение1 мин
Количество просмотров7.1K
Компания Aerofex представила публике уже работающий прототип ховербайка. К сожалению, в ближайших планах компании – доработка платформы для беспилотного использования, но можно надеяться, что в будущем найдется место и пилотируемым версиям. Сама разработка, по утверждению представителей компании, родом еще из 1960-х, но тогда у нее было несколько неразрешимых технических проблем. Теперь же прототип доработан и даже испытан. Пилотируемая версия сейчас испытывается на высотах до 4,5 метров и скорости до 50 км/ч, но это далеко не предел возможностей аппарата. В ближайшем будущем Aerofex планируют адаптировать платформу к беспилотному использованию и распространять получившийся аппарат в различных сферах от сельского хозяйства до армии.

Под катом пара видео и интересная ссылка
Всего голосов 86: ↑77 и ↓9+68
Комментарии113

Подборка CSS3-генераторов для упрощения фронтэнд-разработки

Время на прочтение2 мин
Количество просмотров48K
CSS3 предоставляет много новых возможностей в мире фронтэнд-разработки. Это действительно великолепная вещь, но иногда трудно вспомнить некоторые параметры, особенно, если вы — веб-дизайнер, а не программист. Вот 10 удивительных CSS3-генераторов, которые помогут вам сэкономить время и силы (картинки кликабельны).
Читать дальше →
Всего голосов 80: ↑75 и ↓5+70
Комментарии23

Российский детектор нейтронов на «Curiosity» начал работу. Воды пока не обнаружено

Время на прочтение2 мин
Количество просмотров2K
В пятницу, на марсоходе был включен российский нейтронный детектор ДАН и генератор нейтронов. Пресс-служба ИКИ РАН, где был создан прибор, сообщает:
Получена телеметрическая и научная информация, которая свидетельствует о штатной работе аппаратуры. Аппаратура ДАН проработала в течение одного часа штатно без замечаний и была выключена по команде. Получена первая научная информация о составе вещества Марса и о радиационном фоне в районе посадки

Детектор ДАН («Динамическое альбедо нейтронов») является вкладом России в проект марсохода и одним из двух «иностранцев» среди научных инструментов на его борту (второй — метеостанция REMS, созданная испанскими учеными).
Читать дальше →
Всего голосов 61: ↑54 и ↓7+47
Комментарии57

Немного о хэшах и безопасном хранении паролей

Время на прочтение4 мин
Количество просмотров70K
Upd. Если вы знаете, что такое BCrypt, можете дальше не читать. Если вы используете PHP 5.5+ то можете прочитать эту статью. Ниже же я изобрел свой велосипед, рабочий, но с двумя рулями, задний запасной. Молод был, горяч.

Привет, хабр! Сегодня, в процессе разработки системы аутентификации для своего проекта передо мной встал выбор — в каком виде хранить пароли пользователей в базе данных? В голову приходит множество вариантов. Самые очевидные:

  • Хранить пароли в БД в открытом виде.
  • Использовать обычные хэши crc32, md5, sha1
  • Использовать функцию crypt()
  • Использовать статическую «соль», конструкции вида md5(md5($pass))
  • Использовать уникальную «соль» для каждого пользователя.

Читать дальше →
Всего голосов 71: ↑57 и ↓14+43
Комментарии100

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior
От 4 000 €
Docker
SQL
Linux
PostgreSQL
Git
MySQL
PHP
Yii framework
Symfony
RabbitMQ