Pull to refresh
4
0
Alexander Irbis @BlessMaster

Разработчик

Send message

Поприветствуйте вашего старого нового друга

Reading time4 min
Views8.9K
Сегодня разнообразные открытые СУБД встают лицом к лицу против массивных, неуклюжих и дорогостоящих «корпоративных» систем, таких как SQL Server и Oracle. Часто открытые СУБД прекрасно работают лучше закрытых систем, не уступая даже в функциональных возможностях.

Из всех открытых систем управления базами данных самой умной, производительной и функциональной системой является Postgres, которая заслуженно привлекает всё больше и больше внимания.
Читать дальше →

SQL injection для начинающих. Часть 1

Reading time5 min
Views805K

Приветствую тебя, читатель. Последнее время, я увлекаюсь Web-безопасностью, да и в какой-то степени работа связана с этим. Т.к. я всё чаще и чаще стал замечать темы на различных форумах, с просьбой показать, как это всё работает, решил написать статью. Статья будет рассчитана на тех, кто не сталкивался с подобным, но хотел бы научиться. В сети относительно много статей на данную тематику, но для начинающих они немного сложные. Я постараюсь описать всё понятным языком и подробными примерами.
Читать дальше →

«Spirit»: Node.js MVC Framework

Reading time13 min
Views8.2K

Привет, ребята! С этого момента я хочу начать цикл статтей с подробностями по созданию сообственного MVC фреймворка для node.js, название которому будет — Spirit.

Первая статья будет состять из четырех частей:
1. Идея и миссия фреймворка
2. Настройка сервера
3. Создание каркаса фреймворка
4. Создание продвинутого и удобного роутера

Предупреждаю сразу, что статья — огромна, с кучей текста и большими блоками кода.

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

Маленькие секреты больших графов

Reading time2 min
Views9.2K

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

Agile: танцы с бубном или наука

Reading time3 min
Views15K
Множество достаточно опытных разработчиков и менеджеров пробовало Agile, и им не понравилось. Многие директора, руководители и специалисты даже не пробовали, ибо считают Agile религией, которая помогает, если в неё верить, либо, вообще, только создают впечатление эффективности у «верующих».



Понять последних можно, ведь большинство статей и agile-евангелистов говорят, примерно следующее: «Делайте так, как говорит методология, и ваш проект попадёт в рай. Если нарушите хотя бы одну из практик, то Agile покарает вас»
Так есть ли прок от Agile?

Постоянные неблокируемые cookie с использованием HTTP-заголовков

Reading time3 min
Views9.7K
На прошлой неделе прогремела новость об исследовании, утверждающем, что аналитическая компания KissMetrics отслеживала пользователей на сайтах при помощи уникального значения заголовка ETag(спека). KissMetrics отрицали использование ETag и в итоге подали в суд на авторов исследования(см. upd. в конце статьи).

Использование ETag (сокрашение от 'element tag', «метка элемента») для отслеживания пользователей известен и используется в партнерских сетях с начала прошлого десятилетия. Так же известно, что и заголовок Last-Modified(spec) теоретически может использоваться для отслеживания пользователей с помощью уникального значения времени обновления.

Мне, правда, кажется, что мало кто знает, что заголовок Last-Modified может принимать в качестве значения любую строку, то есть значение не обязательно должно быть правильной датой.
Читать дальше →

Прямая печать плат на текстолите

Reading time3 min
Views185K
Вот периодически мне бывает нужно сделать печатные платы для моих поделок. ЛУТ для меня чрезвычайно капризный метод — то тонер переплавится и растечется, то качество бумаги не сгодится, то еще какой- нибудь геморрой — нервы нужны стальные-железные. Для фоторезиста реактивы специфические и ламинатор.

