...

суббота, 24 февраля 2018 г.

[Из песочницы] iPaaS — облачные ESB… или нет?

Все уже привыкли к облачной инфраструктуре и облачным сервисам, но на тему iPaaS нет ни одной статьи, лишь несколько упоминаний.

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

Определение и основные особенности


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

Основные столпы iPaaS:

  • Простота разворачивания системы – если вы интегрируете облачные инстансы вам нет необходимости устанавливать что-либо. Если вы интегрируетесь с локальным приложением – вся установка будет заключаться в скачивании и установке агента и определении правил файервола для него.
  • Готовые коннекторы – разработчики озаботились тем, чтобы Вам не пришлось ничего кодить (конечно нет). В комплекте с платформой идет широкий набор готовых коннекторов к популярным приложениям и сервисам. Но если требуется интегрироваться с какой-то нетленкой, а подходящего коннектора не нашлось, то вы сможете запилить его сами – в комплекте часто идёт пакет для быстрой разработки.
  • Графический “code-free” интерфейс – весь процесс построения интеграции заключается в сборке блоков логики, как общей, так и индивидуальной для систем (как детское программирование под adruino).
  • Обработка ошибок – удобные логи, с развернутым ответом системы об ошибке, с возможностью переотправить одну/несколько/все ошибочные записи. Уведомления на email.

Архитектура iPaaS


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

image

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

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

Процесс разработки


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

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

Основное в настройке — это интеграционная карта/карты — набор последовательно соединенных блоков логики отражающих интеграционное воркфлоу. Есть стандартные блоки — отвечающие за типовые операции «if/else», «for each» и т.д. и набор команд полученных из соединений. Сопоставление полей между системами осуществляется методом drug&drop, а чтобы реализовать логику трансформарции данных, платформы поддерживают множество экселеподобных функций.

Так это ESB


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

P.S. Статья содержит общее описание iPaaS. Компании не предоставляют описания бекэнда своих продуктов.

Let's block ads! (Why?)

[Перевод] Понимая зависимости

Личный опыт: подборка материалов о виртуальной инфраструктуре, ИБ и трендах на рынке IaaS

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

Здесь мы задействовали главным образом те материалы, которые подготовили наши сотрудники. Они выходят как в нашем блоге на Хабре, так и в корпоративной ленте на сайте 1cloud. Помимо этого, мы учли англоязычные статьи по выбранным темам.


/ Flickr / Dieter R / CC

Знакомство с виртуальной инфраструктурой и IaaS


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

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

  • Почему доверие — основной драйвер роста рынка виртуальной инфраструктуры. Основная идея англоязычного материала заключается в том, что все больше компаний используют в работе виртуальную инфраструктуру. Критический фактор — рост доверия к уровню безопасности решений, предлагаемых IaaS-провайдерами. Этот тренд подтверждает исследование Google Cloud и MIT. О нем — читайте в статье.

  • Как IaaS помогает франчайзи «1С»: опыт 1cloud. По данным РБК за 2016 год, 1С возглавляет топ-50 самых популярных франшиз России. Однако в 2013 году держатель франшизы ужесточил требования к франчайзи, из-за чего небольшие организации были вынуждены расторгнуть партнерские отношения с 1С. В этом материале мы рассказываем о том, с чем приходится сталкиваться таким компаниям: от конкурентов с сомнительной репутацией до откровенного демпинга. В качестве кейса — делимся мнением компании Unitek24. Ее представитель рассказывает о трех принципах, которые позволили организации завоевать и удержать репутацию добросовестного 1С-франчайзи с помощью активного использования инфраструктуры IaaS-провайдера.


  • Как IaaS и SaaS технологии меняют сферу образования. В Entrepreneur заявляют, что традиционное образование не готовит детей к «профессиям будущего». Сколько правды в этом заявлении, и какие существуют альтернативы классическому подходу к обучению? Говорим о том, как IaaS помогает запускать и поддерживать новые продукты этой сфере. Например, MOOC и School in the Cloud. Также на реальных примерах выясняем, каких практических результатов помогает добиться «образование в облаке».

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

Планирование нагрузки и распределение ресурсов


  • В чем причина лишних трат в облаке, и как их сократить. В этом материале речь пойдет об эффективном использовании ресурсов. Согласно аналитическим данным, размеры прямых потерь от оплаты за неиспользуемые облачные ресурсы варьируются от 30 до 45%, а причиной косвенных потерь могут стать, например, колебания нагрузки на инфраструктуру. В статье объясним, как сократить и оптимизировать расходы, и какие инструменты предлагают для этого IaaS-провайдеры.

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

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

  • Resource Central: балансировка нагрузки на виртуальную инфраструктуру. Авторы этого исследования заявляют, что оно уникально, потому что в нем впервые описаны характеристики рабочих нагрузок виртуальных машин крупных облачных провайдеров. Фокус исследования направлен на систему Resource Central, которая собирает данные «телеметрии» и анализирует результаты. Исследование — живой пример работы по теме балансировки нагрузки с элементами машинного обучения.

Хранение данных


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

  • Зачем RAID-массивы виртуальным машинам. Говорим об истории вопроса с акцентом на эффективности использования СХД и снижения объема имеющихся недостатков. Расскажем про уровни RAID-массивов и способах их объединения. Приведем пример использования RAID-массивов в облаке и ответим на вопрос: нужен ли виртуальной машине отдельный RAID-массив.

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

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

  • Как использовать ДНК для хранения данных: отвечает Microsoft. Статья расскажет о преимуществах ДНК-хранилищ и о сложностях реализации проекта, с которыми нужно будет работать здесь и сейчас: например, низкая скорость записи и чтения данных. Этот материал позволяет задуматься о том, станет ли СХД на базе ДНК действительно массовым продуктом.


/ Flickr / Luiz Eduardo / CC

Информационная безопасность


  • Уязвимости Meltdown и Spectre: как защититься. В статье кратко раскроем суть Meltdown и Spectre, и как злоумышленники с их помощью получали доступ к данным пользователей и кимпаний. Подскажем, как определить наличие уязвимостей, и что делать, чтобы от них защититься. Дополнительно рассмотрим ситуацию с Meltdown и Spectre в облачной среде и посоветуем руководства для исправления уязвимостей виртуальных машин, работающих под управлением Windows, Debian, Ubuntu, Red Hat/CentOS.

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


  • Как защитить ИТ-инфраструктуру: 7 базовых советов. По данным Gartner, в 2018 году глобальные расходы на ИБ достигнут 96 миллиардов долларов, что на 8% выше, чем в 2017 году. Несмотря на этот прогноз, построить защищенную инфраструктуру можно и без огромных затрат. В статье расскажем, как снизить риск взлома с помощью 7 простых правил на примере Linux-based систем.

  • Найдена крупнейшая БД украденных паролей: что следует знать. Здесь речь пойдет об обнаруженной базе данных на 1,4 миллиарда учетных записей. Расскажем об особенностях «находки»: какие сведения содержит БД, и почему ее формат позволяет злоумышленникам без труда находить нужную информацию и использовать ее по своему усмотрению. Помимо этого, вспомним самые нашумевшие «сливы» 2012–2017 годов, и подскажем, какие действия стоит предпринять, чтобы защитить свои данные.

  • Как IaaS-провайдер работает с ИБ: угрозы и защита. В этом материале мы разбираем миф о незащищенности облака, рассматриваем самые популярные способы атак и объясняем, какие инструменты провайдеры используют для защиты: от шифрования и двухфакторной аутентификации до регулярных проверок и методов защиты на физическом уровне.

Облачные тенденции


  • Облачные тенденции в 2017 году (Часть 1, Часть 2, Часть 3, Часть 4, Часть 5). Здесь мы познакомим вас с основными тезисами и статистическими данными отчета State of the Cloud. Разберем главные тренды: растущую популярность гибридной инфраструктуры, снижение интереса компаний к частным облакам и уменьшение количества трудностей, связанных с использованием облачных технологий. Помимо этого, расскажем о DevOps и о том, какие инструменты лидируют в этом сегменте.

Другие наши дайджесты на Хабре:

Let's block ads! (Why?)

Битва за сетевой нейтралитет: судебные войны и общественные протесты

Пошел уже третий месяц с тех пор, как Федеральная комиссия по связи США (FCC) отказалась от установленного в стране подхода к регулированию провайдеров. Это решение еще называют отказом от принципов сетевого нейтралитета.

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

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

В этой статье рассмотрим, как формировался действовавший до декабря 2017 года подход к сетевому нейтралитету.


/ Flickr / Free Press Action Fund / CC

Слушается дело: FCC против крупнейших провайдеров


В конце 2010 года Комиссия приняла основные положения сетевого нейтралитета при поддержке нового председателя. Они требуют большей открытости от провайдеров связи и выступают против дискриминации трафика и блокировки разрешенного законодательством контента. Это не устраивало операторов по простой причине — в условиях сетевого нейтралитета они теряли деньги. Логика провайдеров такова: если абонент пользуется сервисом конкурента, он не пользуется нашим, а значит мы теряем деньги. По новым правилам, например, провайдер Time Warner Cable не мог замедлить скорость соединения абонента, который пытается получить доступ к сайту NBC Universal, принадлежавшему конкуренту Time Warner Cable — Comcast.

Реакция операторов на решение FCC не заставила себя ждать — крупнейший по числу абонентов в США провайдер Verizon спустя месяц после принятия новых правил обратился в суд. Verizon пошел по стопам другого оператора — Comcast, — который оспаривал право FCC регулировать отношения провайдеров с источниками трафика. Напомним, суд США вынес решение в пользу Comcast. Но это случилось еще до принятия правил сетевого нейтралитета.

Вскоре к иску Verizon присоединился игрок телекоммуникационного рынка поменьше — MetroPCS, на тот момент пятый по количеству абонентов оператор США. Вскоре после принятия правил сетевого нейтралитета он стал главным участником нового скандала. Тарифы провайдера, подготовленные специально для владельцев телефонов Samsung Craft, дискриминировали Skype, Netflix и другие популярные веб-сервисы.

Так или иначе, федеральный апелляционный суд постановил, что иск Verizon был преждевременным, поскольку правила еще не были опубликованы в Федеральном реестре.

Летом в FCC со стороны инициативной группы Free Press поступила жалоба на Google и Verizon. Google якобы по просьбе оператора отключил для абонентов провайдера доступ к приложениям, которые позволяют использовать устройства как мобильные точки доступа. Эту жалобу также признали преждевременной.

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

Осенью того же года в США зародилось движение против онлайн-пиратства, которое фактически противоречило новым правилам сетевого нейтралитета. В соответствии с законопроектом «Stop Online Piracy Act» (SOPA), провайдеры, поисковые системы и рекламодатели становились соучастниками преступления, если ресурс, с которым они связаны, транслирует или продает пиратский контент. Подразумевалось, что перечисленные стороны обязаны всеми доступными способами блокировать такой трафик самостоятельно по запросу правообладателя. У SOPA был и идеологически близкий к нему законопроект «PROTECT IP Act» (PIPA). Он был в основном направлен на пиратский контент зарубежных сайтов и также предлагал радикальный подход к борьбе с нарушениями авторских прав.

2011-й подошел к концу, и иск Verizon все еще оставался на рассмотрении. Новый год же начался с протестных акций против PIPA и SOPA. Крупнейшие интернет-компании выступили против инициатив, «угрожавших свободному интернету». 18 января Википедия и Reddit отключили доступ к своим англоязычным разделам на целый день в знак поддержки протеста. Это возымело успех — на следующий день сенаторы отказались от рассмотрения спорных законопроектов.

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

Комиссия занималась не одной лишь судебной тяжбой с Verizon. Она также проводила расследование по жалобе Free Press. В июле FCC представила неутешительные для провайдера итоги расследования — Google действительно удалил 11 приложений из своего магазина приложений для Android-устройств по просьбе Verizon, а это прямое нарушение правил сетевого нейтралитета. FCC регулирует только интернет-провайдеров, поэтому Google за этот эпизод не ответил. А Verizon оштрафовали на 1,25 млн долларов.

Следующим «пойманным за руку» оператором стал AT&T. Выяснилось, что провайдер собирается ограничить доступ пользователей iPhone к приложению для аудио- и видеозвонков FaceTime. По планам AT&T, осуществлять звонки через этот сервис можно было бы только на определенном тарифе. FCC предстояло разобраться по заявкам инициативных групп, нарушает ли AT&T правила сетевого нейтралитета.

Изменения в подходе к регулированию интернета происходили не только в США. В ноябре 2012 года Нидерланды стали второй страной в мире после Чили, принявшей правила сетевого нейтралитета. Годом ранее местный провайдер-монополист KPN предпринимал попытки борьбы с WhatsApp, Skype и другими сервисами, которые конкурировали с его предложениями. Парламент принял поправки, которые делали это невозможным. В ответ провайдеры подняли цены на свои тарифы.

Для США же 2012 год, как и предыдущий, заканчивался судебными тяжбами. Verizon и MetroPCS не отступали от своих позиций и подали апелляцию на очередное решение суда, касающееся правил сетевого нейтралитета.

В январе 2013 года AT&T делает шаг назад — он частично возвращает доступ пользователей к FaceTime и тем самым выходит из войны с FCC. В мае группа компаний T-Mobile покупает MetroPCS, и провайдер также прекращает свою борьбу с Комиссией. Таким образом, Verizon остался единственным провайдером, который открыто сопротивлялся политике FCC.

Осенью представители FCC и Verizon встретились в суде. Провайдер получил возможность представить свою позицию. Адвокат Verizon снова говорил о нарушении Первой и Пятой поправок Конституции США, а представители FCC утверждали, что правила сетевого нейтралитета призваны «сохранить интернет в качестве открытой платформы». Стороны разошлись в ожидании окончательного решения.

Для Комиссии год завершился назначением нового главы Тома Уилера (Tom Wheeler). Тома называли «лоббистом кабельной индустрии» и «противником FCC». Вскоре после вступления в должность он заявил, что «у провайдеров интернет-услуг должна быть возможность взимать плату с Netflix и других компаний за более высокую скорость для пользователей». Так Том фактически подтвердил свое несогласие с принципами сетевого нейтралитета.

Сетевой нейтралитет выходит в массы


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

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

После знакового судебного решения ведущие издания с новой силой берутся информировать пользователей о его последствиях — вот только пара примеров: CNN, The New Yorker, Business Insider. Их старания не проходят напрасно — у штаб-квартиры FCC собрались общественные протесты. Проблема отказа от сетевого нейтралитета выходит на новый уровень, когда ее в своей программе освещает ведущий популярного вечернего шоу Джон Оливер (John Oliver). Это приводит к тому, что зрители начинают отправлять FCC свои сообщения в защиту сетевого нейтралитета и обрушивают систему приема комментариев Комиссии.


/ Flickr / Timothy Vollmer / CC

Осенью в городах США продолжаются протесты. К обычным гражданам присоединяются крупные интернет-компании — Twitter, Reddit, Netflix. Чтобы продемонстрировать, каким может быть интернет без сетевого нейтралитета, 10 сентября тысячи сайтов проводят первый День замедления Интернета. В этот день страницы Kickstarter, Netflix, Etsy, Tumblr, Reddit специально долго загружаются, а пользователи могут узнать больше о проблеме сетевого нейтралитета.

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

Последним ярким событием 2015 года с точки зрения борьбы за сетевой нейтралитет стало неожиданное выступление 60 компаний-производителей технологического оборудования, в том числе Intel, IBM и Qualcomm, против реклассификации услуг широкополосной связи. Они предупредили, что более строгие правила для провайдеров не позволят им инвестировать в развитие широкополосной связи. Таким образом, оппозиция сетевого нейтралитета пополнилась новыми сторонниками. Однако, в числе энтузиастов этой концепции все еще оставался президент США.

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

P.S. Предыдущие посты из серии Битвы за сетевой нейтралитет:


P.P.S. Еще несколько статей из корпоративного блога VAS Experts:

Let's block ads! (Why?)

[Перевод] Ловкость рук и никакого мошенничества: практические советы по ускоренному обучению дизайну для разработчиков

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

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

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

Легко опустить руки и сказать: «Я никогда не смогу сделать это должным образом, я не художник!», Но, оказывается, есть уйма ловких приёмов, которые вы сможете использовать, чтобы поднять свою работу на другой уровень, не имея опыта в графическом дизайне.

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

1. Для создания иерархии используем цвет и вес вместо размера



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

«Этот текст важен? Давайте сделаем его крупнее.
Этот текст вторичен? Давайте сделаем его мельче.»

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

«Этот текст важен? Давайте сделаем его жирным.
Этот текст вторичен? Давайте использовать более светлый цвет.»

Попробуйте придерживаться двух или трех цветов:

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

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

  • Обычный шрифт (400 или 500 в зависимости от шрифта) для большинства текстов
  • Более тяжелый (жирный) шрифт (600 или 700) для текста, который вы хотите подчеркнуть

Избегайте шрифтов с весом до 400 в пользовательском интерфейсе; они могут хорошо работать при использовании в больших заголовках, но их слишком сложно читать при уменьшении. Если вы планируете использовать более легкий шрифт (тонкий), чтобы ослабить какой-либо текст, используйте вместо этого более светлый цвет или меньший кегль.

2. Не используйте серый цвет текста на цветном фоне


Окрашивание текста в светло-серый цвет — отличный способ «ослабить» его на белом фоне, но на цветных фонах это не работает также великолепно.

Эффект, который мы видим с серым на белом фоне связан с пониженным контрастом и ослаблением противопоставления.

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

Есть два способа уменьшить контрастность при работе с яркими фонами:

1. Увеличить прозрачность белого текста.

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

2. Подберите цвет, основанный на цвете фона

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

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

3. Сдвиньте тени


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

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

Это относится и к внутренним теням, например, в формах ввода:

Если вам интересно узнать больше о дизайне теней, рекомендую фантастический учебник Material Design Guidelines.

4. Используйте меньшее количество границ


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

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

В следующий раз, когда вы окажетесь «на грани», попробуйте одну из этих идей:

1. Используйте тень элемента (box shadow)

Box shadow отлично справляется с очерчиванием контура, но может быть более тонкой, чем border, выполняя одну и ту же цель и не отвлекая.

2. Используйте два разных цвета фона

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

3. Добавьте дополнительный интервал

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

5. Не увеличивайте значки, которые должны быть маленькими


Если вы разрабатываете что-то, для чего следует использовать большие значки (например, раздел «основные преимущества» посадочной страницы), использовав бесплатный набор значков, таких как Font Awesome или Zondicons, вы можете инстинктивно решить увеличивать размер до тех пор, пока он не будет соответствовать вашим потребностям.

В конце концов, ведь это векторные изображения, и качество не пострадает, если вы увеличите размер, правильно?

Да, векторные изображения не ухудшатся по качеству, когда вы увеличиваете их размер, но значки, которые были нарисованы на 16-24px, никогда не будут выглядеть профессионально, когда вы увеличите их в 3 или 4 раза от их предполагаемого размера. Им не хватит деталей, и они всегда будут чувствоваться непропорционально «коренастыми».

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

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

Если у вас есть бюджет, вы также можете использовать набор значков премиум-класса, предназначенных для использования в увеличенном размере (например, Heroicons или Iconic).

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


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

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

Например, рядом с предупреждающим сообщением:

… или для выделения активного элемента в навигации:

… или даже в верхней части всего макета:

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

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

7. Не каждая кнопка нуждается в цветном фоне


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

Фреймворки, такие как Bootstrap, поощряют это, предоставляя вам меню семантических стилей для выбора при добавлении новой кнопки:

«Это позитивное действие? Сделайте зеленую кнопку. „
“Удаляет ли это данные? Сделайте кнопку красной.»

Семантика — важная часть дизайна кнопок, но есть более важное измерение, которое обычно забывается: иерархия.

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

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

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

«А как насчет деструктивных действий, разве они не всегда должны быть красными?»

Не обязательно! Если деструктивное действие не является основным действием на странице, возможно, было бы лучше использовать 2 или 3 вариант стилизации кнопок.

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

Другие статьи блога Cloud4Y:
Заставьте меня думать
Принципы гештальта в дизайне пользовательского интерфейса
Сравниваем то, что нельзя: дешевый хостинг и облако на стеке VMware
Как создать действительно случайный и доказуемо безопасный пароль
“Cтрашилка” о GDPR

Let's block ads! (Why?)

Падение Stack Overflow: что случилось

В ночь с четверга на пятницу ресурс Stack Overflow был недоступен. Через как-то время работа была восстановлена, однако в пятницу утром сайт снова «упал».

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

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


/ Скриншот страницы с ошибкой StackOverflow

Stack Overflow работает на 9 веб-серверах, каждый из которых обрабатывает от 200 до 500 запросов в секунду. Как отмечает Architecture Lead платформы Stack Overflow Ник Кравер (Nick Craver), в пятницу проблема затронула два сервера: ny-web01 и ny-web04, которые начали «бомбардировать» базу данных Stack Overflow огромным количеством запросов. Это привело к истощению пула потоков IIS и увеличению времени ожидания обработки запросов от БД.

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

Проблема с балансировщиком нагрузки


В идеале HAProxy должен был отключить два «проблемных» сервера автоматически и до того, как потребовалось вмешательство администратора. Но ASP.NET в Stack Overflow выполнял редирект с домашней страницы на /error, а HAProxy получал обратно код ответа 302, который интерпретировал как «успех». Поэтому попыток отключить серверы не предпринимал.


/ фото Hamza ButtCC

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

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

Прошлые отключения


Отметим, что «падения» Stack Overflow случались и в прошлом — было отключение в 2014 году. Однако тогда проблему вызвала массированная DDoS-атака на провайдера сетевых услуг, с которым сотрудничает платформа. В тот раз проблему удалось решить за час.

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

Let's block ads! (Why?)

[Из песочницы] Qt: Пишем обобщенную модель для QML ListView

[Перевод] Анонс Dart 2.0: Оптимизированный для клиентской разработки

[Перевод] Глубинное обучение с подкреплением пока не работает

пятница, 23 февраля 2018 г.

Много-этапные (multi-stage builds) сборки в Docker

Docker начиная с версии 17.05 и выше стал поддерживать многоэтапные сборки (multi-stage builds). С удивлением обнаружил, что никто еще не написал об этом на хабре. Поэтому давайте исправим этот пробел.
Изменения будут особенно полезны тем, кто собирает образы (images) на базе уже существующих и кому необходимо поддерживать их минимальный размер.

Каждый, кто собирал docker images знает, что практически каждая инструкция в Dockerfile добавляет отдельный слой и вам необходимо очистить этот слой от всех лишних артефактов, перед тем как добавить новый слой. Поэтому чтобы создать действительно эффективный Dockerfile раньше вам традиционно предлагали использовать скрипты и другую логику, чтобы поддерживать минимально возможный размер слоя. Обычной практикой было использовалось несколько Dockerfile в зависимости от целей сборки образа — один файл для DEVELOPMENT с определенным набором средства для отладки, профайлинга и всего остального и другой образ, гораздо меньшего размера для развертывания приложение на STAGING или PRODUCTION, с набором компонентов, необходимых для работы приложения.

Допустим у нас есть простой “hello world” HTTP-server, который нужно собраться и запустить тесты, а после собрать минимальные docker образ, которые содержит только исполняемые файлы.

Пример можно взять отсюда

Минимальный Dockerfile у нас будет выглядеть вот так.

Dockerfile:

FROM golang:latest
COPY . .
RUN go test && go build ./src/main.go


Давайте соберем и запустим образ:
docker image build -t hello_world:build .

Если посмотреть метаданные образа: docker image inspect hello_world:build то видно, что он состоит из 6 отдельный слоев и занимает около 800MB. И это только Hello World, а какой размер может быть у реального приложение можно только представить. Поэтому для PRODUCTION уже имеет смысл собрать образ только из исполняемых файлов.

В результате вы должны запустить вот такую последовательность команд:

Запустить базовый контейнер:

docker container run -it --name hello_world hello_world:build

Создать новый контейнер на базе уже существующего и скопировать бинарные файлы:
docker create --name extract hello_world:build
mkdir ./Production/
docker cp extract:/go/main ./Production/main
docker rm -f extract
docker rm -f hello_world

Создать PRODUCTION контейнер, содержащий только необходимые файлы для работы приложения:
docker build --no-cache -t hello_world:latest ./Production/
rm ./Production

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

Так вот много-этапные (multi-stage builds) сборки позволяют значительно упростить этот процесс и описать его внутри Dockerfile. Каждая инструкция FROM может использовать индивидуальный базовый образ и каждая из них начинает новую стадию сборки docker образа. Но основное преимущество, что вы можете копировать необходимые артефакты из одной стадии в другую. В результате все вышеперечисленные шаги могут быть описаны вот так
Dockerfile:

FROM golang:latest as build
COPY . .
RUN go build ./src/main.go

FROM alpine:latest as production
COPY --from=build /go/main .
CMD ["./main"]


И все что вам остается, это выполнить команду:
docker image build -t hello_world:latest .

Note: отдельно стоит добавить, что к предыдущием стадия вы можете обращаться как по алиасу указанному в инструкции FROM golang:latest as build — как в примере выше COPY --from=build /go/main ., так и по индексу COPY --from=0 /go/main .

Ссылки:

Let's block ads! (Why?)

Автоматизация удаления забытых транзакций

USE [ИМЯ_БД]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE   PROCEDURE [srv].[AutoKillSessionTranBegin]
        @minuteOld int, --старость запущенной транзакции (T мин)
        @countIsNotRequests int --кол-во попаданий в таблицу (K)
AS
BEGIN
        SET NOCOUNT ON;
        SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

        declare @tbl table (
                                                SessionID int,
                                                TransactionID bigint,
                                                IsSessionNotRequest bit,
                                                TransactionBeginTime datetime
                                           );
        
        --собираем информацию (транзакции и их сессии, у которых нет запросов, т е транзакции запущенные и забытые)
        insert into @tbl (
                                                SessionID,
                                                TransactionID,
                                                IsSessionNotRequest,
                                                TransactionBeginTime
                                         )
        select t.[session_id] as SessionID
                 , t.[transaction_id] as TransactionID
                 , case when exists(select top(1) 1 from sys.dm_exec_requests as r where r.[session_id]=t.[session_id]) then 0 else 1 end as IsSessionNotRequest
                 , (select top(1) ta.[transaction_begin_time] from sys.dm_tran_active_transactions as ta where ta.[transaction_id]=t.[transaction_id]) as TransactionBeginTime
        from sys.dm_tran_session_transactions as t
        where t.[is_user_transaction]=1
        and not exists(select top(1) 1 from sys.dm_exec_requests as r where r.[transaction_id]=t.[transaction_id]);
        
        --обновляем таблицу запущенных транзакций, у которых нет активных запросов
        ;merge srv.SessionTran as st
        using @tbl as t
        on st.[SessionID]=t.[SessionID] and st.[TransactionID]=t.[TransactionID]
        when matched then
                update set [UpdateUTCDate]                      = getUTCDate()
                                 , [CountTranNotRequest]        = st.[CountTranNotRequest]+1                    
                                 , [CountSessionNotRequest]     = case when (t.[IsSessionNotRequest]=1) then (st.[CountSessionNotRequest]+1) else 0 end
                                 , [TransactionBeginTime]       = t.[TransactionBeginTime]
        when not matched by target then
                insert (
                                [SessionID]
                                ,[TransactionID]
                                ,[TransactionBeginTime]
                           )
                values (
                                t.[SessionID]
                                ,t.[TransactionID]
                                ,t.[TransactionBeginTime]
                           )
        when not matched by source then delete;

        --список сессий для удаления (содержащие забытые транзакции)
        declare @kills table (
                                                        SessionID int
                                                 );

        --детальная информация для архива
        declare @kills_copy table (
                                                        SessionID int,
                                                        TransactionID bigint,
                                                        CountTranNotRequest tinyint,
                                                        CountSessionNotRequest tinyint,
                                                        TransactionBeginTime datetime
                                                 )

        --собираем те сессии, которые нужно убить
        --у сессии есть хотя бы одна транзакция, которая попала @countIsNotRequests раз как без активных запросов и столько же раз у самой сессии нет активных запросов
        insert into @kills_copy (
                                                        SessionID,
                                                        TransactionID,
                                                        CountTranNotRequest,
                                                        CountSessionNotRequest,
                                                        TransactionBeginTime
                                                 )
        select SessionID,
                   TransactionID,
                   CountTranNotRequest,
                   CountSessionNotRequest,
                   TransactionBeginTime
        from srv.SessionTran
        where [CountTranNotRequest]>=@countIsNotRequests
          and [CountSessionNotRequest]>=@countIsNotRequests
          and [TransactionBeginTime]<=DateAdd(minute,-@minuteOld,GetDate());

          --архивируем что собираемся удалить (детальная информация про удаляемые сессии, подключения и транзакции)
          INSERT INTO [srv].[KillSession]
           ([session_id]
           ,[transaction_id]
           ,[login_time]
           ,[host_name]
           ,[program_name]
           ,[host_process_id]
           ,[client_version]
           ,[client_interface_name]
           ,[security_id]
           ,[login_name]
           ,[nt_domain]
           ,[nt_user_name]
           ,[status]
           ,[context_info]
           ,[cpu_time]
           ,[memory_usage]
           ,[total_scheduled_time]
           ,[total_elapsed_time]
           ,[endpoint_id]
           ,[last_request_start_time]
           ,[last_request_end_time]
           ,[reads]
           ,[writes]
           ,[logical_reads]
           ,[is_user_process]
           ,[text_size]
           ,[language]
           ,[date_format]
           ,[date_first]
           ,[quoted_identifier]
           ,[arithabort]
           ,[ansi_null_dflt_on]
           ,[ansi_defaults]
           ,[ansi_warnings]
           ,[ansi_padding]
           ,[ansi_nulls]
           ,[concat_null_yields_null]
           ,[transaction_isolation_level]
           ,[lock_timeout]
           ,[deadlock_priority]
           ,[row_count]
           ,[prev_error]
           ,[original_security_id]
           ,[original_login_name]
           ,[last_successful_logon]
           ,[last_unsuccessful_logon]
           ,[unsuccessful_logons]
           ,[group_id]
           ,[database_id]
           ,[authenticating_database_id]
           ,[open_transaction_count]
           ,[most_recent_session_id]
           ,[connect_time]
           ,[net_transport]
           ,[protocol_type]
           ,[protocol_version]
           ,[encrypt_option]
           ,[auth_scheme]
           ,[node_affinity]
           ,[num_reads]
           ,[num_writes]
           ,[last_read]
           ,[last_write]
           ,[net_packet_size]
           ,[client_net_address]
           ,[client_tcp_port]
           ,[local_net_address]
           ,[local_tcp_port]
           ,[connection_id]
           ,[parent_connection_id]
           ,[most_recent_sql_handle]
           ,[LastTSQL]
           ,[transaction_begin_time]
           ,[CountTranNotRequest]
           ,[CountSessionNotRequest])
        select ES.[session_id]
           ,kc.[TransactionID]
           ,ES.[login_time]
           ,ES.[host_name]
           ,ES.[program_name]
           ,ES.[host_process_id]
           ,ES.[client_version]
           ,ES.[client_interface_name]
           ,ES.[security_id]
           ,ES.[login_name]
           ,ES.[nt_domain]
           ,ES.[nt_user_name]
           ,ES.[status]
           ,ES.[context_info]
           ,ES.[cpu_time]
           ,ES.[memory_usage]
           ,ES.[total_scheduled_time]
           ,ES.[total_elapsed_time]
           ,ES.[endpoint_id]
           ,ES.[last_request_start_time]
           ,ES.[last_request_end_time]
           ,ES.[reads]
           ,ES.[writes]
           ,ES.[logical_reads]
           ,ES.[is_user_process]
           ,ES.[text_size]
           ,ES.[language]
           ,ES.[date_format]
           ,ES.[date_first]
           ,ES.[quoted_identifier]
           ,ES.[arithabort]
           ,ES.[ansi_null_dflt_on]
           ,ES.[ansi_defaults]
           ,ES.[ansi_warnings]
           ,ES.[ansi_padding]
           ,ES.[ansi_nulls]
           ,ES.[concat_null_yields_null]
           ,ES.[transaction_isolation_level]
           ,ES.[lock_timeout]
           ,ES.[deadlock_priority]
           ,ES.[row_count]
           ,ES.[prev_error]
           ,ES.[original_security_id]
           ,ES.[original_login_name]
           ,ES.[last_successful_logon]
           ,ES.[last_unsuccessful_logon]
           ,ES.[unsuccessful_logons]
           ,ES.[group_id]
           ,ES.[database_id]
           ,ES.[authenticating_database_id]
           ,ES.[open_transaction_count]
           ,EC.[most_recent_session_id]
           ,EC.[connect_time]
           ,EC.[net_transport]
           ,EC.[protocol_type]
           ,EC.[protocol_version]
           ,EC.[encrypt_option]
           ,EC.[auth_scheme]
           ,EC.[node_affinity]
           ,EC.[num_reads]
           ,EC.[num_writes]
           ,EC.[last_read]
           ,EC.[last_write]
           ,EC.[net_packet_size]
           ,EC.[client_net_address]
           ,EC.[client_tcp_port]
           ,EC.[local_net_address]
           ,EC.[local_tcp_port]
           ,EC.[connection_id]
           ,EC.[parent_connection_id]
           ,EC.[most_recent_sql_handle]
           ,(select top(1) text from sys.dm_exec_sql_text(EC.[most_recent_sql_handle])) as [LastTSQL]
           ,kc.[TransactionBeginTime]
           ,kc.[CountTranNotRequest]
           ,kc.[CountSessionNotRequest]
        from @kills_copy as kc
        inner join sys.dm_exec_sessions ES with(readuncommitted) on kc.[SessionID]=ES.[session_id]
        inner join sys.dm_exec_connections EC  with(readuncommitted) on EC.session_id = ES.session_id;

        --собираем сессии
        insert into @kills (
                                                        SessionID
                                                 )
        select [SessionID]
        from @kills_copy
        group by [SessionID];
        
        declare @SessionID int;

        --непосредственное удаление выбранных сессий
        while(exists(select top(1) 1 from @kills))
        begin
                select top(1)
                @SessionID=[SessionID]
                from @kills;
    
    BEGIN TRY
                EXEC sp_executesql N'kill @SessionID',
                                                   N'@SessionID INT',
                                                   @SessionID;
    END TRY
    BEGIN CATCH
    END CATCH

                delete from @kills
                where [SessionID]=@SessionID;
        end

        select st.[SessionID]
                  ,st.[TransactionID]
                  into #tbl
        from srv.SessionTran as st
        where st.[CountTranNotRequest]>=250
           or st.[CountSessionNotRequest]>=250
           or exists(select top(1) 1 from @kills_copy kc where kc.[SessionID]=st.[SessionID]);

        --удаление обработанных записей, а также те, что невозможно удалить и они находятся слишком долго в таблице на рассмотрение
        delete from st
        from #tbl as t
        inner join srv.SessionTran as st on t.[SessionID]        =st.[SessionID]
                                                                        and t.[TransactionID]=st.[TransactionID];

        drop table #tbl;
END
GO

Let's block ads! (Why?)

Почему я не люблю DevOps (и современное ПО)

Предисловие


Данная статья очень субъективна и основана на моём опыте в ИТ-индустрии (Я разработчик с 10-и летним стажем и опытом работы в различных проектах, командах и странах (Казахстан, Канада)). Уверен, что многие не поддержат мою точку зрения и могут назвать эту статью «плачем динозвара», но всё-же хочу поделиться ею…

Что такое DevOps


Согласно википедии DevOps набор практик, нацеленных на активное взаимодействие специалистов по разработке со специалистами по информационно-технологическому обслуживанию и взаимную интеграцию их рабочих процессов друг в друга. Т.е. это попытка масштабировать Agile весь процесс разработки ПО включая внедрение и сопровождение. Основное назначение DevOps-а — увеличение частоты релизов и повышение ответственности команды за продукт. Звучит идеально… как и любые маркетинговые слоганы…

С моей точки зрения основная задача DevOps — снижение затрат для бизнеса (что хорошо, но часто это идёт в ущерб качеству продукта).

Как DevOps убивает качество


Если вернуться в 90-ые и 00-е, то для создания продукта необходимо было несколько ролей в команде: аналитик, проектный менеджер, разработчик и тестировщик и внедренец. Каждая из этих ролей важна для создания качественного продукта: аналитик собирает требования и ограждает разработчиков от излишнего взаимодействия с заказчиком/пользователями, менеджер координирует работу команды и решает организационные и финансовые вопросы, разработчик — пишет код и правит баги, тестировшик эти баги находит и проверяет соответствие требованиям, внедренец — устанавливает ПО и является первой линией поддержки пользователей, огорождая разработчиков от лишних вопросов. Эта система хоть и слегка громоздка, но в ней есть чёткое разделение ролей в команде и новый функционал проходит через несколько человек, что повышает качество и позволяет взглянуть на проблему с нескольких точек зрения, что в результате даёт хороший и стабильный результат.

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

Сейчас Agile превращается в DevOps. Под слоганом повышения ответственности за продукт из команд почти полностью выпиливается тестирование, а внедрение существенно урезается и превращается в часть разработки. Роль разработчика повышается, но фактически в команде остаются только они, а само тестирование частично уходит в автоматизацию, частично ложится на плечи бета-тестеров и заказчиков. Сейчас многие компании (в особенности на Западе, где стоимость рабочей силы намного выше) с гордостью заявляют, что у них в командах нет тестировщиков, а разработчики владеют продуктом и отвечают за его качество. Но в чём же тут проблема?

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

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

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

Есть ли решение?


С моей точки зрения — решение есть, и оно достаточно простое. Нам нужно сохранить роли аналитиков, тестировщиков и внедрения в команде. Разделение труда ведёт к повышению качества и производительности (вспомните Стаханова и его идею разделения труда в шахте). Притом всё это легко интерировать в процесс DevOps. Вот моя идея: аналитики собирают требования клиентов и заказчиков и являются product-owner-ами для разработчиков, роль тестировщика и разработчика понятна, внедрение либо сливается с аналитиками, либо тесно с ним взаимодействует (тем самым замыкая цикл DevOps-а). От DevOps-а остаётся высокая степень автоматизации тестирования и внедрения, постоянное наличие стабильной версии продукта и частота релизов (вернее я бы сказал, что каждый билд — это релиз в данном случае). Ещё одно важное правило — быть клиентоориентированным и клиенто-центричным. Т.е. потребности клиентов должны быть превыше всего. Как не странно оба этих принциа успешно используются уже много лет в таких аутсорс компаниях, как EPAM (привет бывшим коллегам!) и отлично себя зарекомендовали там. Правда раньше автоматизация не была так развита, но надеюсь они восполнили уже этот пробел…

Let's block ads! (Why?)

VLC 3.0.0 Vetinari

Неплохо начался и продолжается год для Linux в качестве рабочей станции. Вслед за третьим Wine, настало очередь популярнейшего медиаплеера VLC. После длительного и напряженного цикла разработки VideoLAN анонсировала выпуск видеоплеера с открытым исходным кодом VLC 3.0.0 озаглавленного Vetinari. Новая версия доступна для платформ Linux, *BSD, Mac, IOS, Windows и Android. В новой версии появилось множество современных возможностей: поддержка iPhone X, звука 3D, HDR видео, а также проигрывание видео с оборотом 360 градусов.

VLC X-Box

Среди самых заметных новшеств следует назвать поддержу видео высокой четкости 4k / 8k, видео 10-бит, проброс HD аудио кодеков, меню BD-J BluRay Java, поддержка NAS устройств, Google Chromecast и FTP, SFTP, SMB подключений.


ОС и платформы


  • Android с версии 2.3 по 8.1, также поддерживается Android TV.
  • Chrome OS.
  • Linux, начиная от версии ядра 2.6.26.
  • Windows XP и выше.
  • MacOS с 10.7 по 10.13.
  • iOS с 7 по 11 версии.
  • Unix *BSD операционные системы.

Главные улучшения


  • Поддержка 12-битных HDR кодеков и расширенного цветового пространства.
  • Проброс звука через HDMI для E-AC3, TrueHD и DTS-HD HD аудио кодеков.
  • Чтение с удаленных файловых систем (SMB, FTP, SFTP, NFS).
  • Поддерживаются поверхности Wayland.
  • Поддержка технологии трехмерного звука Ambisonics в формате 8+ каналов аудио.
  • Автоматическое определение внешней звуковой дорожки (ac3, m4a, aac, dts и т. д).
  • Вещание на удаленные трансмиттеры, такие как Chromecast.
  • Динамическое изменение размера субтитров.

Сетевые возможности


  • Доступ по NFS с помощью модуля libnfs.
  • Доступ по SMB с помощью модуля libdsm.
  • Доступ поверх протокола UPnP.
  • Обзор директорий при доступе через SMB/FTP/SFTP.
  • Новый модуль HTTP/TLS для обеспечения доступа через HTTP 2.0.
  • Новый модуль SAT/IP обеспечивает возможность получать DVB-S по сетям TCP/IP.

Аппаратное декодирование


  • VA-API существенно лучше поддерживает 10 бит, HEVC и прямую обработку.
  • Существенно улучшен декодер MMAL и вывод мультимедиа для rPI и rPI2.
  • Поддержка HEVC, с использованием OMX и MediaCodec на Android.
  • Поддержка HEVC, с использованием DxVA2 и D3D11 на Windows.
  • Поддержка MPEG-2, VC1/WMV3 на Android с помощью MediaCodec.
  • MediaCodec использует собственное API NDK начиная с 5-й версии Android.
  • Поддержка механизма нулевого копирования OMX GPU для декодирования и отображения на Android с помощью OpenMax IL.
  • Новый декодер на базе Video Toolbox (iOS / macOS) с поддержкой H.263, H.264/MPEG-4 AVC, H.265/HEVC, MPEG-4 Part 2, и DV.
  • Поддержка декодера форматов VP9 и WMV3 с помощью API OpenMAX.

Проигрыш видео 8K 48fps 360 градусов на VLC 3.0, Android Galaxy S8
VLC 3.0


Декодеры аудио и видео

VLC по умолчанию задействует механизмы аппаратного декодирования видео и вывода на экран на всех поддерживаемых платформах.


  • Новый VA-API механизм декодирования и отрисовки для Linux. По умолчанию Linux и *BSD системы для вывода видео используют OpenGL вместо Xvideo.
  • Аппаратное прямое отображение VA-API, VDPAU, DxVA2/D3D9Ex, Video Toolbox (iOS / macOS) на OpenGL.
  • Новые видео декодеры OggSpots, экспериментальные AV1 и Daala, декодеры TDSC, Canopus HQX, Cineform, SpeedHQ, Pixlet, QDMC и FMVC.
  • Новый аудио декодер MPEG-1 & 2 (I, II, III) + MPEG 2.5 на базе libmpg123.
  • Починили средство формирования пакетов HEVC, H264 научился создавать временные отметки. DTS поддерживает одноименные расширения, например такие как DTS-HD. Декодеры одного с avcodec класса могут поддерживают до 8 аудио каналов.
  • Добавлен декодер изображений BPG на базе libbpg.
  • JPEG изображения определяют верную ориентацию с помощью соответствующего встроенного тэга.
  • Поддержка перекрытия и меню дисков BluRay на языке программирования Java.
  • Поддержка BluRay субтитров, a. k. a. HDMV.

Вывод аудио, видео и фильтры


  • Устранение через-строчной развертки, настройка цвета и резкости, постеризация с помощью D3D9, D3D11, CorelImage и VA-AVPI.
  • Новый видео фильтр для преобразования частоты кадров fps в видео.
  • Библиотека SoX используемая для восстановления дискретизированного сигнала обзавелась звуковым модулем.
  • Обработчик пространственного звука Ambisonics и аудио фильтр Binauralizer в составе модуля Spatialaudio. Binauralizer работает в паре с Ambisonics в потоке 5.1/7.1.
  • Добавлен фильтр развертки zlib, потоковый фильтр ADF.
  • Ускорены действия смены позиции в потоке виде.
  • Добавлен модуль смены тембра звука.
  • Для платформы Android поддерживатеся технология картинка в картинке.
  • Добавлен звуковой модуль для самсунговской открытой мобильной ОС Tizen.
  • PulseAudio поддерживает проброс звука в формате EAC3 и TRUEHD.
  • Добавлена возможность проброса звука в формате HDMI/SPDIF для WASAPI (AC3/DTS/DTSHD/EAC3/TRUEHD).

Контейнеры


  • Поддержка HD-DVD, формата .evo (H.264, VC-1, MPEG-2, PCM, AC-3, E-AC3, MLP, DTS).
  • Переписан код демультиплексоров, улучшения коснулись форматов: MP4, TS, PS, MKV.
  • Поддерживается звуковой формат isofLaC, улучшен поиск в файлах fLaC.

И другие товарищи


  • Поддержка открытых стандартов сжатия видео VP8 и VP9.
  • Обнаружение NetBios ресурсов сети с помощью libdsm.
  • Модули для озвучивания субтитров для macOS / iOS и Windows.
  • Поддержка журнала systemd.

Полный список изменений можно найти по ссылке, указанной в конце.


VLC 3.0.1

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


  • Ускорен поиск в файле контейнера mkv.
  • macOS: доступ к файлам по протоколу SMB.
  • macOS: повышена производительность HEVC 10-бит с декодером VideoToolbox.
  • Ряд исправлений для Direct3d11.

Где взять?

Согласно Repology VLC 3.0 доступна пользователям Debian, Gentoo, Devuan, KaOS в нестабильных ветках соответствующих диструбутивов. Следует также отметить еще одно новшество связанное с релизом — подготовлен самодостаточный Snap пакет.


Использованные материалы


  1. VLC 3.0 Vetinari
  2. Выпуск медиаплеера VLC 3.0.0
  3. Changelog
  4. VLC 3.0 "Vetinari" Officially Released as Biggest Update Ever, Here's What's New

Let's block ads! (Why?)

[Из песочницы] Как найти компанию спонсора визы в США. Tips and Tricks

image

Статья для тех, кто хочет переехать работать в США. На Хабре есть несколько хороших статей про поиск работы в Америке. Тут я постараюсь добавить к ним собственный опыт и поделиться несколькими приемами, которые помогли мне получить долгожданный джоб оффер.

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


Визы.

Есть 4 основных рабочих визы: H-1B, O-1, J-1 и L-1. Все эти визы оформляет ваш работодатель. Вкратце опишу каждую из них.


H-1B

Пожалуй, самая популярная рабочая виза. Для её получения вам необходимо иметь профильное образование или 12 лет опыта работы.
Плюсы:


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

Минусы


  • Самый большой минус этой визы — наличие квоты. Всего в год выдают 65’000 виз + 20’000 виз для тех, кто закончил магистратуру в США. В тоже время каждый год подается более 200’000 заявлений на эту визу. Подать заявление можно только 1 неделю в году — с 1 по 7 апреля.
  • Даже если вы пройдете лотерею и попадете в квоту, вы не сможете въехать в США раньше 1 октября.
  • Ваша жена/муж получит визу H-4, по которой они не смогут легально работать в США.
  • Администрация президента Трампа начала усложнять процесс получения и продления визы H-1B.

O-1

“Виза для талантливых людей”. Для получения визы O-1 вы должны соответствовать 3 из 8 критериев, вот некоторые из них:


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

Плюсы:


  • Виза не предполагает квот и ее можно получить в течение всего года.

Минусы


  • Виза с самыми большими требованиями к кандидату.
  • Если вы захотите сменить работодателя, вам придется заново оформлять визу.
  • Ваша жена/муж получит визу O-3, по которой они не смогут легально работать в США.
    Можете почитать историю переезда Александра Кирова по визе O-1.

J-1

Виза для стажировок и недавних выпускников университетов. Часто компании перевозят программистов по этой визе и потом переводят вас на H-1B или O-1.
Плюсы:


  • Самая легкая для получения виза.
  • Ваша жена/муж получит визу J-2, по которой они смогут легально работать в США.

Минусы


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

Про переезд по визе J-1 подробно описано в этой статье.


L-1

Виза существенно отличается от трех предыдущих. Виза L-1 для внутреннего перевода работника из другой страны в США в рамках одной компании. То есть вы должны проработать минимум год в офисе компании в другой стране, после этого компания может перевести вас в свой офис в США.
Плюсы:


  • Ваша жена/муж получит визу L-2, по которой они смогут легально работать в США.

Минусы


  • Виза не предполагает смену работодателя.

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

Более подробно про визы можно почитать здесь или на сайте Службы иммиграции США


Поиск работодателя.

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

Коротко о визе L-1. Для нее вам нужно найти работодателя в России, у которого есть офис в США, и он будет готов вас перевезти. Это большие продуктовые компании (например, Microsoft) или большие консалтинговые компании (например, EPAM).

Далее я буду рассматривать только поиск работодателя для виз H-1B, O-1 и J-1. Их я рассматриваю вместе, потому что сценарий поиска джоб оффера для этих виз один: вам нужен работодатель в США, который будет готов перевезти вас и выступить спонсором вашей визы. На самом деле, таких компаний немало, но важно знать, где и как их искать.

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


Что писать в резюме?

Помните, главная цель резюме — вызвать интерес у HR. Перечислю несколько пунктов, которые помогли моему резюме пройти через фильтры американских HR:


  • Не стоит выкачивать резюме с hh.ru и LinkedIn. Необходимо самому составить все с нуля.
  • Не стоит писать все компании, в которых вы работали. Даже если все они профильные. Хватит последних трех. Ну или трех самых больших и интересных. Это нужно для того, чтобы уместить резюме на две странице, в идеале на одну. Про весь остальной опыт вы можете рассказать на собеседованиях, а основная задача на этом этапе — получить приглашение на собеседование .
  • К каждой компании/проекту необходимо добавить хотя бы 4-5 пунктов ваших личных достижений. Покажите с какими технологиями работали. Если вы писали unit test’ы во всех компаниях, не надо писать про это три раза. Лучше вспомнить что-то еще.
  • Если вы знаете какие-то еще технологии (хотя бы смотрели пару туториалов и можете воспроизвести) и это не легло в описание ваших проектов, напишите про них отдельно. Чем больше пунктов совпадет с описанием вакансии у HR, тем больше шансов получить заветный звонок.
  • Какую контактную информацию добавлять в резюме? Я пробовал различные комбинации скайпа, email и номера телефона США. Номер телефона США можно купить в Скайпе за $20 на 3 месяца. Но особых преимуществ номер телефона мне не дал, ведь в итоге все упиралось в отсутствие разрешения на работу. В результате я убрал его из резюме и оставил только скайп и email. Пробуйте разные варианты, пока не поймете, какой работает именно в вашем случае.
  • Не надо добавлять информацию про пол, возраст и тем более фотографию. HR в США не будет рассматривать резюме с этой информацией. Все дело в том, что работодатели не хотят, чтобы их отказ был хоть как-то связан с дискриминацией.

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

Также у вашей компании может быть офис в другой стране. Пусть там даже сидит один продажник и от него компания получает 1 клиента в 5 лет. Обязательно пишите это в резюме: MyCompanyName, New York, USA / Moscow, Russia. Такой прием позволит вам значительно увеличить количество откликов.

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


Нужно ли сопроводительное письмо?

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


Dear Google Hiring Team,

I am Software Developer with 5 years of iOS experience. I am very interested in applying for the iOS Developer Position, which I found at your company careers website. My qualifications and experience match your specifications almost exactly.

Please take a moment to review my attached Up-To-Date Resume.

Also, you can look at my last projects:
// две-три ссылки на ваши самые сильные проекты

It would be a sincere pleasure to hear back from you soon to discuss this exciting opportunity.

Regards,
Eugene Trapeznikov
//ваш скайп, email, ссылки на LinkedIn и GitHub.


Где искать вакансии.

Приготовьтесь быть более гибким и пробуйте устроиться не только в топ-5 компаний. Без разрешения на работу необходимо быть готовым к более длительному поиску компании, которая захочет спонсировать вашу рабочую визу. Скорее всего, на первом этапе на 50 отправленных резюме вы получите только 1-2 телефонных интервью с HR. Пробуйте менять резюме и сопроводительное письмо/email. Смотрите на конверсию разных вариантов резюме и отправляйте тот, на который больше реагируют HR. Также важно определить как можно большее количество мест, где находятся ваши потенциальные работодатели. Ниже список тех ресурсов, которые в моем случае работали лучше всего.

Личный список компаний
Первый и самый очевидный вариант — написать во все компании, которые вам нравятся. В США очень много IT-гигантов, которые у всех на слуху. У них красивые офисы и много интересных задач. А еще все они легко перевезут вас в США. Пишите всем: Airbnb, Foursquare, Instacart, Lyft, Uber, Google, Facebook, Square, Dropbox, Amazon…

LinkedIn
Самый популярный сайт для нетворкинга в США. Здесь можно найти вакансии компаний любого размера — LinkedIn Job Search. Но нет отдельного фильтра по компаниям, которые предоставляют рабочие визы, поэтому поиск потенциального работодателя здесь окажется немного труднее. Но обходить этот сайт никак нельзя. Любой, кто ищет работу в штатах, обязан активно пользоваться LinkedIn, потому что им пользуются HR и все ваши будущие коллеги.

AngelList
Пожалуй, сейчас это один из самых популярных сайтов для размещения вакансий в стартапах — AngelList Startup Jobs. Обязательно создайте и максимально заполните там аккаунт. Чем полезен сайт именно для вас: в поиске, под фильтром Job Type, можно указать компании, которые готовы спонсировать визы. Еще в фильтре Location можно выбрать компании, которые готовы работать с вами удалено. Когда и те, и те компании закончатся пишите всем остальным. Больше отправленных резюме — больше шансов получить джоб оффер и еще больше опыта прохождения собеседований.

StackOverflow
На самом популярном сайте для программистов тоже есть раздел для поиска работы — https://stackoverflow.com/jobs. И аналогично с AngelList вы можете отдельно найти компании, которые готовы перевезти вас в США. В фильтрах поиска надо открыть раздел Perks и выбрать все три варианта в Location Options: Offers remote, Visa sponsor, Offers relocation. Все вакансии на StackOverflow, отфильтрованные по этим критериям — Remote Developer Jobs Offering Visa Sponsorship Offering Relocation in United States — Stack Overflow

Компании, которые уже подавали заявления на H1B.
На сайте immihelp.com есть раздел с компаниями, которые спонсировали ранее визы H1B — H1B Sponsors — Database of Companies that have sponsored H1B or LCAs in the past. У всех этих компаний не будет очень важного для нас барьера — они готовы нанимать сотрудников не из США. Нужно выбирать год подачи визы и в поле Job Title ввести желаемую вакансию: iOS, Android, Frontend, Backend… Вот, например, все компании, которые спонсировали H1B визы в 2017 году для backend-разработчиков.

Я брал каждую компанию, находил ее сайт и смотрел, есть ли там сейчас открытые вакансии. Но даже если открытых вакансий на сайте не было, все равно писал в HR.

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

И еще небольшой комментарий. Не надо искать идеально совпадающие с вашим резюме вакансии. Если напротив 50% требований вы можете поставить галочку, смело отправляйте резюме. Если у вас будет больше 90%, скорее всего HR сочтет, что вы уже слишком высокого уровня для вакансии, вам будет скучно работать и вряд ли вас в таком случае пригласят на собеседование.


Где у меня не получилось найти вакансии

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

Доски объявлений
В США есть несколько ресурсов, которые работает 1 в 1 как hh.ru. Самые большие это Dice, Monster, Indeed и CareerBuilder. Сейчас набирает популярность ZipRecruiter. На всех этих сайтах я создал аккаунты и сам активно искал вакансии.

Craiglist
Это главная доска объявлений в США (как Avito в России). Там же есть раздел для поиска работы. Особенность работы сайта — для каждого города необходимо создать отдельное резюме. Я создал резюме для всех больших городов: New York, San Francisco, Los Angeles, Chicago, Boston, Seattle, Dallas, Austin.
Вот тут нужно искать вакансии — New York software/qa/dba/etc — craigslist.
А вот тут появится ваше резюме — New York resumes — craigslist.

Hacker News
Каждый месяц, 1-го числа на Hacker News публикуется две записи: Who is hiring? и Who wants to be hired. В первой нужно искать потенциальных работодателей, во второй — разместить свое резюме.

Есть компании, в которых я бы не советовал даже пробовать искать работу, — индийские боди шопы. Это компании, которые перепродают вас в другие, забирая при этом по 30% вашей з/п. Есть большие компании — Infosys и Wepro, есть сотни маленьких компаний. Скорее всего, как только вы выложите свое резюме куда-то, вам начнут писать/звонить сотни представителей таких компаний. Помните, они ищут людей на краткосрочный контракты и почти никогда не спонсируют визы.


Что делать сейчас?


  • Подготовить резюме.
  • Заполнить аккаунты на всех возможных сайтах по поиску работы.
  • Рассылать каждый день по 50 резюме.

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

Пока ждете приглашение на интервью:


  • Готовьтесь к техническому собеседованию. Я часто встречал, что после телефонного скрининга и до интервью дают решить пару задач на Hacker Rank. Советую решить хотя бы 2-3 задачи на своем языке программирования, чтобы познакомиться с интерфейсом. В идеале, решать каждый день парочку задач за Hacker Rank.
  • Подтяните английский. Часто рекомендуют смотреть сериалы на английском языке. Я бы еще посоветовал подключить подкасты, они позволят вам лучше понимать речь без картинки. Вам предстоит часто общаться по скайпу в формате телефонного звонка, а это гораздо сложнее, чем с видео (по крайней мере, в самом начале).
  • Начинайте общение НЕ с теми компаниями, куда хотите попасть больше всего. Получите сперва практику от собеседований с теми, кто менее приоритетен лично для вас.

Полезные ссылки


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

Let's block ads! (Why?)