Pull to refresh
0
Борисов Александр @dmnbarsread⁠-⁠only

User

Send message

Как работает реляционная БД

Reading time51 min
Views544K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Total votes 232: ↑229 and ↓3+226
Comments134

Полное практическое руководство по Docker: с нуля до кластера на AWS

Reading time39 min
Views1.7M



Содержание



Вопросы и ответы


Что такое Докер?


Определение Докера в Википедии звучит так:


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



Ого! Как много информации.

Читать дальше →
Total votes 125: ↑124 and ↓1+123
Comments44

Upgrade до Middle PHP-разработчика за 3 месяца

Reading time2 min
Views194K

В очередной раз на меня свалилась задача найти хорошего PHP-программиста.
По результатам прозвона потенциальных кандидатов, 90% тех, кто мнит себя Middle, на самом деле Junior и годы опыта не спасают, потому что клепают однотипный код в пределах заданий, посланных свыше.
Прописал минимальный план желающим сделать рывок и перейти на следующий уровень без отрыва от производства.


Читать дальше →
Total votes 94: ↑55 and ↓39+16
Comments190

Статические члены класса. Не дай им загубить твой код

Reading time11 min
Views82K
Давно хотел написать на эту тему. Первым толчком послужила статья Miško Hevery "Static Methods are Death to Testability". Я написал ответную статью, но так и не опубликовал ее. А вот недавно увидел нечто, что можно назвать «Классо-Ориентированное Программирование». Это освежило мой интерес к теме и вот результат.

«Классо-Ориентированое Программирование» — это когда используются классы, состоящие только из статических методов и свойств, а экземпляр класса никогда не создается. В этой статье я буду говорить о том, что:
  • это не дает никаких преимуществ по сравнению с процедурным программированием
  • не стоит отказываться от объектов
  • наличие статических членов класса != смерть тестам

Хотя эта статья про PHP, концепции применимы и к другим языкам.
Читать дальше →
Total votes 78: ↑65 and ↓13+52
Comments48

Видео докладов с DevConf 2016

Reading time1 min
Views17K
17-го июня в инновационном центре “Сколково” прошла очередная ежегодная конференция DevConf, а Badoo в очередной раз снимали видео выступлений. Программа была богата на именитых спикеров и интересные доклады, поэтому сделать подборку из самых «вкусных» выступлений было крайне сложно. Но мы, как минимум, постарались…

Познавательного вам просмотра!

«Развитие ветки PHP-7», Дмитрий Стогов, Zend Technologies




Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments10

Обзор инструментов для визуального сравнения и разрешения конфликтов слияния

Reading time6 min
Views138K
На хабре уже было много статей о распределенных системах управления версиями (DVCS), их сравнений, а также сравнений GUI-клиентов для них. Также были обсуждения плагинов к IDE для работы с git и mercurial. Но практически не было информации об инструментах визуального сравнения и разрешения конфликтов слияния.

diff and merge
Недавно я «перескочил» с mercurial (который до сих пор считаю более удобным и логичным) на git, потому что, подавляющее большинство проектов, которые мне интересны, используют git и хостятся на github. В связи с этим, встал вопрос о пересмотре арсенала инструментов, в частности вопрос выбора инструмента визуального сравнения и слияния (diff and merge). Дабы восполнить недостаток информации на хабре, я решил написать этот мини-обзор. Как говориться — по горячим следам.

Под катом Вы также найдете примеры настроек Git для использования с DiffMerge и WinMerge под Windows. Думаю многим сэкономит время.
Читать дальше →
Total votes 53: ↑46 and ↓7+39
Comments45

Android 6.0.1 Marshmallow для innos D6000 уже на подходе

Reading time4 min
Views6K
Всем привет! Ещё в момент объявления о выходе innos на российский рынок мы обещали, что для смартфона innos D6000 будет обязательно выпущена прошивка с Android Marshmallow. И вот теперь сообщаем, что до релиза этой самой прошивки остались считанные недели. Её бета-версия давно установлена на смартфоны всех сотрудников innos Европа. Основные баги (куда ж без них!) мы вместе с китайскими коллегами уже «отловили», коллеги баги пофиксили, и осталась пара мелочей. Впрочем, некоторые мелочи с нашей точки зрения довольно критичны, а потому в паблик мы прошивку пока выпускать не решаемся.

Читать дальше →
Total votes 13: ↑8 and ↓5+3
Comments15

Telegram: чат-культура 2.0

Reading time5 min
Views33K
Групповые чаты в Телеграм вернули целый пласт IT- и digital-специалистов туда, откуда харкорные гики и не вылезали: во времена IRC, игр в мафию на сервере локальной сети ближайшего университета и знакомств на #talks с последующей развиртуализацией на пойнте где-нибудь в Братеево (последнее было актуально в Москве).

Эта статья — для тех, кто ничего не понимает в чатах, слегка понимает в чатах и знает о чатах все. Я расскажу о том, как устроены групповые чаты в Телеграм, в чем их плюсы и минусы и о том, как и зачем их использовать. И, само собой, в конце вас ждет список самых активных dev-geek-чатов Телеграма.
Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments65

Как сделать один сайт для всех устройств (Responsive Web Design)

Reading time3 min
Views290K
Вчера была опубликована хорошая статья «Веб-дизайн. Каждому устройству свое представление». Несмотря на неплохие размышления, к сожалению, вывод в ней довольно глупый. А именно:

«Нужно определить, какими устройствами могут пользоваться ваши посетители, проработать и создать для этих устройств представление вашего сайта, определить устройство посредством проверки заголовков браузеров, и отправить наиболее подходящее представление

Почему это глупо


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



Это скриншот из презентации «Beyond the mobile web by yiibu» (очень рекомендую).

Во-вторых, если вы не facebook или yandex, скорее всего, вы не потянете создание и поддержку разных версий сайта для каждого устройства. Да и это не имеет особого смысла. Потому что ситуация становится похожа на реалии пятнадцатилетней давности. Тогда делали сайт «под браузер», а сейчас автор предлагает делать сайт «под устройство».

Как сделать один сайт для всех устройств

Читать дальше →
Total votes 159: ↑148 and ↓11+137
Comments75

Сложный и противоречивый мир синтаксиса микроразметки. Почему стандартов так много? Опыт Яндекса

Reading time7 min
Views52K
Сегодня в продолжение наших рассказов о семантической разметке я хочу рассказать о её синтаксисе. То, почему он такой, а не иной, часто определяется историческими причинами, а иногда — ещё и комично. Поэтому мы попробовали здесь всё систематизировать и объяснить.

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

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

Стандартов синтаксиса, как и словарей, несколько. В этой статье мы и разберем на практических примерах наиболее распространенные:
  • Microdata — Микроданные (словарь Schema.org чаще всего встречается именно в этом синтаксисе);
  • Microformats.org — Микроформаты (напоминаем, что это объединенный стандарт синтаксиса и словаря);
  • RDFa и RDFa Lite (в упрощенном виде RDFa рекомендуется создателями словаря Open Graph. Также встречается с другими словарями, например, со словарем Dublin Core или Data Vocabulary);
  • JSON-LD — расширение JSON.

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

Once upon a time В 2004 году разработчики из W3C создали стандарт, который, по их мнению, подходил для «представления всего в мире». Так появился синтаксис RDFa (Resourse Description Framework in attributes), который позволяет однозначно транслировать HTML-разметку с семантическими данными в RDF.
Универсальный стандарт придумывали больше одного раза...
Total votes 93: ↑87 and ↓6+81
Comments34

Несколько полезных CSS-трюков

Reading time3 min
Views56K
Во время работы над последним проектом накопилось несколько интересных CSS-трюков, о которых хочу рассказать. Хотя, возможно, это уже придумано до нас и все об этом уже знают. В примерах используется LESS, а не чистый CSS.

Событие автоподстановки в инпут поля


Проблема: узнать, что пользователь воспользовался функцией автоподстановки. Задача была в том, чтобы подсвечивать кнопку Login, если в полях e-mail и password введено что-либо. Проблема в том, что если эти поля заполняются автоподстановкой из ключницы браузера, то событие change на инпутах не выстреливает.

Решение: использовать псевдокласс :valid. Он срабатывает у инпута, если в нем есть контент, который удовлетворяет типу инпута (text, e-mail) и если у этого инпута стоит атрибут required. Правда решение не работает в IE, но нам не требуется поддержка этого браузера.

<input required="required" class="email-input" type="email" />
<input required="required" class="password-input" type="password"/>
<div class="go">Login</div>

.email-input:valid ~  .password-input:valid ~ .go {
	//стили для активной кнопки Login
}


Читать дальше →
Total votes 75: ↑64 and ↓11+53
Comments10

Apogee: человек-оркестр и игровой онлайн-издатель 1987 года (продолжение)

Reading time9 min
Views17K
image

Продолжение истории Скотта Миллера и компании Apogee (3D Realms), начало здесь.

Ключевая идея


Джон Ромеро работал в компании Softdisk, которая в то время занималась изданием ежемесячного журнала, продававшегося в обычных магазинах. В комплекте к журналу шла дискета, на которой было много полезного софта — часть из него разрабатывалась собственными программистами компании, работавшими в редакции. Так вот, Ромеро был как раз одним из них.

После нескольких месяцев, проведенных Миллером за рассылкой Ромеро электронных писем, написанных от имени нескольких вымышленных поклонников творчества Джона, ему наконец-то удалось получить ответ. Двое начали рассуждать на тему, как бы могло выглядеть возможное сотрудничество гейм-дизайнера и Apogee.

«Как жаль, что у меня не сохранились эти письма… Сейчас они, наверное, стоят целое состояние!» — шутит сегодня Миллер.
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments19

Apogee: человек-оркестр и игровой онлайн-издатель 1987 года

Reading time7 min
Views25K
В конце 1980-ых в Техасе молодой человек двадцати с небольшим лет от роду по имени Скотт Миллер создал бизнес-модель, которая изменила способ покупки и продажи цифровых продуктов по всему миру. Сам Миллер называл свой шедевр «Apogee model» — «моделью апогея», всем остальным же она сегодня известна под названием «shareware», или «условно-бесплатное ПО». Эта модель сделала цифровые продажи через интернет колоссально прибыльными, а самого Миллера — миллионером. Модели и ее автору предстояло произвести революцию относительно способа, которым используется интернет — причем еще до того, как большая часть мира узнала об его существовании.

Нерды на полную ставку


imageВ юности Скотт Миллер был лентяем.

В старших классах школы в начале 1980-ых он, замкнутый подросток, спасался от жаркого солнца Техаса, скрываясь в кампусе компьютерной лаборатории, проводя все свое время за программированием длинных текстовых квестов-приключений. Здесь он повстречал Джорджа Бруссарда — другого подростка, который на тот момент выделялся лишь своей любовью к постоянному ношению шортов. Как часто случалось в то время, ребят сплотило между собой дружное восхищение местным компьютером Apple II.
Читать дальше →
Total votes 95: ↑92 and ↓3+89
Comments10

Система водяного охлаждения из строймагазина

Reading time6 min
Views50K
Набор для сборки
Вступление

Построить систему водяного охлаждения для домашнего компьютера хотелось давно, и именно построить, а не купить. Причём она должна быть:
  • тихой.
  • компактной, а лучше скрытной, дабы не раздражать домашних.
  • недорогой.
  • легкой в исполнении.

На вопросы эти посматривал лет 10, и наконец, делая ремонт, созрел план, как это можно сделать в одно время. Клиент системы — маленький barebone, входной шлюз домашней сети и прочая, проживает в санузле, по причине красоты спрятан в шкаф, где невзирая на небольшой тепловой пакет в 95 ватт и регулярный обдув также регулярно зависал от перегрева по разу в несколько дней.
Читать дальше →
Total votes 92: ↑90 and ↓2+88
Comments111

Создание расширения для Google Chrome

Reading time8 min
Views118K
Тема создания расширений достаточно хорошо раскрыта в сети, есть множество статей, документации на эту тему. Но я не нашел ни одного ресурса, который бы описал процесс создания расширения от начала до конца. Я собираюсь исправить эту ситуацию, и рассказать о том как создать расширение, как хранить, читать настройки, как добавить поддержку нескольких языков.

Для работы с расширениями вам понадобится переключить канал обновлений на Dev или Beta.
Читать дальше →
Total votes 98: ↑93 and ↓5+88
Comments28

Виджет для Android на JavaScript за 15 минут на примере Хабра-Кармы

Reading time5 min
Views12K
Сразу говорю, кармавиджет — вовсе не основная цель статьи. В этой статье я хочу представить широкой общественности способ быстрого создания информационных виджетов для Android на JavaScript всего лишь на примере кармы и рейтинга хабра. Виджет будет смотреться примерно так:



Виджет будет представлять собой плагин для программы AnyBalance (Android), основная идея которой — собрать общую базу способов извлечения балансов и прочих параметров из личных кабинетов различных провайдеров, например, балансов на сотовых телефонах, интернет провайдерах и т.д. Эти плагины (будем их дальше называть «провайдерами») пишутся на JavaScript и имеют открытый исходный код. Сейчас база AnyBalance содержит около 80 провайдеров, но постоянно расширяется. И хабрахабр там будет не лишним :)
Читать дальше →
Total votes 61: ↑42 and ↓19+23
Comments21

Уроки Python от компании Google

Reading time1 min
Views120K
Отличный способ освоить Python — учебный класс Python в Google Code University. Уроки для этого класса написал Ник Парланте из Стэнфорда, и прошедшие курс люди отмечают не просто высокое, а фантастически высокое качество уроков.

Курс включает в себя шесть видеолекций на Youtube, где Ник проводит обучение новичков-гуглеров и подробно рассказывает о разных хитростях и фичах Python. Некоторые видеолекции длиной до 50 минут.

Есть ещё скачиваемые задачки. Они довольно простые и созданы специально для начинающих. Курс идеально подходит для изучения Python программистами, имеющими опыт работы с другими языками программирования.
Total votes 159: ↑148 and ↓11+137
Comments77

Лекториум записал почти тысячу лекций за год

Reading time4 min
Views57K
Дорогой Хабр!



У нас для тебя небольшой подарок. Мы тут работали-работали и вот чего сделали.
Сняли и опубликовали почти тысячу лекций по IT и математике.

UPD2 Помогите, пожалуйста, оперативно решить вопрос насчёт организации торрентов на php.

Читать дальше →
Total votes 340: ↑333 and ↓7+326
Comments183

Основы Linux от основателя Gentoo. Часть 3 (4/4): Настройка пользовательского окружения

Reading time8 min
Views38K
Заключительная глава третьей части серии руководств Linux для новичков. Основы конфигурирования рабочей оболочки, настройка переменных окружения, а также подведение итогов всей третьей части.

Навигация по основам Linux от основателя Gentoo:

Часть I:
  1. BASH, основы навигации
  2. Управление файлами и директориями
  3. Ссылки, а также удаление файлов и директорий
  4. Glob-подстановки
Читать дальше →
Total votes 72: ↑64 and ↓8+56
Comments22

Основы Linux от основателя Gentoo. Часть 3 (3/4): Управление аккаунтами в Linux

Reading time7 min
Views44K
Продолжение третьей части серии руководств Linux для новичков. Основы управления пользователями и группами.

Навигация по основам Linux от основателя Gentoo:

Часть I:
  1. BASH, основы навигации
  2. Управление файлами и директориями
  3. Ссылки, а также удаление файлов и директорий
  4. Glob-подстановки
Читать дальше →
Total votes 51: ↑47 and ↓4+43
Comments5
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Works in
Date of birth
Registered
Activity