«А если для этого станочек специальный соорудить? Чтоб сразу краской печатать?», — подумалось мне. «Принтер переделай!», — резонно заметила лень. Поиск в интернете выявил, что люди успешно переделывают для печати на текстолите струйники, однако это довольно трудоемкий процесс (нужно допиливать и поднимать рамку с печатающей головкой и т. п.), к тому же, своим струйным принтером я дорожу, как мадам Грицацуева ситечком (МФУ, все-таки). А вот ненужный лазерный HP lj 6L у меня валялся без дела — в общем, довалялся. Полез смотреть характеристики и случайно наткнулся на статью (кэш статьи, на всякий пожарный) по переделке именно этого принтера под текстолит. Но тема в статье так и не раскрылась до конца — в частности, там не рассказывается, как сделать так, чтобы тонер прилипал к фольге текстолита, чем потом этот тонер запекать и, главное, — нет видеодемонстрации работающего образца, поэтому я довел это дело до ума самостоятельно. Я настоятельно рекомендую ознакомиться с вышеупомянутой статьей, потому что повторять описанное там во всех деталях не буду — нечего плодить копипаст. Под катом много фотографий.
Читать дальше →

Групповые сопротивления

Reading time12 min
Views27K
Многие менеджеры в приватных беседах жалуются на сотрудников. Вроде бы и знающие специалисты, а работу не работают. Более того — часто отнимают время у тех, кто таки работает. Хоть увольняй.
Многие родители жалуются на что-то подобное в отношении детей. И тут уволить уже нельзя.
И сотрудники, и дети, часто действуют похожими способами. Реализация разная, а виды действий — схожие:

  • Привлечение внимания
  • Борьба за власть
  • Месть и личные нападки
  • Беспомощность
image
У каждого из этих видов есть свои формальные признаки и стандартные лекарства.
Читать дальше →

Даже в тюрьмах Кремниевой долины есть инкубаторы стартапов

Reading time2 min
Views2.9K


Когда мы представляем себе обычную тюрьму в США, всегда всплывают образы грубых джентльменов, в свободное время расслабляющихся на усиленно охраняемом дворике, где они занимаются тяжелой атлетикой, разбиваются на группировки по национальному признаку, и иногда устраивают драки. Было бы странно ожидать от отбывающих наказание преступников фонтана идей для стартапов и написания бизнес планов, не так ли?

Тем не менее, некоторые люди имеют другое мнение о их творческом потенциале: большую часть времени сидящие в бездействии могут думать и придумывать. В расположенной в часе езды от Кремниевой долины государственной тюрьме Сан-Квентина впервые была проведена программа Последней мили, которая помогла пяти заключенным изучить основы социальных медиа и предпринимательства, чтобы ввести оторванных от жизни снаружи людей в курс ожидающих их на воле технологических возможностей. Трудность обучения заключенных состояла в том, что большинство их них вообще никогда не пользовались компьютерами, и, согласно правилам безопасности, строго ограничивающим общение с внешним миром, не смогут до конца их срока пребывания в тюрьме.
Читать дальше →

PHP: фрактал плохого дизайна

Reading time32 min
Views207K

Предисловие


Я капризный. Я жалуюсь о многих вещах. Многое в мире технологий мне не нравится и это предсказуемо: программирование — шумная молодая дисциплина, и никто из нас не имеет ни малейшего представления, что он делает. Учитывая закон Старджона, у нас достаточно вещей для постижения на всю жизнь.

Тут другое дело. PHP не просто неудобен в использовании, плохо мне подходит, субоптимален или не соответствует моим религиозным убеждениям. Я могу рассказать вам много хороших вещей о языках, которых я стараюсь избегать, и много плохих вещей о языках, которые мне нравятся. Вперёд, спрашивайте! Получаются интересные обсуждения.

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

PHP — препятствие, отрава моего ремесла. Я схожу с ума от того, насколько он сломан и насколько воспеваем каждым уполномоченным любителем нежелающим научиться чему-либо ещё. У него ничтожно мало оправдывающих положительных качеств и я бы хотел забыть, что он вообще существует.
Читать дальше →

Мониторинг позиций своими руками

Reading time5 min
Views22K

Делаем мониторинг позиций запросов в поисковой системе, начало.


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

Наш инструмент будет состоять из 2-х частей:
  • скрипт для парсинга поисковой выдачи, с помощью Curl и lxml
  • веб-интерфейс для управления и отображения, на Django

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

«Выглядит похоже». Как работает перцептивный хэш

Reading time6 min
Views126K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

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

LINQ для PHP. Часть 2. Если гора не идёт к Магомету, Магомет идёт к горе

Reading time9 min
Views5.4K
Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:

YaLinqo — Yet Another LINQ to Objects for PHP

Возможности:

  • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
  • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
  • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
  • 100% покрытие юнит-тестами.
  • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
  • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
  • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.

