Как стать автором
Обновить
26
0
Владислав Павлов @McClay

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

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

Некриптографические хеш-функции и DoS атака на них

Время на прочтение10 мин
Количество просмотров34K
Некриптографические хеш-функции применяются там, где важна скорость и не так важна возможность атаки на характеристики функции. Последнее время активно обсуждается атака на алгоритмическую сложность хеш-таблиц путём создания множественных коллизий хеш-функции, которая может привести к DoS. Мы рассмотрим современные некриптографические хеш-функции, условия для их применения, возможные методы защиты от атаки на хеш-таблицы и почему оказалось, что это не так просто исправить.

Некриптографические хеш-функции


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

Критерии, которые важны для некриптографических хеш-функций:
Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии3

Используем console на полную

Время на прочтение6 мин
Количество просмотров458K
Метод console.log() — отличный способ вывести отладочную информацию, не мешая пользователю. Но знаете ли Вы, что объект console имеет еще уйму других не менее полезных методов? Очень редко разработчики используют этот функционал, ограничиваясь неблокирующим alert'ом. Что-ж, давайте исправим это положение.

Вкусности console
Всего голосов 172: ↑168 и ↓4+164
Комментарии29

Опыт удаленного поиска работы в Лондоне

Время на прочтение4 мин
Количество просмотров46K
Год назад мне позвонил агент из Лондона — они искали Javascript программистов для Badoo. Смутно помня, что для работы в UK требуется сложная рабочая виза, я сообщил им сразу, что гражданство у меня только российское. Агент сообщил, что это не обязательно беда, и что у Badoo есть несколько квот для людей без права работать в Британии. Позже он правда перезвонил, извинился, и сказал что квоты закончились.

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

  • К поиску работы стоит подходить как к игре. Есть правила игры, есть победившие и проигравшие, и всегда можно сыграть другую игру. Не стоит воспринимать весь процесс слишком всерьез.
  • Правила поведения в интервью, технические задания и вопросы с большей вероятностью не будут иметь отношения к реальным проектам. Точно также финальное впечатления от тебя командой может не иметь отношения к тому, что ты на самом деле можешь.
  • Стоит предельно четко выяснить для себя на какие позиции вам охота попасть. Это сэкономит кучу времени — можно быстро отсеивать все ненужное. Я начинал поиск как фронтенд девелопер, потом очертил круг как фулл-стек девелопер с перспективой выхода на project manager.
  • Скайп интервью — ок. Техническое задание на выходные — ок. Слетать в Лондон на первое интервью или первое техническое задание — не ок. Лететь имеет смысл только когда уже все друг другу нравятся, и у обоих сторон есть положительное представление о том, как все может сложиться. Или просто если хочется посмотреть город.

Читать дальше →
Всего голосов 79: ↑64 и ↓15+49
Комментарии54

Поиск работы за рубежом

Время на прочтение6 мин
Количество просмотров104K
Судя по отзывам на мою предыдущую статью о процессе прохождения интервью, многие хаброколлеги интересуются, как лучше подготовиться к поиску работы на западе. Хочу поделиться моим опытом и дать ссылки, которые будут полезны тем, кто думает о переезде или просто хочет узнать, как это работает в другом мире. Статья ориентирована на среднестатистического разработчика ПО, так что если у вас блестящие навыки разговорного языка и превосходные знания нужных технологий и языков программирования, то многие советы можно пропустить.

Итак, вы задумались о поиске новой работы.
Читать дальше →
Всего голосов 86: ↑78 и ↓8+70
Комментарии21

Профессиональная эмиграция — Часть 1 — Проблема курицы и яйца и как с ней бороться, а также развенчание мифов

Время на прочтение4 мин
Количество просмотров59K
Здравствуйте, Хабраюзеры.

Этим постом я хотел бы начать цикл (если позволит время и будет интересно аудитории) про профессиональную эмиграцию, особенно без привязки к работодателю.
Читать дальше →
Всего голосов 228: ↑208 и ↓20+188
Комментарии337

ES6 в деталях: введение

Время на прочтение3 мин
Количество просмотров119K
ES6 в деталях
Добро пожаловать в серию «ES6 в деталях»! В этой еженедельной серии статей мы будем изучать ECMAScript 6 — новую готовящуюся к выходу спецификацию языка JavaScript. ES6 имеет множество новых возможностей, которые делают JS мощнее и выразительнее, и каждую неделю мы будем рассматривать эти возможности. Но прежде чем мы приступим, неплохо бы поговорить о том, чем является ES6 и что от него ожидать.
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии28

Тонкости ES6: Коллекции (часть 1)

Время на прочтение4 мин
Количество просмотров34K
Ранее на этой неделе (статья от 19 июня — прим.) спецификация ES6, официально названная ECMA-262, 6th Edition, ECMAScript 2015 Language Specification, преодолела последний барьер и была утверждена как стандарт Ecma. Мои поздравления TC39 и всем остальным, кто помогал. ES6 закончен!

