Как стать автором
Поиск
Написать публикацию
Обновить
-6
0

Пользователь

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

Нормализация отношений. Шесть нормальных форм

Время на прочтение8 мин
Количество просмотров1.6M
В данной теме я затрону 6 нормальных форм и методы приведения таблиц в эти формы.

Процесс проектирования БД с использование метода НФ является итерационным и заключается в последовательном переводе отношения из 1НФ в НФ более высокого порядка по определенным правилам. Каждая следующая НФ ограничивается определенным типом функциональных зависимостей и устранением соответствующих аномалий при выполнении операций над отношениями БД, а также сохранении свойств предшествующих НФ.
Читать дальше →

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

Время на прочтение2 мин
Количество просмотров38K
Несмотря на публикацию «Критическая уязвимость в безопасности на fl.ru», этот сервис продолжает раздавать всем желающим информацию, которую следовало бы закрыть от публичного доступа.

Вы можете легко получить доступ к паспортным данным, адресу регистрации, почтовому адресу, E-mail, телефону и другой информации о пользователях Fl.ru, в том числе финансовой! Причем не только о фрилансерах, но и о заказчиках. Для этого не требуется применять какие-то хакерские приемы и взламывать сайт Fl.ru, достаточно просто пройти по ссылкам, проиндексированным Яндексом с указанием соответствующего реферера в заголовке запроса.
Как это сделать

Критическая уязвимость в безопасности на fl.ru

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

1. Пролог


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

Но сегодня речь пойдёт о менее ярком событии для общественности, но при этом намного более резонансном для тех, кто волею судеб работал и работает на fl.ru.
Читать дальше →

Файловая система Linux полностью на tmpfs — скорость без компромиссов

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

Предыстория


Так сложилось, что уже пять лет мой раздел ntfs с операционной системой Windows располагается на рамдиске. Решено это не аппаратным, а чисто программным способом, доступным на любом ПК с достаточным количеством оперативной памяти: рамдиск создается средствами загрузчика grub4dos, а Windows распознаёт его при помощи драйвера firadisk.

Однако до недавнего времени мне не был известен способ, как реализовать подобное для Linux. Нет, безусловно, существует огромное количество линуксовых LiveCD, загружающихся в память при помощи опций ядра toram, copy2ram и т. д., однако это не совсем то. Во-первых, это сжатые файловые системы, обычно squashfs, поэтому любое чтение с них сопровождается накладными расходами на распаковку, что вредит производительности. Во-вторых, это достаточно сложная каскадная система монтирования (так как squashfs — рид-онли система, а для функционирования ОС нужна запись), а мне хотелось по возможности простого способа, которым можно «вот так взять и превратить» любой установленный на жесткий диск Linux в загружаемый целиком в RAM.

Ниже я опишу такой способ, который был с успехом опробован. Для опытов был взят самый заслуженный дистрибутив Linux — Debian.
Читать дальше →

Продолжаем оптимизировать затраты с Yota

Время на прочтение6 мин
Количество просмотров36K
В данной статье речь пойдет об автоматизации управления тарифами YOTA с помощью curl, OpenWRT и MR-3020. Предложенные скрипты можно использовать и в иной *nix среде с установленной curl.
Читать дальше →

The UX Reader: книга о работе UX-команды MailChimp [часть 1]

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


[TL;DR]

[ 2-я часть книги ]
[ 3-я часть книги ]
[ 4-я часть книги ]
[ 5-я часть книги ]
[ 6-я часть книги ]
[ 7-я часть книги ]
[ 8-я часть книги ]

Введение


Команда MailChimp любит делиться результатами своей работы, что впоследствии дает удивительный эффект. Это помогает нам внимательнее относиться к тому, чем мы занимаемся: «Посмотрим, как же нам это удалось? И почему мы решили, что это – наилучший метод?».

Мы выделяем эффективные подходы к решению тех или иных задач: «Мы сэкономили кучу времени, решив это таким образом». Публикация таких подходов порождает интересное обсуждение: «Значит, вы это сделали именно так? Интересно, а почему?».

Это помогает нам не зазнаваться: «Да, вы правы. Мы могли бы реализовать это иначе». Скромность и открытость для новых идей – источник для нашего профессионального роста: «Хорошо, мы руководствовались данным методом, но решили его пересмотреть и провести эксперимент. В результате мы пришли к тому, что есть и более эффективные подходы».

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

Оптимизация расходов Yota: попытка #3

Время на прочтение5 мин
Количество просмотров30K
Привет, хабр!

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

В моем регионе крупных провайдеров LTE всего два: Мегафон и Yota. Мегафон существенно дешевле, но у него есть одна крайне неприятная особенность: ограничение в 20гб трафика в месяц даже на максимальном тарифе.

Поэтому выбор оператора, на мой взгляд, очевиден. Но все же платить за 20 мегабит в два раза больше чем за 100 дома — сомнительное удовольствие. Но при этом, в отличие от других операторов, Yota позволяет в в любой момент бесплатно изменять текущий тариф в личном кабинете с перерасчетом оплаченного времени. Нужна скорость — выкручиваем ползунок на максимум. Нет? Тогда можно снизить скорость и платить меньше. Ну как тут можно удержаться и не автоматизировать этот процесс?

На хабре уже были статьи (раз, два), описывающие попытки йотоводов-автоматизаторов. Однако, в силу некоторых особенностей, их творения мне не подошли и пришлось написать свой, существенно отличающийся, велосипедОднако, в силу некоторых особенностей, их творения мне не подошли и пришлось написать свой, существенно отличающийся, велосипед.
Читать дальше →

Обходим запрет Yota раздавать интернет с телефона

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

Вместо введения.


Я пользуюсь Samsung Note 3 LTE (N9005). Оператор, с недавних времен, Yota. LTE на этом аппарате пока не поддерживается официально, по этому я решил сегодня сделать root на телефоне и вручную включить LTE.
Хочу интернет!

Гид по заголовкам кэширования HTTP для начинающих

Время на прочтение8 мин
Количество просмотров91K
В статье данные сведения по заголовкам кэширования (ЗК) для HTTP и соответствующее поведение сетей доставки контента (CDN). Если вам хочется разобраться, каким образом заголовки кэширования вписываются в современный веб, или вам просто интересно, о чём говорят ваши коллеги – эта статья для вас.

Если вы уже понимаете преимущества ЗК, и хотите расширить свои знания, я рекомендую вам обратиться к документации от W3.

Что могут ЗК сделать для вас?


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

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

Создаем эффективные стили для каруселей

Время на прочтение9 мин
Количество просмотров12K
Эта статья не о дизайне эффективных каруселей, а об эффективном создании стиля. Другими словами, речь пойдет не о UI-дизайне, а о конструкциях CSS – смене элементов карусели, их позиционировании и размерах.

Зависимость от JavaScript с точки зрения взаимодействия, а не стиля

«Эффективная карусель» — это карусель, которая не зависит от JavaScript с точки зрения:

• отзывчивости
• содержания любого количества элементов
• отображения любого количества элементов
Читать дальше →

Прощай, MongoDB, здравствуй, PostgreSQL

Время на прочтение8 мин
Количество просмотров77K
Наш стартап Olery был основан почти 5 лет назад. Мы начали с единственного продукта, Olery Reputation, который был создан агентством, занимавшимся разработкой на Ruby. Всё это выросло в набор различных продуктов. Сегодня у нас есть ещё Olery Feedback, API для Hotel Review Data, виджеты для вставки на сайты и многое другое.

Всего у нас работает 25 приложений (все на Ruby) – некоторые из них в вебе (Rails или Sinatra), но в основном это фоновые приложения для обработки данных.

Хотя нам есть, чем гордиться, есть у нас одна проблема, которая всё время висела где-то в фоне – база данных. Изначально мы использовали MySQL для важных данных (пользователи, контракты, и т.д.) и MongoDB для хранения обзоров и других данных, которые легко можно было бы восстановить в случае утери. Сначала всё работало неплохо, но по мере роста мы начали испытывать проблемы, в особенности с MongoDB. Некоторые из них возникали в сфере взаимодействия БД с приложениями, некоторые – непосредственно у самой БД.

К примеру, в какой-то момент нам надо было удалить миллион документов из MongoDB, а позже вставить. В результате работа базы застопорилась на несколько часов. Потом нам пришлось запускать repairDatabase. И сама починка тоже заняла несколько часов.
Читать дальше →

Простая охлаждающая подставка для ноутбука своими руками

Время на прочтение4 мин
Количество просмотров193K
Приветствую всех хаброюзеров, сегодня я расскажу, как я сделал простую и довольно таки бюджетную охлаждающую подставку для ноутбука.



Для этого нам понадобится:
Внимание трафик

Если вы решили перейти с PHP на Python, то к чему следует подготовиться

Время на прочтение14 мин
Количество просмотров192K
Думали ли вы когда-нибудь о том, что однажды слишком быстро втянулись в веб-программирование на PHP? И вот уже прошло много лет, у вас хороший опыт, и вы не думаете ни о каких других способах „делать“ веб, кроме как на PHP. Может быть, у вас возникают сомнения в правильности выбора, однако непонятно, как найти способ быстро его проверить. А хочется примеров, хочется знать, как изменятся конкретные аспекты деятельности.

Сегодня я попробую ответить на вопрос: «А что если вместо PHP писать на Python?».

Сам я долгое время задавался этим вопросом. Я писал на PHP 11 лет и даже являюсь сертифицированным специалистом. Я научился его «готовить» так, чтобы он работал в точности, как мне надо. И когда я в очередной раз читал на Хабре перевод статьи о том, как всё в PHP плохо, я просто недоумевал. Однако подвернулся случай пересесть на Ruby, а потом и на Python. На последнем я и остановился, и теперь попробую рассказать вам PHP-шникам, как нам питонистам живётся.


Python с точки зрения PHP-программиста...

Самые нужные плагины для Gulp

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


Это пост можно сказать является дубликатом моей предыдущей подборки “Самые нужные плагины для Grunt”. Дело в том, что спустя много часов поиска я не нашел крутых плагинов для Gulp, которых нет для Grunt за исключением пары весьма специфичных утилит. Всё как раз наоборот, но проигнорировать множество пользователей Gulp я не мог. Все недостающие плагины я выделил, потому что Gulp умеет использовать их из Grunt, как и Grunt из Gulp.

Доброго времени суток, всем! Кто-то умный, не помню в какой статье именно на Хабре, буквально недавно размышлял о процессе разработки с явным призывом автоматизировать все, что только можно автоматизировать. И лучше один раз потратить время на автоматизацию, чтобы потом экономить его на протяжении всего проекта.

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

А еще я выложил подборку на GitHub, чтобы каждый мог пополнить коллекцию.
Читать дальше →

Введение в разработку слайд-шоу на JavaScript

Время на прочтение26 мин
Количество просмотров89K
В этой статье мы опишем основные принципы построения слайд-шоу на JavaScript, то, из чего они строятся (HTML, CSS, JavaScript) и техники, которые используются при их создании.

JS-код будет представлен в двух видах – ванильном и jQuery. Это сделано специально, чтобы подчеркнуть: в современных браузерах даже простой JS можно прекрасно использовать, особенно комбинируя его с анимациями и переходами CSS. jQuery хорош, если нам не хочется волноваться насчёт несовместимостей браузеров или использовать более простой API. Предоставленный код преследует лишь в демонстрационные цели.

В примерах с ванильным JS я использую простейший метод инициализации объектов, init(). Этот метод занимается вызовом нужного кода для создания экземпляра объекта через new. В этой ветке на Stack Overflow всё объясняется подробнее. Почему объекты, а не функции? Для ответа на этот вопрос понадобилась бы отдельная статья – но, в общем, просто чтобы код был более организованным и простым для повторного использования.
Читать дальше →

Количественные CSS селекторы

Время на прочтение7 мин
Количество просмотров94K
Вам когда-нибудь хотелось прямо в CSS коде посчитать, в меню 4 элемента или 10? Для четырех задать им ширину по 25%, а если набралось десять — прижать их друг к другу и уменьшить отступы?
Как выяснилось, CSS умеет работать с разным количеством элементов, позволяя избавиться от головных болей и лишнего кода на js.


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

Ресайз картинок в браузере. Все очень плохо

Время на прочтение10 мин
Количество просмотров105K
Если вы когда-нибудь сталкивались с задачей ресайза картинок в браузере, то вы наверное знаете, что это очень просто. В любом современном браузере есть такой элемент, как холст (<canvas>). На него можно нанести изображение нужных размеров. Пять строчек кода и картинка готова:

function resize(img, w, h) {
  var canvas = document.createElement('canvas');
  canvas.width = w;
  canvas.height = h;
  canvas.getContext('2d').drawImage(img, 0, 0, w, h);
  return canvas;
}

Из холста картинку можно сохранить в JPEG и, например, отправить на сервер. Можно было на этом закончить статью, но сперва давайте взглянем на результат. Если вы поставите рядом такой холст и обычный элемент <img>, в который загружена та же картинка (исходник, 4 Мб), то вы увидите разницу.

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

Гальванизация трупа: как удалось оживить битый HDD для хранения чего-нибудь ненужного

Время на прочтение5 мин
Количество просмотров139K
Попался мне недавно битый внешний жесткий диск… Ну как попался? Сам купил по дешевке.

Диск как диск: железная коробочка, внутри — USB2SATA контроллер и ноутбучный диск фирмы Samsung на 1 Тб.. По описанию продавца выходило, что глючит именно USB-контроллер. Сначала, мол, и пишет, и читает хорошо, а потом постепенно начинает тормозить и вообще отваливается. Явление для внешних дисков без дополнительного питания довольно частое, так что я ему, конечно, поверил. Ну а что — дешево же.

Итак, радостно разбираю коробочку, достаю оттуда диск и втыкаю в проверенный временем и невзгодами адаптер. Диск включился, завелся, определился, и даже подмонтировался в линуксе. На диске обнаружилась файловая система NTFS и с десяток фильмов. Нет, не про эротические приключения, а совсем даже наоборот: «Левиафаны» всякие. Казалось бы — ура! Но нет, все только начиналось.
Читать дальше →

Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса

Время на прочтение29 мин
Количество просмотров108K
На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.

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



В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.

На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
Читать дальше →

Информация

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