-Поиск по дневнику

Поиск сообщений в rss_rss_hh_new

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.03.2011
Записей:
Комментариев:
Написано: 51

Habrahabr/New








Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://habrahabr.ru/rss/new/.
Данный дневник сформирован из открытого RSS-источника по адресу http://feeds.feedburner.com/xtmb/hh-new-full, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Фьючерсы, индексы и IPO: как на самом деле устроены биржи и зачем они нужны

Среда, 20 Сентября 2017 г. 12:17 + в цитатник
itinvest сегодня в 12:17 Разное

Фьючерсы, индексы и IPO: как на самом деле устроены биржи и зачем они нужны



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

    Как устроена биржа


    Биржа – это наиболее удобное место проведения операций с ценными бумагами. Она должна иметь в своем составе:

    • Торговую систему, где накапливаются заявки на покупку и продажу, происходит их «спаривание» в случае совпадения цены, т.е. регистрации сделок с различными инструментами и записями в соответствующие регистры учета (напр. ).
    • Расчетную (клиринговую) палату, которая ведет учет денежных средств участников торгов, осуществляет поставку денег по каждой сделке продавцам бумаг и списывает денежные средства со счетов покупателей, осуществляет внешние и внутренние денежные переодв.
    • Депозитарный центр, которые аналогично расчетной палате ведет учет ценных бумаг участников торгов, осуществляет поставку бумаг на счет покупателей, списывает бумаги со счетов продавцов, осуществляет клиринг ценных бумаг по результатам торгов в уполномоченных депозитариях.

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

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

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

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

    Зачем это нужно


    Ценные бумаги являются одной из форм существования капитала и обращаются на фондовом рынке. Все это несет в себе целый ряд функций.

    Во-первых, ценные бумаги перераспределяют денежные средства:

    • Между странами и территориями.
    • Между отраслями промышленности и секторами экономики.
    • Между отдельными предприятиями внутри одного сектора.

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

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

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

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

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

    Пример: На протяжении 10 лет акции Berkshire Hathaway выросли с $6 000 до $10 000. В этой точке многие решили, что рост и так уже довольно значительный, и упустили возможность заработать огромные деньги на цене, которая в последующие 6 лет выросла до $70 000 и даже выше.

    image

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

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

    Производные инструменты: фьючерсы, опционы и не только


    Функционирование любой биржевой площадки сложно себе представить без так называемых производных инструментах или «вторичных ценных бумаг». Условно их можно разбить на следующие классы:

    • Депозитарные расписки;
    • Варранты на ценные бумаги;
    • Фьючерсные контракты;
    • Форвардные контракты;
    • Опционные контракты.

    Депозитарные расписки


    По своей сути наиболее близки к обычным акциям. Часто бывает, что какая-то иностранная компания (условный Ростелеком) хочет разместить в депозитарии Bank of New York свои акции и заключает с ним соответствующее соглашение. Банк под эти акции в дальнейшем выпускает в свободное обращение сертификаты ценных бумаг – американские депозитарные расписки (АДР). Одна АДР может соответствовать как одной, так и нескольким акций. АДР имеют номинал, выраженный в долларах США, и свободно обращаются на американских биржах. Что важно – курсовая стоимость АДР в пересчете на одну акцию и курс нацвалюты страны компании-эмитента акций, соответствует курсовой (рыночной) стоимости акций, лежащей в основе такой АДР.

    Варранты на ценные бумаги


    Термин «варрант »произошел от английского слова warranty – гарантия. Варрант – это право выкупить определенное количество акций предприятия в достаточно далеком будущем (от года до 5 лет).

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

    Фьючерсные контракты


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

    image

    График фьючерсного контракта из терминала SmartX

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

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

    Форвардные контракты


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

    1. Форвардные контракты заключаются только на внебиржевом рынке между двумя конкретными контрагентами – они же и несут риск неисполнения условий контракта (в случае фьючерсов этот риск лежит на бирже).
    2. Такой контракт может быть заключен на произвольную дату в будущем в отличие от фьючерса, который имеет стандартную дату исполнения.
    3. В качестве базового актива форвардного контракта может быть что угодно, а не только активы, допускающие биржевую стандартизацию.
    4. Такие контракты, как правило, не требуют гарантированных депозитов, и по ним не начисляется вариационная маржа.

    Опционы


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

    image

    Доска опционов терминала SmartX

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

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

    Что такое фондовые индексы и зачем они нужны


    Биржевой индекс — это показатель изменения цен определенной группы ценных бумаг. Можно представить биржевой индекс как «корзину» из акций, объединенных по какому-либо признаку.

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

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

    Индексы могут быть «агентскими», когда их расчетом занимаются специальные агентства (пример — индексы S&P агентства Standard & Poor’s). Второй вариант — биржевые индексы, созданные, собственно, фондовыми площадками. В США это NASDAQ, а в России два основных биржевых индекса рассчитывались биржами ММВБ и РТС, которые теперь объединились в единую «Московскую биржу».

    Помимо этого, составителем индексов может быть и брокерская компания. Например, ITinvest рассчитывает собственные индексы, среди которых есть, к примеру, индексы корреляции (фьючерса на индекс РТС и индекса ММВБ, фьючерса на индекс РТС и индекса S&P 500), которые применяются для торговли фьючерсом на индекс РТС, «склеенные» фьючерсы и другие индикаторы.

    Подробнее о семействах индексов и их использовании можно почитать здесь.

    IPO: зачем это нужно, плюсы и минусы


    Конечно, в ходе разговора о современных биржах нельзя обойти вниманием тему IPO — настолько часто можно услышать эту аббревиатуру в различных СМИ.

    Когда компания хочет предложить свои акции широкой общественности, она проводит IPO(Initial Public Offering – IPO). Соответственно, статус организации меняется — вместо частной (акционером не может стать любой желающий) она становится публичной (акционером может стать любой желающий).

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

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

    Еще один плюс наличия публично торгуемых акций компании — возможность предлагать топ-менеджерам опционы, переманивая лучших специалистов. Помимо этого, акции могут быть использованы в ходе сделок по слиянию и поглощению, покрывая часть оплаты — при покупке Facebook WhatsApp, основатели мессенджера получили значительную часть $19 млрд акциями социальной сети, которая уже вышла на биржу. Попадание в листинг крупнейших мировых бирж — NYSE или NASDAQ — это просто престижно.

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

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

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

    Заключение: полезные ссылки и материалы для изучения фондового рынка


    Original source: habrahabr.ru (comments, light).

    https://habrahabr.ru/post/338318/


    Метки:  

    Safari 11 и WebRTC: подводные камни видеозвонков

    Среда, 20 Сентября 2017 г. 12:11 + в цитатник
    eyeofhell сегодня в 12:11 Разработка

    Safari 11 и WebRTC: подводные камни видеозвонков

      Итак, это свершилось. Кроме iPhone 8, который устарел ровно через полчаса после анонса iPhone 10, Apple обновила свой десктопный и мобильный браузер Safari. Среди прочих улучшений — реализация WebRTC (ходят слухи, что частично позаимствованная у Chromium. «Plan B» на это тоже намекает). Что это значит для разработчиков? Можно звонить через браузер как на десктопе, так и на айфонах. Голосом и видео. Я уже писал про обновленные инструменты разработчика в браузере, а сейчас хочу поделиться, как это все работает в релизе. Мы уже обновили SDK Voximplant, проверили, как Safari звонит в Microsoft Edge, и вот что я хочу рассказать…

      Видео само не заиграет


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

      Как выглядит «явное разрешение от пользователя»? Это должен быть интерактивный элемент, в обработчике 'onclick' которого нужно вызвать метод 'play' для объекта видео. Вызов этого метода из другого места кода или программное нажатие на кнопку не включат воспроизведение видео. Помнится, много лет назад программисты Blizzard так же боролись с ботоводами в World of Warcraft, делая «protected» API, вызывать которые можно было только в ответ на действия пользователя.


      Safari поддерживает только h.264 видеокодек


      Когда два устройства договариваются об установке подключения, они обмениваются (с вашей помощью) текстовыми SDP пакетами. Где, кроме всего прочего, указаны поддерживаемые кодеки. h.264 поддерживают последние версии Chrome, Firefox и Edge — но в более старых версиях ее может не быть. Более того, кроме браузеров видеозвонки могут приходить и от других SIP-совместимых устройств: телефонов, программ-клиентов, мобильных приложений. И если там нет поддержки h.264 — то видеосвязи не будет.

      Мелочи, о которых стоит знать


      Chrome и Safari для описания медиапотоков в SDP-пакете использует «Plan B». А Firefox — «Unified Plan». Поэтому если больше одного медиапотока (например, при нескольких видеопотоках разного качества) — то кому-то придется выступать в роли переводчика. А про Edge я промолчу.

      Также Safari накладывает ряд ограничений на использование WebRTC: только HTTPS, iframe’ы только с того же домена, что и сайт. И если первое требование не вызывает никаких проблем, то требования к iframe’ам сильно ограничивает использование встраиваемых виджетов. С другой стороны, Apple тоже можно понять — именно с таких виджетов чаще всего идет навязчивая видеореклама.
      Original source: habrahabr.ru (comments, light).

      https://habrahabr.ru/post/338312/


      Метки:  

      Мифы об SMS-рассылках

      Среда, 20 Сентября 2017 г. 11:05 + в цитатник
      serkon сегодня в 11:05 Маркетинг

      Мифы об SMS-рассылках



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

        Миф 1. SMS-маркетинг – это всегда спам


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

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

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

        Миф 2. SMS-маркетинг менее удобен, чем другие каналы


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

        В мире, где большинство людей (91% согласно данным Morgan Stanley) не представляют своей жизни без мобильного телефона, а общее количество активных SIM-карт в мире сравнялось с количеством жителей планеты еще в 2015 году, сложно представить себе более эффективный канал связи. Тем более, что по данным Frost&Sullivan, непрочитанными остаются всего 2% сообщений.

        Ограничение в 160 символов также играет вам на руку. В современном мире все ускоряется, и абонент скорее прочитает краткое и емкое сообщение, чем длинное письмо с лишними деталями.

        Миф 3. SMS-маркетинг эффективен лишь в нескольких отраслях


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

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

        Миф 4. SMS — это прошлое


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

        Более того, исследование Nielsen показало, что абоненты в возрасте 18-24 лет отправляют примерно в 10 раз больше сообщений, чем абоненты 55-64 лет. Кто-то увидит в этом отсутствие интереса со стороны немолодой аудитории, но также это говорит и о том, что новые поколения продолжают активно использовать SMS.

        SMS – это удобный и эффективный инструмент для маркетинга. Но, как и любой тонкий инструмент, он должен быть правильно настроен. И тогда его возможности станут вашими преимуществами перед конкурентами.
        Original source: habrahabr.ru (comments, light).

        https://habrahabr.ru/post/338306/


        Хакеры атаковали министерство обороны Швейцарии

        Среда, 20 Сентября 2017 г. 10:55 + в цитатник
        ptsecurity сегодня в 10:55 Разработка

        Хакеры атаковали министерство обороны Швейцарии



          По сообщениям СМИ, министерство обороны Швейцарии подверглось хакерской атаке. Для взлома использовался шпионский софт под названием Turla. Нападение было совершено в июле 2017 года.

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


          Представители минобороны заявили о своевременном обнаружении атаки, о ее последствиях и возможных утечках важных данных не сообщается. Вредоносное программное обеспечение Turla впервые было замечено в 2014 году в атаках на правительственные и военные организации в Европе и на Ближнем Востоке. В августе текущего года был опубликован доклад, описывавший деятельность кибергруппировки Turla и ее возможную связь с атаками на саммит G20, прошедшем в Гамбурге в июле 2017 года.

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

          Как на угрозы реагируют государства


          Ситуация в сфере безопасности критически важной инфраструктуры, в том числе военной, в последние годы вызывает все больше опасений экспертов. Исследователи часто публикуют информацию об уязвимостях в системах управления промышленными объектами (Siemens, Schneider Electric), а киберпреступники атакуют государственные учреждения и даже военную инфраструктуру.

          Только за последние годы атакам подверглись нефтедобывающая компания Saudi Aramco, металлургический завод в Германии, энергосистема Украины и многие другие предприятия критической инфраструктуры по всему миру.

          Все это способствует тому, что вопросами информационной безопасности в разных странах начинает заниматься государство. Так происходит и в России — 1 января 2018 года вступает в силу Федеральный закон от 26.07.2017 № 187-ФЗ «О безопасности критической информационной инфраструктуры Российской Федерации». Это второй случай в истории государственного регулирования ИБ в России, когда обязательные требования по обеспечению безопасности информационных систем затронут не только госсектор, но и коммерческие компании — и даже индивидуальных предпринимателей.

          21 сентября в 14:00 директор по методологии и стандартизации Positive Technologies Дмитрий Кузнецов проведет бесплатный вебинар, посвященный вопросам регулирования безопасности критической информационной инфраструктуры в нашей стране.

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

          Для участия в вебинаре нужно зарегистрироваться.
          Original source: habrahabr.ru (comments, light).

          https://habrahabr.ru/post/338304/


          Метки:  

          Как сделать хороший ролик для App Store и Google Play

          Среда, 20 Сентября 2017 г. 10:46 + в цитатник
          alconost сегодня в 10:46 Разработка

          Как сделать хороший ролик для App Store и Google Play

          • Tutorial


          Видео — это мощное средство для продвижения вашего приложения, и с выходом iOS 11 его роль становится ещё важнее. Мы в Alconost сформулировали рекомендации, которых следует придерживаться при создании видео для iOS App Store и Google Play Store. Между двумя указанными сторами есть важные отличия, о которых вам следует знать, чтобы увеличить отдачу от использования видео. Мы расскажем, как сделать ролик для страницы приложения в App Store с учётом всех новшеств iOS 11 и чем отличаются ролики для Google Play.

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

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

          Решительные пользователи будут видеть кнопку воспроизведения над картинкой в Play Store и могут просто оценить графику, не запуская видео. В iOS (с версии iOS 11) автоматически запускающееся видео, скорее всего, привлечёт их внимание хотя бы на пару секунд (благодаря меняющимся изображениям).

          Посетители-исследователи с помощью просмотра видео пожелают максимально подробно узнать о том, что уникального в вашем приложении. Благодаря возможности размещать до 3 превью (App Preview) в iOS 11 App Store, они смогут увидеть даже больше, чем ожидают!

          А вот интересная статистика от StoreMaven. Проанализировав 120 миллионов сессий, аналитики StoreMaven пришли к выводу, что видео способно увеличить коэффициент установок приложения более чем на 25%, а пользователи, посмотревшие видео, в 3 раза чаще устанавливают приложение. Индустрии мобильной разработки ещё предстоит наблюдать последствия изменений в iOS 11 (особенно для игр, в которых превью с ландшафтной (горизонтальной) ориентацией начинают сильно походить на игровые трейлеры или видеообъявления для привлечения покупателей).

          Как сделать хорошее видео для мобильных сторов


          Между видео в App Store и видео в Google Play Store есть некоторые отличия. Но есть и общие передовые практики и подводные камни. Давайте их исследуем!

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

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

          Не пытайтесь показать всё — старайтесь создавать относительно короткие видео. У вашего приложения может быть много классных свойств и преимуществ, но вам необходимо сфокусироваться лишь на главных из них. Длительность ролика в App Store не должна превышать 30 секунд. За это время нужно дать зрителю максимально целостное представление о приложении.

          По нашему опыту, чтобы зритель успел осознать происходящее на экране, каждой опции желательно уделить не менее 3 секунд, а лучше 4-5. На переходы между сценами (смена экранов) тоже понадобятся доли секунды. Плюс к этому, кроме сцен, посвящённых конкретным опциям, у вас наверняка будут стартовая и закрывающая заставки (допустим, по 3 секунды каждая) и сцена со стартовым окном приложения (пусть тоже хотя бы 3 секунды). В сухом остатке на демонстрацию конкретных опций останется около 20 секунд. Если каждой сцене уделить хотя бы по 4 секунды, вы сможете показать только 5 опций. Поэтому многим разработчикам при работе над видео предстоит принять волевое решение в духе «ничего не сказать в ролике о фиче, над которой мы работали месяц».

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

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

          Помните о синдроме эксперта — некоторые пользователи просто присматриваются к вашему приложению или, может быть, просто к его концепции. Убедитесь, что потенциальному пользователю всё понятно, даже в том случае, если он новичок. Если ваше приложение относится к узкой тематической категории (например, фитнес-приложение или экономический симулятор), перед вами стоит выбор: знакомить зрителя с жанром на примере вашего приложения — или рассказывать о функционале приложения без оглядки на возможную неосведомлённость пользователя о самом жанре. Делать этот выбор имеет смысл на самом раннем этапе создания видео — одновременно с определением целевой аудитории ролика.

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

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

          7 основных различий между видео в App Store и Play Store


          Есть несколько довольно фундаментальных различий между превью приложений (App Previews — видео, которые используются в iOS App Store и tvOS App Store) и промо-видео (Promo videos — видео, которые используются в Google Play Store).

          Вот 7 главных из них.

          Примечание о локализации: возможность показывать локализованное видео обычно была одним из основных различий между двумя сторами. Это нельзя было сделать в iOS (поскольку одно и то же видео отображается для всех пользователей), но реализуемо в Google Play Store. Так вот, с версией iOS 11 разработчики наконец-то получили возможность локализовать каждую из превьюшек и управлять их наличием и порядком.
          Превью приложения (App Previews в iOS
          App Store)


          Промо-видео (Promo videos в Google Play Store)

          Формат

          Зависит от устройства. Полный список разрешений здесь (в разделе «App
          Preview Resolutions»). iOS 11: может быть до 3 превью.

          YouTube video. Рекомендуется разрешение 1920x1080.

          Рекомендации

          Необходимо утверждение, в соответствии с довольно строгими/ограничивающими
          рекомендациями
          .  Рекомендации
          App Store стоит изучить как можно внимательнее. Модерационная политика App
          Store довольно строгая: если модераторы не примут ролик, вам придется его
          переделывать.

          Утверждение не требуется, рекомендации в виде коротких
          советов
          .

          Размещение и показ

          Версии iOS до 11: кнопка воспроизведения видео наложена на кадр постера,
          выступающий в качестве первого скриншота.

          iOS 11 и последующие: автовоспроизведение, отключение звука,
          зацикливание. Первое превью воспроизводится автоматически и в результатах
          поиска, и в листинге App Store.

          Кнопка воспроизведения видео наложена на графический объект (feature
          graphic), открывающий YouTube-видео. Не отображается в результатах поиска.

          Продолжительность

          До 30 секунд

          Не ограничена

          Обновление

          Требуется обновление приложения

          Может быть изменено в любое время

          Тестирование

          Нет способа выполнить A/B тестирование без сторонних инструментов

          Может быть протестировано с помощью инструмента для экспериментов Google
          Play Store


          Видео-статистика

          Статистика недоступна

          YouTube Analytics


          Давайте рассмотрим подробнее некоторые из указанных различий на примерах.

          Формат


          Поскольку превью приложения зависят от устройства, они зависят и от ориентации приложения. Портретное приложение будет выдавать вертикальное видео (9:16), a пейзажное приложение горизонтальное видео (16:9).

          Все промо видео на Play Store имеют пейзажную ориентацию (16:9), так как все они являются YouTube-видео.

          Это существенная разница, из-за которой вам придется делать 2 разных видео, которые не будут взаимозаменяемыми в портретном приложении. Если вы будете использовать превьюшку iOS для портретного приложения на Google Play Store, то получите не только видео с неправильным интерфейсом пользователя, но и с двумя большими черными областями с каждой стороны.


          iOS App Preview, воспроизведенное на YouTube

          Вы также не можете использовать ваше промо-видео с Google Play Store в iOS App Store, поскольку оно не будет одобрено Apple (рекомендации Apple требуют показа iOS приложения).

          Размещение и показ


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

          iOS App Store


          В iOS до 11 версии кадр с постером (с кнопкой воспроизведения видео) отображается в результатах поиска вместе с одним скриншотом. В списке приложений кадр с постером выступает также первым скриншотом.

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



          Автовоспроизведение превью в результатах поиска iOS 11



          iOS до 11 версии: вам необходимо нажать кнопку воспроизведения, чтобы увидеть превью

          Возможно, Apple все еще тестирует некоторые моменты, поскольку для каких-то приложений превью отображается не со скриншотами, а ниже — в разделе «A Closer Look».





          Google Play Store


          В Google Play Store, кроме как на паре хитро оформленных для теста страниц от Google (а также в некоторых результатах «брендовых поисков») графический объект и видео не отображаются в результатах поиска. Скриншотами иллюстрировать это не будем.

          В списке приложений кнопка воспроизведения размещается над картинкой приложения, которая является первым визуальным элементом, расположенным сверху. Как только пользователь нажмет эту кнопку, YouTube-видео будет воспроизведено.



          Тестирование


          iOS App Store


          iTunes Connect не позволяет протестировать просмотр листинга с показом одного видео, без видео или с различными вариантами видео.

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

          Используя такие сторонние инструменты, как Splitmetrics, StoreMaven или Testnet, вы можете получить немного больше инсайдерской информации: эти инструменты «воссоздают» листинг мобильного стора на странице, после чего вы можете направлять на неё платный трафик. Изменения в iOS 11 привели к появлению нового ограничения, которое приводит к невозможности отследить влияние видео на результаты поиска.

          Google Play Store


          Благодаря инструменту оптимизации страницы приложения с помощью экспериментов вы можете провести A/B тестирование вашего видео (до 4 вариантов). Проверив аналитику YouTube, вы также сможете получить представление о поведении зрителя (продолжительность просмотра, когда люди перестают смотреть видео и т. д.).

          Заключение


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

          В связи с выходом iOS 11 будет очень интересно посмотреть, станет ли видео для приложений ещё популярней, чем сейчас? Скоро узнаем.


          Об авторе

          Alconost занимается локализацией приложений, сайтов и игр на 68 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

          Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

          Подробнее: https://alconost.com

          При подготовке статьи использованы материалы http://blog.prioridata.com/app-store-videos-a-masterclass

          Original source: habrahabr.ru (comments, light).

          https://habrahabr.ru/post/338294/


          Дизайн-система Acronis. Часть первая. Единая библиотека компонентов

          Среда, 20 Сентября 2017 г. 10:34 + в цитатник
          Nikishkin сегодня в 10:34 Дизайн

          Дизайн-система Acronis. Часть первая. Единая библиотека компонентов



            Меня зовут Сергей, я работаю старшим дизайнером в компании Acronis. В отделе дизайна продуктов для бизнеса я отвечаю за разработку и внедрение единой библиотеки компонентов.


            Так как у нас много продуктов и сервисов, а дизайн в этих продуктах и сервисах сильно отличается, мы решили его унифицировать и привести к единому UI. Зачем? Все просто: такой подход дает возможность оптимизировать работу отдела, сосредоточить дизайнеров на UX, ускорить процесс разработки и запуск новых продуктов, снизить нагрузку на отделы тестирования и значительно сократить количество багов на стороне front-end. В этой статье я расскажу о нашем опыте, остановлюсь на инструментах и покажу, как устроена библиотека изнутри.


            Здравствуйте. Я ваш куратор в игре «Актуальный UI-кит»


            Долгое время роль библиотеки играл собранный в Иллюстраторе PDF файл с палитрой цветов, скудным набором элементов и большими планами на будущее в виде 70-ти пустых страниц. Для того, чтобы найти какой-нибудь уже существующий элемент, приходилось постоянно дергать других дизайнеров или лопатить чужие исходники, а потом сверять актуальность с реализованным элементом на одном из тестовых стендов. Пик отчаяния наступал в тот момент, когда на тестовом стенде искомый элемент выглядел несколько иначе и вел себя не совсем так, как было запланировано в макетах. Получалась достаточно стандартная ситуация: дизайнеры тянули одеяло в свою сторону, мотивируя свои решения авторитетным «Хочу, чтобы так!», а разработчики пытались прикрываться мало значимым «Но ведь технические ограничения?!». Такой подход, закономерно, приводил к не самым лучшим результатам по обе стороны баррикад и его нужно было менять. Забегая вперед, скажу, что сейчас большинство сложных UI решений мы принимаем коллегиально и стараемся искать компромисс между красотой и технологичностью. Итак:


            Основные проблемы, которые требовали решения


            • Централизованная библиотека UI элементов
            • Версионность файлов и контроль за изменениями
            • Единый и понятный workflow
            • Базовый набор инструментов для работы
            • Взаимодействие с разработчиками

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




            Abstract отвечает за контроль версий и историю изменений мастер-файла библиотеки. Craft используется как библиотека для палитры цветов и замена нативному color инспектору. Lingo отвечает за хранение, подключение и обновление компонентов библиотеки в Sketch файлах.


            Такая схема уже сейчас позволяет легко поддерживать библиотеку в актуальном состоянии, контролировать изменения и, что наиболее важно, быстро доставлять обновления дизайнерам. При этом, доступ к мастер-файлу библиотеки имеет только Owner, а остальные участники процесса получают элементы в виде символов и составных компонентов из Lingo. Для доступа к Angular компонентам мы подняли на каждой машине песочницу, чтобы дизайнеры с помощью «npm start» в консоли могли быстро запустить node server и работать с кодом.


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



            Abstract


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




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




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


            Craft


            На данный момент мы используем Craft как библиотеку для цветовой палитры и замену нативному color инспектору. Под рукой не только все цвета, но и названия переменных. Благодаря такому подходу удалось решить еще одну важную проблему. Дизайнеры перестали “пипетить”, а разработчики перестали резонно негодовать, почему в двух макетах у одного и того же элемента отличаются значения цвета. Кто работает в Sketch и использует несколько мониторов знает, что на каждом подключенном мониторе один и тот же цвет взятый пипеткой, в большинстве случаев, будет иметь разный HEX.





            Lingo


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




            Можно создать несколько библиотек, разбить библиотеку на категории, проставить теги для каждого элемента, а при импорте элементов выбрать какой элемент добавить, а какой нет. При обновлении существующего компонента в библиотеке, Lingo предложит его заменить, сделать дубликат или отказаться от изменений.




            Так же, в Lingo можно хранить составные компоненты в виде папок со слоями или артборды целиком. Для нас эта возможность особенно актуальна, так как мы сознательно не делаем компоненты с большим количеством оверрайдов из-за сложностей в поддержке и кастомизации.




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


            Плагины


            Централизованно мы используем три плагина:


            Первый — Shared Text Styles для работы с текстовыми стилями. Позволяет экспортить текстовые стили в JSON, добавлять стили в новый Sketch документ и апдейтить уже подгруженные.


            Второй — Relabel button для работы с кнопками. Одна из лучших реализаций плагинов такого рода, на мой взгляд. Достаточно правильно настроить привязки элементов внутри символа.




            Третий — Acronis data. Так как мы достаточно много работаем с таблицами и большими массивами данных, я собрал плагин, который генерирует специализированные значения для этих таблиц (offering items, agents name, schedule options, machines и т.д.). Плагин работает на основе dummy data и подтягивает значения из JSON. Перед тем, как собирать кастомное решение, была неудачная попытка подружить единый JSON с Craft, но увы. Как оказалось, Craft не умеет в исходную разметку документа и показывает поля не по порядку.






            Иконки


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


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


            Angular 4 компоненты


            Неважно, насколько прокачана и удобна библиотека пока она существует исключительно в виде Sketch файла. Если в браузере компонент выглядит не так, как в макетах, библиотека уже неактуальна, а исходники устарели и не соответствуют действительности. Благодаря Сергею Сабурову, Кириллу Севёлову и всей команде мониторинга, наши компоненты плавно перетекают в код и работают именно так, как запланировано. Несмотря на то, что часть новых продуктов и сервисов мы уже начали собирать с помощью текущих компонентов, еще не все front-end команды готовы внедрять и использовать эти компоненты у себя. Где-то фронт написан на Ext JS, где-то используется Vue и быстрый переход с одного фреймворка или библиотеки на другой технически невозможен по ряду причин. О том, почему в компании выбрали именно Angular, подробно поговорим в следующей статье. А пока давайте вернемся к библиотеке и посмотрим, как устроены компоненты.


            У каждого компонента есть набор свойств. Свойства позволяют управлять состоянием компонента, его внешним видом и функциональностью. Так выглядит стандартный инпут в Sketch библиотеке:




            А вот так в коде:





            Чтобы изменить размер и внешний вид инпута достаточно в свойствах указать


            [size] = "'sm'"

            Теперь давайте посмотрим на более сложный пример:




            Два типа дропдаунов. В первом случае — это список из значений, во втором к списку значений добавляется строка поиска. Переключимся на код:




            С помощью #selectChild получаем вложенный компонент для активного значения поля, через (select) подписываемся на событие текущего компонента, а с помощью директивы *ngFor проходим по массиву из значений и выводим их в выпадающем списке. Чтобы включить строку поиска и возможность искать по списку, во втором примере включаем свойство [search]. Как я говорил выше, более подробно об Angular и работе компонентов на front-end стороне мы расскажем в следующей статье. Stay tuned!


            Дизайнеры и код


            Одна из наших амбициозных и долгосрочных задач — перенести дизайн из Sketch в браузер, чтобы дизайнер мог передавать в разработку не статичные исходники или прототипы, собранные в сторонних приложениях, а готовый код. До того момента, как появились Angular компоненты, для сложных прототипов я продвигал Framer, каждую неделю готовил лекции, рассказывал о принципах и тонкостях работы с Coffee Script. Несмотря на потраченные усилия Framer не прижился по нескольким причинам:


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

            От Framer мы полностью не отказались и изредка собираем в нем шоты для Dribbble. Забиваем гвозди микроскопом, да.





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


            Заключение


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


            Кстати, мы всегда рады опытным дизайнерам. Если вы такой, напишите мне на почту: sergey.nikishkin@acronis.com


            Список ссылок


            Original source: habrahabr.ru (comments, light).

            https://habrahabr.ru/post/338246/


            Метки:  

            Тест новинки: Crucial BX300 SSD

            Среда, 20 Сентября 2017 г. 10:24 + в цитатник
            Dmytro_Kikot сегодня в 10:24 Администрирование

            Тест новинки: Crucial BX300 SSD



              BX300 — это новейший потребительский 2,5-дюймовый SSD-накопитель компании Crucial, в основе которого лежит технология 3D-NAND. Новый BX300 SSD является прямым преемником BX200 и оснащен контроллером Silicon Motion и специальной прошивкой. Высокоэффективная технология BX300 доступна в объеме 120 ГБ, 240 ГБ и 480 ГБ.

              За последние несколько лет компания Crucial выпустила не мало бюджетных накопителей, и эта новинка не является исключением. Не смотря на это BX300 демонстрирует весьма впечатляющие показатели производительности и энергоэффективности по сравнению с твердотельными накопителями, в некоторых случаях опережая последние в 10 раз. Этот накопитель не назывался бы новинкой, если бы он не отличался от своего предшественника BX200 (2015 год выпуска). Скорость последовательного чтения составляет 555 Мбайт/с и записи — 510 МБ/с (у BX200 были показатели — 535 МБ/с и 450 Мбайт/с), а значение IOPS равно 95 000 при произвольном чтении и 90 000 при произвольной записи (BX200 — 66 000 IOPS и 78 000 IOPS, соответственно).

              Для упрощения обновления для пользователей существует Crucial’s Advisor — средство, определяющее совместим ли ПК пользователя с накопителями Crucial. Также имеется программный ключ Acronis True Image HD для беспрепятственной миграции данных со старого диска на BX300.

              Основные характеристики BX300:

              • Объем — 120 ГБ, 240 ГБ, 480 ГБ;
              • Последовательное чтение — 555 Мбайт/с;
              • Последовательная запись — 510 Мбайт/с;
              • Случайное чтение: 45 000 IOPS (120 ГБ), 84 000 IOPS (240 ГБ), 95 000 IOPS (480 ГБ);
              • Случайная запись: 90 000 IOPS;
              • Форм-фактор: 2,5-дюймовый (7мм) SSD;
              • Интерфейс: SATA 6 Гбит/с;
              • Совместимость: от 7 мм до 9,5 мм порт;
              • Программный ключ Acronis True Image HD


              Дизайн и сборка

              Внешний вид BX300 не отличается от предшественников BX100 и BX200, за исключение, конечно, надписей с информацией (марка продукта, форм-фактор). Корпус выполнен из прочного металла со сглаженными углами.

              Задняя сторона SDD имеет обычную белую наклейку, на которой отображается информация о конкретной модели накопителя, емкости и форм-факторе.

              По бокам накопителя имеется по два крепежных отверстия. А учитывая форм-фактор (всего 2,5 дюйма), BX300 может поместится практически в любой ноутбук. Для стационарных ПК производитель предоставляет вместе с SSD адаптер с 7 мм до 9,5 мм.

              Синтетические бенчмарки (тесты производительности)

              Все тесты, результаты которых Вы увидите далее, были произведены на рабочей станции StorageReview HP Z640. Для сравнения и в качестве соперников для BX300 были выбраны такие накопители:

              • Intel 545S SSD (512 ГБ)
              • Samsung 850 Pro SSD (1 ТБ)
              • Samsung 850 Pro SSD (2TB)
              • ADATA SU900 SSD (512 ГБ)
              • Crucial MX200 SSD (1TB)
              • Micron M600 SSD (1 ТБ)
              • OCZ VX500 SSD (512 ГБ)
              • WD Blue SSD (1TB)
              • SanDisk Ultra 3D (1TB)


              IOMeter последовательная передача 2 МБ (чтение/запись)



              Как видим, Crucial BX300 480ГБ подошел очень близко к лидерской позиции по показателю «Чтение» с показателем 506.66MБ/с, уступив только ADATA SU900 (521.55MБ/с). При записи накопитель выдал 460.86MБ/с, заняв четвертое место.

              IOMeter случайная передача 2 МБ (чтение/запись)



              А вот с случайной передачей показатели BX300 480ГБ (432.21MБ/с чтение и 461.73MБ/с запись) поместили его практически на дно списка, хуже был только ADATA SU900 512ГБ.

              IOMeter случайная передача 4К (чтение/запись)



              В данном тесте показатели чтения составили 30.24MБ/с (в конце списка), запись — 107.21MБ/с (затесался в середину).

              IOMeter случайная передача 4К (чтение/запись) / IOPS

              В категории IOPS BX300 смог выжать на чтение 7740.82 IOPS и на запись — 27445.66 IOPS, заняв при этом последнюю ступеньку. Лидером, ка не удивительно, стал Samsung 850 Pro 2TБ.

              IOMeter латентность при запись 4К



              В данном тесте мы рассматривали для сравнения с другими накопителями как среднюю, так и максимальную латентность.

              IOMeter при 100% чтении 4К



              В этом тесте при случайной рабочей нагрузке с 100% активность чтения и масштабированием от 1 до 64 QD. BX300 продемонстрировал самый лучший результат (на 1000 IOPS лучше самого Samsung 850 Pro 1TБ) — от 27441.61 IOPS и до 85296.65 IOPS.

              IOMeter при 100% записи 4К



              В этом бенчмарке показатель BX300 480GБ колебался от 7804.250197 IOPS to 96519.20322 IOPS. Второе место, сразу за Samsung 850 Pro.

              В заключительной серии синтетических тестов мы будем сравнивать SSD накопители в серверной среде смешанной рабочей нагрузи с глубиной очереди от 1 до 128. Каждый из наших тестовых серверных профилей имеет сильный уклон в сторону активности чтения, начиная с 67% чтения профиля базы данных и заканчивая 100% чтения профиля веб-сервера.

              IOMeter БД (IOPS)



              Первым является профиль базы данных при 67% чтения и 33% записи, в основном сосредоточенных на передачи 8 К. И тут BX300 продемонстрировал диапазон 7438,52-47704,30 IOPS.

              IOMeter Веб-сервер (IOPS)



              Наш профиль веб-сервера доступен только для чтения с разбросом объемов передачи от 512 байт до 512 КБ. В этой рабочей нагрузке накопитель BX300 обеспечил диапазон от 4598,5 IOPS до 23 988,22 IOPS.

              IOMeter Сервер файлов (IOPS)



              Следующий профиль — 80% чтение и 20% запись, размер передаваемых файлов от 512 байт до 64 КБ. BX300 выдал 5 240,36 IOPS и 36 908,54 IOPS, опять добравшись до верхушки лидеров.

              IOMeter Рабочая станция (IOPS)



              Последний профиль ориентирован на активность рабочей станции с 20% записи и 80% чтения при передаче 8К файлов. Старт нашего испытуемого был не очень — всего 5180.51 IOPS, но в итоге он стал лидером с показателем в 48330.04 IOPS.

              Тесты в реальных условиях

              Синтетические тесты конечно помогают определить сильные и слабые стороны того или иного накопителя, но не дают полного понимания того, как они будут работать в реальной жизни. Потому мы решили провести тестирование BX300 с помощью StorageMark 2010 в трех категориях: ПК как домашний кинотеатр, рабочий ПК и игровой ПК.

              Домашний кинотеатр

              Условия теста: проигрывание одного фильма 720P HD в Media Player Classic, одного 480P SD через VLC, скачивание 3-х фильмов через iTunes и запись одного потока (15 минут) 1080i HDTV через Windows Media Center.



              В данном тесте BX300 занял второе место, уступив первенство OCZ VX500 512GБ.

              Рабочий ПК

              Условия теста — 3 часа работы в офисной среде с 32-разрядной Windows Vista, работающей под управлением Outlook 2007, подключенной к серверу Exchange, просмотр веб-страниц с использованием Chrome и IE8, редактирование файлов в Office 2007, просмотр PDF-файлов в Adobe Reader, час локального воспроизведение музыки и два часа потоковой музыки через Pandora.



              Показатели не самые лучшие, но все же и не самые худшие.

              Игровой ПК

              В данном тесте, симулирует активность диска во время работы компьютерной игры. В этой симуляции 94% — это чтение, а остальные 6% — запись.Тест проходит на 64-битной Windows 7 Ultimate, предварительно настроенной с помощью Steam, и с такими играми, как Grand Theft Auto 4, Left 4 Dead 2 и Mass Effect 2, которые уже загружены и установлены.



              С данным тестом наш накопитель справлялся очень плохо, со скрипом выдавая 8020.11 IOPS, 431.65MБ/С и 0.934 мс латентности.

              Заключение

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

              Тесты, с результатами которых мы ознакомились ранее, показали довольно средний результат. Но Crucial и не планировали выпускать монстра, способного в пух и прах разорвать конкурентов. Их основной задачей было дать людям доступный (в плане цены) накопитель с достойной производительностью. И это у них отлично получилось.

              Источник: storagereview

              На правах рекламы.Акция! Только сейчас получите до 4-х месяцев бесплатного пользования VPS (KVM) c выделенными накопителями в Нидерландах и США (конфигурации от VPS (KVM) — E5-2650v4 (6 Cores) / 10GB DDR4 / 240GB SSD или 4TB HDD / 1Gbps 10TB — $29 / месяц и выше, доступны варианты с RAID1 и RAID10), полноценным аналогом выделенных серверов, при заказе на срок 1-12 месяцев, условия акции здесь, cуществующие абоненты могут получить 2 месяца бонусом!

              Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
              Original source: habrahabr.ru (comments, light).

              https://habrahabr.ru/post/338204/


              Метки:  

              kubernetes, playground, микросервисы и немного магии

              Среда, 20 Сентября 2017 г. 10:06 + в цитатник
              demonight сегодня в 10:06 Администрирование

              kubernetes, playground, микросервисы и немного магии

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



                Входящие условия и требования


                Немного о том, что представляет из себя система для которой необходимо было создать playground:
                • Kubernetes, bare-metal кластер;
                • Простой api-шлюз на базе nginx;
                • MongoDB в качестве БД;
                • Jenkins в качестве CI-сервера;
                • Git на Bitbucket;
                • Два десятка микросервисов, которые могут общаться между собой (через api-шлюз), с базой и с пользователем.


                Требования, которые мы смогли сформулировать при активном общении с тимлидом:
                • Минимизация потребления ресурсов;
                • Минимизация изменений в коде сервисов для работы на playground;
                • Возможность параллельной разработки нескольких сервисов;
                • Возможность разработки нескольких сервисов в одном пространстве;
                • Возможность демонстрации изменений заказчикам до деплоя на staging;
                • Все разрабатываемые сервисы могут работать с одной БД;
                • Минимизация усилий разработчика для разворачивания тестируемого кода.


                Размышления на тему


                С самого начала было ясно, что наиболее логичным для создания параллельных пространств в k8s логичнее всего использовать родной инструмент виртуальных кластеров, или в терминологии k8s — namespaces. Задачу, так же, упрощает тот факт, что все взаимодействия внутри кластера производятся по коротким именам предоставляемым kube-dns, что означало, что запуск структуры можно произвести в отдельном namespace без потери связности.
                У данного решения есть только одна проблема — необходимость разворачивать в namespace все имеющиеся сервисы, что долго, неудобно и потребляет большое количество ресурсов.

                Namespace и DNS


                При создании любого сервиса k8s создаёт DNS-запись вида ..svc.cluster.local. Данный механизм позволяет общение через короткие имена внутри одного namespace благодаря изменениям вносимым в resolv.conf каждого запускаемого контейнера.
                В обычном состоянии он выглядит вот так:
                search .svc.cluster.local svc.cluster.local cluster.local
                nameserver 192.168.0.2
                options ndots:5

                Т.е к сервису в том же namespace можно обратится по имени , в соседних namespace по имени .

                Обходим систему


                В этот момент в голову приходит простая мысль "База общая, маршрутизацией запросов к сервисам занимается api-шлюз, почему бы не заставить его ходить сначала к сервису в своём namespace, а в случае его отсутствия в default?"
                Да, подобное решение можно было организовать настройками namespace (мы же помним, что это nginx), но подобное решение вызовет разницу в настройках на pg и на прочих кластерах, что неудобно и может вызвать ряд проблем.
                Так что, был выбран метод замены строки
                search .svc.cluster.local svc.cluster.local cluster.local
                На
                search .svc.cluster.local svc.cluster.local cluster.local default.svc.cluster.local
                Такой подход обеспечит автоматический переход в namespace default при отсутствии необходимого сервиса в своём namespace.

                Подобного результата можно добиться в кластере следующим образом. Kubelet добавляет параметры search в контейнер из resolve.conf хост-машины, так что достаточно просто дописать в /etc/resolv.conf каждой ноды строку:
                search default.svc.cluster.local
                Если же вы не желаете, чтобы ноды ресолвили адреса сервисов, то можно использовать параметр --resolv-conf при запуске kubelet, что позволит указать любой другой файл вместо /etc/resolv.conf. Например файл /etc/k8s/resolv.conf с той же строкой.

                Дело техники


                Дальнейшее решение достаточно просто, нужно, только, принять следующие соглашения:
                • Новые фичи разрабатываются в отдельных ветках вида play/
                • Для работы с несколькими сервисами в рамках одной фичи названия веток должны совпадать в репозиториях всех задействованных сервисов.
                • Всю работу по деплою выполняет Jenkins автоматически
                • Для тестов фича-ветки доступны по адресу .cluster.local

                Настройки ssl-offloader


                Конфиг nginx для перенаправления запросов к api-gw в соответствующих namespace
                 server_name ~^(?.+)\.cluster\.local;
                location / {
                  resolver 192.168.0.2;
                  proxy_pass http://api-gw.$namespace.svc.cluster.local;
                }

                Jenkins


                Для автоматизации процесса развёртывания используется плагин Jenkins Pipeline Multibranch Plugin.
                В настройках проекта указываем собирать только ветки соответствующие шаблону play/* И добавляем Jenkinsfile в корень всех проектов, с которыми будет работать сборщик.
                Для обработки используется groovy-скрипт, целиком приводить его не буду, только пара примеров. Остальной деплой принципиально ничем не отличается от обычного.
                Получение имени ветки:
                def BranchName() {
                    def Name = "${env.BRANCH_NAME}" =~ "play[/]?(.*)"
                    Name ? Name[0][1] : null
                }

                Минимальная конфигурация namespace требует развёрнутого api-шлюза, поэтому добавляем вызов проекта создающего namespace и разворачивающего в него api-шлюз:
                 def K8S_NAMESPACE = BranchName()
                 build job: 'Create NS', parameters: [[$class: 'StringParameterValue', name: 'K8S_NAMESPACE', value: "${K8S_NAMESPACE}"]]
                 build job: 'Create api-gw', parameters: [[$class: 'StringParameterValue', name: 'K8S_NAMESPACE', value: "${K8S_NAMESPACE}"]]
                

                Заключение


                Серебряной пули не существует, но мне так и не удалось найти не только best practices, но и описаний того, как организованы песочницы у других, поэтому решил поделиться методом, который использовал при создании песочницы на базе k8s. Возможно это не идеальный способ, так что с радостью приму замечания или рассказы о том, как данная проблема решена у вас.
                Original source: habrahabr.ru (comments, light).

                https://habrahabr.ru/post/338158/


                Метки:  

                Vivaldi 1.12 — Погружение в детали

                Среда, 20 Сентября 2017 г. 10:03 + в цитатник
                Shpankov сегодня в 10:03 Разработка

                Vivaldi 1.12 — Погружение в детали

                  image

                  Всем привет!

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

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

                  • Просмотр информации об изображении
                  • Расширенная панель загрузок
                  • Настройка цветовой насыщенности тем браузера

                  Теперь давайте подробнее ознакомимся с этими улучшениями.

                  Просмотр информации об изображении


                  Картинок в сети много и иногда весьма полезно подсмотреть, как автор достиг такой красоты: какой камерой снимал, с какой диафрагмой и выдержкой, когда и где, в общем — чем больше информации, тем лучше. Довольно часто подобные данные скрыты внутри самого графического файла, и теперь вы сможете эти данные прочитать:

                  image

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

                  • Название файла и его адрес в сети
                  • Модель камеры, которой был сделан снимок
                  • Установки диафрагмы и параметры светочувствительности (ISO)
                  • Экспозиция и фокусное расстояние
                  • Гистограмма, баланс белого и цветовая модель
                  • Размеры изображения и файла
                  • Время и дата снимка
                  • Место события
                  • Авторские права
                  • Программа, использованная для обработки изображения

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

                  Расширенная панель загрузок


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

                  image

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

                  Настройка цветовой насыщенности тем браузера


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

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

                  image

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

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

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

                  Загрузить новую версию браузера можно с официальной страницы загрузки.
                  Original source: habrahabr.ru (comments, light).

                  https://habrahabr.ru/post/338282/


                  Метки:  

                  RailsClub 2017. Ответ на три главных вопроса от Piotr Solnica

                  Среда, 20 Сентября 2017 г. 09:48 + в цитатник
                  vorona_karabuta сегодня в 09:48 Разработка

                  RailsClub 2017. Ответ на три главных вопроса от Piotr Solnica

                    До RailsClub 2017 совсем немного (кстати, даже если вы не идете, не забывайте голосовать за Героев Руби). Сегодня хотим познакомить поближе еще с одним нашим гостем — Piotr Solnica, автором rom-rb и dry-rb и, как Петр пишет про себя, «all-around OSS contributor».

                    image
                    Как ты считаешь, какая самая большая задача сейчас стоит перед Ruby и RoR сообществом?


                    Самая важная задача для нас заключается в том, чтобы доказать, что стоит выбирать Ruby для новых проектов, что это жизнеспособная технология, с сильной, растущей и развивающейся экосистемой библиотек, фреймворков и различных инструментов разработки. Для этого нам нужно преодолеть наши “рельсовые” привычки, а это не легко и займет некоторое время. Пример такого rails-синдрома — использование ORM, в частности, Active Record. Это стало таким жестким стандартом, что у многих людей есть серьезные проблемы с пониманием того, как использовать альтернативы. Это, конечно, частично из-за нехватки информации и потому что альтернативные решения все еще относительно молоды. Но я уверен, что даже если появятся хорошие ресурсы, разработчики будут считать альтернативные подходы сложными, потому что использовать их будет непривычно. Это немного похоже на ситуацию в PHP, когда сообщество начало применять хорошие патерны проектирования, но потребовалось некоторое время, чтобы объяснить всем вещи типа «не подключайтесь к базе данных и не получайте записи во view, хорошо?». Ситуация у нас, конечно, сильно лучше, чем у PHP тогда, но я вижу аналогию. Так что да, избавление от вредных привычек и продолжение эволюции экосистемы — именно те задачи, которые нам нужно сейчас решить. Интересно, что в сообществе есть много людей, которые полностью не согласятся со мной, и это хорошо: сообщество Ruby достаточно велико, чтобы иметь много разных мнений. Важно иметь разнообразную экосистему, до сих пор мы были в основном монокультурой, собранной вокруг Rails. Это особенно заметно, если посмотреть на вакансии, которые есть на рынке.

                    На твой взгляд, какова самая важная задача, которая должна быть исправлена / реализована в MRI, чтобы сделать Ruby намного лучше, чем сейчас?

                    Мой ответ не оригинален — улучшить concurrency. Я бы хотел прогресса в унификации proc / lambda / method-object, а еще новые фичи, например поддержку композитных procs. Если бы функции в Ruby стали основными строительными блоками — это было бы потрясающе. Я думаю, что Ruby должен более четко раскрывать свою функциональную сторону, я считаю ее чрезвычайно полезной, но трудно убедить в ее важности некоторых людей, поскольку они застряли в парадигме OOП.

                    Как стек dry-* изменился по сравнению с его первоначальной идей? Что изменилось во время его разработки? Почему это произошло?

                    Изначальная идея состояла в том, чтобы создать набор небольших библиотек, которые можно было бы использовать для создания больших вещей, но в итоге у нас вышло большое количество библиотек, от самых маленьких, до относительно больших и сложных гемов. Причина, по которой это произошло, довольно проста — некоторые концепты оказались на поверку хорошими идеями, и они по-прежнему вписываются в философию dry-rb, заключающуюся прежде всего в том, чтобы иметь набор легко компонуемых библиотек, которые не навязывают конкретную структуру приложения. Некоторые из этих идей превратились в dry-rb гемы, такие как dry-system или dry-validation. Оба этих гема достаточно большие (при условии, что вы считаете, что 2k CLOC — большая библиотека, я — считаю).

                    Приходите в эту субботу на RailsClub, чтобы познакомиться с Петром!

                    Традиционно благодарим прекрасные компании, которые поддерживают конференцию. Наш генеральный партнер:
                    image
                    Toptal — распределенная мировая биржа, к которой уже присоединились самые талантливые разработчики со всего мира. Топтал создан инженерами, чтобы помогать компаниям ускоряться и масштабироваться.

                    Будьте в курсе наших новостей, подписавшись на рассылку на сайте railsclub.ru, и следите за обновлениями:
                    RailsClub.ru
                    twitter.com/railsclub_ru
                    facebook.com/railsclub
                    Original source: habrahabr.ru (comments, light).

                    https://habrahabr.ru/post/338278/


                    Метки:  

                    Директор Linux Foundation использует Mac OS X, анонсируя «год Linux на десктопах»

                    Среда, 20 Сентября 2017 г. 09:00 + в цитатник


                    На прошлой неделе состоялось ежегодное мероприятие Open Source Summit, организованное некоммерческой организацией The Linux Foundation. Её руководитель Джим Землин (Jim Zemlin) выступил с докладом, на котором объявил 2017 год «годом Linux на десктопах», однако замеченный посетителями казус заключался в том, что сделано это было с презентацией, запущенной на Mac OS X. Читать дальше ->

                    https://habrahabr.ru/post/338286/


                    Метки:  

                    [Перевод] Взбираясь на непокорённую гору: сложности создания игры в одиночку

                    Среда, 20 Сентября 2017 г. 09:00 + в цитатник
                    PatientZero сегодня в 09:00 Разработка

                    Взбираясь на непокорённую гору: сложности создания игры в одиночку

                    • Перевод
                    Standing at the foot of the mountain

                    Делать видеоигры сложно. Но ещё сложнее делать их в одиночку.

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

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

                    Прыгаем в одиночку


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

                    Jumping off a rock together
                    Держимся за руки, чтобы какой-нибудь умник не притворился, что прыгает, и не струсил в последний момент.

                    Решение начать свой проект заняло у меня очень много времени. У меня было множество сомнений. Большую часть профессиональной карьеры я работал дизайнером, поэтому больше всего волновался о том, осилю ли другие аспекты разработки. Справлюсь ли я с программированием? Получится ли нарисовать хорошую графику? Удастся ли собрать всё вовремя?

                    Одной из статей, помогших мне прыгнуть с обрыва, стала Fake Grimlock: Win Like Stupid.

                    Картинка из этой статьи хорошо описывает её в целом:

                    Venn diagram of how to win
                    Диаграмма Венна о том, как побеждать в жизни. Всю статью тоже стоит прочитать.

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

                    Когда я наконец принял решение уволиться с работы в Сан-Франциско и вернуться назад в Европу, чтобы выпустить собственную игру, мой изначальный план был довольно простым. Создать за 3-6 месяцев небольшую мобильную игру, сделать кучу ошибок, научиться на них и начать новый проект. Я думал, что во второй раз цикл будет быстрее и лучше, а у меня будет гораздо больше шансов на успех.

                    В теории всё звучит отлично, правда? На практике я потратил так много времени на свою первую игру Hang Line, что мне даже не удалось выполнить свой план! Но подробнее об этом ниже.

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

                    Паралич выбора


                    Too many choices
                    Чаще всего в процессе разработки я чувствовал себя, как Гомер

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

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

                    Это может сделать принятие решений невероятно сложным, и, возможно, самым важным из них будет КАКУЮ ИГРУ ВООБЩЕ ДЕЛАТЬ? Столкнувшись с бесконечными возможностями, вы можете оказаться парализованным.

                    Choice paralysis graph
                    Я решил, что в статью нужно добавить хотя бы один график, чтобы было похоже, что я знаю, о чём говорю

                    В первую очередь я постарался создать что-то вроде группы поддержки. Это был канал в Slack с небольшой группой друзей, работающих над своими инди-проектами или закончившими их. Мы писали вопросы/статьи/отзывы и раз в неделю чатились через Google hangout. Эта группа поддержки оказалась полезной в конкретизации концепции, чтобы мне не пришлось полностью доверять только своим инстинктам.

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

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

                    Prototype 1
                    Может выглядеть просто, но надо же с чего-то начинать!

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

                    Одиночество



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

                    Есть несколько аспектов, влияющих на то, насколько одиноко вы чувствуете себя, работая над проектом:

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

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

                    Если вы работаете дома, то обычно будете одиноки в течение дня. Когда я решил начать свой проект, я переехал в другой город, в основном для экономии денег. Это значило, что мне понадобилось время на создание социальных связей, и иногда было время, когда я буквально находился один целый день, а иногда и несколько дней подряд! Я начал немного сходить с ума. Чтобы справиться с этим, я решил распланировать свою неделю так, чтобы выбираться из дома и встречаться с людьми хотя бы раз в сутки.

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

                    Co-working cafe
                    Я хожу сюда раз в неделю просто для того, чтобы перестать сходить с ума

                    Странно, но когда вокруг тебя есть люди, у тебя появляется более сильное ощущение мотивации, даже если они никак не вкладываются в твою работу! А что касается мотивации, то вам её понадобится как можно больше.

                    Нехватка мотивации


                    Работа без коллектива очень сильно влияет на мотивацию. И когда вы работает в одиночку, никто не скажет вам, что пора перестать уже смотреть видео с котятами на ютубе. Иногда мне очень пригождался веб-сайт Toggl. Его порекомендовал мне Райан Дэрси, у которого есть потрясающий пост, объясняющий смысл Toggl и рассказывающий о многом другом: Making Moves.

                    Toggl
                    Toggl — лучший способ заставить себя работать больше часов.

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

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

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

                    People playing the game
                    Даже мой отец играл в Hang Line, а ведь ему уже 84!

                    Стоит заметить, что на том этапе игра выглядела вот так:


                    Раскачивайтесь, избегайте красных объектов, или умрёте. Это всё, что у меня было на тот момент.

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

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

                    На этом этапе моя мотивация была довольно сильной, но я начал сильно беспокоиться о деньгах…

                    Тревога


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

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

                    Noodles
                    Слишком волнуюсь о деньгах и о том, что придётся питаться дошираками каждый день.

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

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

                    Prototype 3
                    По-прежнему не слишком впечатляет, но, по крайней мере, я заменил кубик!

                    Но примерно в этот момент у меня начали возникать действительно сложные задачи, на которые уходила куча времени. Есть древняя поговорка о том, что последние 20% работы занимают 80% времени. Проблема в том, что при создании прототипа и накидывании идей вам кажется, что игра движется очень быстро. Но когда вы переходите к таким задачам, как добавление релизной графики, доведение геймплейных систем до состояния релиза, то начинаете ощущать, что движетесь со скоростью улитки. Я начал сомневаться, что на самом деле смогу успеть доделать игру вовремя…

                    Неуверенность в себе


                    Если и есть одно слово, которое я никогда не хочу больше слышать, так это «индипокалипсис» (Indiepocalypse).

                    Mushroom Cloud
                    Очевидно, все мы обречены, и это очень полезно знать, когда надрываешься, чтобы завершить свою первую игру в одиночку

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

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

                    Нестабильность


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

                    Sad cat
                    Я слышал, что если добавить картинку с котиком, то аудитория читателей любой статьи увеличивается на 500%

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

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

                    Страх провала


                    Изначально я планировал потратить на игру 3-6 месяцев, но через 9 месяцев было очевидно, что предстоит ещё много работы. Проблема заключалась в том, что мои цели и ожидания сместились. Я уже вложил в игру больше денег, потому что работал над ней дольше, поэтому я перестал воспринимать её как первую попытку, на которой можно научиться. Она превратилась в то, что, как я надеялся и даже ждал, может принести мне немного денег. И если бы это не удалось, я бы расстроен намного сильнее.

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

                    Gambling
                    Трата части накоплений на создание видеоигры — это, в сущности, азартная игра

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

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

                    Hang Line iterative history
                    Совершите путешествие назад во времени развития вашей игры и осознайте, насколько это потрясающе

                    Заключение


                    Эта история ещё не закончена. Я работаю над моей игрой Hang Line уже около года, и она всё ещё не готова. Но недавно моя мотивация сильно выросла. Я наконец начал делать шаги по PR и делиться игрой в twitter, facebook и т.д. Я записал трейлер и получил большое внимание прессы, что очень повлияло на меня. Я ощутил, что игра — это что-то реальное, и что она нравится людям.

                    Поэтому моя последняя рекомендация — начните делиться своей работой с миром как можно раньше. Оценка вашей игры случайными людьми оказывает ОГРОМНУЮ помощь.

                    Не стоит думать об этом только с точки зрения PR. Общайтесь с другими разработчиками. В facebook есть отличные группы, например Indie Game Dev Group, в которых люди дают честную и полезную обратную связь. Не бойтесь и просто связываться с разработчиками, выпустившими похожие на вашу игры, просто чтобы попросить советов или рекомендаций. У меня от такого общения были только самые положительные ощущения. Люди, которые раньше не знали об игре, приходили мне на помощь, и это сильно повлияло и на саму игру, и на мотивацию.

                    Если интересно, можете посмотреть недавно опубликованный мной трейлер:




                    А если хотите узнать, как заканчивается эта история, подпишитесь на рассылку на моём сайте: www.hanglinegame.com

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

                    Удачи!
                    Original source: habrahabr.ru (comments, light).

                    https://habrahabr.ru/post/337194/


                    Метки:  

                    Как управлять обращениями в ИТ-отдел

                    Среда, 20 Сентября 2017 г. 08:56 + в цитатник
                    PandaSecurityRus сегодня в 08:56 Администрирование

                    Как управлять обращениями в ИТ-отдел



                      По мере роста числа устройств, которыми необходимо управлять, возрастает число обращений сотрудников компании в ИТ-отдел по разным вопросам. Как централизованно управлять ими, чтобы документировать их и координировать работу сотрудников ИТ-отдела? Рассмотрим на примере облачного RMM-решения Panda Systems Management.

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

                      Но все эти задачи – это непосредственная работа с ПО и «железом», и за их использованием стоят конкретные люди, сотрудники предприятия, которые в своей массе не обладают серьезными ИТ-навыками и знаниями, а потому периодически сталкиваются с теми или иными проблемами. Как им оптимальным и формальным образом взаимодействовать с ИТ-отделом? Как ИТ-отделу принимать такие запросы, не терять их и не забывать про них? Как руководству ИТ-отдела контролировать обработку всех этих запросов?

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

                      Кстати, Вы можете бесплатно зарегистрировать лицензии Panda Systems Management на сайте www.pandasecurity.com и вместе с нами настроить управление обращениями непосредственно в Вашей сети.

                      Задача: системное управление обращениями в ИТ-отдел

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

                      Тикет-система (Ticketing system или система по обработке заявок/обращений) используется для отслеживания каждого инцидента с момента его создания и до момента его закрытия, записывая все промежуточные этапы, через которые он проходит.

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

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

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

                      Вполне логично, что такая тикет-система интегрирована в комплексное RMM-решение, где взаимосвязаны все аспекты управления, контроля и обслуживания ИТ-ресурсов предприятия.
                      Итак, рассмотрим тикет-систему на примере комплексного облачного RMM-решения Panda Systems Management.

                      Описание тикета


                      Каждый тикет (по сути дела – это инцидент или обращение конечного пользователя, кейс) содержит набор полей, которые его описывают:



                      Creator: Создатель тикета. Это может быть устройство (если тикет создан пользователем из локального Агента) или системный аккаунт (если тикет автоматически создан соответствующим монитором Panda Systems Management и назначен техническому специалисту).

                      Site: Группа устройств, к которым принадлежит тикет.

                      Date Created: Дата создания тикета.

                      Status: Существует четыре статуса:

                      New: недавно созданный тикетс описанием проблемы и назначенным техническим специалистом. Еще никакие работы по данной проблеме выполнены не были.

                      In progress: Технический специалист из ИТ-отдела, кому назначен данный тикет, управляет инцидентом.

                      Waiting: Решение инцидента было приостановлено какими-то внешними причинами (недостаток информации, подтверждение изменений пользователем и пр.).

                      Complete: Инцидент был решен и закрыт.

                      Severity: Степень важности тикета. Если тикет был сгенерирован монитором, то будет скопирована степень важности, определенная для данного монитора.

                      Assigned to: Технический специалист, которому был назначении данный инцидент для решения.

                      Summary: Сводная информация по инциденту.

                      Content: Описание инцидента.

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

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

                      Создание тикета


                      Тикеты создаются тремя способами:

                      1. Вручную конечным пользователем (сотрудником предприятия) из локального агента Panda Systems Management, установленного на его компьютере

                      2. Автоматически монитором Panda Systems Management, который зафиксировал условие, определенное как аномалия для устройства пользователя

                      3. Вручную сотрудником ИТ-отдела из консоли управления Panda Systems Management

                      1. Вручную конечным пользователем

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

                      Чтобы зарегистрировать тикет вручную, пользователь должен открыть установленного на его компьютере Агента, нажав правой кнопкой на его иконке, в выпадающем меню выбрать Open, затем в интерфейсе локального агента выбрать закладку Tickets и нажать кнопку New Ticket.



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



                      После создания тикета конечный пользователь может добавлять в него комментарии:



                      Или закрывать его, если инцидент, по его мнению, решен:



                      Тикеты, созданные из агента, автоматически назначаются пользователю аккаунта, настроенному в меню Setup -> Account settings.

                      2. Автоматически монитором

                      При настройке политики монитора в разделе Ticket Details можно настроить опции автоматического создания тикета в том случае, если монитор зафиксирует какое-то аномальное условие на устройстве конечного пользователя:



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

                      3. Вручную сотрудником ИТ-отдела

                      Как правило, это напоминания или задачи, которые добавляются в список тикетов для ИТ-отдела.
                      Чтобы создать тикет, необходимо на уровне аккаунта или сайта перейти на закладку Support и нажать на кнопку New Ticket для создания тикета.



                      Тикеты, созданные на уровне всего аккаунта, не привязываются к сайтам внутри аккаунта и не показываются на уровне какого-либо сайта.

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



                      Управление тикетами


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



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

                      Заключение


                      Комплексное облачное RMM-решение Panda Systems Management позволяет централизованно и удаленно обслуживать корпоративную ИТ-систему, автоматизируя и решая практически весь комплекс ИТ-задач, от мониторинга и инвентаризации до удаленной установки ПО и MDM.

                      Среди прочих задач с помощью данного решения можно также системно управлять обращениями и инцидентами в рамках тикет-системы. Такой подход позволяет упростить и ускорить выявление и решение инцидентов для обеспечения должного уровня функционирования ИТ-системы в целом. А это напрямую влияет на рост производительности труда и конкурентоспособности предприятия.
                      Добивайтесь большего, делая меньше!
                      Original source: habrahabr.ru (comments, light).

                      https://habrahabr.ru/post/338288/


                      Из эскулапов в сисадмины: есть ли жизнь в IT после Клятвы Гиппократа?

                      Среда, 20 Сентября 2017 г. 02:24 + в цитатник
                      Shaltay сегодня в 02:24 Разное

                      Из эскулапов в сисадмины: есть ли жизнь в IT после Клятвы Гиппократа?

                        На написание этого поста меня сподвигло прочтение другого поста моего, во всех смыслах, коллеги: "Из хирурга в разработчики: как в 40 лет сменить профессию?"

                        Дело в том, что наши с автором судьбы, в общем похожи. Я тоже окончил лечебный факультет СамГМУ — в 2001 году. Тоже работаю в IT-компании на руководящей позиции (только не разработчик, а линуксоид-системщик с уклоном в DevOps). Тоже получил второе высшее айтишное образование экстерном — не ради знаний, а исключительно ради того, чтобы иметь диплом. Разница в том, что я ушёл сразу после института, успел поработать в фармбизнесе, в продажах, и даже начальником IT в одной из больниц (а это самый жёсткий опыт, который только может быть в айтишной профессии — вот там реально помогало, что я врач). Теперь вот очередная ступень.

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


                        Через все отзывы к посту коллеги рефреном проходят две основные мысли. Первая — как это здорово, что Вы бросили нищенский оклад и занимаетесь тем, чем нравится! Вторая — в каком ужасном состоянии находится медицина в России, что врачи из неё бегут, а вот в Голландии/США/Чехии/страна мечты по вкусу такое невозможно, там у врачей достойный доход!

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

                        Проще, наверное, разъяснить людям их заблуждения в виде небольшого FAQ-a.

                        Кто уходит из медицины?


                        Из медицины обычно уходят люди достаточно умные и деятельные. Умные, чтобы понимать, что они не нашли себя на этом поприще и никогда не найдут. Деятельные, чтобы иметь решимость всё в одночасье изменить. В моей группе было 9 человек, из медицины ушло 7 (в том числе я), причём, один из двоих оставшихся практикой почти не занимается, а решает вопросы организации здравоохранения. У второго всё отлично, он преуспевающий хирург, и официальный оклад в 20 тысяч рублей его не смущает нисколько. Правда, наша группа, может быть, не показатель — она была экспериментальной, туда собрали всех школьников-медалистов.

                        Куда уходят из медицины?


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

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

                        В айтишники из медицины уходят редко. Но и не настолько редко, чтобы прямо это был уникальный случай. Даже в США есть свой пример — взять вот компанию Bioware. Врачи сделали шедевральные Baldurs Gate и Planescape.

                        Почему врач-айтишник — редкость?


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

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

                        Короче, медицина — это один сплошной танец с бубном. То, над чем стебутся люди айтишных и околоайтишных профессий — в медицине это базовый метод лечебной и научной деятельности. Надо признать, что мы до сих пор толком ничего не знаем во всей полноте даже об элементарных, казалось бы, состояниях человеческого организма. Взять тот же аппендицит. Простейшая операция — аппендэктомия, которую, в теории, обязан уметь выполнить в экстренных условиях любой человек с медицинским дипломом (как и трахеостомию). Каждому врачу известны симптомы заболевания и методы диагностики. А что его вызывает? А почему он возникает у одних людей, и не возникает у других? Да хрен его знает, и не ломай себе голову, ты же хирург? Вот и режь к чёртовой матери, не дожидаясь перитонитов.

                        Почему так много плохих хирургов?


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

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

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

                        Классический пример хирурга-неудачника — это Женя Лукашин из «Иронии судьбы», работающий хирургом в поликлинике. В поликлинике! Кого он там оперирует? Максимум, пишет неразборчивым почерком «Годен» в медицинской карте после вопроса «Жалобы к хирургу есть?»

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

                        Сколько на самом деле получает хирург?


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

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

                        Можно, конечно, дать и больше. Можно вообще ничего не дать — никто, в общем-то, не заставляет и со скальпелем у горла не стоит. Но большинство платит. Так принято.

                        В месяц набегает сумма, вполне сопоставимая с зарплатой тимлида.

                        Почему уход из медицины — не повод для гордости?


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

                        Это не история успеха. Стыдиться нечего, но и вдохновляться ей глупо.
                        Original source: habrahabr.ru (comments, light).

                        https://habrahabr.ru/post/338280/


                        Метки:  

                        Резервное копирование для Zimbra Collaboration Suite

                        Среда, 20 Сентября 2017 г. 00:51 + в цитатник
                        levashove сегодня в 00:51 Администрирование

                        Резервное копирование для Zimbra Collaboration Suite

                          К сожалению, в бесплатной версии Zimbra Collaboration Suite нет встроенного механизма резервного копирования данных. Системным администраторам в компаниях, где решили внедрить это решение, приходится самим придумывать выходы из положения. Чаще всего используются скрипты, которые по времени делают полные резервные копии данных. Для небольших компаний это, конечно, выход, но когда количество пользователей достигает хотя бы 50, то хранение архивов с содержимым их почтовых ящиков начинает занимать непозволительно много места. Плюс восстановление данных становится очень долгой и проблематичной операцией. Нужно другое решение!

                          image



                          На данный момент Zextras Backup — это единственное решение резервирования данных для Zimbra с разными возможностями восстановления: от одноэлементных до полного аварийного восстановления. Все режимы восстановления прозрачны для пользователя и на 100% независимы от ОС исходного и целевого серверов, архитектуры и версии Zimbra. Также Zextras Backup позволяет сделать полный снимок почтовой системы и хранить его в любом месте.



                          Zextras Backup обеспечивает легкое управление всеми настройками резервирования, включая проверку целостности бекапов с помощью Zextras Administration Zimlet. Zextras Backup поддерживает сжатие и дедупликацию, тем самым обеспечивая высокую экономию места на серверах. Размер хранилища становится в среднем на 70% меньше, чем текущий объем данных. Также вы можете исключить из резервирования расширяемые классы обслуживания (Classes of Service) и таким образом еще больше сэкономить место на диске.

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

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

                          6 режимов восстановления


                          Шесть режимов восстановления в Zextras Backup помогут в любой момент восстановить нужные данные, от одного элемента до целого домена.

                          Восстановление с внешнего архива.


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

                          Восстановление элементов.


                          Восстановление элемента почтового ящика по параметру Item ID.

                          Восстановление новой учетной записи.


                          Восстановление всех данных почтового ящика и настроек в точности такими, какими они были в определенный момент времени, с созданием нового скрытого от GAL ящика с теми же элементами и папками.

                          Восстановление удаленных данных.


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

                          Восстановление удаленной учетной записи.


                          Восстановление удаленной учетной записи такой же, какой она была на момент удаления.

                          Восстановление BLOB.


                          Восстановление испорченных BLOB-данных с помощью режима восстановления перекрестных ссылок в базе данных Zimbra и данных Zextras Backup.



                          Алгоритмы резервирования


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

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

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

                          Итого


                          Мы кратко рассказали о возможностях резервного копирования данных на серверах Zimbra с помощью зимлета Zextras Backup и готовы ответить на все вопросы.

                          Zextras

                          Original source: habrahabr.ru (comments, light).

                          https://habrahabr.ru/post/338276/


                          Go быстрее Rust, Mail.Ru Group сделала замеры

                          Вторник, 19 Сентября 2017 г. 23:11 + в цитатник
                          humbug сегодня в 23:11 Разработка

                          Go быстрее Rust, Mail.Ru Group сделала замеры

                            С такой фразой мне кинули ссылку на статью компании Mail.Ru Group от 2015 «Как выбрать язык программирования?». Если кратко, они сравнили производительность Go, Rust, Scala и Node.js. За первое место боролись Go и Rust, но Go победил.

                            Как написал автор статьи gobwas (здесь и далее орфография сохранена):
                            Эти тесты показывают, как ведут себя голые серверы, без «прочих нюансов» которые зависят от рук программистов.

                            К моему большому сожалению, тесты не были эквивалентными, ошибка всего лишь в 1 строчке кода поставила под сомнение объективность и вывод статьи.

                            В статье будет много копипасты из исходной статьи, но я надеюсь, что мне это простят.

                            Суть тестов


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

                            Итак, мы имеем два сценария. Первый — это просто приветствие по корневому URL:
                            GET / HTTP/1.1
                            Host: service.host
                            
                            HTTP/1.1 200 OK
                            
                            Hello World!

                            Второй — приветствие клиента по его имени, переданному в пути URL:
                            GET /greeting/user HTTP/1.1
                            Host: service.host
                            
                            HTTP/1.1 200 OK
                            
                            Hello, user

                            Первоначальный исходный код тестов


                            Node.js
                            var cluster = require('cluster');
                            var numCPUs = require('os').cpus().length;
                            var http = require("http");
                            var debug = require("debug")("lite");
                            var workers = [];
                            var server;
                            
                            cluster.on('fork', function(worker) {
                                workers.push(worker);
                            
                                worker.on('online', function() {
                                    debug("worker %d is online!", worker.process.pid);
                                });
                            
                                worker.on('exit', function(code, signal) {
                                    debug("worker %d died", worker.process.pid);
                                });
                            
                                worker.on('error', function(err) {
                                    debug("worker %d error: %s", worker.process.pid, err);
                                });
                            
                                worker.on('disconnect', function() {
                                    workers.splice(workers.indexOf(worker), 1);
                                    debug("worker %d disconnected", worker.process.pid);
                                });
                            });
                            
                            if (cluster.isMaster) {
                                debug("Starting pure node.js cluster");
                            
                                ['SIGINT', 'SIGTERM'].forEach(function(signal) {
                                    process.on(signal, function() {
                                        debug("master got signal %s", signal);
                                        process.exit(1);
                                    });
                                });
                            
                                for (var i = 0; i < numCPUs; i++) {
                                    cluster.fork();
                                }
                            } else {
                                server = http.createServer();
                            
                                server.on('listening', function() {
                                    debug("Listening %o", server._connectionKey);
                                });
                            
                                var greetingRe = new RegExp("^\/greeting\/([a-z]+)$", "i");
                                server.on('request', function(req, res) {
                                    var match;
                            
                                    switch (req.url) {
                                        case "/": {
                                            res.statusCode = 200;
                                            res.statusMessage = 'OK';
                                            res.write("Hello World!");
                                            break;
                                        }
                            
                                        default: {
                                            match = greetingRe.exec(req.url);
                                            res.statusCode = 200;
                                            res.statusMessage = 'OK';
                                            res.write("Hello, " + match[1]);    
                                        }
                                    }
                            
                                    res.end();
                                });
                            
                                server.listen(8080, "127.0.0.1");
                            }


                            Go
                            package main
                            
                            import (
                                "fmt"
                                "net/http"
                                "regexp"
                            )
                            
                            func main() {
                                reg := regexp.MustCompile("^/greeting/([a-z]+)$")
                                http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
                                    switch r.URL.Path {
                                    case "/":
                                        fmt.Fprint(w, "Hello World!")
                                    default:
                                        fmt.Fprintf(w, "Hello, %s", reg.FindStringSubmatch(r.URL.Path)[1])
                                    }
                                }))
                            }


                            Rust
                            extern crate hyper;
                            extern crate regex;
                            
                            use std::io::Write;
                            use regex::{Regex, Captures};
                            
                            use hyper::Server;
                            use hyper::server::{Request, Response};
                            use hyper::net::Fresh;
                            use hyper::uri::RequestUri::{AbsolutePath};
                            
                            fn handler(req: Request, res: Response) {
                                let greeting_re = Regex::new(r"^/greeting/([a-z]+)$").unwrap();
                            
                                match req.uri {
                                    AbsolutePath(ref path) => match (&req.method, &path[..]) {
                                        (&hyper::Get, "/") => {
                                            hello(&req, res);
                                        },
                                        _ => {
                                            greet(&req, res, greeting_re.captures(path).unwrap());
                                        }
                                    },
                                    _ => {
                                        not_found(&req, res);
                                    }
                                };
                            }
                            
                            fn hello(_: &Request, res: Response) {
                                let mut r = res.start().unwrap();
                                r.write_all(b"Hello World!").unwrap();
                                r.end().unwrap();
                            }
                            
                            fn greet(_: &Request, res: Response, cap: Captures) {
                                let mut r = res.start().unwrap();
                                r.write_all(format!("Hello, {}", cap.at(1).unwrap()).as_bytes()).unwrap();
                                r.end().unwrap();
                            }
                            
                            fn not_found(_: &Request, mut res: Response) {
                                *res.status_mut() = hyper::NotFound;
                                let mut r = res.start().unwrap();
                                r.write_all(b"Not Found\n").unwrap();
                            }
                            
                            fn main() {
                                let _ = Server::http("127.0.0.1:8080").unwrap().handle(handler);
                            }


                            Scala
                            package lite
                            
                            import akka.actor.{ActorSystem, Props}
                            import akka.io.IO
                            import spray.can.Http
                            import akka.pattern.ask
                            import akka.util.Timeout
                            import scala.concurrent.duration._
                            import akka.actor.Actor
                            import spray.routing._
                            import spray.http._
                            import MediaTypes._
                            import org.json4s.JsonAST._
                            
                            object Boot extends App {
                              implicit val system = ActorSystem("on-spray-can")
                              val service = system.actorOf(Props[LiteActor], "demo-service")
                              implicit val timeout = Timeout(5.seconds)
                              IO(Http) ? Http.Bind(service, interface = "localhost", port = 8080)
                            }
                            
                            class LiteActor extends Actor with LiteService {
                              def actorRefFactory = context
                              def receive = runRoute(route)
                            }
                            
                            trait LiteService extends HttpService {
                              val route =
                                path("greeting" / Segment) { user =>
                                  get {
                                    respondWithMediaType(`text/html`) {
                                      complete("Hello, " + user)
                                    }
                                  }
                                } ~
                                path("") {
                                  get {
                                    respondWithMediaType(`text/html`) {
                                      complete("Hello World!")
                                    }
                                  }
                                }
                            }



                            Подлый удар в спину


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

                            Don't click
                            Дело в том, что в примере Node.js и Go компиляция регулярного выражения происходит единожды, тогда как в Rust компиляция выполняется на каждый запрос. Про Scala ничего сказать не могу.

                            Выдержка из документации к regex для Rust:

                            Example: Avoid compiling the same regex in a loop



                            It is an anti-pattern to compile the same regular expression in a loop since compilation is typically expensive. (It takes anywhere from a few microseconds to a few milliseconds depending on the size of the regex.) Not only is compilation itself expensive, but this also prevents optimizations that reuse allocations internally to the matching engines.

                            In Rust, it can sometimes be a pain to pass regular expressions around if they're used from inside a helper function. Instead, we recommend using the lazy_static crate to ensure that regular expressions are compiled exactly once.

                            For example:

                            #[macro_use] extern crate lazy_static;
                            extern crate regex;
                            
                            use regex::Regex;
                            
                            fn some_helper_function(text: &str) -> bool {
                                lazy_static! {
                                    static ref RE: Regex = Regex::new("...").unwrap();
                                }
                                RE.is_match(text)
                            }
                            
                            fn main() {}


                            Specifically, in this example, the regex will be compiled when it is used for the first time. On subsequent uses, it will reuse the previous compilation.


                            Выдержка из документации к regex для Go:

                            But you should avoid the repeated compilation of a regular expression in a loop for performance reasons.

                            Как допустили такую ошибку? Я не знаю… Для такого прямолинейного теста это является существенной просадкой в производительности, ведь даже в комментариях автор указал на тормознутость регулярок:
                            Спасибо! Я тоже думал было переписать на split во всех примерах, но потом показалось, что с regexp будет более жизненно. При оказии попробую прогнать wrk со split.

                            Упс.


                            Восстанавливаем справедливость


                            Исправленный тест Rust
                            extern crate hyper;
                            extern crate regex;
                            
                            #[macro_use] extern crate lazy_static;
                            
                            use std::io::Write;
                            use regex::{Regex, Captures};
                            
                            use hyper::Server;
                            use hyper::server::{Request, Response};
                            use hyper::net::Fresh;
                            use hyper::uri::RequestUri::{AbsolutePath};
                            
                            fn handler(req: Request, res: Response) {
                                lazy_static! {
                                    static ref GREETING_RE: Regex = Regex::new(r"^/greeting/([a-z]+)$").unwrap();
                                }
                            
                                match req.uri {
                                    AbsolutePath(ref path) => match (&req.method, &path[..]) {
                                        (&hyper::Get, "/") => {
                                            hello(&req, res);
                                        },
                                        _ => {
                                            greet(&req, res, GREETING_RE.captures(path).unwrap());
                                        }
                                    },
                                    _ => {
                                        not_found(&req, res);
                                    }
                                };
                            }
                            
                            fn hello(_: &Request, res: Response) {
                                let mut r = res.start().unwrap();
                                r.write_all(b"Hello World!").unwrap();
                                r.end().unwrap();
                            }
                            
                            fn greet(_: &Request, res: Response, cap: Captures) {
                                let mut r = res.start().unwrap();
                                r.write_all(format!("Hello, {}", cap.at(1).unwrap()).as_bytes()).unwrap();
                                r.end().unwrap();
                            }
                            
                            fn not_found(_: &Request, mut res: Response) {
                                *res.status_mut() = hyper::NotFound;
                                let mut r = res.start().unwrap();
                                r.write_all(b"Not Found\n").unwrap();
                            }
                            
                            fn main() {
                                let _ = Server::http("127.0.0.1:3000").unwrap().handle(handler);
                            }
                            


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

                            Окружение


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

                            1. Ноут
                              • Intel® Core(TM) i7-6820HQ CPU @ 2.70GHz, 4+4
                              • CPU Cache L1: 128 KB, L2: 1 MB, L3: 8 MB
                              • 8+8 GB 2133MHz DDR3

                            2. Десктоп
                              • Intel® Core(TM) i3 CPU 560 @ 3.33GHz, 2+2
                              • CPU Cache L1: 64 KB, L2: 4 MB
                              • 4+4 GB 1333MHz DDR3

                            3. go 1.6.2, released 2016/04/20
                            4. rust 1.5.0, released 2015/12/10
                            5. Простите, любители Scala и Node.js, этот холивар не про вас.

                            Интрига


                            ab

                            Попробуем выполнить 50 000 запросов за 10 секунд, с 256 возможными параллельными запросами.

                            Десктоп


                            ab -n50000 -c256 -t10 "http://127.0.0.1:3000/
                            Label Time per request, ms Request, #/sec
                            Rust 11.729 21825.65
                            Go 13.992 18296.71

                            ab -n50000 -c256 -t10 "http://127.0.0.1:3000/greeting/hello"
                            Label Time per request, ms Request, #/sec
                            Rust 11.982 21365.36
                            Go 14.589 17547.04

                            Ноут


                            ab -n50000 -c256 -t10 "http://127.0.0.1:3000/"
                            Label Time per request, ms Request, #/sec
                            Rust 8.987 28485.53
                            Go 9.839 26020.16

                            ab -n50000 -c256 -t10 "http://127.0.0.1:3000/greeting/hello"
                            Label Time per request, ms Request, #/sec
                            Rust 9.148 27984.13
                            Go 9.689 26420.82

                            — Подожди, — скажет читатель. — И стоило тебе строчить статью ради каких-то 500rps?! Ведь это доказывает, что не важно на чем писать, все языки одинаковые!

                            И тут вступает в дело мой шнур. Шнур для зарядки ноутбука, разумеется.

                            Ноут на подзарядке


                            ab -n50000 -c256 -t10 "http://127.0.0.1:3000/"
                            Label Time per request, ms Request, #/sec
                            Rust 5.601 45708.98
                            Go 6.770 37815.62

                            ab -n50000 -c256 -t10 "http://127.0.0.1:3000/greeting/hello"
                            Label Time per request, ms Request, #/sec
                            Rust 5.736 44627.28
                            Go 6.451 39682.85

                            Стой, Go, ты куда?


                            Выводы


                            Я допускаю, что статья компании Mail.Ru Group содержала непреднамеренную ошибку. Тем не менее, за 1.5 года ее прочитали 45 тысяч раз, и её выводы могли сформировать предвзятое отношение в пользу Go при выборе инструментов, ведь Mail.Ru Group, несомненно, прогрессивная и технологичная компания, к чьим словам стоит прислушаться.

                            И всё это время Rust совершенствовался, посмотрите на «The Computer Language Benchmarks Game» Rust vs Go за 2015 и 2017 года. Отрыв в производительности только растет.

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

                            А если тебе нравится Rust, вливайся в сообщество, нам многого не хватает. Того же Tox.

                            Я надеюсь, что я был объективен и непредвзят, справедливость восторжествовала, а моя статья не содержит ошибок.

                            Let the Holy War begin!
                            Original source: habrahabr.ru (comments, light).

                            https://habrahabr.ru/post/338268/


                            Метки:  

                            [Перевод] Padding Oracle Attack: криптография по-прежнему пугает

                            Вторник, 19 Сентября 2017 г. 20:37 + в цитатник
                            tyomitch сегодня в 20:37 Разработка

                            Padding Oracle Attack: криптография по-прежнему пугает

                            • Перевод

                            Эту уязвимость чинят уже пятнадцать лет


                            В хабрапереводе текста четырёхгодовалой давности «Padding Oracle Attack или почему криптография пугает» была подробно описана атака на режим шифрования CBC. В этом режиме каждый очередной блок открытого текста xor-ится с предыдущим блоком шифротекста: в результате каждый блок шифротекста зависит от каждого блока открытого текста, который был обработан к тому моменту.



                            Чтобы пропустить исходное сообщение (произвольной длины) через CBC-шифр, к нему дописывается MAC (хеш для проверки целостности, обычно 20-байтный SHA-1) и затем padding, чтобы дополнить открытый текст до целого числа блоков (обычно 16-байтных):



                            Padding («набивка») состоит из одинаковых байтов, на единицу меньших своей длины: (0) или (1,1) или (2,2,2) или т.п.
                            Таким образом, получатель шифротекста должен
                            1. расшифровать все его блоки;
                            2. прочитать последний байт последнего блока, чтобы определить длину набивки и, соответственно, позицию MAC в открытом тексте;
                            3. проверить корректность набивки и MAC.

                            В 2002 г. французский криптограф Серж Воденэ обнаружил в CBC уязвимость к атакам типа «padding oracle»: если перехватить шифротекст (посредством MitM-атаки), изменять последний байт предпоследнего блока, отправлять изменённый шифротекст на сервер, и следить за его ответом — то по разнице между ответами «некорректная набивка» и «некорректный MAC» можно будет за 256 запросов определить последний байт исходного открытого текста. Тогда MitM начинает изменять предпоследний байт предпоследнего блока, и за 256 запросов определяет предпоследний байт открытого текста, и т.д. — по 256 запросов для расшифровки каждого байта.

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


                            Казалось бы, для защиты от атаки Воденэ достаточно, чтобы сервер возвращал один и тот же код ошибки при некорректной набивке и при некорректном MAC; но эти два случая всё равно удастся различить по времени до ответа сервера: расчёт и проверка MAC занимают ощутимо больше времени, чем просто проверка набивки в последнем блоке.

                            Раз не должно быть разницы, набивка или MAC не прошли проверку — то может показаться, что содержимое набивки вообще незачем проверять: если открытый текст не завершается последовательностью из одинаковых байтов, то он заведомо некорректный, так что и MAC с подавляющей вероятностью не совпадёт. Но если злоумышленник подберёт такой размер шифротекста, чтобы последний блок целиком был занят набивкой, и на MitM-сервере будет заменять его на любой предыдущий блок из того же шифротекста — то сервер сообщит об ошибке только в том случае, если последний байт подставленного блока не расшифруется в (длину_блока–1). Получается такой же «padding oracle», только в профиль. Эта атака получила название POODLE. Современные реализации SSL/TLS обязательно проверяют содержимое набивки, и если оно некорректно — то считают набивку отсутствующей, и отправляют на проверку MAC весь результат CBC-расшифровки целиком. В принципе, клиентам это позволяет не пересылать лишний блок, целиком состоящий из набивки, когда открытый текст (вместе с MAC) изначально состоит из целого числа блоков, и при этом не оканчивается на последовательность одинаковых байтов.

                            После этих исправлений уязвимости «padding oracle» считались устранёнными, пока в 2013 г. пара британских исследователей не изобрели атаку «Lucky 13», в основе которой лежит тот факт, что время расчёта MAC зависит от длины хешируемой строки. Поскольку SHA-1 обрабатывает строку 64-байтными блоками, то злоумышленник может испробовать в качестве двух последних байтов предпоследнего CBC-блока все возможные двухбайтные комбинации, и скачок во времени отклика сервера будет означать переход между 55-байтной хешируемой строкой (один блок SHA-1; в конец хешируемой строки добавляется девятибайтный «трейлер») и 56-байтной (два блока), т.е. между двухбайтной набивкой и однобайтной:


                            Перехватив и изменив HTTPS-запрос 65536 раз, замеряя каждый раз время отклика сервера, в «стерильных» лабораторных условиях можно восстановить последние два байта открытого текста. На практике же на накопление достаточной статистики для восстановления двух байтов потребуется не одна сотня повторений этой серии из 65536 запросов. Таким образом, атака «Lucky 13» представляла скорее теоретическую опасность.

                            Своё название эта атака получила из-за того, что размер заголовка, хешируемого перед «полезной нагрузкой», ограничил перебор вариантов набивки двухбайтными последовательностями. Будь этот заголовок 14-байтным или длинее, скачок во времени отклика сервера пришёлся бы на более короткие куски открытого текста, и перебирать бы приходилось в сотни раз больше вариантов набивки. С другой стороны, будь этот заголовок 11-байтным, скачок бы пришёлся на переход между 8 и 9 блоками открытого текста, и атака была бы совершенно невозможна. Ну а самое счастливое число — конечно же, 12: с такой длиной заголовка для атаки было бы достаточно перебирать значения последнего байта самого по себе, как и в атаке Воденэ.

                            Для защиты от «Lucky 13» разработчики OpenSSL приложили недюжинную смекалку: по сути, во всём коде проверки MAC и набивки нельзя использовать ветвления — иначе время проверки для разных входных данных будет разным! Опуская подробности реализации SHA-1 без ветвления по числу обрабатываемых блоков, сосредоточимся на последнем шаге проверки: сравнение вычисленного значения MAC с фактически записанным в открытом тексте. Чтобы избежать ветвлений, код проверяет весь открытый текст байт за байтом, объединяя по AND разницу между ожидаемым и фактическим значением с «маской MAC» и с «маской набивки», и объединяя по OR результаты проверок всех байтов:

                            Изображённый 32-байтный открытый текст состоит из шестибайтного сообщения, 20 байтов MAC, и шести байтов набивки. Набивка не может быть длиннее 12 байтов (при пустом сообщении), но в любом случае код должен высчитать MAC и проверить все байты сообщения, прежде чем вернуть код ошибки.

                            Ну-ка, а что этот код будет делать, если последним байтом открытого текста будет «12» — заведомо невозможная длина набивки?

                            MAC будет вычисляться для сообщения длины -1!
                            Не важно, каким получится результат — он заведомо бессмысленный; важнее, что маска проверки MAC «сдвинулась» на один байт за начало сообщения — т.е. от получившегося мусорного значения проверяться будут только 19 байтов.
                            А что, если сдвинуть маску MAC целиком за начало сообщения?


                            Теперь на проверку MAC можно не обращать внимания: всё равно все байты разницы будут про-and-ены с нулевой маской! Единственная оставшаяся преграда — проверка содержимого набивки. Все её байты должны быть равны последнему, т.е. 31:


                            Таким образом злоумышленник может проверять, будет ли открытый текст целиком состоять из байтов со значением (длина_шифротекста–1): в этом случае OpenSSL сочтёт шифротекст корректным, и сервер вернёт ошибку более высокого уровня (например, ошибку HTTP).

                            Как использовать такой «оракул»? Теперь MitM-сервер должен действовать намного изощрённее, чем при атаке Воденэ. Предположим, скрипт злоумышленника отправил на HTTPS-сервер POST-запрос, оканчивающийся на 31 байт со значением 31. MitM-сервер перехватит шифротекст, возьмёт от него только два последних блока, а в качестве вектора инициализации возьмёт третий с конца блок шифротекста — и будет в нём при каждом запросе менять первый байт:


                            Из 256 попыток с разными значениями первого байта IV, 255 приведут к ошибке «некорректный MAC или набивка», и одна попытка приведёт к другой ошибке — так мы сможем восстановить 32-ой с конца байт POST-запроса!
                            Увеличим в POST-запросе длину пути на один байт, а тело запроса укоротим на байт — тогда нам будет известен 31-ый с конца байт запроса. Теперь изменим второй байт IV так, чтобы вторым байтом открытого текста опять получилось 31. Снова будем менять первый байт IV, и снова сможем восстановить 32-ой с конца байт запроса!
                            Сдвигая таким образом «просвечиваемый байт», MitM сможет расшифровать последние 16 байтов в POST-заголовке, и, если повезёт, HTTPS-куки окажутся среди этих 16 байтов. Скорость расшифровки получается та же самая, что и в оригинальной атаке Воденэ: до 256 запросов на каждый восстанавливаемый байт. Получается, что попутно с защитой от «Lucky 13» в OpenSSL внесли уязвимость, которая намного серьёзнее, чем сама «Lucky 13»!
                            Техническое замечание: даже если POST-запрос оканчивается на последовательность из байтов 31, перед CBC-шифрованием он будет дополнен MAC и набивкой, так что в описанном виде атака не сработает. Подготовительный этап атаки — варьируя запрашиваемый путь, подобрать такую длину POST-запроса, чтобы MAC и настоящая набивка заняли последние два CBC-блока целиком; затем в ходе атаки эти последние два блока будут отбрасываться, а использоваться будут блоки от пятого до третьего с конца. Наладив такую координацию действий между скриптом, генерирующим HTTPS-запросы, и MitM-сервером, злоумышленник может обеспечить, что результат CBC-расшифровки будет оканчиваться на 31 байт со значением 31.

                            Подводя итоги: на протяжении 15 лет с обнаружения первого «padding oracle», за каждой попыткой устранения таких «оракулов» следовало обнаружение (или даже нечаянное создание!) новых. Интересно, сколько времени пройдёт до обнаружениия следующего «padding oracle» в TLS с использованием CBC-шифров?
                            Original source: habrahabr.ru (comments, light).

                            https://habrahabr.ru/post/338072/


                            Глобальные тренды геймдева: о чем расскажут на «4C: Санкт-Петербург»?

                            Вторник, 19 Сентября 2017 г. 19:35 + в цитатник
                            Всего двадцать лет потребовалось игровой индустрии, чтобы из небольшой тусовки гиков превратиться в ключевой двигатель инноваций. Технологии и идеи, создававшиеся для игр, все сильнее проникают в другие сферы жизни. Графические процессоры теперь не просто обрабатывают графику, а занимаются серьезными вычислениями в медицине и других научных дисциплинах. Виртуальная реальность вовсю используется в автомобильном бизнесе, а дополненная — в промышленной и строительной сфере. Киберспорт станет частью Олимпийских игр. читать далее

                            https://habrahabr.ru/post/338252/


                            Метки:  

                            Инфографика: все 42 космических аппарата, похороненные за пределами Земли

                            Вторник, 19 Сентября 2017 г. 19:06 + в цитатник
                            Tiberius сегодня в 19:06 Разработка

                            Инфографика: все 42 космических аппарата, похороненные за пределами Земли


                              Впечатляющая заставка с сайта Science Magasine

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

                              Вкратце о проекте и о далёких аппаратах-странниках под катом!

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

                              Первая страница инфографики посвящена статистике: какие типы исследовательских станций были запущены; какие страны и в каком объёме предпринимали усилия по изучению других планет (удивительно, но у СССР с США фактически паритет в этом вопросе 19 против 20, соответственно); какова судьба этих аппаратов.

                              На картинке ниже отчётливо прослеживается специализация стран после Лунной гонки: СССР летал больше к Венере, США к Марсу. Хотя, конечно, США обогнали СССР и Россию в освоении дальнего космоса (Юпитер, Сатурн и далее со всеми остановками):

                              Фактический паритет между СССР и США в ближне-планетарной космической гонке

                              Интересно, что судьба оказалась более благосклонна к исследовательским станциям, направленных для изучения Венеры, нежели у коллег, летевших к Марсу. Видимо сказывается расстояние: от Земли до Венеры оно варьируется от 38 до 261 млн. км, а до Марса от 55 до 401 млн. км.


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

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

                              Редакторы журнала Science Magasine определённо не лишены отменного чувства юмора. Кассини стал 42-ым аппаратом земного происхождения, покинувшим Землю и сгинувшим в пучине Космоса. Это явная отсылка к «Главный вопрос жизни, вселенной и всего такого» в культовом романе "Автостопом по Галактике", ответ на который был рассчитан компьютером, как 42.
                              Original source: habrahabr.ru (comments, light).

                              https://habrahabr.ru/post/338174/


                              Метки:  

                              4 распространенные ошибки в дизайне, которые легко исправить

                              Вторник, 19 Сентября 2017 г. 18:31 + в цитатник
                              Logomachine сегодня в 18:31 Дизайн

                              4 распространенные ошибки в дизайне, которые легко исправить

                                image

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

                                Confideal: чистим грязный цвет

                                image

                                Этот логотип прислали Логомашине в ВК.
                                image

                                Тут явная проблема с переходом цветов — градиентом. Между оттенками, которые стоят на разных концах цветового круга, всегда появляется «грязный» цвет. Такую же ошибку допустила Студия Лебедева в своем экспресс-дизайне за 100 000 рублей:

                                image
                                Такой логотип трудно использовать в жизни — предметы с этим цветом выглядят грязными:
                                image
                                Исправить это легко — между комплиментарными цветами нужно добавить один или несколько оттенков в обход «грязного». Например, вот так:
                                image
                                Вместо грязно-зеленого мы использовали оттенок фуксии — логотип стал теплее, ярче, а главное, чище. Можно подобрать и другие оттенки. Такой знак будет заметнее, а фирменные визитки и футболки не будут выглядеть грязными.

                                Кузнецкий техникум: улучшаем читаемость

                                image

                                Нам прислали такой логотип:
                                image
                                Люди редко рассматривают логотип вплотную. Гораздо чаще мы видим лого в движении, в маленьком формате или на расстоянии. Чтобы проверить, как логотип будет выглядеть в боевых условиях, немного размоем его — это называется «squint test».
                                image
                                Стало очевидно, что текст на красной плашке прочесть очень трудно. На это есть три причины.

                                Во-первых, он набран прописными. ВРОДЕ БЫ ВСЕМ ПОНЯТНО, ЧТО ЧИТАТЬ ТАКОЙ ТЕКСТ СЛОЖНО — НА ХАБРЕ ДАЖЕ ЕСТЬ ПРАВИЛО, КОТОРОЕ Я СЕЙЧАС НАРУШАЮ ВО ИМЯ НАГЛЯДНОСТИ. НО КОГДА ДЕЛО ДОХОДИТ ДО ЛОГОТИПОВ, ДАЖЕ ОЧЕНЬ ДЛИННЫЕ НАЗВАНИЯ НАБИРАЮТ ЗАГЛАВНЫМИ. Это делать можно, но осторожно.

                                Во-вторых, текст сделан «выверткой» — белым по красному. Это тоже снижает читабельность.

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

                                Не будем менять композицию, исправим только шрифт посередине — уберем прописные, вывертку и подберем более массивный шрифт:
                                image
                                Проверим:
                                image
                                Даже не смотря на то, что буквы стали мельче, надпись читается лучше. Теперь есть шанс понять, что это Кузнецкий техникум даже не всматриваясь.

                                Aircraft: убираем обводку

                                image

                                image
                                В этом простом знаке, который нам прислали, можно заметить любимый прием начинающих дизайнеров — обвести все, что только можно. Мы уже убирали обводку в одном из прошлых выпусков:
                                image
                                Сама по себе обводка — полезный прием, если использована к месту. Но чаще всего от нее можно просто избавиться — она создает ненужный шум и усложняет логотип. Сравните:
                                image
                                Просто уберите обводку и посмотрите — если знак стал «легче», лучше без нее:
                                image

                                Разноторг: улучшаем композицию

                                image

                                Логотип сети универмагов:
                                image
                                Частая проблема в логотипах и дизайне в целом — плохая композиция. Ее сложно считывать, нет акцентов — непонятно, что главное, а что второстепенное. Создатель этого лого просто «поиграл в тетрис», пытаясь сложить все детали в компактный прямоугольник:
                                image
                                В итоге получилась несоразмерно большая «Р», эмблема-цветок, которая зависла в случайном месте и дескриптор, который не по чему не выровнен. Сравните, насколько понятнее была бы, например, такая композиция:
                                image
                                Элементы всё те же, за исключением гигантской буквы Р, но расположение более простое и понятное. Давайте применим эту схему:
                                image
                                Мы поменяли расположение и размеры элементов. Получилось не идеально, но лучше, чем в оригинале. При составлении композиции надо смотреть на взаимное подчинение и расположение объектов, а не просто «играть в тетрис», загоняя элементы в пустые места. Тогда будут правильно расставлены акценты, знаки будут лучше восприниматься и узнаваться, а надписи будет легче читать.

                                Как итог

                                image

                                Это были четыре частые ошибки в дизайне, которые легко исправить. Присылайте свой дизайн прямо в комментарии или в наш паблик ВК. Мы разбираем ошибки, а иногда полностью переделываем дизайн и показываем новый стиль.

                                И, как всегда, удачи вам и вашим проектам!
                                Original source: habrahabr.ru (comments, light).

                                https://habrahabr.ru/post/338270/


                                Метки:  

                                Поиск сообщений в rss_rss_hh_new
                                Страницы: 1437 ... 1151 1150 [1149] 1148 1147 ..
                                .. 1 Календарь