Даже лучше: больше не надо будет ждать следующего обновления 6 лет. Комитет собирается выпускать новую версию в срок около года. Предложения по ES7 уже примаются!

Я считаю, что уместно отпраздновать это событие поговорив о той части Javascript, которую я так желал в нем увидеть, и у которая все еще имеет потенциал к улучшению.

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

Разбираемся с Flux, реактивной архитектурой от facebook

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


Введение


Добро пожаловать в третью часть серии статей «Изучаем React». Сегодня мы будем изучать, как устроена архитектура Facebook Flux, и как использовать ее в своих проектах.
Ррреактивно!
Всего голосов 25: ↑25 и ↓0+25
Комментарии16

Как ABBYY Cloud OCR SDK помогает ловить дешёвые авиабилеты

Время на прочтение4 мин
Количество просмотров17K
Как знают наши постоянные читатели, некоторое время назад у нас появился ABBYY Cloud OCR SDK, сервис распознавания для разработчиков, «облачный брат» ABBYY FineReader Engine. Сервис работает настолько просто, что вашему редактору (тм) редко удаётся уговорить разработчиков написать про него пост на Хабр – технических подробностей не хватает на целую статью. Вот разве что был самый первый пост о бета-тестировании.

Сегодня мы расскажем, как использует сервис один из наших клиентов — Aviasales. Это один из крупнейших поисковиков авиабилетов в мире (на зарубежных рынках компания работает под именем JetRadar), в месяц им пользуется около 10 миллионов человек, а количество поисковых сессий в сутки приближается к миллиону. Уже довольно давно Aviasales, как и любой уважающий себя сервис, выпустил мобильные приложения для поиска и покупки авиабилетов.
Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии16

5 практических примеров для изучения фреймворка React

Время на прочтение10 мин
Количество просмотров254K
Перевод статьи «5 Practical Examples For Learning The React Framework», Martin Angelov

Вы вероятно слышали о популярном JavaScript фреймворке от Facebook – React. Он используется на многих популярных веб-сайтах, в том числе в Facebook и Instagram. В этой статье вы увидите 5 практических примеров, построенных при помощи React, которые помогут вам начать работать с этим фреймворком.
Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии46

Готовим IndexedDB

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


На Хабре уже рассказывали про IndexedDB — стандарт хранения больших структурированных данных на клиенте. Но это было давно и API сильно изменился. Несмотря на это в поиске статья всплывает одной из первых и вводит в заблуждение многих, кто начинает пытатся работать с этой технологией. Поэтому я решил написать новую статью с информацией об актуальном API.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии8

«Переезжаем» в офлайн: Web Storage, Application Cache и WebSQL

Время на прочтение11 мин
Количество просмотров28K
Чтобы делать приложения, которые могут работать в полностью автономном режиме, нам нужно познакомиться со следующими технологиями: HTML5 Application Cache, Web Storage и WebSQL.
Мной уже были опубликованы вводные статьи, касающиеся Web Storage и HTML5 Application Cache. Рекомендую их к прочтению если вы еще не знакомы с основными понятиями. В данной статье будут пересмотрены эти технологии, в том числе и WebSQL, и описаны варианты их совместного эффективного использования. Все эти технологии поддерживаются настольной версией браузера Opera 11.10, Opera Mobile 11, браузерами на движке WebKit (в iOS и Google Android).
Читать дальше →
Всего голосов 78: ↑75 и ↓3+72
Комментарии27

За пределами HTML5: API к базам данных и путь к IndexedDB

Время на прочтение4 мин
Количество просмотров6.6K
IndexedDB – развивающийся веб-стандарт для хранения значительных объемов структурированных данных в браузере и осуществления высокопроизводительного поиска по данным с помощью индексирования. Mozilla внесла значительный технический вклад в эту спецификацию, и мы планируем реализовать её в Firefox 4 (поддерживается в FF RC4 — прим. пер.). Мы общались с известными веб-разработчиками на предмет внедрения элегантного API для хранения структурированных данных в веб. Safari, Chrome и Opera поддерживают технологию Web SQL Database, использующую SQL-запросы, которые передаются строковыми аргументами в JavaScript API; нам же кажется, что эстетическая составляющая разработки тоже заслуживает внимания, а подобное решение является не очень элегантным для клиентских веб-приложений. Мы донесли мнение разработчиков до редактора спецификации IndexedDB, и пообщались с Microsoft, которая отметила, что IndexedDB была бы не плохим решением для веба. С маячащими на горизонте реализациями от команды Chrome, нам кажется необходимым объяснить наш выбор архитектуры и то, почему нам кажется, что IndexedDB является лучшим решением для веб нежели Web SQL Database.

Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии3

Meteor. Разрабатываем TODO List

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

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

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

И еще одно предупреждение: в данном уроке будут использоваться следующие технологии для непосредственного написания примера:

  • jade — html препроцессор;
  • less — css препроцессор;
  • coffeescript — язык программирования, компилируемый в javascript.

Видео, демонстрирующее приложение, полученное в ходе урока



