...

суббота, 8 сентября 2018 г.

Гибрид камеры и лидара улучшает возможности робомобилей, дополняя информацию о внешнем мире

Лидары и камеры — два стандартных элемента конфигурации практически любого робомобиля. Как первые, так и вторые работают с отражаемым светом. Камеры при этом работают в пассивном режиме, то есть ловят отражение сторонних источников освещения, а вот лидары генерируют лазерные импульсы, измеряя затем «ответку», отраженную от близлежащих объектов. Камеры формируют двумерную картинку, а лидары — объемную, нечто вроде «облака точек».

Компания Ouster разработала гибридное устройство, которое работает как камера, так и как лидар. Называется эта система OS-1. У этого девайса апертура больше, чем у большинства зеркалок, при этом сенсор, созданный компанией, очень чувствительный.
Изображения, получаемые системой, состоят из трех слоев. Первый — это изображение, полученное как бы обычной камерой. Второе — «лазерный» слой, полученный с использованием отражения луча лазера. И третий — это «глубинный» слой, который позволяет оценивать расстояние между отдельными пикселями первых двух слоев.

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

В настоящий момент стоимость лидара достаточно высокая — около $12 000. На первый взгляд, смысла в системе, которая получает изображения более низкого разрешения, чем стандартные камеры, а стоит, как чугунный мост, нет. Но разработчики утверждают, что здесь используется иной принцип работы, чем в обычном случае.


Это графические материалы, предоставленные компанией Ouster. Здесь показаны три слоя изображений и общая «картинка», что получается в результате

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

Некоторые разработчики лидаров уже пробовали совмещать камеру с лидаром. Но результаты получались не очень. Это была система «стандартная камера+лидар», что не слишком отличалось от существующих схем.

Ouster вместо этого использует систему, позволяющую OS-1 собирать все данные в одном стандарте и из одного положения. Все три слоя изображения превосходно коррелируют, как во времени, так и в пространстве. При этом компьютер понимает, какое расстояние между отдельными пикселями финального изображения.

По словам авторов проекта, именно такая схема практически идеальна для машинного обучения. Для компьютерных систем обработка такого рода изображений не представляет особого труда. «Скормив» системе несколько сотен снимков, ее можно обучить точно понимать, что изображено на финальной «картинке».

Некоторые разновидности нейронных сетей спроектированы таким образом, чтобы без проблем работать с мультислоями пиксельных карт. Кроме того, изображения могут содержать красный, синий и зеленый слой. Обучить такие системы работать с результатом работы OS-1 не составляет особенного труда. Компания Ouster уже решила эту задачу.

В качестве исходного материала они взяли несколько нейросетей, которые разработаны для распознавания RGB-изображений, и модифицировали их под свои нужды, научив работать с разными слоями своих изображений. Обработка данных ведется на оборудовании с Nvidia GTX 1060. При помощи нейросетей компьютер автомобиля научили «раскрашивать» дорогу в желтый цвет, а потенциальные препятствия — другие автомобили — в красный.

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

Let's block ads! (Why?)

Смарт-часы Samsung Galaxy Watch: апгрейд с Android Wear OS на Tizen OS — личный опыт

Всем привет.

Эта публикация является продолжением предыдущего рассказа про смарт-часы Huawei Watch с OS Android Wear. Те часы использовались 1.5 года, и в целом, эта система оставила приятные впечатления. Но жизненный цикл таких продуктов весьма короткий, да и как известно, гики оплачивают прогресс чтобы все остальные могли потом пользоваться отлаженной технологией. Так что настала пора поменять часы на более новую модель, заодно сравнить что стало лучше или хуже за пару лет прогресса.


Фото (с) Samsung

Под катом отзывы о предыдущей модели, и сравнение с новой.

Часть 1. Huawei Watch — опыт использования


Стоит сказать пару слов об использовании смарт-часов вообще — для чего оно нужно? Разумеется, сценарии использования у всех могут быть разные, но можно с уверенностью сказать что в 95% случаев часы используются как «второй экран» к смартфону. И в принципе это реально удобно: если например пришло сообщение по SMS или E-mail, можно просто поднять руку и сразу посмотреть на экране текст сообщения. Или утром не вставая с кровати, можно бысто пролистать входящую почту, посмотреть погоду на сегодня или остановить звонок будильника. Это удобно, и к такому комфорту быстро привыкаешь, все-таки часы в отличие от смартфона, почти всегда на руке.

Второй полезной функцией оказался шагомер, при сидячей работе полезно знать сколько шагов пройдено за день, чтобы поддерживать уровень в 10000 шагов, так же в тур.поездках бывает интересно посмотреть общую дистанцию в конце дня. Иногда пригождалась возможность поставить таймер голосовым управлением прямо с часов, например если готовить что-нибудь на кухне, и руки заняты. В целом и все, никакие сторонние приложения в общем-то не пригодились. В Android Wear 2.0 была даже добавлена возможность загружать приложения прямо с часов, которая тоже ни разу не пригодилась… реально, что еще на часах делать, не в игры же играть.

Для тех кто не читал предыдущую часть, напомню что в свое время были куплены часы Huawei Watch, цена которых на момент покупки составляла 380Евро. Это конечно не Tag Heuer, но тем не менее, цена часов была примерно на 30% выше среднерыночной среди других моделей с Android Wear. И надо сказать, их дизайн вполне неплох, часы имеют металлический корпус, кожаный ремешок и сапфировое стекло:

Но не все оказалось идеально, и во время эксплуатации выявился ряд недостатков.

— Первый, и очевидный — батарея. Можно конечно настроить чтобы экран был выключен по умолчанию, но часы, не показываюшие время, это весьма бесмысленно (вскидывать руку или нажимать каждый раз кнопку тоже не очень удобно). В общем, с включенным экраном часы работали 2 дня, затем с обновлением с 1.5 до 2.0 и/или с деградацией батареи, это время сократилось до 1 дня. Это в принципе не так уж критично, если бы часы удобно заряжались. Но к сожалению, за 1.5 года контакты зарядки часов пришли в полную негодность.

Фото


Прошу прощения за не очень художественное фото под спойлером, но что есть, то есть. В итоге, часы заряжались 1 раз из 10, и их нужно было долго и аккуратно ставить на зарядную площадку, чтобы появился нормальный контакт. Не знаю из чего делали эти контакты, но явно не из золота. Наверно инженеры Huawei и не подозревали, что часы будут носить (сарказм), и от влаги и пота контакты могут окислиться (или наоборот, так и было задумано?).

— OLED экран постепенно выгорает. В принципе, это не приводит к его неработоспособности, но на однотонном фоне это становится заметно:

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

— Часы носились аккуратно, не ронялись. Но тем не менее черный металлический корпус получил непонятно где пару царапин до металла, белые царапины на черном фоне выглядят неопрятно. Видимо, покрытие не такое уж надежное, что учитывая цену, конечно не радует. Кожаный ремешок за 1.5 года тоже полностью истрепался, так что было опасение что часы просто потеряются (новый фирменный стоит тоже недешево, хотя аналоги есть и на китайском ebay).

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

Все это подробно описывается для того, чтобы те, кто выбирает смарт-часы, могли сделать некоторые выводы. Например, стало ясно что зарядка часов желательно должна быть беспроводной, иначе надежность такого решения оставляет желать лучшего.

OS Tizen и Samsung Galaxy Watch


Hardware


Samsung Galaxy Watch — это новый продукт, посмотрим какие функции предлагают сегодня современные производители смарт-часов.

— 1.3" или 1.2" экран с разрешением 360х360 и стеклом Gorilla Glass
— батарея 472 или 270мАч, в зависимости от модели
— 4Гбайт флеш-памяти, из которой пользователю доступно примерно 2.5Гб (можно хранить например музыку)
— Соединение по Bluetooth или WiFi
— Различные сенсоры (акселерометр, барометр, датчик пульса)
— Наличие GPS
— Наличие NFC (поддержка Samsung Pay, теоретически часами можно платить в магазине)
— Опциональная поддержка LTE, позволяющая быть онлайн даже при отсутствии смартфона (можно например слушать музыку онлайн во время пробежки)
— Наличие датчика освещенности (кстати, его отсутствие раздражало в Huawei Watch — та яркость дисплея, которая достаточна для солнечного света, слепит ночью в темноте)
— Беспроводная зарядка.

Цена часов на сайте samsung.com составляет 349$ за обычную и 399$ за версию с LTE. Версии с 1.2" экраном на 20$ дешевле.

Software


Одним из ключевых элементов дизайна Samsung является широкое кольцо вокруг экрана (bezel), которое используется для прокрутки. Решение на мой взгляд спорное — и обычный свайп пальцем на современных экранах работает вполне хорошо, так что никакой пользы кольцо не добавляет, зато занимает много места.

Основным на экране являются (кто бы мог подумать:) часы, выбор циферблатов (watch faces) можно видеть в программе Galaxy Wear, с помощью которой можно менять настройки часов.

Нельзя сказать, что выбор так уж велик, но при желании можно перейти в магазин приложений Samsung, в котором есть сторонние циферблаты, в том числе и платные.

Поворот безеля или свайп пальцем с главного экрана влево показывает последние напоминания (почта, SMS, уведомления приложений), поворот или свайп вправо показывает различные «виджеты» — барометр, измеритель пульса, календарь, фитнес-трекер и пр.

Скриншоты с часов:

«Виджет» в понимании Samsung — это нечто вроде простого приложения с быстрым доступом. Вернуться на главное окно можно верхней кнопкой, которая везде работает как кнопка Back.

Нижняя кнопка открывает список установленных приложений, занимающий несколько экранов:

Многие приложения вполне простые — таймеры, будильники, напоминалки и пр. Некоторые программы могут быть полезны, например удаленное управление для GoPro или Philips Hue. Учитывая наличие GPS, иногда могут быть полезными карты, однако бесплатных версий не нашлось. Странно, но у Samsung никаких приложений для отображения карт нет вообще, а все сторонние приложения платные.

Есть даже игры, примерный вид которых понятен из скриншота.

По-моему сложно придумать занятие глупее игры на часах, но раз их делают, кто-то возможно их даже покупает…

По современной моде, часы имеют множество фитнесс-функций. Учет калорий, сердцебиения, различные виды тренировок, ведение лога выпитой воды или кофе, и так далее.

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

Часы могут играть музыку, в том числе через Bluetooth-наушники, что может пригодиться спортсменам во время тренировки — не нужно брать с собой телефон. В магазине приложений есть и клиент Spotify, так что владельцы LTE версии смогут слушать музыку онлайн.

Часы имеют динамик и микрофон, с их помощью можно ответить на звонок, или например, посмотреть ролик с youtube со звуком (хотя и с сомнительным удовольствием — на мелком и круглом экране).

Встроенный почтовый клиент, в принципе, вполне позволяет прочитать заголовки и текст:

На письмо можно ответить предустановленными фразами (их заранее целесообразно отредактировать).

При большом желании можно набрать текст, но это будет медленно и печально:

Также есть голосовой ввод с микрофона, который более-менее понимает английский (насчет русского не уверен). Кстати, так же, как у Amazon, Google или Apple, у Samsung есть свой «интеллектуальный помощник» Bixby, способный понимать текст. Впрочем, «интеллектуальность» весьма условная, например, простые фразы типа «какая сегодня погода» распознаются нормально, а вот команда после сохранения скриншота «пошли последнее изображение с часов на смартфон» хоть и была грамматически распознана, но поставила систему в тупик (в программе «Галерея» на часах есть функция отправки изображения на смартфон, которой и хотелось воспользоваться).

Недостатки


Если говорить о часах Galaxy Watch, то они вполне крупные, даже для мужской руки. Даже на рекламных картинках от Samsung они кажутся слишком большими.

Впрочем, это плата за большое число функций и батарею большей емкости.

Если говорить о софте, то главный недостаток Tizen OS — то, что это не Android. Суть в том, что Android Wear гораздо больше интегрирован со смартфоном Android. Все приходящие на смартфон уведомления тут же отображаются на часах, если запустить воспроизведение youtube на смартфоне, на часах появляются кнопки «стоп/пауза», и пр. С Tizen OS почти все это тоже вроде как есть, но в меньшей степени. Например, почта отображается нормально, а вот остановить будильник с часов не получается, при срабатывании будильника на смартфоне, на часах не отображается ничего. Разумеется, в часах нет gmail-клиента (есть свой от самсунг, умеющий впрочем читать почту gmail) и нет google maps, нет приложения youtube (хотя видео можно смотреть через браузер), и так далее.

Так что, если с «хардварной» точки зрения к часам претензий нет, то вот с «софтовой» — для тех, кто хочет абсолютно полной и прозрачной синхронизации с Android-смартфоном, лучше смотреть в сторону часов с такой же ОС. Впрочем, каких-то критичных моментов (кроме будильника и отсутствия встроенных карт) пока найдено не было.

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

Заключение


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

Интересно и то, что большие возможности современных часов предоставляют новые функции, которые раньше были недоступны, например, поддержка LTE дает возможность владельцу оставаться онлайн даже без наличия смартфона, или совершать оплату с помощью системы Samsung Pay.

Let's block ads! (Why?)

Три месяца спустя: как GDPR повлиял на работу c cookies

Европейский регламент по защите данных — GDPR — вступил в силу три месяца назад. За это время объем cookie на европейских новостных сайтах сократился примерно на четверть.

Сегодня рассказываем, как новые требования отразились на работе сайтов.


/ фото Neil Conway CC

Требования регламента


Согласно пункту 30 Европейского регламента, информация, получаемая с помощью cookie-файлов, может служить инструментом для формирования профиля пользователя и его идентификации. Таким образом, cookie приобретают статус персональных данных.

Поэтому GDPR требует владельцев сайтов получать обязательное согласие пользователя перед установкой cookie. До введения регламента многие сайты не спрашивали на это разрешения — показывался простой баннер с уведомлением. И считалось, что пользователь автоматически соглашается получить cookie, если продолжает работу с сайтом.

После введения GDPR этого оказалось недостаточно. Теперь на всплывающем окне пользователь обязан отметить, что согласен принять cookie-файлы. Также владелец сайта должен рассказать, как используются cookie, как они обрабатываются и кому эта информация может быть передана. Также нужно предоставить посетителю возможность отказаться от использования конкретных cookie.

Все это прописывается в политиках конфиденциальности сайта. Ссылка на эти политики должна содержаться во всплывающем окне с оповещением.

Идея такого подхода — сделать процесс работы с cookie-файлами более прозрачным. Так пользователь получает всю информацию сразу, и ему не нужно самостоятельно удалять нежелательные cookie в настройках браузера.

Как GDPR повлиял на сайты


Аналитики Reuters сравнили данные о количестве используемых cookie европейскими сайтами за апрель и июль 2018 года (то есть до вступления GDPR в силу и после). Согласно результатам исследования, в среднем объем cookie на новостных порталах сократился на 22%. Объем cookie, используемых сайтами Великобритании, уменьшился на 45%. Во Франции этот показатель упал на 32%, в Германии — на 6%.

Интересен тот факт, что в Польше по каким-то причинам количество cookie, наоборот, выросло на 22%. Это единственное европейское государство с изменением в большую сторону.

По данным отчёта, серьезно снизился процент cookie, используемых для оптимизации работы сайтов. Меньше всего изменения коснулись cookie-файлов социальных сетей.

В отличие от европейских сайтов, ряд сайтов США, которые работали на европейском рынке, решили не обновлять правила конфиденциальности и механизмы обработки cookie.

Как только GDPR вступил в силу, больше тысячи новостных американских порталов просто заблокировали доступ посетителям из ЕС.


Среди них есть сайты популярных изданий — Los Angeles Times, The Chicago Tribune, The Sun Chronicle и др. Пользователям из Европы показывается сообщение об ошибке. Это решение имеет очевидные репутационные риски и означает потерю части аудитории. Более того, как считают некоторые пользователи, такое поведение — негласное признание вины в неправомерной обработке ПД. Однако в основе такого подхода, скорее всего, лежит финансовая составляющая.

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

Как работать с cookie по GDPR


Количество сайтов, запрашивающих согласие на использование cookie-файлов, выросло после введения GDPR. При этом форма уведомления на разных сайтах отличается.


/ фото Helen Harrop CC

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

  • Уведомить посетителя сайта об использовании cookie. При выборе формулировки за основу можно взять пример из интернет-справочника ЕС: «Этот сайт использует cookie. Узнайте больше о том, как «название организации» использует файлы cookie и как изменить настройки». Всплывающее окно с такой формулировкой появляется после открытия сайтов газет The Guardian, The Sun и The Daily Telegraph.
  • Проинформировать какие cookie и с какой целью используются. На сайте Forbes подробно описано, зачем нужна каждая cookie и как выбор пользователя отразиться на функциональности сайта.
  • Предоставить возможность выбора cookie, которые пользователь разрешает установить. Например, выбрать отдельные cookie можно на сайте Oracle. Для этого в каждом случае нужно отметить флажок «да/нет». Обязательные cookie запретить нельзя, но есть подробная информация по каждой из них.
  • Дать возможность пользователю отказаться от cookie. На сайте Fortune можно изменить список используемых cookie-файлов в любой момент, нажав на небольшой виджет Cookie Consent в углу страницы.



P.S. Материалы по теме из Первого блога о корпоративном IaaS:

Let's block ads! (Why?)

Раскрываем номера пользователей Telegram

image

Последнее время безопасность Telegram (далее – телеграм) все чаще поддается критике и встает вопрос: «действительно ли телеграм хорошо защищен?»
Как и для любого мессенджера – важна его максимальная интеграция со сторонними сервисами. Для примера, телеграм в первую очередь работает с вашей телефонной книгой. Он синхронизирует ваши номера со своей базой и проверяет на наличие регистрации в телеграме. Далее – телеграм предлагает вам свободные сообщения и звонки с вашими потенциальными друзьями. «Удобно» — что еще сказать?
Воспользуемся этой удобностью.

Берем в руки Android. Я взял Samsung A3. Подключаем к ПК. Предварительно экспортируем контакты и получаем файлик с названием vCard.vcf. Следующие 5 минут прочтения этой статьи он будет нашим лучшим другом. Копируем себе на рабочий стол, открываем через текстовый редактор и видим следующую картину:
image
Каждый наш контакт заносится в некий шаблон с началом тега «BEGIN:VCARD» и концом «END:VCARD». Между ними находятся: имя контакта, телефон и фото (если есть) – это основные параметры, которые нам будут нужны.
Что ж, хорошо, но что это нам дает? А то, если мы создадим свою базу по подобному шаблону, то сможем импортировать ее обратно в наш телефон и использовать далее по назначению. Память андроида позволяет сохранять до 20 тысяч контактов. Ищем базу номеров в паблике/покупаем/генерируем сами, исходя из нашего региона, и тд.
Смысл в том, чтобы собрать базу из 20 тысяч номеров, присвоить им номера и импортировать в наш телефон.
Я просто купил готовую базу для спама, номера которых зарегистрированы в телеграме. На PHP написал скриптик для генерации шаблона «name;number» и создал свой собственный vCard.vcf:
image
И так, мы имеем базу из 20к контактов, имена которых не известны, как и номера. Но мы же с вами собрались за экшеном, поэтому копируем эту базку на флешку нашего андроида, через контакты импортируем данную базу:
image
В итоге, имеем телефонную книгу из 20к контактов. Далее – самое интересное. Мы подрубаем интернет на телефоне. Желательно, Wi-Fi. Запускам клиент телеграма и, О, ЧУДО! «Телега» предлагает нам синхронизацию контактов, так как считает, что у нас якобы появились новые контакты, а, значит, потенциальные друзья! Мы соглашаемся, конечно же. И что делает телега? Телеграм проверяет ваши номера из телефонной книги на регистрацию в своей базе и выдает вам фото контактов, которые зарегистрированы!
И так, мы теперь знаем номер телефона и фото пользователя. Что же нам с этим делать? А делаем мы следующее: экспортируем все наши контакты. Стандартный экспорт контактов из телеграма не поможет, так как он не показывает фото, поэтому мы можем, воспользовавшись API, написать свой скриптик или взять готовый. Я взял готовый с гитхаба «ExportTelegramContacts». В конфиге надо прописать данные своего API, зарегистрировавшись как разработчик. Делается все за минуты.
Запускаем приложение через консоль

image

Авторизуемся и вводим команду на экспорт с фото!

image

Спустя некоторые секунды/минуты получаем файлик с форматом:

image

Абсолютно такой же вид, как и был у нас при генерировании импорта, только добавилось поле «фото». Это аватарка нашего контакта, зашифрованная base64.
То есть, телеграмм «сожрал» нашу базу из 20к номеров и выдал нам все контакты, которые зарегистрированы в системе, попутно привязав к ним реальный аватар пользователя: (фото есть не у всех пользователей)

image

Раз телеграм пробил реальных пользователей на регистрацию, то выдал нам их фото. Таким образом, мы знаем, кому принадлежит данный номер, но по прежнему не знаем логина и реального имени пользователя. Чтобы узнать логин пользователя, нам нужен другой аккаунт в телеграмме, с ранее добавленными пользователями по их логину.
Ну, а потом все повторяется. Экспортируем базу через ExportTelegramContacts и имеем такой же файл формата vcf с данными пользователей (фото, имя, логин).
Затем нам просто нужно сравнить 2 файла и перебрать всех пользователей из первого и второго аккаунтов. Сравнивать мы будем, конечно же, по фото (base64). Соответствующие фото будут означать найденных пользователей, следовательно, мы объединим их фото, логин, номер и имя. Таким образом, мы пробили данные нужных нам пользователей.
Конечно, этот процесс не быстрый и дает мало шансов, но, если нам нужно пробить пару тысяч пользователей, то загружая и выгружая по 20 тысяч пользователей, а затем, сравнив их, можно добиться вполне не плохих результатов.
И так, подведем итоги! Все просто! Имеем 2 телеграм аккаунта. Один нам нужен для импорта номеров, которые будем пробивать. В другой добавим интересующих нас людей. Экспортируем из первого аккаунта все наши контакты, которые определил телеграм, как друзей. Вид экспорта будет: «номер_телефона: фото». Из другого экспортируем те же самые контакты, только вид уже будет: «логин: фото».
Ну, а дальше все просто. Сравниваем два файла и перебираем циклично все контакты, находим те, которые соответствуют фото.
Таким образом, фото из одного списка, которое соответствует фото из друго списка, приравнивается к нашей жертве, и мы узнаем его номер.
Ведь, фото = фото => логин + номер
Наглядный скриптик для полного перебора пользователей: (извиняюсь за красивый код)

image

Подведем итоги!
Процесс 1 цикла поиска занял у меня около 10 минут. За 10 минут я перебрал 20 тысяч номеров. В сутки можно прогнать до нескольких миллионов. Полностью автоматизировать этот процесс не удалось, поэтому работать придется руками, что весьма неудобно. К тому же, не все пользователи ставят фото в свой профиль. Ни с какими лимитами или ограничениями я не столкнулся. В течение нескольких часов тестировал по максимуму. Не смотря на минусы и плюсы сие метода — сама идея, что номер пользователя телеграмма можно раскрыть – имеет место быть.

Let's block ads! (Why?)

[Перевод] Мнимые проблемы — причина плохого софта

То, что их интересно решать, не означает, что они кому-то нужны


«Группа людей проводит мозговой штурм над ноутбуком и листом бумаги», фото Стефана Стефанчика с Unspalsh

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

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

Требования к этому маленькому веб-приложению могут выглядеть примерно так:

  • Быстрая загрузка для Северной Америки с трансляцией подкастов в реальном времени
  • Отсутствие сбоев в первые 15 минут для 99,99% пользователей, желательно полное отсутствие сбоев
  • Хорошая интеграция с Google Adwords и, возможно, другими сторонними рекламными системами, если есть время
  • Динамические ссылки на последние товары в магазинчике и, если возможно, рекомендации пользователям на основе просмотренных страниц
  • Интеграция с плеером Facebook Live. Если можно легко сделать альтернативное решение для потоковой передачи без Facebook, то ещё лучше

Вы даете эти спецификации команде подрядчика и немного с ними беседуете. Кажется, все на одной волне. Но когда они через два месяца показывают прототип, ваше лицо наливается кровью. Вы потратили $15 тыс. на кусок мусора — и хотите вернуть свои деньги.

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

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

Они вложили душу в создание приложения, у него же удивительные возможности:

  • Самая современная система рекомендаций
  • Алгоритм текстовой расшифровки всех аудиопотоков в режиме реального времени
  • Главная страница загружается быстрее 200 мс по всему миру
  • Протокол потокового вещания и клиент сделаны почти с нуля, если вы не хотите полагаться на Facebook Live
  • Разработан сервис, позволяющий легко интегрировать более 20 рекламных бирж

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

Хуже того, вы с разработчиками не общались напрямую — вы общались через испорченный телефон. Вы говорили с продажником, который проводил совещания с участием некоторых менеджеров среднего звена. Они писали какие-то бизнес-спецификации для менеджера проекта, который писал технические спецификации — и отдавал их тимлиду или архитектору, а уже он со своей командой начинал разработку продукта. Каждое звено вносило искажения по пути.


Мнимые проблемы часто интереснее решать, чем реальные. Люди с избытком интеллекта играют в конкурентные игры, придумывают и решают математические задачи и пишут книги, чтобы ответить на абстрактные вопросы о человеческом естестве — и всё это бесплатно, только для удовольствия. Но посредственный программист, вероятно, возьмёт с вас изрядную сумму за создание простого приложения для Android. Это не потому, что посредственных программистов труднее найти, чем гениев, а потому, что первые виды деятельности интересны, а последние — довольно скучны.

Большинство программистов хотят получать деньги и получать удовольствие одновременно. Конечно, определение «интересного» у всех разное, но для многих инженеров оно сводится к решению интересных и сложных задач, которые находятся в области разрешимости.

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

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

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

Когда проблемы слишком глупы, умные люди найдут способ исправить ситуацию.


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

Когда я только начал искать клиентов как фрилансер, то не мог позволить себе выстраивать коммуникацию на своё усмотрение. Так что приходилось иметь дело с длинными почтовыми тредами с сотнями писем, где обсуждались незначительные детали внутренних MVP. Люди в течение недели меняли каждое требование в проекте. У меня были клиенты, которые задавали такие вопросы: «Это будет совместимо с проведением ICO?» или «Можно здесь добавить немного ИИ?»

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

Требования меняются, потому что кто-то или неправильно понял намерение, или попытался справиться с вышеупомянутой скукой


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

Когда список требований клиента проходит через такое количество людей, даже если у этих людей лучшие намерения, в процессе неизбежно что-то теряется. Иногда это происходит потому, что исходное требование не имело смысла или его нужно изменить. Возможно, продажник заявил клиенту: «Всего за 39 999 сверху мы сделаем это на блокчейне». Тот согласился, а всем остальным остаётся гадать, что именно означает «сделать на блокчейне».

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

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


Часто есть и более мрачная причина появления мнимых проблем: такие проблемы помогают команде или компании расти, они даже могут стать неотъемлемой частью её работы.

«У людей, которых выводят, отбирают и поощряют искать сложные решения, нет стимула внедрять упрощённые»
— Нассим Николас Талеб


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

Возможно, вы о них не слышали, потому что их не существует. Но есть много команд из тысяч разработчиков, которые не в состоянии усвоить простые понятия, такие как «откат на старую версию», и они постоянно заняты созданием банковского софта.

Хранение и передача цифр — не особо сложная проблема. Вот проиндексировать всё содержимое интернета и выдать соответствующий результат для запроса на естественном языке за доли секунды — другое дело. Но лишь нескольким умным парням удалось решить эту проблему.

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

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

Таким образом, банковские системы остаются прежними — не потому, что они эффективны, а из-за инерции. Эта инерция проявляется в виде решения мнимых проблем, чтобы избежать решения реальных проблем — решение которых, как уже отмечалось, угрожает работе других людей. Решение этих реальных проблем может привести к увольнению или, в случае некоторых особенно неприятных «учреждений» вроде Goldman Sachs, к нескольким письмам, которые разрушают жизнь бывшего сотрудника и заканчиваются странным самоубийством.

«Трудно заставить человека что-то понять, если его зарплата зависит от того, что он не понимает!»
— Аптон Синклер


Рядовые корпи игнорируют тот факт, что высший менеджмент тратит 90% времени на «встречи с клиентами», включая путешествия на тропические острова и миллионные бюджеты для «накладных расходов». В свою очередь, высший менеджмент закрывает глаза на коррупцию в рядовом составе.

Поскольку менеджеры среднего звена поощряет их фантазии в стиле «Волка с Уолл-Стрит», высшее руководство закрывает глаза на поведение этих менеджеров, которые покупают эксцентричные офисы, нанимают трёх секретарш и десяток стажёрок.

Поскольку рядовые менеджеры не жалуются о своих диктаторских фантазиях и жажде власти, менеджеры среднего звена закрывают глаза на тот факт, что они вместо сокращения расходов тратят время на презентации PowerPoint об «Улучшении нашей гибкой методологии Agile».

Поскольку тимлиды не обращают внимания, что их начальство даже не умеет правильно использовать Excel и заходит в офис пару раз в неделю, рядовые менеджеры закрывают глаза, когда тимлиды и архитекторы говорят о «следующем поколении взаимодействия между нашими системами через JRPC и микросервизацию с помощью Hibernate и Spring», когда эти чёртовы MySQL-запросы выполняются больше суток.

Поскольку разработчики как будто не замечают, что их тимлиды не пишут никакого кода, кроме диаграмм, тимлиды не жалуются на своих разработчиков, которые вместо того, чтобы ОБЪЯСНИТЬ тормоза вышеупомянутого запроса, в десятый раз за год переделывают UI на новом фреймворке JavaScript.

Это порочный круг решения воображаемых проблем: от генерального директора, который не понимает, что кража ещё 30 миллионов не даст ему родительской любви, до стажёра, который не понимает, что новая кнопка «Отправить» на Angular-Material-Bootstrap 19.13.5 не изменит того, что пароли хранятся обычным текстом (и используются для проверки куков).

Но всем приходится и дальше решать воображаемые проблемы, потому что если они перестанут это делать, то начнут фокусироваться на реальных проблемах — и поймут, что вся система сломана. Они могут понять, что в углу офиса Дебра уже десять лет смотрит на графики безотказной работы кластера серверов, хотя пять лет назад компания переехала на AWS. Они могут понять, что 99% их задач нужно только для сохранения чьей-то чужой работы. И это осознание трудно принять, осмелюсь сказать, даже невозможно для большинства. Поэтому большинство находит способ адаптироваться.

Let's block ads! (Why?)

5G может заменить кабели — но не везде

Аналитики из компании Citi предположили (PDF), что технология 5G в перспективе может вытеснить с рынка провайдеров кабельного интернета. Поговорим о том, насколько реальна эта «угроза»: где сети нового поколения смогут заменить кабели, а где — до этого еще далеко.


/ Flickr / kahunapulej / CC

Где 5G может заменить кабели


В крупных городах

С большой долей вероятности 5G придет на смену кабельному интернету в крупных городах. Технология предлагает высокую скорость передачи данных — до 10 тыс. Мбит/с. Это в десять раз быстрее проводного соединения, но при этом не нужно решать проблемы, связанные с прокладкой кабелей в условиях плотной инфраструктуры мегаполиса.

Известна ситуация, когда одна английская фирма прокладывала оптоволоконные кабели в канализационной системе. Так было быстрее, чем классическими методами (на 80%). 5G же, очевидно, совершенно исключает необходимость разводить провода «на местах».

И война с кабельным интернетом уже началась в США. Как отметили в своем квартальном отчете (PDF) аналитики из финансовой организации Cowen, 5G-сервисы операторов Verizon и T-Mobile — самая большая угроза кабельному интернету в США.

В T-Mobile заявили, что к 2024 году собираются «отвоевать» у индустрии кабельного ТВ и интернета примерно 10 млн пользователей (это большая их часть). А в Verizon планируют предоставить 5G жителям Хьюстона, Индианаполиса, Лос-Анджелеса и Сакраменто уже в этом году.

Компания будет «заманивать» пользователей бесплатным доступом к YouTube TV и Apple TV. Генеральный директор Verizon Ханс Вестберг (Hans Vestberg) в интервью CNBC заявил, что скоро всё будет беспроводным, и 5G-сети вытеснят кабели с рынка.

Отметим, что для реализации 5G в мегаполисах все же придется решать ряд трудностей, в частности, проблему с покрытием. Поскольку 5G использует высокие частоты — 28 ГГц и выше — сигнал не передается на большие расстояния и плохо проходит через препятствия в виде стен (это цена за высокую скорость передачи данных). Но над решением этой проблемы уже работают, например, создаются специальные распределённые антенные системы (DAS).

В дата-центрах

В июне этого года исследователи из Технологического института Джорджии представили так называемый дефазирующий передатчик (outphasing transmitter). Разработчики системы объединили антенные модули и радиокомпоненты в одном микропроцессорном чипе.

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

По словам исследователей, решение сможет передавать данные в ЦОД в 6–10 раз быстрее. Использоваться для этого будут миллиметровые волны, на которых работает 5G. Справедливости ради отметим, что дата-центры, которым требуется повышенная безопасность, по-прежнему будут использовать кабели.


/ Flickr / Christoph Scholz / CC

Где кабели останутся еще надолго


В пригородах

Из-за того, что 5G использует высокие частоты, сигнал не может распространяться на большие расстояния. В этом случае требуется большое количество вышек. Отсюда вытекает еще одна проблема — эти вышки по-прежнему должны быть подключены оптоволоконными кабелями. Но даже в развитых странах до сих пор есть места, где нет «оптики».

Например, к оптоволоконной сети подключены только 3% домов Англии. В большинстве случаев жители Британии выходят в интернет с помощью устаревших медных кабелей, которые проложили несколько десятилетий назад. В США, по данным за 2016 год, 20 млн жителей удаленных районов и пригородов вообще не имеют доступа к интернету.

С точки зрения стоимости, в такие места дешевле протянуть кабель. Именно этим сейчас и занимаются в Англии — дочерняя компания провайдера BT, контролирующего основные интернет-сети, подключит 3 млн зданий к оптоволоконной сети (FTTP) до 2020 года. Если ставить вышку, то охват пользователей будет очень небольшим. Соответственно, вырастет стоимость на услуги провайдера.

Поэтому говорить о массовом внедрении 5G в пригородах и деревнях пока не приходится. Там кабели останутся еще надолго.

Отметим, что в отдельных случаях применение 5G в пригороде видится возможным. Например, на «умных» фермах, поскольку технологии вроде LTE-U на открытых площадках работают лучше, чем Wi-Fi. Но тут опять же все упирается в стоимость инфраструктуры.

Межконтинентальные соединения

Подводные кабели, которые соединяют целые континенты, тоже будут лежать еще очень долго. Фактически они обеспечивают функционирование всей ИТ-инфраструктуры на планете. Сейчас мир опоясывают три сотни кабельных систем, и с каждым годом их становится всё больше.

В мире разрабатываются инициативы, которые в теории смогут доставить интернет в удаленные уголки планеты и с материка на материк. Например, какое-то время назад в Google работали над проектом SkyBender, в рамках которого разрабатывались дроны с солнечными панелями. Летательные аппараты транслировали 5G-сигнал всем устройствам под собой. Сейчас для этих целей компания использует аэростаты. Но от глобальной реализации проект пока еще далек.

В ряде юзкейсов 5G удастся перехватить инициативу, например, сети нового поколения станут главной технологией для подключения IoT-устройств в крупных городах. Однако полностью кабели не исчезнут (по крайней мере, в ближайшем будущем). История подводных кабелей тянется уже 167 лет, и они еще долгое время будут основой глобальной ИТ-инфраструктуры.



P.S. Посты из корпоративного блога VAS Experts:
P.P.S. Пара статей по теме из нашего блога на Хабре:

Let's block ads! (Why?)

Еще раз о веб-компонентах…

Каждый раз, когда в какой-либо статье, либо в комментариях, упоминается группа стандартов Web Components, происходит практически одно и то-же: люди, которые, зачастую, весьма слабо представляют о чем идет речь, начинают делиться «экспертными» мнениями. Каждый раз обсуждения скатываются к одному и тому-же накатанному сценарию, название которого рифмуется со словом «грач». А мне очень хотелось бы позитива, конструктива и перехода к вопросам практического применения. В данной статье, я попытаюсь разом ответить на подавляющее большинство типичных вопросов и опровергнуть максимум общих заблуждений. Впоследствии, в тяжелой ситуации, можно будет отбиться одной ссылкой. Итак, поехали.

Основы


Веб-компоненты — это набор современных спецификаций, состоящий из следующих основных элементов:

Custom Elements — нативная возможность создавать свои собственные HTML-теги, с заданным поведением, внешним видом и собственной внутренней разметкой.

Shadow DOM — разделение внутренней структуры компонента с инкапсуляцией внутренних стилей и остального тела документа.

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

HTML Imports — возможность импорта блоков HTML, хранящихся в других HTML-файлах

Блюдо из всего вышеперечисленного можно приправить нативными CSS-переменными, нативными ES-модулями и серверным пушем HTTP/2. Еще есть слоты, кастомные атрибуты, кастомные события и прочие детали. О них немного позже, когда перейдем к практике.

Да эти ваши веб-компоненты почти нигде не поддерживаются


Сухие цифры — лучшие друзья инженера. Давайте с этого ракурса посмотрим на «почти нигде»:

Custom Elements — 78.71%
Shadow DOM — 79.12%
Template — 89.61%
HTML Imports — 69.16%

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

Очень рекомендую не доверять мне слепо, а сходить по приведенным ссылкам. Там вы, например, сможете увидеть текущий статус для данных спецификаций и то, что Custom Elements и Shadow DOM получили полную поддержку в Firefox, начиная с версии 63. Когда основная масса пользователей лисы обновится до этой версии, а этот момент не за горами, общие цифры станут еще немного привлекательнее. Также, вы могли обратить внимание на «неполную поддержку» Custom Elements и Shadow DOM в Safari. Яблочный браузер не даст вам унаследовать ваш компонент от встроенного нативного браузерного элемента, типа кнопки, селекта и тому подобного. Еще в Safari есть небольшие нюансы в CSS-селекторах при использовании Shadow DOM. На практике, с этим вполне можно жить и не тужить. Видимо, по традиции, аутсайдером среди современных браузеров является Microsoft Edge. Разработчики утверждают, что поддержка реализуется. Ждем.

Хорошо, а что делать с остальными ~20% пользователей?


Для поддержки этих ребят можно использовать полифилы. Да, с полифилами работать будет немного медленнее, но невооруженным глазом это не заметно. Зато у всех остальных — будет быстрее.

Пытались лет пять назад делать проект на Polymer. Все ужасно тормозило.


В те «далекие» времена, бушевал черновик стандарта (v0), поддержка которого была реализована только в Chrome. С тех пор многое изменилось: была принята новая версия стандарта — v1, нативная поддержка была реализована в различных браузерах, полифилы были переписаны, хорошие практики прошли путь устаканивания. Сам Polymer из технологического превью превратился во вполне рабочее решение, с которым приятно иметь дело.

Полимеры какие-то… Что это вообще?


Polymer — это библиотека для создания веб-компонентов. Она реализует поддержку всего того «сахара», к которому мы так привыкли при работе с популярными фронтенд-фреймворками: динамические привязки данных (bindings), репитеры для работы с массивами и т. д. На данный момент, вышла уже 3-я стабильная версия этой библиотеки. Разработка ведется при активном участии разработчиков Chrome. Экосистема поддерживается компанией Google. Совокупная длинна бород разработчиков составляет...

Когда стоит использовать веб-компоненты?


Если вам нужна универсальная общая библиотека UI-компонентов. Случай из жизни: проект, в котором основное приложение написано на React, а бэкофис — на Angular. И хочется одинаковости и всяческого переиспользования кодовой базы. А веб-компоненты замечательно себя чувствуют в разных экосистемах.

Если вам близок подход «дизайн в браузере». Вы сможете творить без постоянных пересборок приложения и без лишних зависимостей. Это делает прототипирование весьма приятным занятием и позволяет вашему приложению плавно эволюционировать от состояния прототипа до состояния production-версии. Люблю такое.

Если вы любите старое-доброе ООП: создаете класс наследованием от HTML-елемента, реализуете в нем желаемые фишки и плюшки общего плана, а потом наследуете от него классы для специализированных компонентов. И вот у вас получился свой собственный микрофреймворк. Красота!

Если вы ненавидите БЭМ: Shadow DOM изолирует стили компонента. Нет необходимости ни в многоэтажных монструозных именованиях, ни в обеспечении навигации к декларациям в общей куче CSS. Все компактно упаковано в компоненте: стили, разметка, логика.

Если вы разрабатываете приложения на основе Electron. Текущая версия Chromium в Electron уже поддерживает все необходимое. Не смотря на общий лаг в версиях.

Если вы хотите написать свой фреймворк/библиотеку. Веб-компоненты — это отличная композиционная основа для подобных экспериментов.

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

Если ваши пользователи используют современные браузеры. Само-собой.

Если вы разрабатываете PWA: основные мобильные платформы поддерживают все «из коробки». Для быстрого старта есть pwa-starter-kit.

Если вы заинтересованы в повышенной безопасности приложения а детальный аудит зависимостей для вас непомерно дорог. Тут все просто: меньше зависимостей — меньше неподконтрольных дыр.

Если вы маньяк-оптимизатор и любите работать с DOM API: веб-компоненты — это часть DOM API, со всеми стандартными возможностями обычных DOM-элементов.

Если вы обжигались о поломку обратной совместимости версий библиотек: когда все основано на хардкорном стандарте — оно как-то надежнее.

Когда вам НЕ стоит использовать веб-компоненты


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

Когда вы разрабатываете несложные продукты с коротким жизненным циклом и у вас нет необходимости развивать единую кодовую базу.

Когда вы имеете дело, преимущественно, с легаси-кодом.

Когда вы и ваши коллеги используете только что-то модное и ничего другого знать не хотите.

Зачем мне все это? У меня есть React/Vue/Angular/etc, мне хватает...


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

Let's block ads! (Why?)

В США двое трейдеров создали фальшивую брокерскую компанию для кражи денег начинающих инвесторов

Изображение: Unsplash

В США разворачивается судебный процесс против двух трейдеров из Мичигана, которые создали фальшивую брокерскую компанию. Мошенники привлекали начинающих инвесторов и похищали их деньги. Преступники надеялись, что их деятельность никто не заметит, поскольку «новички на все равно потеряют деньги», пишет Bloomberg.

Что случилось


Мошенники создали брокерскую компанию под названием Nonko Trading. Использовав свой опыт работы в финансовой сфере, они разработали условия сотрудничества, которые казались очень выгодными для начинающих трейдеров.

К примеру, они предлагали низкие комиссии (ниже $0,006 за акцию), минимальные необходимые депозиты ($2500 и ниже), а также кредитное плечо 20:1 (на каждый собственный вложенный доллар инвестор мог купить акций на $20). Таких условий нет ни у одного легального брокера в США, поскольку это противоречит действующему законодательству.

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

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

Как еще обманывают инвесторов


Это не первый случай, когда инвесторы становятся жертвой манипуляции. К примеру, в 2013 году проходило разбирательство дела 62-летнего шотландца Алана Крейга (Alan Creig). Он создал два поддельных Twitter-аккаунта, которые «маскировались» под реально существующие аккаунты исследовательских и аналитических компаний Muddy Waters Research и Citron Research. Мошенник размещал в аккаунтах «исследовательских компаний» информацию о положении дел организаций, чьи акции торгуются на бирже, чем вызвал колебания акций этих ценных бумаг.

К примеру, в 2013 году Крейг сообщил в поддельном аккаунте о том, что в отношении американского производителя аудиосистем Audience начато расследование по подозрению в мошенничестве. Эта новость привела к падению акций компании на 28% в течение короткого времени, после чего торги ими были приостановлены.

Фейковые сообщения в соцсетях — не единственный способ дезинформации участников биржевых торгов. Так в июле 2015 года акции Twitter подскочили в цене из-за сообщения о том, что сервис микроблогов будет продана за $31 млрд. Новость была размещена на поддельном сайте, который был внешне похож на Bloomberg.com. После того, как поддельная новость была растиражирована некоторыми СМИ, акции Twitter подскочили в цене на 5%, а после ее опровержения так же резко упали.

Другим способом дезинформации стал выпуск поддельных пресс-релизов. Весной 2015 года 37-летний гражданин Болгарии Недко Недев распространил пресс-релиз от имени несуществующей компании PTG Capital Partners Limited о покупке ею компании Avon Products.

После этого котировки акций Avon подорожали почти на 20%, а злоумышленник заработал на этом $5000. Впоследствии обоим мошенникам были предъявлены обвинения в мошенничестве.

Другие материалы по теме финансов и фондового рынка от ITI Capital:


Let's block ads! (Why?)

[Перевод] Для устранения Spectre и Meltdown, возможно, придётся создать процессор совершенно нового типа

Правда ли, что Meltdown и Spectre слишком фундаментальны для того, чтобы выпустить для них патч? Один эксперт считает именно так.


Как определить и исправить такие ошибки, как Spectre и Meltdown? Этот вопрос был самой горячей темой среди энтузиастов микропроцессоров в этом году. На одном из главных академических событий индустрии, конференции Hot Chips, эксперты согласились, что окончательное решение проблемы может потребовать – да, ещё больше разговоров.

На встрече в Купертино профессора Марка Хилла из Висконсинского университета попросили порассуждать о последствиях атак по сторонним каналам или атак на спекулятивное выполнение команд у современных процессоров, которые изготавливают компании ARM, Intel, и другие. Он перечислил такие решения, как специализированные ядра, сброс кэша при смене контекста и бизнес-идеи вроде увеличения платы за эксклюзивные виртуальные машины.
Но реальным ответом, как сказал он и другие выступающие, будет улучшение сотрудничества разработчиков софта и оборудования – и, возможно, полная переработка сегодняшних микропроцессоров.

Как целая индустрия чипов получила удар исподтишка


Информацию о Meltdown и Spectre неожиданно раскрыли в конце 2017 года, незадолго до того, как эти уязвимости должны были формально, по-тихому раскрыть на CES в январе 2018 года. Их обнаружила команда поиска уязвимостей нулевого дня из Google, Google Project Zero. Атаки пользуются такой возможностью современных микропроцессоров, как спекулятивное выполнение команд, когда процессор, по сути, «угадывает», какую ветвь инструкций нужно выполнять. Пол Тёрнер, инженер и руководитель основного костяка разработчиков Google, присутствовавший на конференции, рассказал, что никто из членов Project Zero не предупредил об открытии своих коллег; они узнали об этом вместе со всеми.

В течение 20 лет разработчики микропроцессоров считали, что неверная «догадка» просто отбрасывает данные, не создавая рисков для безопасности. Они ошибались, что и доказали атаки по сторонним каналам.

С практической точки зрения это означает, что одна вкладка браузера может просматривать содержимое другой, или одна виртуальная машина может заглядывать в другую. Это побудило производителей процессоров, в частности, Intel, совместно с Microsoft, выпустить исправляющие положение программы, или заплатки. Это наиболее эффективный способ защиты вашего ПК от Spectre, Meltdown, или любых других последующих атак, например, Foreshadow.

К счастью, проверка такой информации требует времени — в некоторых случаях, довольно много. NetSpectre, способный удалённо воспользоваться уязвимостью Spectre, можно использовать для взлома облачного сервиса или удалённой машины. С одной стороны, данные могут утекать не быстрее 1 бита в минуту, как говорит Джон Хеннесси, знаменитый разработчик микропроцессоров, член совета директоров Alphabet. С другой стороны, среднее время между взломом сервера и обнаружением этого факта составляет 100 дней, добавил он – что может дать уязвимости время поработать.

Процессоры Intel следующего поколения, вероятно, не смогут полностью исправить первый вариант Spectre, как сказал Хеннесси, несмотря на то, что разработка мер по устранению этого недостатка начнётся этой осенью, в проекте нового процессора Xeon, Cascade Lake.

Патчить или переделывать?


ARM, Intel, AMD и другие гиганты индустрии могут исправить проблему, приняв необходимые меры довольно быстро, добавил Хилл. Но для полного устранения проблемы могут потребоваться более фундаментальные изменения, сказал он.

«В долгосрочной перспективе встаёт вопрос, как правильно описать этот процесс, чтобы потенциально полностью устранить проблему, — сказал Хилл. – Или нам придётся относиться к ней, как к преступлениям, которые мы только пытаемся сдерживать».

Спекулятивное выполнение команд – одна из причин, по которым микропроцессор, а следовательно, и ПК, достигли рекордных продаж, отметил участник конференции Джон Мастерс, архитектор компьютерных систем из Red Hat. Но такое выполнение расценивали, как «волшебный чёрный ящик», сказал он, без соответствующих вопросов со стороны пользователей или клиентов. Этот джинн уже тоже выпущен из бутылки. Устраните спекулятивное выполнение – и это замедлит работу процессора в двадцать раз, сказал Хилл.

Среди предложенных Хиллом решений – изолирование элемента предсказания ветвления, добавление рандомизации, реализация улучшенной защиты оборудования. Одним решением может быть добавление более медленных и безопасных режимов исполнения; другим – разделение механизма исполнения команд между «быстрыми ядрами» и «безопасными ядрами». Он также предложил бизнес-решения, среди которых увеличение стоимости виртуальных машин – вместо разделения ресурсов оборудования между несколькими виртуалками, облачный провайдер мог бы обеспечивать эксклюзивный доступ. Наконец, Хилл отметил, что атаки вроде Spectre могут также привести к возрождению ускорителей: логики фиксированного назначения, оптимизированной для одной задачи, и не полагающейся на спекуляции.

Но фундаментальным решением этой проблемы была бы полная переработка архитектуры, сказал Хилл. Архитектура компьютера определяет, как процессор выполняет набор инструкций программы при помощи арифметических устройств, устройств для работы с плавающей запятой, и прочих. Сегодняшние чипы были разработаны для удовлетворения требований оригинальной модели. Но если базовая архитектурная модель имеет фундаментальный недостаток, сказал он, возможно, пришло время для новой модели. Иначе говоря, Spectre и Meltdown – это не баги, а недостатки в дизайне современных чипов, из-за чего может потребоваться новая модель.

В итоге участники конференции сошлись на простых истинах, вроде той, что оборудование необходимо разрабатывать, помня о программном обеспечении, и наоборот – и обе стороны должны усиливать безопасность. «Часто бывает так, что разработчики оборудования создают какую-то прекрасную машину, и мы прекращаем говорить о ней, или разработчики ПО говорят – ну, это же железо, мне-то что до него. Пора это прекращать», — сказал Мастерс.

Let's block ads! (Why?)

Война с болезнями: пересмотр старых представлений

[Перевод] Издержки согласования в коллективах

Это краткое отступление в текущей серии статей о том, как избегать введения сервисов для различных сущностей. Интересный разговор за ужином привёл к мыслям, которые я решил записать.
В 1967 году Джин Амдал представил довод против параллельных вычислений. Он утверждал, что рост производительности ограничен, поскольку только часть задачи поддаётся распараллеливанию. Размер остальной «последовательной части» отличается в разных задачах, но она есть всегда. Этот довод стал известен как закон Амдала.

Если построить график «ускорения» выполнения задачи в зависимости от количества выделенных ей параллельных процессоров, вы увидите следующее:


Это асимптотический график для фрагмента, который не поддаётся распараллеливанию («последовательная часть»), поэтому существует верхний предел максимального ускорения


В законе Амдала интересно то, что в 1969 году на самом деле было совсем немного многопроцессорных систем. Формула основана на другом принципе: если последовательная часть в задаче равна нулю, то это не одна задача, а несколько.

Нил Гюнтер расширил закон Амдала на основе наблюдений за измерениями производительности многих машин и вывел универсальный закон масштабируемости (Universal Scalability Law, USL). В нём используется два параметра: один для «конкуренции» (которая похожа на последовательную часть), а второй для «непоследовательности» (incoherence). Непоследовательность соотносится со временем, потраченным на восстановление согласованности, то есть общего взгляда на мир разных процессоров.

В одном CPU издержки согласования возникают из-за кэширования. Когда одно ядро изменяет строку кэша, оно указывает другим ядрам извлечь эту строку из кэша. Если всем нужна одна и та же строка, они тратят время на её загрузку из основной памяти. (Это немного упрощённое описание… но в более точной формулировке всё равно есть издержки согласования).

На всех узлах БД возникают издержки согласования из-за алгоритмов согласования и сохранения последовательности данных. Штраф платится при изменении данных (как в случае транзакционных БД) или при чтении данных в случае согласованных в конечном счёте хранилищ.


Если построить график USL в зависимости от количества процессоров, то возникнет такая зелёная линия:


Фиолетовая линия показывает, что предсказал бы закон Амдала

Обратите внимание, что зелёная линия достигает пика, а затем снижается. Это означает, что есть определённое количество узлов, при которых производительность максимальна. Добавьте больше процессоров — и производительность снижается. Я видел такое в реальном нагрузочном тестировании.

Людям часто хочется увеличить количество процессоров и повысить производительность. Это можно сделать двумя способами:

  1. Уменьшить последовательную часть
  2. Уменьшить издержки согласования

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

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

Кажется, мы видим прямую аналогию с издержками согласования. Независимо от времени, которое члены команды тратят на восстановление общего взгляда на мир, издержки согласования присутствуют.

Для пяти человек в комнате эти издержки минимальны. Пятиминутка рисования маркером на доске раз в неделю или около того.

Для большой команды в нескольких часовых поясах штраф может вырасти и формализоваться. Документы и пошаговые руководства. Презентации для команды и так далее.

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

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

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

В «Цикле страха» я ссылался на кодовые базы, где разработчики знали о необходимости крупномасштабных изменений, но боялись случайно нанести вред. Это означает, что излишне раздутая команда так и не достигла согласованности. Кажется, после потери согласованность очень трудно восстановить. Это означает, что игнорировать издержки согласования никак нельзя.


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

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


Моё предложение: посмотрите на используемую архитектуру, язык, инструменты и команду. Подумайте, где теряется время на восстановление согласованности, когда люди вносят изменения в системную модель мира.

Ищите разрывы. Разрывы между внутренними границами системы и расколы внутри команды.

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

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

Let's block ads! (Why?)

О правильной осанке, укреплении мышц и растяжке

Этот пост можно рассматривать как комментарий к двум статьям о правильной осанке и здоровом позвоночнике: раз и два.

И даже как комментарий к комментариям, в которых обсуждалось, как же быть с задней поверхностью бедра, котороая не позволяют ровно сидеть и правильно сгибаться.
Я в ИТ с 95 года, почти 30 лет занимаюсь йогой, из них более 5 лет преподавал, поэтому я считаю, что имею некоторое представление о чем идет речь и мое мнение — большинство людей (почти все), работающих на сидячей работе имеют в той или иной форме проблемы со спиной.

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

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

Что касается «растяжки», по моему мнению, получить негативный результат начав заниматься самостоятельно гораздо проще.

Что нужно растягивать при занятии растяжкой.

Связки и сухожилия


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

Из сказанного выше можно сделать вывод — связки и сухожилия растягивать не нужно.

Мышцы


Важным механизмом, который влияет на «растяжку» является миотатический рефлекс (рефлекс мышцы на растяжение).

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

Степень реакции как в первом так и во втором случае индивидуальна, но и в первом и что важно для нас, во втором — это не свойство мышцы, а реакция нервной системы. Это, в частности, подтверждается результатами экспериментов сэра Скотта Шеррингтона в начале 20 века.

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

Из сказанного выше можно сделать неожиданный вывод — мышцы тоже растягивать не нужно. Чем сильнее мы растягиваем мышцу, тем активнее задействуется миотатический рефлекс, и тем сильнее она напрягается. В результате, при достаточном усилии можно травмировать
мышцу, сухожилия или связки — ни то ни другое ни третье нашей целью не является.

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

Как именно «растягиваться»?


Теперь можно сформулировать основные принципы занятий на развитие гибкости.
  1. Не торопитесь, задерживайтесь в крайних (для вас) положениях некоторое время. Физиология говорит, что через 15-20 секунд миотатический рефлекс начинает ослабевать, на смену ситуации «мышца растянута черезмерно, следует ее сократить» приходит «тело сохраняет положение долгое время, следует ослабить ненужное напряжение». Поэтому начинайте с 15-20 секунд (если требуется — меньше), и постепенно увеличивайте время. Следует иметь ввиду, что в некоторых, особенно непривычных положениях может ухудшаться кровоснабжение тканей, при этом теряется чувствительность, создается ошибочное впечатление «я могу больше!» и это травмоопасно. Общая рекомендация — 40 секунд очень хорошо, минута — замечательно.
  2. Не прикладывайте черезмерных усилий и не допускайте возникновение болезненных ощущений. Особенно в сухожилиях и связках (в частности, при наклоне вперед — под коленями). Появление боли означает что мышцы уже напряжены и начинают тянуться сухожилия, это бесполезно и травмоопасно. Вернитесь в предыдущее положение, чтобы снова почувствовать себя комфортно. Все время оставайтесь на грани дискомфорта, почувствовали, что вот вот возникнут неприятные ощущения — задержитесь, подышите, расслабьтесь, и сможете войти в упражнение чуть глубже, снова до первых признаков неприятных ощущений, и так далее.
  3. Миотатический рефлекс может быть подавлен сигналами от высших нервных центров. Поэтому важно включать голову — внимание и воображение — почувствуйте свое тело, поймите где есть ненужные напряжения и что именно нужно расслабить. Можно зацепить ногу резинкой и смотреть телевизор, можно то-же самое время наблюдать за своим телом и пытаться управлять происходящим — результат будет разным.
  4. 4. Расслабляться на выдохе проще чем на вдохе, поэтому используйте дыхание, плавный вдох и еще более плавный, более длинный выдох. Можно издавать шипящий звук горлом, чтобы замедлить и удлиннить выдох. Закрытые глаза способствуют концентрации. Можно представлять, как с выдохом тепло направляется в напряженные мышцы, тепло помогает расслабиться. Следите за лицом, если лицо напряжено, значит присутствуют напряжения в теле. Начните расслабление с мышц лица, улыбайтесь во время выполнения упражнения.

    Это самые главные принципы. Кроме этого, неспецифично для гибкости, но тоже существенно:

  5. 5. Обязательно хорошо разминайтесь перед упражнениями на гибкость. Легче заниматься в тепле. Чем ближе к экватору, тем, как правило, лучше.
  6. 6. Если мышцы тренированы, это, как правило, помогает. Нетренированные мышцы легче травмировать. Кроме того, в ряде случаев большая гибкость — большая амплитуда движений — большая вероятность травмы.
  7. 7. Занимайтесь регулярно.

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

Надеюсь, этот текст поможет вам понять, что именно нужно растягивать и как это делать для развития гибкости.

Let's block ads! (Why?)