Пример кода:

// Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории,
// отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени.

from($categories)
    ->orderBy('$v["name"]')
    ->groupJoin(
        from($products)
            ->where('$v["quantity"] > 0')
            ->orderByDescending('$v["quantity"]')
            ->thenBy('$v["name"]'),
        '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)'
    );

Детальное описание, обсуждение архитектуры, ссылки

LINQ для PHP. Часть 1. Я его слепила из того, что было, а потом, что было, то и полюбила

Reading time9 min
Views8.2K
Сказ о том, как LINQ на PHP портировали. Сравнение ныне существующих библиотек с табличками, но без графиков — прилагается.

Картинка код для привлечения внимания (картинок не дождётесь!)
echo Phinq::create($people)
  ->groupBy(function($person) { return $person->residence->region; })
  ->select(function($grouping) {
    $obj = new stdClass();
    $obj->people = $grouping;
    $obj->region = $grouping->getKey();
    return $obj;
  })->orderBy(function($obj) { return $obj->people->count(); }, true)
  ->aggregate(function($current, $next) {
    $count = $next->people->count();
    return $current . sprintf(
      "%d %s (%s) live in the %s region\n",
      $count,
      $count === 1 ? 'person' : 'people',
      $next->people->aggregate(function($current, $next) {
        if ($current !== null) {
          $current .= ', ';
        }
        return $current . sprintf('%s [%s]', $next->name, $next->residence->code);
      }),
      $next->region
    );
  });
Кто видел C# или любой функциональный язык — при виде этого шедевра закатит глаза (если они предварительно не вылетят из орбит). И, наверное, будет прав. Но можно ещё вот так:
$lowNums =
	from('$n')->in($numbers)->
	where('$n < 5')->
	store($digits)->into('digits')->
	select('$digits[$n]');
А как ещё можно? Осторожно, много текста!

Как распознать кракозябры?

Reading time1 min
Views433K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.

Как лучше хранить хэши паролей

Reading time4 min
Views15K
Как все мы знаем, пароли следует всегда хэшировать с помощью медленного алгоритма с использованием соли. Чаще всего применяют scrypt, bcrypt или PBKDF2, но этот пост не о том, какой алгоритм использовать. Вместо этого мы поговорим о том, что делать с хэшами дальше.

20- (или 32-) байтовые соль и хэш должны храниться в энергонезависимом, зарезервированном, надёжном хранилище, то есть обычно в реляционной базе данных. Но в каких именно таблицах их хранить? Чаще всего используется таблица со столбцами (user_id, salt, hash) или столбцы salt и hash могут быть в общей таблице Users. В обоих случаях хэш и соль находятся в отношении один-к-одному с пользователями.

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

Реализация паттерна MVC для PyQt

Reading time6 min
Views37K
Всем доброго времени суток!
В статье описывается реализация паттерна проектирования MVC для приложений использующих PyQt, на примере программы сложения двух чисел. Помимо описания реализации паттерна приводится описание процесса создания приложения.

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

Как на самом деле работает мозг

Reading time4 min
Views99K
На хабре довольно популярны статьи о различных техниках повышения работоспособности, улучшения памяти, самомотивации и т.д. и т.п. Увы, зачастую авторы этих статей совершенно не представляют себе, что такое мозг, как он работает и почему всё устроено именно так.

Прежде всего, необходимо понять вот что:

Думать дорого

Зачем на самом деле нужен мозг

Reading time10 min
Views52K
В продолжение предыдущего топика "Как на самом деле работает мозг". На написание данного поста меня побудила, с одной стороны, замечательная книга «Grooming, Gossip, and the Evolution of Language» Робина Данбара (Robin Dunbar), а с другой — очередная порция «полезных» и «умных» советов в GTD и других блогах.

Для затравки — небольшая логическая задачка. Дан набор карточек; на каждой из них на одной стороне написана буква, на другой — цифра.
На столе лежат четыре карточки: «А», «Д», «5» и «6». Вам говорят: если на карточке (из числа лежащих на столе) на одной стороне гласная, то на обороте — чётная цифра. Какие из карточек достаточно перевернуть, чтобы однозначно подтвердить или опровергнуть это утверждение?

Подумайте немного, запишите ответ на бумажке и добро пожаловать под кат.

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity