Search
Write a publication
Pull to refresh
-7
0

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

Send message

7 советов по созданию GIF анимаций

Reading time3 min
Views217K
61563fa3ab3147239dc7777662290fbe

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

В конце концов люди начали спрашивать нас: «Как вы создаете GIF анимации?». Пришло время раскрыть секрет.
Читать дальше →

От велосипеда к Maven

Reading time13 min
Views73K
Так уж сложилось, что до недавнего времени все проекты, написанные мною на Java я собирал, кхм, за меня собирал NetBeans. И меня такой расклад вещей вполне устраивал: после сборки всего проекта всё аккуратно складывалось в директорию dist со всеми подвязанными библиотеками, оставалось накидать туда пользовательской документации, необходимых native-библиотек (например от Firebird) и в путь, т.е. всё в архив. Когда то я делал это вручную, потом велосипедом, а потом уже Maven'ом. Под катом находится история о том, как же я пришел в стан maven и что из этого получилось.
Читать дальше →

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

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

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

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

Проектирование RESTful API с помощью Python и Flask

Reading time15 min
Views294K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

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

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

Runscript — утилита для запуска python скриптов

Reading time4 min
Views47K
Думаю многим знакома следующая ситуация. В вашем проекте есть различные действия, которые нужно выполнять время от времени. Для каждого действия вы создаёте отдельный скрипт на питоне. Чтобы далеко не лазить, скрипт кладёте в корень проекта. Через некоторое время вся корневая директория проекта замусоривается этими скриптами и вы решаете сложить их в отдельную директорию. Теперь начинаются проблемы. Если указать интерпретатору python путь до скрипта, включающий эту новую директорию, то внутри скрипта не будут работать импорты пакетов, находящися в корне проекта т.к. корня проекта не будет в sys.path. Эту проблему можно решить несколькими способами. Можно изменять sys.path в каждом скрипте, добавляя туда корень проекта. Можно написать утилитку для запуска ваших скриптов, которая будет изменять sys.path перед запуском скрипта или просто будет лежать в корне проекта. Можно ещё что-то придумать. Мне надоело каждый раз изобретать колесо и я создал велосипед runscript на котором с удовольствием катаюсь.
Читать дальше →

Бекап аудиозаписей с плейлиста ВКонтакте (до 6000) средствами Python и Vk API

Reading time4 min
Views59K
Здравствуйте.

Раньше часто слушал музыку средствами «Вконтакте» (далее ВК). После перехода на Ubuntu 14.10 возникли проблемы в виде полного зависания компьютера во время прослушивания аудиозаписей через браузер Google Chrome для linux систем. В связи с этим возникла необходимость забекапить свой плейлист для прослушивания музыки в оффлайн режиме. Для этих целей решил написать маленький скрипт на языке Python, которым можно будет не только скачивать музыку с нуля, но и обновлять существующую библиотеку.

Я использовал такие модули:
  • Selenium webdriver
  • requests
  • json
  • os

Собственно, начнем.
Читать дальше →

9 ошибок в резюме, которые могут стоить вам работы

Reading time3 min
Views22K
CVВ цифровую эпоху старая добрая бумага может показаться частью прошлого, но LinkedIn еще не полностью заменил старомодное резюме.

Если все сделано правильно, то ваше резюме расскажет вашу историю и продаст ваши таланты.

Хоть самые передовые технологии и изменили способ соискания работы, резюме остается неотъемлемой частью процесса найма.

Отвратно написанное резюме будет работать против вас. Чтобы этого не случилось отметим наиболее вопиющие ошибки и оплошности резюме.
Читать дальше →

Тестирование Ni-MH аккумуляторов типоразмера AA(HR6)

Reading time13 min
Views106K
Нас окружает огромное количество всевозможных устройств и гаджетов, призванных облегчить и разнообразить нашу жизнь, начиная от детских электронных игрушек и заканчивая многообразными фотоаппаратами, фотовспышками, фонарями, рациями и т.д. Электропитание многих из них обеспечивается от Ni-MH элементов питания типоразмера АА. В продаже имеется великое разнообразие данных источников питания. Мое внимание привлекли аккумуляторы, как наиболее экономные и экологичные источники питания. В данном обзоре собраны результаты тестирования десяти различных комплектов аккумуляторов.



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

Black Swift: зачем мы его сделали

Reading time7 min
Views126K
Как уважаемые хабровчане знают, вот уже почти год мы разрабатываем маленький компьютер (примерно с SD-карточку), работающий под OpenWRT, со встроенным Wi-Fi, USB, Ethernet, азартными играми и доступными женщинами. Дмитрий dzhe уже несколько раз писал про него — и, в общем, с каждым разом собирал в комментариях один и тот же вопрос: а зачем вы вообще его делаете? Ну ведь есть же Raspberry Pi, стоит он столько же, есть VoCore, Carambola, Edison, в конце концов, — зачем нужен ещё один «нанокомпьютер»?

Пожалуй, надо наконец на этот вопрос ответить — заодно отметив этим ответом появление у нас своего корпоративного блога (спасибо, Хабр!), а также запуск отдельного веб-сайта, посвященного только этому проекту.



Если коротко: хотя изначально проект начинался как «а не сделать ли нам нанокомпьютер как у китайцев, но для себя и подешевле?», мотивация довольно быстро сместилась — мы поняли, что можем сделать его если не дешевле, то лучше и удобнее, и не только для себя.

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

Как загрузить последний Office с сайта Microsoft без всякого App-V

Reading time4 min
Views83K
На прошлой неделе я написал заметку «Как загрузить виртуальный корпоративный Office 2013 с сайта Microsoft», где описал, как при помощи Office Deployment Tool загрузить последнюю корпоративную версию Office 2013 и сконвертировать её в формат виртуального пакета APP-V 5.0. Очевидно, что виртуализация приложений интересна для массового развертывания, для сценариев ферм терминального доступа, и для энтузиастов, часто обновляющих ОС на домашнем ПК, — например, устанавливая регулярные сборки Windows 10 по программе Windows Insider, и не желающих переустанавливать вручную все приложения. Для более простого пользователя существует совсем тривиальный сценарий установки Microsoft Office всё тем же Deployment Tool в режиме Click2Run. Отличий от способа, описанного в прошлой заметке два. Во-первых, не нужна конвертация пакета в формат APP-V, (соответственно, не нужен сам APP-V и махинации в PowerShell) – прямо после загрузки пакета мы его одной командой приготовим к Click2Run использованию. Второе отличие будет более печальным – для режима работы Click2Run доступны лишь Retail версии Office 2013, — следовательно, продукт потребуется активировать вручную. Рассмотрим процесс по шагам.
Читать дальше →

6 способов: как добавить security для Rest сервиса в Java

Reading time10 min
Views128K

В данной статье я попытаюсь описать несколько способов, а точнее 6, как добавить security для rest сервиса на Java.



Перед нашей командой была поставлена задача найти все возможные способы добавить security к rest сервису. Проанализировать все за и против и выбрать наиболее подходящий для нашего проекта. Когда я начал искать такую статью в Гугле ничего подходящего не нашел, а были лишь фрагменты и мне пришлось собирать эту информацию по крупицам. Так что думаю, данная статья будет полезна и другим Java разработчикам, пишущим back-end. Я не буду утверждать, что какой-то из этих способов лучше или хуже, все зависит от поставленной задачи и конкретного проекта. Поэтому какой из шести способов подходит больше всего вашему проекту решать только Вам. Я постараюсь описать принцип каждого из подходов и дать небольшой пример с использованием Java и Spring Security.

6 способов

ODROID-C1 — форма от Raspberry Pi B+, 4 ядра по 1500MHz, 1GB и цена $35

Reading time2 min
Views37K
Корейские ребята из компании Жёсткоеядрышко (Hardkernel) выпустили в жизнь свой новый микрокомпьютер ODROID-C1, который сделан по подобию Raspberry Pi B+ в том же формфакторе и с тем же разъёмом GPIO. При этом, он обладает четырёхядерным процессором Cortex-A5 с частотой 1,5GHz, 1GB DDR3, гигабитной сетевой картой и прочими прелестями, которые заметно превосходят возможности малинки.

image

Немного предыстории


Ещё до этого Hardkernel выпустила ODROID-W, который имел тот же процессор от Broadcom, что и малинка, был программно совместим, а главным отличием были значительно меньшие размеры платы, особенно в высоту. Но ребятам, которые пекут малиновые пироги, это не понравилось и Broadcom запретила продавать Hardkernel свои процессоры. Была выпущена только одна партия ODROID-W. Её анонсировали в июле, а уже в сентябре появилось сообщение об отказе Broadcom в поставках.

Теперь же, Raspberry Pi B+ получил серьёзного конкурента, и хотя корейский вариант и менее известен, но он хорошо подходит тем, кому, как минимум, нужно больше производительности.

Сравнение и подробности

Качественный интерфейс JIRA-плагина с помощью AUI Framework

Reading time7 min
Views23K


JIRA широко используется в Mail.Ru Group. Сейчас мы применяем эту систему не только для управления проектами и отслеживания ошибок, но и для организации самых разнообразных операционных процессов — рекрутинга, согласования договоров, командировок и так далее. Это с одной стороны очень удобно, так как многие бизнес-процессы отлично ложатся на модель Issue в JIRA. Однако часто требуются также и специфичные функции, реализуемые с помощью специально написанных нами плагинов.

Несколько лет назад мы довольствовались простыми JS-скриптами и плагинами общего назначения сторонних разработчиков. Со временем JIRA проникала в операционные процессы глубже, соответственно, и требования к функциям, заточенным именно под эти процессы, росли. В настоящее время у нас есть отдельное подразделение, задачей которого является разработка кастомизированного функционала для JIRA и Confluence. В рамках него накоплена хорошая экспертиза.

Сейчас многие JIRA-плагины сторонних разработчиков не могут похвастаться качественным интерфейсом. Это касается даже некоторых платных плагинов. Однако все средства для быстрой разработки удобных и красивых интерфейсов есть. В статье рассматривается одно из них — AUI Framework (Atlassian User Interface Framework).

Предполагается, что читатель знаком с тем, как можно сделать плагин в принципе. Если нет, то об этом можно почитать, например, здесь.
Читать дальше →

Голосование по проектам для микрокомпьютера VoCore (wi-fi, openwrt)

Reading time13 min
Views73K


В первой нашей публикации про микрокомпьютер размером с монетку, с Wi-Fi и Linux — VoCore, мы объявили конкурс на бесплатное получение микрокомпьютера для развития своего проекта/идеи. Было получено свыше 40 заявок (всем участникам большое спасибо!), из них мы постарались выбрать 15 — для голосования.

Кстати, а что на фото?
На фото — вариант исполнения Dock VoCore — микрокомпьютер совместно с Ethernet, USB и micro-usb для питания. Напомню, что мы продолжаем сбор желающих приобрести себе VoCore, подробности — в конце статьи.

Ну что ж, устраивайтесь поудобнее, и выбирайте — какой проект применения VoCore вам будет самым интересным (представьте, что у вас 3 шт. VoCore — и кому бы вы их раздали — голосование после статьи).

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

Тестируем VoCore в хакспейсе — микро-компьютер с WiFi на Linux/OpenWrt

Reading time4 min
Views146K


VoCore — это такой микрокомпьютер с Linux/OpenWrt на борту, который совсем недавно с помощью краудфандинга собрал более $100к (из заявленных $6k). Внутри этой штучки: MIPS процессор 360МГц, WiFi 802.11n, Ethernet 10/100Мбит/с, и куча GPIO. Все уместилось на платке размерами 25х25мм!

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

А самое главное, мы объявляем конкурс на раздачу трех VoCore тем, кто предложит самые лучшие идеи его применения. Подробности, опять же, под катом!

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

Odroid W, или потрошим малиновый пирожок

Reading time3 min
Views43K
На днях копался в прайсе одной московской компании, в которой почти год назад прикупил Малинку, и с удивлением в числе прочего обнаружил Odroid W — ту самую плату «Малина в три раза мельче»
С учётом того, что деньги были и я всеравно хотел пару штук таких — сделал заказ и в пятницу таки забрал его…
image

Это «обзорник» по щупанию лапами новой платы и раскрытие некоторых неочевидных на первый взгляд вещей.

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

Raspberry Pi — что можно сделать на основе «малинки»? Часть 2

Reading time2 min
Views116K


В первой части подборки рассказывалось о том, что на основе мини-ПК Raspberry Pi можно сделать суперкомпьютер, метеозонд и даже праздничную систему освещения.

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

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

6 ссылок о том, что Google знает о вас

Reading time2 min
Views458K
Не желаете ли узнать о том, что Google знает о вас? Вот 6 ссылок, которые покажут вам некоторые данные, собранные гуглом.

1. Ваш профиль в Google

Google создаёт профиль с вашими основными данными – возраст, пол, интересы. Эти данные используются для показа релевантных объявлений. Вы можете просмотреть эту информацию здесь:

www.google.com/ads/preferences

(прим.перев. – в моём случае гугл не блещет информацией. Я не состою в Google+, а по посещённым мною сайтам гугл не смог определить мой пол, а возраст определил в 65+ лет).
Читать дальше →

Information

Rating
5,464-th
Location
Москва и Московская обл., Россия
Registered
Activity