И кому все еще интересно, добро пожаловать под кат.
Читать дальше →
Всего голосов 67: ↑59 и ↓8+51
Комментарии19

Боевой сервер для Django-приложения: Ubuntu Server 10.04 LTS + django 1.4 + nginx + gunicorn

Время на прочтение11 мин
Количество просмотров121K
Многие учебные пособия по разработке на Django раскрывают как быстро получить работающий отладочный сервер (python manage.py runserver), а вопрос развертывания в боевом режиме часто остается нераскрытым или освещаются далеко не самые простые и эффективные методы.
Ниже я расскажу о об одном из способов развернуть сайт на Django в боевом режиме, начиная от выбора хостинга, заканчивая развертыванием веб-сервера. Таким образом статья может быть полезна тем, кто освоил разработку на базе Django, но не имеет опыта развертывания серверов. Мой способ один из многих, но он достаточно прост, эффективен в работе и легок в поддержке. Используем VPS-хостинг, Ubuntu 10.04, nginx, gunicorn.

Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии41

Ежедневная работа с Git

Время на прочтение40 мин
Количество просмотров882K
Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
  • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
  • будет ли менеджер и заказчик удовлетворён этим процессом?
  • будет ли легко работать разработчикам?
  • смогут ли новички быстро включиться в процесс?
  • можно ли процесс относительно легко и быстро изменить?


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

Далее очень много букв случайным образом превратились в пост.
Всего голосов 200: ↑194 и ↓6+188
Комментарии44

ECMAScript 6 Promises

Время на прочтение5 мин
Количество просмотров52K
На Хабре уже встречались статьи о замечательной технологии Promises, которая в будущем станет частью стандарта ECMAScript 6, однако, в этих статьях не было подробного описания, почему же они так полезны и в чем таки их преимущества. Дабы заполнить этот пробел, я решил написать эту статью.
Читать дальше →
Всего голосов 37: ↑28 и ↓9+19
Комментарии47

Обещания JavaScript

Время на прочтение19 мин
Количество просмотров204K
Всем привет, и ещё раз всех с прошедшими праздниками. Трудовые будни набирают обороты и вместе с ними растёт информационный голод мучающий нас. Мир разработки переднего конца не дремлет и готовит нам много сюрпризов в наступившем году, и уж поверьте мне, скучно не будет ни кому. Одна из новых особенностей которые нам готовят разработчики браузеров совместно с группами разработчиков пишущих спецификации — JavaScript Promises(далее в переводе — Обещания, прошу сильно не бить) — полюбившийся многим шаблон написания асинхронного кода обзаводится нативной поддержкой. Что же такое обещания и с чем их едят можно прочесть в нижеследующем переводе(слегка вольном) замечательной статьи Джейка Арчибальда.

Подробности
Всего голосов 83: ↑76 и ↓7+69
Комментарии39

Шпаргалка по Redis

Время на прочтение8 мин
Количество просмотров379K
Про Redis (официальный сайт, материалы на Хабре) написано много, но мне до сего дня не хватало материала, который послужил бы шпаргалкой по его практическому использованию, а так же справочником по базовым теоретическим моментам. Постараюсь заполнить этот пробел в богатой базе знаний Хабра.

Я поставил перед собой цель показать возможности Redis с помощью примеров кода. После публикации приму любые предложения по улучшению материала.

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

Ключи


Redis — хранилище данных в формате «ключ-значение». Факты о ключах:
  • Ключи в Redis — бинарно-безопасные (binary safe) строки.
  • Слишком длинные ключи — плохая идея, не только из-за занимаемой памяти, но так же и в связи с увеличением времени поиска определенного ключа в множестве в связи с дорогостоящим сравнением.
  • Хорошая идея — придерживаться схемы при построении ключей: «object-type:id:field».


Типы данных Redis


  • Строки (strings). Базовый тип данных Redis. Строки в Redis бинарно-безопасны, могут использоваться так же как числа, ограничены размером 512 Мб.
  • Списки (lists). Классические списки строк, упорядоченные в порядке вставки, которая возможна как со стороны головы, так и со стороны хвоста списка. Максимальное количество элементов — 232 — 1.
  • Множества (sets). Множества строк в математическом понимании: не упорядочены, поддерживают операции вставки, проверки вхождения элемента, пересечения и разницы множеств. Максимальное количество элементов — 232 — 1.
  • Хеш-таблицы (hashes). Классические хеш-таблицы или ассоциативные массивы. Максимальное количество пар «ключ-значение» — 232 — 1.
  • Упорядоченные множества (sorted sets). Упорядоченное множество отличается от обычного тем, что его элементы упорядочены по особому параметру «score».

Про типы данных Redis есть отдельная хорошая статья: «Структуры данных, используемые в Redis».
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии16

WebSocket-чат на Tornado для вашего Django-проекта

Время на прочтение28 мин
Количество просмотров68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

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

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →
Всего голосов 56: ↑43 и ↓13+30
Комментарии17

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность