Pull to refresh
16
0
Илья Агафонов @Tairesh

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

Send message

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

Reading time3 min
Views15K
В большинстве реляционных баз данных, к сожалению, нет поддержки наследования, так что приходится реализовывать это вручную. В этой статье я хочу кратко показать, как реализовать такой подход к наследованию, как «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.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments15

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

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

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

Читать дальше →
Total votes 30: ↑21 and ↓9+12
Comments13

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

Reading time4 min
Views84K
Эта подборка полезных сниппетов, использующих 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>

Читать дальше →
Total votes 73: ↑59 and ↓14+45
Comments27

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

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

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

Form builder


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

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

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

Под катом пара видео и интересная ссылка
Total votes 86: ↑77 and ↓9+68
Comments113

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

Reading time2 min
Views48K
CSS3 предоставляет много новых возможностей в мире фронтэнд-разработки. Это действительно великолепная вещь, но иногда трудно вспомнить некоторые параметры, особенно, если вы — веб-дизайнер, а не программист. Вот 10 удивительных CSS3-генераторов, которые помогут вам сэкономить время и силы (картинки кликабельны).
Читать дальше →
Total votes 80: ↑75 and ↓5+70
Comments23

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

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

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

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

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

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

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

Читать дальше →
Total votes 71: ↑57 and ↓14+43
Comments100

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

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