habrahabr.ru

    Хабр / Лучшие публикации за сутки

  • Справочная. YouTube Music и YouTube Premium: что это и чем они отличаются
    18 июня YouTube запустил в России сервисы Music и Premium. По цене чашки кофе в месяц Google даст возможность загружать видео и музыку в память смартфона и воспроизводить контент при выключенном экране. Этим можно пользоваться и бесплатно, но извольте посмотреть рекламу.

    Читать дальше → Read more »
  • Разработка нового статического анализатора: PVS-Studio Java

    Picture 3

    Статический анализатор PVS-Studio известен в мире C, C++ и C# как инструмент для выявления ошибок и потенциальных уязвимостей. Однако у нас мало клиентов из финансового сектора, так как выяснилось, что сейчас там востребованы Java и IBM RPG(!). Нам же всегда хотелось стать ближе к миру Enterprise, поэтому, после некоторых раздумий, мы приняли решение заняться созданием Java анализатора.
    Читать дальше → Read more »
  • Карьера менеджера в ИТ: от командной строки к командной работе
    Мир IT сегодня не похож ни на одну из других отраслей — над кодом приложений, игр, корпоративных решений, сервисов работают увлечённые, грамотные ребята. Программисты и инженеры, дизайнеры и тестировщики, системные администраторы и новомодные DevOps превращают идеи в программное обеспечение, которым пользуются миллионы людей. Они вдохновенно пишут код, разрабатывают алгоритмы, готовят макеты и соединяют это в работоспособные полезные механизмы. Мы, пользователи Хабра, часто говорим о разработке, администрировании, новых технологиях и языках программирования, зарубаемся в жарких спорах о преимуществах одного стека над другим, но забываем о важном звене в любой IT-компании — менеджерах проектов и продуктов. А между тем не факт, что завтра именно вам не предложат отойти от дел программерских и стать менеджером. Мотивация? Стоит ли? Потолок? Карьерный тупик? Новый горизонт? Давайте разбираться.


    Менеджер в ИТ — это почти всегда человек-оркестр. Но всегда ли слаженно он играет?
    Читать дальше → Read more »
  • Больше не Abibas: технологическое чудо Китая
    Техника из Китая миллионами посылок разлетается по миру, Xiaomi волнует всех: от диванных до ведущих аналитиков, DJI рвёт рынок новинками. Потрясающе! Но это всего лишь потребительский восторг. За всеми этими гаджетами стоит огромная, трагическая, яркая история огромной страны и её народа. В этой истории всё: от лидерства до падения и смерти науки, от дешёвых имитаций до самых передовых инноваций. И эту историю нужно знать, хотя бы вкратце — может быть, просто для того, чтобы она не повторилась. Пройдёмся сквозь время?

    Читать дальше → Read more »
  • [Перевод] Meta Crush Saga: игра, выполняемая во время компиляции
    image

    В процессе движения к долгожданному титулу Lead Senior C++ Over-Engineer, в прошлом году я решил переписать игру, которую разрабатываю в рабочее время (Candy Crush Saga), с помощью квинтэссенции современного C++ (C++17). И так родилась Meta Crush Saga: игра, которая выполняется на этапе компиляции. Меня очень сильно вдохновила игра Nibbler Мэтта Бирнера, в которой для воссоздания знаменитой «Змейки» с Nokia 3310 использовалось чистое метапрограммирование на шаблонах.

    «Что ещё за игра, выполняемая на этапе компиляции?», «Как это выглядит?», «Какой функционал C++17 ты использовал в этом проекте?», «Чему ты научился?» — подобные вопросы могут прийти к вам в голову. Чтобы ответить на них, вам придётся или прочитать весь пост, или смириться со своей внутренней ленью и посмотреть видеоверсию поста — мой доклад с Meetup event в Стокгольме:


    Примечание: ради вашего психического здоровья и из-за того, что errare humanum est, в этой статье приведены некоторые альтернативные факты.
    Читать дальше → Read more »
  • Профессиональное выгорание: слово экспертам
    После статьи о профессиональном выгорании поступило много вопросов в личку и в комментарии про то, где больше почитать про матчасть, чем отличаются одни школы психотерапии от других и как выбрать специалиста.

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

    1. Дмитрий Ковпак, кандидат мед.наук, президент российской Ассоциации когнитивно-поведенческой психотерапии (КПТ), доцент кафедры психологии и педагогики СЗГМУ им. И.И. Мечникова.

    2. Алексей Демьяненко, психотерапевт, заведующий Городским Психотерапевтическим Центром Санкт-Петербурга, руководитель регионального отделения Российской Психотерапевтической Ассоциации.

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

    4. Мария Берлин, организационный психолог, тренер, корпоративный психолог ЗАО РТК МТС(2015-2016), преподаватель института «Иматон», автор программы подготовки специалистов «Работа с эмоциональным выгоранием – комплексный подход».

    В итоге у нас накопилось пять мастер-классов (видео под катом). Видео изначально были доступны только нашим студентам. Но раз тема оказалась актуальной для Хабра, решили все это выложить — пользуйтесь на здоровье.
    Читать дальше → Read more »
  • Опасный протокол AMF3
    Недавно Markus Wulftange из Code White поделился интересным исследованием о том, как можно атаковать веб-приложение, если оно написано на Java и использует протокол AMF3. Этот протокол можно встретить там, где используется Flash и требуется обмен данными между SWF объектом и серверной частью приложения. Протокол позволяет передавать на сервер сериализованные объекты типа flash.utils.IExternalizable. Эти объекты на стороне сервера десериализуются, происходит конверсия типов, и flash.utils.IExternalizable превращается в java.io.Externalizable. Стоит отметить, что классы, которые реализуют этот интерфейс, сами полностью контролируют процессы собственной сериализации и десериализации. Это значит, что можно постараться найти такой класс, при десериализации которого будет выполнен произвольный код.

    Маркус исследовал все классы из OpenJDK 8u121, реализующие интерфейс java.io.Externalizable и обнаружил, что в их числе находятся классы sun.rmi.server.UnicastRef и sun.rmi.server.UnicastRef2, связанные с механизмом RMI. Если правильно подготовить объект одного из этих классов (инициализировать его ссылкой на хост атакующего), а затем передать его на уязвимый сервер, то JVM сервера зарегистрирует ссылку LiveRef на «удаленный объект». После этого механизм сборки мусора попытается установить JRMP соединение с указанным хостом. А как известно, протокол JRMP подразумевает обмен сериализованными объектами Java. Это можно использовать для проведения атак, связанных с десериализацией.

    Читать дальше → Read more »
  • [Перевод] Конструкция async/await в JavaScript: сильные стороны, подводные камни и особенности использования
    Конструкция async/await появилась в стандарте ES7. Её можно считать замечательным улучшением в сфере асинхронного программирования на JavaScript. Она позволяет писать код, который выглядит как синхронный, но используется для решения асинхронных задач и не блокирует главный поток. Несмотря на то, что async/await — это отличная новая возможность языка, пользоваться ей правильно не так уж и просто. Материал, перевод которого мы публикуем сегодня, посвящён разностороннему исследованию async/await и рассказу о том, как использовать этот механизм правильно и эффективно.

    image
    Читать дальше → Read more »
  • Эффективность потребления вычислительных ресурсов

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

    С вычислительными ресурсами примерно похожая история. Редко кто использует их полностью эффективно. Давайте поговорим об эксплуатации и немного о следующем поколении программирования под такие среды, где важно очень гибко разделять ресурсы.
    Читать дальше → Read more »
  • Tarantool Conference 21 июня – не только про Tarantool, а вообще про in-memory computing
    А вы слышали про Tarantool Conference или коротко — T+ Conf? Что такое Tarantool наверняка все знают, а про конференцию мы вам сейчас все расскажем.



    T+ Conf — конференция не только про сам Tarantool, а вообще про использование in-memory computing, Tarantool / Redis / Memcached, кооперативной многозадачности и Lua для разработки высоконагруженных отказоустойчивых сервисов.

    Когда и где?


    Совсем скоро, 21 июня 2018 года в офисе Mail.ru Group (Ленинградский проспект 39, стр. 79).

    Это будет полный рабочий день — доклады начнутся в 10:00, а закончатся в 19:00. Мы выделили два потока, один из них полностью посвящен enterprise-архитектуре, а во втором объединены выступления, связанные с экосистемой вокруг Tarantool, в том числе, в формате туториалов. А следовательно, будут интересны не только опытным разработчикам, но и, с одной стороны, начинающим, а с другой — архитекторам в корпоративном секторе.

    Расписание можно изучить по ссылке, а ниже краткие описания всех докладов — их не так много, можем позволить, никого не упустить.
    Читать дальше → Read more »
  • Роботизированная система ускоряет забор крови и проведение анализов
    Команда учёных из Ратгерского университета создала полностью автоматизированную систему, призванную упростить забор венозной крови и проведение анализов в медицинских учреждениях. Основные компоненты — устройство для забора крови, модуль для сбора образца и центрифуга с «лабораториями на чипе». На данный момент устройство может проводить дифференциальный подсчет лейкоцитов и измерять уровень гемоглобина.


    Читать дальше → Read more »
  • «Забудьте о GDPR»: реформа авторского права в ЕС может полностью изменить положение дел в Сети
    Разговоры вокруг принятия GDPR не утихают. За всеми этими дискуссиями о плюсах, минусах, подводных камнях и дырах в новом регламенте по защите персональных данных многие не обратили внимания на другой документ, который через месяц попадет на рассмотрение в Европейский парламент — новая директива о защите авторских прав.

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

    Читать дальше → Read more »
  • [Из песочницы] Соревнование Kaggle Home Credit Default Risk — анализ данных и простые предсказательные модели
    На датафесте 2 в Минске Владимир Игловиков, инженер по машинному зрению в Lyft, совершенно замечательно объяснил, что лучший способ научиться Data Science — это участвовать в соревнованиях, запускать чужие решения, комбинировать их, добиваться результата и показывать свою работу. Собственно в рамках этой парадигмы я и решил посмотреть внимательнее на соревнование по оценке кредитного риска от Home Credit и объяснить (начинающим дата саентистам и прежде всего самому себе), как правильно анализировать подобные датасеты и строить под них модели.


    Читать дальше → Read more »
  • Моя история создания мотивационного приложения (iOS и Android) для дочери с дочерью на Unity и C#

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


    Это первая часть истории (вперемешку с рассказом о моих ошибках и их решениях) о том, как я (где-то два года в свободное время) разрабатывал мобильное приложение под iOS и Android, которое бы мотивировало мою дочь решать примеры по математике, чтобы она достигла автоматизма в основах арифметики (склад числа 10 или табличка умножения). В итоге, получилось приложение, позволяющее ребёнку зарабатывать деньги своим умом.


    Использовал я движок Unity и язык C#, а также дополнительный набор софта вроде обязательного Photohsop или Audacity (для создания звуков).


    План рассказа (часть первая)


    • Предыстория
    • О монетизации
    • Почему Unity
    • О Scriptable Objects
    • О плагине Anima2D
    • О Lean Localization
    • Об iTween
    • О Unity Analitics
    • О Visual Studio
    • Ссылки

    Предыстория и колорадские жуки


    Мой предыдущий опыт — это несколько лет в 3D и, с недавних пор, разработка нескольких инди-игр на пару с программистом, где я выступал в основном только в роли дизайнера и художника (очень редко пописывая какие-то элементарные скрипты на C#). Хотя, с программированием знаком не понаслышке (колупал Basic в школе и баловался с C/C++ в универе).


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

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

    Для подсветки столешницы на кухне, зеркала в ванной, внутренней подсветки мебели удобней использовать линейные светильники, занимающие очень мало места. Компания Uniel предложила мне протестировать светильник ULO-BL60-9W-NW-K IP54 WHITE, который стоит всего 398 рублей.

    Читать дальше → Read more »
  • [recovery mode] Блокировка Роскомнадзора Гимном Российской Федерации
    Опишу свой опыт общения с Роскомнадзором и прокуратурой по вопросу блокировки сайта, может кому пригодиться. Тут больше юридических аспектов, чем айтишных, но от сумы да Единого реестра не зарекайся.

    По статистике Федеральной службой по надзору в сфере связи за всю ее историю было заблокировано порядка 500000 сайтов (указателей на страницы), и еще порядка 10 миллионов — неправомерно заблокированных из-за неосторожности быть на одном IP с нарушителем. Думаю, из этих сотен тысяч и миллионов есть люди, чьи права были нарушены по беспределу, и которые хотели бы их защитить. Небольшой ликбез ниже. Читать дальше → Read more »
  • ИИ Google научился предсказывать, когда пациент умрет (но не все так мрачно)

    Фото: Mario Tama/Getty

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

    И это не научная фантастика, а реальность. Не так давно специальный алгоритм компании показал врачам достаточно высокую вероятность смерти пациентки с раком груди во время ее пребывания в больнице (понятно, что самой пациентке ничего не сказали). Так и случилось — она умерла в течение нескольких дней. Тем не менее, свой проект компания реализует вовсе не для мрачных прогнозов. В основе всего лежит идея, чтобы врачи могли получать точные данные о здоровье своих подопечных и назначали качественное лечение.
    Читать дальше → Read more »
  • DIY автономный дрон с управлением через интернет. Часть 2 про ПО
    Это продолжение повествования об автономном дроне. В первой части говорилось про hardware, в этой речь пойдет про software. Для начала небольшой ликбез про взаимодействие оператора с коптером. Вот типичная схема у большинства самосборных дронов:

    image

    А вот схема у продвинутых дронов:

    image
    Читать дальше → Read more »
  • Как у меня сломался String.getBytes(UTF_8) и что я с этим делал
    (спойлер) дебажил, дизасемблил и пришел к выводу что проблема в SSE инструкциях

    Привет, Хабр!

    Все началось с того что я писал Load тест на Java для внутреннего компонента системы над которой сейчас работаю. Тест создавал несколько потоков и пытался что-то выполнить очень много раз. В процессе выполнения иногда появлялись java.lang.ArrayIndexOutOfBoundsException: 0 ошибки на строчке очень похожей на эту:

    "test".getBytes(StandardCharsets.UTF_8)
    
    Читать дальше → Read more »
  • Devilution: проект по реверс-инжинирингу Diablo
    image

    Как показывают годы, шансов увидеть оригинальный исходный код — или хотя бы ремейк — первой части Diablo у нас практически нет (событие The Darkening of Tristram в Diablo III в честь 20-летия выхода первой части — это, конечно, хорошо, но все же немного не то, чего ожидали поклонники). И пусть последнее обновление для игры вышло в 2001 году, и сама Blizzard давно перестала поддерживать и продавать ее — память о ней по-прежнему остается жива в наших сердцах. Что лишний раз и подтвердил некий GalaXyHaXz, решивший произвести реверс-инжиниринг игры.

    Исходный код доступен на Github. Проект Devilution, который его автор GalaXyHaXz окрестил «деволюцией Diablo», занял у него свыше 1,200 часов — 4 месяца работы. Также не пропустите объемные комментарии автора, проливающие свет на исходный код игры, и расположенные в другом репозитории. Сам код пока выглядит неважно, но будет продолжать приводится в порядок по мере прогресса работы над другими модулями игры.

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

    B 1998 году Blizzard отдала исходный код Diablo двум студиям: Synergestic Software, которая занималась разработкой дополнения Hellfire, и Climax Studios, работавшей над портом для Playstation. Отдел QA Sony в Японии не в первый раз «радует» своими утечками, отличились они и на этот раз — в японской версии порта был случайно забыт символический файл (a symbolic file), который включал в себя функции, данные, типы и многое другое. Это и позволило восстановить оригинальные функции, глобальные переменные, структуры данных и прочее. Бета-версия порта для Playstation также утекла, и в ней лежал еще один подобный файл, что значительно упростило задачу.
    Читать дальше → Read more »