Pull to refresh
3
Karma
0
Rating

User

  • Posts
  • Comments

Зачем нужен Refresh Token, если есть Access Token?

Voximplant corporate blogInformation SecurityWebsite developmentProgrammingDevelopment of mobile applications
Недавно мы в Voximplant улучшали авторизацию в SDK. Посмотрев на результаты, я несколько опечалился, что вместо простого и понятного токена их стало две штуки: access token и refresh token. Которые мало того что надо регулярно обновлять, так еще документировать и объяснять в обучающих материалах. Помня, что в OAuth два токена нужны в основном из-за разных сервисов, на которых они используются (даже вопрос на stackoverflow есть), а у нас такой сервис один, я несколько офигел и пошел на второй этаж вытрясать души из разработчиков. Ответ получился неожиданным. Его нет на stackoverflow. Зато он есть под катом.
Читать дальше →
Total votes 74: ↑70 and ↓4 +66
Views118.5K
Comments 297

Подключаем джойстик от Dendy к Raspberry pi

DIYGames and game consoles
Sandbox
Однажды, насмотревшись всяких «Пока все играют», мне тоже захотелось поиграть на своём Raspberry pi. Да не просто поиграть, а поиграть используя реальное устройство. Для чего в переходе метрополитена за 150 рублей был куплен джойстик от Денди (ну не от денди, а Симбас Юниор). Те, кому интересно, что из этого получилось, могут ткнуть мышкой по кнопке ниже. В конце статьи будет ссылка на пруф.

Читаем далее
Total votes 33: ↑32 and ↓1 +31
Views18.3K
Comments 30

DiffHTML.js — утилита для патчинга DOM

JavaScriptHTML


Что такое DiffHTML.js?


DiffHTML — эта утилита для патчинга (частичного изменения) DOM-дерева. Она умеет находить разницу между существующим DOM-деревом и HTML-строкой, между двумя деревьями. В результате будут произведены только те изменения, которые реально имеют место быть. Те элементы которых не было — вставятся, атрибуты которые были реально изменены — изменятся, и только они. Остальные элементы останутся без изменений.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Views9.8K
Comments 25

Микрокомпьютер micro:bit от BBC уже можно купить

Computer hardwareDIYElectronics for beginners
micro:bit может быть интересен как детям, так и взрослым


Фото: BBC

Около года назад компания BBC сообщила о намерении раздать миллион миниатюрных ПК школьникам Великобритании. Понятно, не для развлечений, а для учебы (разработка Touch Develop, Python, и C++). Целевой аудиторией проекта выступали школьники в возрасте 11-12 лет. Было также обещано сделать этот мини-ПК совместимым с Raspberry Pi, Arduino, Galileo и другими мини-ПК.

В этом году обещанное было реализовано, и 22-го марта компания начала рассылать устройства всем школам, которые подписались на программу micro:bit. Авторы проекта считают, что такого рода электронное устройство позволит развивать в молодом поколении интерес к изучению современных технологий. Интересно, что это уже второй такой проект от ВВС, первый был реализован в 1980-х годах, назывался он BBC Micro.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views22.8K
Comments 10

Более чем 80 средств мониторинга системы Linux

ua-hosting.company corporate blog
Ниже будет приведен список инструментов мониторинга. Есть как минимум 80 способов, с помощью которых ваша машинка будет под контролем.



1. первый инструмент — top

Консольная команда top- удобный системный монитор, простой в использовании, с помощью которой выводится список работающих в системе процессов, информации о этих процессах. Данная команда в реальном времени сортирует их по нагрузке на процессор, инструмент предустановлен во многих системах UNIX.
читать дальше
Total votes 94: ↑82 and ↓12 +70
Views264.3K
Comments 68

Изоморфное Приложение с React и Redux

JavaScriptReactJS
Translation
Итак, я знаю что ты любишь Todo списки, то есть, что тебе очень нравится писать Todo списки, поэтому мне хочется, чтобы ты создал один из них, используя новый, восхитительный и питательный («nutritious» прим. пер.) Flux фреймворк, Redux! Я желаю тебе только лучшего.

В этой статье ты научишься как сконструировать свое собственное Redux приложение, не ограничиваясь, но так же включая.

  • Цельнозерновой рендеринг на сервере
  • Расширенный роутинг, богатый Omega-3
  • Маслянистая асинхронная загрузка данных
  • Гладкое функциональное послевкусие


Если это похоже на то, чего ты хочешь в этой жизни, вперед под кат, если нет, то не заморачивайся.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views97.5K
Comments 12

CSRF-уязвимость VK Open Api, позволяющая получать Access Token’ы сторонних сайтов, использующих авторизацию через VK

Information SecurityJavaScriptVK API
Sandbox
Представляю вашему вниманию обзор уязвимости, связанной с неправильным применением JSONP в VK Open Api. На мой взгляд, уязвимость достаточно серьёзная, т.к. позволяла сайту злоумышленника получать Access Token другого сайта, если на нём используется авторизация через библиотеку VK Open API. На данный момент уязвимый код поправили, репорт на HackerOne закрыли, вознаграждение выплатили (1,500$).

Как это выглядело


В принципе, процесс получения пользовательского Access Token'а страницей злоумышленника происходил по стандартной схеме эксплуатации CSRF-уязвимости:

  1. Пользователь заходит на сайт, использующий библиотеку VK Open API (например, www.another-test-domain.com).
  2. Авторизуется там через VK.
  3. Потом заходит на сайт злоумышленника (например, www.vk-test-auth.com), который, эксплуатируя уязвимость, получает Access Token, принадлежащий сайту www.another-test-domain.com.
  4. Получив Access Token пользователя, злоумышленник может обращаться к VK API с теми правами, который пользователь дал сайту www.another-test-domain.com при авторизации на нем через VK.

Демонстрация


На видео показано, как страница «злоумышленника» на домене www.vk-test-auth.com получает Access Token пользователя VK, который авторизовался на сайте www.another-test-domain.com, несмотря на то, что в настройках приложения VK, доступ разрешён только для домена www.another-test-domain.com.


Читать дальше →
Total votes 64: ↑63 and ↓1 +62
Views35.9K
Comments 17

15 тривиальных фактов о правильной работе с протоколом HTTP

Яндекс corporate blogWebsite developmentAPIDevelopment of communication systems
Внимание! Реклама! Пост оплачен Капитаном Очевидность!

Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
Читать дальше →
Total votes 191: ↑186 and ↓5 +181
Views199.5K
Comments 120

Обратимая транслитерация кириллицы

Programming
Sandbox
Возможно, кто-то еще помнит, как писали SMS, а иногда и письма, «транслитом». Но зачем транслитерация сегодня, когда везде уже unicode? К сожалению, унаследованные приложения выходят из эксплуатации намного медленнее, чем хотелось бы. Например, и сегодня используются томографы, не допускающие кириллицу в именах пациентов. При том, что информационная система, используемая тем же отделением, прекрасно кириллицу понимает. И оператору томографа нужно не просто позвать пациента на исследование, но и правильно записать его фамилию в какие-нибудь документы. Похожие ситуации могут встретится в разных местах.

То есть, возникает задача как-то передать текстовые данные в унаследованную систему, чтобы:
  • человек — оператор унаследованной системы смог прочесть полученный текст «по звучанию»
  • при необходимости можно было бы однозначно восстановить исходный кириллический текст

Чтобы не было скучно, добавим более подробных требований, связанных с совместимостью и простотой для человека:
  1. использовать только буквы в узком смысле, без знаков препинания и диакритических элементов (это заодно позволит сохранить регистр)
  2. каждую исходную букву преобразовывать независимо от остальных (без сложностей вроде «в начале / в конце слова» и т.п.)
  3. замены как можно более короткие, в идеале одно-буквенные
  4. правила обратного преобразованния как можно проще, например, замены должны соответствовать условию Фано
  5. близкие по звучанию замены, в представлении «обычного человека» — на практике это некая смесь из латыни, английской, французской, немецкой и, иногда, испанской фонетики

Конечно, перечисленное не совсем требования (кроме первых двух), а, скорее, эвристики.

Можно найти много готовых вариантов транслитерации кириллицы в латиницу. Но среди них не нашлось ничего, что бы удовлетворяло всем требованиям в приемлемой степени. То использует диакритические символы, как стандарты, то выбрасывает буквы (обычно «Ъ»), то предлагают необратимые (щ —> shch) или фонетически дикие (ш —> w) варианты замены, или имеют другие фатальные недостатки.

Значит, делаем свой велосипед. Собственно, нужно составить таблицу соответствия, и описать алгоритм преобразования туда и обратно.
Читать дальше →
Total votes 38: ↑31 and ↓7 +24
Views46.1K
Comments 90

Конвертируем svg to png

Website developmentJavaScriptCanvas
Tutorial
Иногда появляется необходимость сохранить svg в png средствами браузера. К сожалению, браузер не имеет волшебного api, который позволил бы это сделать без различных хаков. Что же делать, если все таки хочется добиться желаемого?
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Views41.1K
Comments 12

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

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


Читать дальше →
Total votes 65: ↑61 and ↓4 +57
Views80K
Comments 24

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

Website developmentJavaScript
Если вы когда-нибудь сталкивались с задачей ресайза картинок в браузере, то вы наверное знаете, что это очень просто. В любом современном браузере есть такой элемент, как холст (<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
Читать дальше →
Total votes 156: ↑152 and ↓4 +148
Views99.6K
Comments 90

Nested Intervals и их реализация под Yii2

PHPAlgorithmsYii
Привет, Хабр!
Большинство разработчиков знает, что такое Nested Sets, их сильные и слабые стороны. Сегодня я хочу представить на суд общественности реализацию модификации этой методики, которая частично решает недостатки оригинального алгоритма, правда имеет и свои отрицательные стороны.
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Views12.4K
Comments 13

Интересности из мира квайнов (100 языков, радиационно-устойчивый, часы, змейка)

Abnormal programmingC#
image

Эстафета из 100 языков программирования


Квайн — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Цепной квайн отличается от обычного тем, что на каждой последующей итерации выводится код на другом языке программирования, до тех пор, пока не выведется код оригинального квайна. В середине 2013 года японский программист Юсукэ Эндо (遠藤 侑介) разработал цепной квайн, содержащий 50 языков программирования. В конце 2014 кода он опубликовал новую версию, включающую уже 100 языков!

Исходники и информация о компиляции всех этих квайнов есть на гитхабе: quine-relay. Любопытно, что исходный код в виде картинки был написан не в ручную (что невозможно в принципе), а сгенерирован. Автор отмечает, что в течении года он опубликует книгу про обфусцированное программирование, которая будет включать в себя подробное объяснение о том, как писать квайны, ascii-art квайны, цепные квайны (подобные этой эстафете).
Далее
Total votes 48: ↑46 and ↓2 +44
Views21.9K
Comments 9

Эффективное кодирование видео в Linux c Nvidia NVENC: часть 1, общая

High performanceGPGPU

Эта статья содержит практические сведения, полезные для организации эффективного кодирования видео на Linux с использованием последних видеопроцессоров Nvidia.
Чем не является эта статья:
  • Не является пособием по выбору технологии аппаратного кодирования или агитацией в пользу описываемой. Кроме Nvidia NVENC есть Intel QuickSync, есть AMD VCE, наверняка есть и ещё что-то. Все эти технологии имеют разные характеристики, которые трудно даже уложить на одну шкалу для сравнения. Тем не менее, я сделал свой выбор.
  • Не является претензией на самый быстрый/качественный способ кодирования. По причинам, указанным выше.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views25K
Comments 21

Скруглы — border-radius inset для картинок

CSSJavaScriptjQueryHTMLCanvas


Некоторое время назад появилась задача для дизайнера сделать стилизованный под дикий запад сайт. Мне, как верстальщику, пришла задача от дизайнера сделать картинки и некоторые бэкграунды, стилизованные под дикозападские вывески. На каждой странице в неизвестном количестве и неизвестных размеров. Задача усугублялась сложным фоном и необходимостью прозрачных дырок в изображениях. Т.е. нужно было использовать border-radius:inset, которого, как оказалось, не существует… Нарезать кучу картинок под каждую страницу и случай, само-собой, нереально и бессмысленно. Заказчик не был одним из «адептов explorer 6», поэтому я решил упростить себе жизнь связкой jQuery и HTML5.
Читать дальше →
Total votes 27: ↑20 and ↓7 +13
Views19.5K
Comments 20

YouTube продемонстрировал новые возможности редактирования роликов на примере Boeing Dreamliner

Working with videoTransport


На Air Show, мероприятии, которое прошло в Париже несколько дней назад, компания Boeing демонстрировала возможности своего самолета 787-9 Dreamliner. Самолет, к примеру, может совершать практически вертикальный взлет, причем стоит помнить, что это вовсе не военная модель.

Но речь сейчас вовсе не о 787-9 Dreamliner, каким бы хорошим и современным этот самолет бы ни был. Дело в том, что недавно YouTube добавил возможность переключения углов обзора в видеороликах, которые загружаются в систему. И ролик с Boeing 787-9 Dreamliner демонстрирует, как эти возможности реализуются.
Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views13.3K
Comments 15

Геолокация без GPS (часть 2)

Open sourceAPIGeoinformation servicesBig Data
wifi Здравствуйте!
После предыдущей статьи (часть 1) я получил много отзывов о работе открытого API геолокации по WiFi и вышкам мобильных сетей.
В этот раз я хочу представить свои исправления, лицензирование проекта, геопозиционирование по нескольким точкам доступа, кейсы использования и самое главное — текущие проблемы
Узнать больше
Total votes 16: ↑13 and ↓3 +10
Views22.4K
Comments 8

Поиск по подобию. Поиск нечетких дубликатов. Лекции от Яндекса

Яндекс corporate blogProgrammingAlgorithmsImage processing
Сегодня мы публикуем шестую лекцию из курса «Анализ изображений и видео», прочитанного Натальей Васильевой в петербургском Computer Science Center, который создан по совместной инициативе Школы анализа данных Яндекса, JetBrains и CS-клуба.



Всего в программе девять лекций, из которых уже были опубликованы:
  1. Введение в курс «Анализ изображений и видео».
  2. Основы пространственной и частотной обработки изображений.
  3. Морфологическая обработка изображений.
  4. Построение признаков и сравнение изображений: глобальные признаки.
  5. Построение признаков и сравнение изображений: локальные признаки.

Под катом, вы найдете план новой лекции, слайды и подробную расшифровку.
Читать дальше →
Total votes 41: ↑40 and ↓1 +39
Views19K
Comments 3

Переписываем Require.js с использованием Promise. Часть 1

Website developmentJavaScript
Tutorial
Чтобы не иметь проблем с зависимостями и модулями при большом количестве браузерного javascript, обычно используют require.js. Также многие знают, что это всего лишь один из многих загрузчиков стандарта AMD, и у него есть альтернативы. Но мало кто знает, как они устроены внутри. На самом деле, написать подобный инструмент не сложно, и в этой статье мы шаг за шагом напишем свою версию загрузчика AMD. Заодно разберемся с Promise, который недавно появился в браузерах и поможет нам справиться с асинхронными операциями.

Основой require.js, является функция require(dependencies, callback). Первым аргументом передаем список модулей для загрузки, а вторым – функцию, которую вызовут по окончании загрузки, с модулями в аргументах. Используя Promise написать её совсем несложно:

function require(deps, factory) {
  return Promise.all(deps.map(function(dependency) {
    if(!modules[dependency]) {
      modules[dependency] = loadScript(dependency);
    }
    return modules[dependency];
  }).then(function(modules) {
    return factory.apply(null, modules);
  });
}


Конечно, это еще не всё, но основа есть. Поэтому продолжим.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views8.5K
Comments 6

Information

Rating
4,540-th
Registered
Activity