Программа и материалы курса «Multicore programming in Java»

Добрый день.
Меня зовут Головач Иван, я буду уже второй раз вести спецкурс-вебинар «Multicore programming in Java». В этой статье предлагаю на рассмотрение программу курса и наиболее полезные ссылки по вопросам многопоточности в Java.

Кратко о курсе: стартует 1 сентября, ведется в режиме вебинаров дважды в неделю (понедельник + четверг) в 19.00-22.00 (по московскому времени), состоит из 16 лекций по 2.5 часа (=40 лекционных часов), рассчитан на Java Middle.

1. Модуль #1: Между «железом» и «математикой»
1.1 Программа модуля
1.2 Литература к модулю
2. Модуль #2: java.util.concurrent
2.1 Программа модуля
2.2 Литература к модулю
3. Модуль #3: Fork/Join Framework + Parallel Streams
3.1 Программа модуля
3.2 Литература к модулю
4. Модуль #4: “Неклассические архитектуры”
4.1 Программа модуля
4.2 Литература к модулю

Модуль #1: Между “железом” и “математикой”


Программа модуля

  • “Железо”
    • Архитектура современных процессоров, кэши
    • Memory barriers, read/write reordering, протоколы когерентности кэшей
  • “Математика”/Java Memory Model
    • New JMM — описание «на пальцах»
    • Какие гарантии дают Thread.start()/join(), volatile, final, CAS, lazySet, weakCompareAndSet, классы из j.u.c
    • Формальная спецификация New JMM: happens-before edge, commitment protocol
  • Примитивы/конструкции
    • Double checked locking (broken), safe publishing
    • synchronized+Object.wait()/notify()/notifyAll() — как использовать, какие гарантии, как реализовано в HotSpot
    • Реализуем свои: Dekker’s algorithm, Peterson’s algorithm, Lamport Bakery algotithm


Литература к модулю

Модуль #2: java.util.concurrent


Программа модуля

  • Многопоточные коллекции
    • BlockingQueue-s
    • ConcurrentMap-s: ConcurrentHashMap, ConcurrentSkipListMap
    • Сopy-on-write structures: CopyOnWriteArrayList, CopyOnWriteArraySet
  • “Синхронизаторы”
    • Lock, Condition, ReentrantLock, ReentrantReadWriteLock, Semaphore
    • CountDownLatch, CyclicBarrier, Exchanger, Phaser
  • Пул потоков + Future
    • Executors, ExecutorService, ThreadPoolExecutor, ScheduledExecutorService, ScheduledThreadPoolExecutor
    • Callable, Future, чего не хватает j.u.c.Future
  • Ядро j.u.c: AbstractQueuedSynchronizer + LockSupport
    • Внутреннее устройство j.u.c.AQS
    • Строим свои примитивы на j.u.c.AQS + LockSupport


Литература к модулю

Модуль #3: Fork/Join Framework + Parallel Streams


Программа модуля

  • Fork/Join Framework
    • Решаем задачи в стиле рекурсивного параллелизма
    • Идиомы и типичные задачи
    • Fork/Join Framework — что «под капотом»
  • Parallel Streams
    • Java 8 — работаем с данными через java.util.Stream
    • java.util.Stream.parallel() — что «под капотом»


Литература к модулю

Модуль #4: “Неклассические архитектуры”


Программа модуля

  • Non-blocking algorithm
    • Пакет j.u.c.atomic: AtomicXXX, AtomicXXXArray, AtomicXXXFieldUpdater, AtomicStampedReference, AtomicMarkableReference
    • Классификация: blocking, non-blocking, lock-free, wait-free, obstruction free
    • Неблокирующие реализации основных структур данных: stack, queue, deque, hashtable, treemap
  • Архитектуры на основе передачи сообщений (Akka)
    • Библиотека Akka
    • Основные шаблоны, типовые архитектуры
    • Плюсы и минусы архитектур на основе передачи сообщений
  • Software Transactional Memory (STM)
    • Библиотека clojure.lang.*
    • Плюсы и минусы архитектур на основе транзакционной памяти
  • Persistent Data Structures
    • Плюсы и минусы персистентных структур данных
    • Персистентные реализации основных структур данных
    • Библиотека pcollections


Литература к модулю

Общая литература

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

Контакты

Стоимость курса
— при оплате до 9 августа — 375$
— при оплате до 16 августа — 400$
— при оплате до 23 августа — 425$
— при оплате до 30 августа — 450$

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

На все вопросы с удовольствием отвечу по следующим контактам (или в комментариях)
skype: GolovachCourses
email: GolovachCourses@gmail.com

ссылка на оригинал статьи http://habrahabr.ru/company/golovachcourses/blog/231755/

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

Меня зовут Юрий Леонычев. Я работаю в службе информационной безопасности Яндекса, где разрабатываю интересные сервисы, комбинирующие методы машинного обучения с анализом BigData. Как вы знаете, у Яндекса большое количество мобильных приложений. И если безопасностью наших веб-приложений мы занимаемся уже давно, то мобильным часто уделялось недостаточно внимания. Частично это было связано с тем, что мобильные приложения считались продолжением своих «больших» братьев, надстройками над WEB API.

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

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

Ошибки нужно не только искать. Очень важно сделать так, чтобы они в приложениях не появлялись. Мы решили использовать уже известную методику от компании Microsoft — Secure Development Lifecycle (SDLC). Конечно, нам хотелось бы, чтобы все, что предлагает SDLC, мы внедрили и использовали сразу, но это слишком сложно. Все контроли SDLC — это скорее идеальный конечный результат.

Безопасность мобильных приложений в Яндексе имеет несколько важных особенностей. Мы активно разрабатываем множество своих мобильных приложений под разные платформы (iOS, Android, Windows Mobile). Очевидно, что проверять все приложения под все платформы силой команды продуктовой безопасности Яндекса было бы очень сложно. Поэтому мы стараемся руководствоваться принципом «Разделяй и властвуй». Для этого мы постоянно взаимодействуем с ключевыми разработчиками мобильных приложений, стараемся повышать их осведомленность о проблемах, связанных с безопасностью. Например, в прошлом году мы проводили специальные тренинги, на которых специалисты по безопасности мобильных приложений из компании IOActive показывали практические приемы взлома и анализа кода. Наши разработчики смогли на практике увидеть, как будут атаковать их приложение и как можно от многих видов атак защититься. Обычно разработчики сами обращаются к нам во всех случаях, когда новые функции или изменения в приложениях влияют на безопасность.

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

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

Многие наши мобильные приложения взаимодействуют с бэкендами на серверах Яндекса. Такие приложения проходят двухэтапную проверку. Мы смотрим на мобильную и серверную часть. Проверяются все API-вызовы, которые делает приложение, так как чаще всего API работают по протоколам HTTP/HTTPS, то тут возможно появление обычных уязвимостей из OWASP Top 10.

Важное отличие подхода к обеспечению безопасности наших мобильных приложений — то, что мы стараемся использовать краудфаундинг при поиске уязвимостей. Мы первыми из российских компаний запустили полноценную программу поощрения за найденные уязвимости и сразу же включили в неё мобильные приложения. За время проведения «Охоты за ошибками» около 10% сообщений были об ошибках в наших мобильных приложениях. Часть из них были очень интересными. Например, один из участников нашей «Охоты» будет рассказывать про уязвимости, найденные в Я.Браузере под iOS на конференции HITB в Амстердаме. Мы к таким найденным ошибкам относимся позитивно, так как они показывают нам потенциально слабые места в коде, на которые стоит обращать пристальное внимание. А пересматривая старый legacy код, разработчики приложений часто исправляют другие проблемы.

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

Безопасность сторонних мобильных приложений

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

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

Модель безопасности для платформы Android

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

"

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

Привилегии

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

Распространенные вредоносные приложения

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

Уже в 2010 году появились сообщения антивирусных компаний о первых заражениях мобильных устройств вредоносными приложениями, отправляющими SMS на короткие платные номера (примеры раз и два). Функциональность таких приложений была очень простой. Они уже при установке просили право на отправку SMS, что и делали при первом запуске. В тех приложениях не редки были ошибки, из-за которых SMS вовсе могли не отправляться или уходить не на те номера. За четыре года вредоносные приложения существенно эволюционировали, но большую часть из них до сих пор составляют простейшие программы, нацеленные на быстрое получение прибыли. По данным ЛК, за 2013 год 36% троянов под Android отправляли платные SMS-сообщения. Новые успешные вредоносные приложения копируются много раз, поэтому трояны для Android не слишком разнообразны.

Методы обнаружения: статические и динамические

Для успешного обнаружения вредоносных приложений комбинируются различные методики: используются сигнатуры, эвристики, эмуляция приложений. Но рост количества таких программ привел к тому, что потребовались методики для автоматизированного выполнения задач, которые зачастую приходится делать антивирусным аналитикам. Для Android некоторые методы сразу не были достаточно эффективны. Эмуляция приложений была затруднена огромной фрагментированностью платформы, не слишком стабильной работой эмулятора и простыми методами его детектирования. Многими исследователями предлагалось использовать методы машинного обучения для того, чтобы находить вредоносные программы. Мы также решили пойти по этому пути и вместе с Yandex.Store год назад был запущен классификатор загружаемых программ, использующий наши алгоритмы машинного обучения (презентация на YaC’13).

Построение классификатора

Выбор факторов классификации

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

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

Оценка эффективности детектирования и скорости работы

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

Эволюция факторов и переобучение системы

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

Будущее системы

Поддержка новых механизмов исполняемых файлов

Платформа Android очень динамично развивается. За прошедшие два года появился ART, изменились некоторые разрешения, поменялись сами устройства. Соответственно дорабатывать анализатор приложений нужно постоянно. Сейчас есть идеи по развитию проекта в двух направлениях: первое — повышение качества статического анализа за счет усиления проверок нативного кода; второе — внедрение динамического анализа для проверки приложений.

Изменения факторов

Улучшение статического анализа за счет проверок нативного кода необходимо, так как разработчики вредоносных приложений стали более активно использовать JNI. Сейчас уже можно писать полноценные Android-приложения на C++ без особых проблем.

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

ссылка на оригинал статьи http://habrahabr.ru/company/yandex/blog/231783/

Push рассылки на PHP (Android и IOS). Минимальное готовое решение

GCM

О рассылке Push уведомлений уже много раз писали на Хабре, например тут и тут, но прямого руководства к действию до сих пор нет. Итак, если интересно, прошу под кат.

Регистрация токенов устройств

В первую очередь разработчик приложения творит магию, в которой указывает адрес регистрации, он может быть таким: htpp://test.ru/secret/android?token=value и htpp://test.ru/secret/ios?token=value.
Самое примечательное что защиты от левых регистраций просто нет, хотя может магия подвела либо была не совсем качественной, если все таки защита есть, отпишите в комментариях, я обязательно дополню статью полезным советом.

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

Пример токена для android:

APA91bFY-2CYrriS-Dt6y9_dGHhkPVwy7njqFpfgpzGYlDT4l0SQeqKr-lc1OM0a2DQ33S3EKwy2YJn-upKxOT6rNwgk350xUM3g8VX65rkGocOQX80Ta34pwXo6fyn-usoaGUAm4lzsqbCL-gkzHZZXRX39kUQfnA

IOS:

628a3f4a28bb994bb7c9a4143950d240c6d5a1dab8621e9ed61a2109a074f832

На этом шаге с регистрацией устройств мы закончили.

Рассылка уведомлений

Apple использует сервис APNS, а Google GCM (C2DM считается устаревшим, учитывайте это) и после прочтения документации можно перейти к любимому делу, а именно к велосипедостроению, но бюджет был ограничен и я начал поиски готовых решений. Самое годное что встретилось это ApnsPHP и GCMMessage, работают как на 5.3+ так и на 5.4+.

При использовании библиотек самое главное получить правильные сертификаты и секретную фразу в случае с APNS и секретный токен для работы с GCM.

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

function fnSendAndroid($tokens, $text, $config) {     $sender = new CodeMonkeysRu\GCM\Sender($config['androidTokenAuth']);     $message = new CodeMonkeysRu\GCM\Message($tokens, array("message" => $text));      try {         $response = $sender->send($message);          if ($response->getFailureCount() > 0) {             $invalidRegistrationIds = $response->getInvalidRegistrationIds();             foreach($invalidRegistrationIds as $invalidRegistrationId) {                 //Remove $invalidRegistrationId from DB                 // на входе значение APS91bFY-2CYrriS-Dt6y9_dGHhkPVwy7njqFpfgpzGYlDT4l0SQeqKr-lc1OM0a2DQ33S3EKwy2YJn-upKxOT6rNwgk350xUM3g8VX65rkGocOQX80Ta34pwXo6fyn-usoaGUAm4lzsqbCL-gkzHZZXRX39kUQfnA                   fnDeleteToken($invalidRegistrationId);             }         }         if ($response->getSuccessCount()) {             echo 'отправлено сообщений на ' . $response->getSuccessCount() . ' устройств';         }     } catch (CodeMonkeysRu\GCM\Exception $e) {          switch ($e->getCode()) {             case CodeMonkeysRu\GCM\Exception::ILLEGAL_API_KEY:             case CodeMonkeysRu\GCM\Exception::AUTHENTICATION_ERROR:             case CodeMonkeysRu\GCM\Exception::MALFORMED_REQUEST:             case CodeMonkeysRu\GCM\Exception::UNKNOWN_ERROR:             case CodeMonkeysRu\GCM\Exception::MALFORMED_RESPONSE:                 fnLog('Ошибка отправления на андроид ' . $e->getCode() . ' ' . $e->getMessage());                 break;         }     } }  

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

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

function feedback($config) {     $feedback = new ApnsPHP_Feedback(         ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION, $config['apn']['sert']     );     $feedback->setProviderCertificatePassphrase($config['apn']['passphrase']);     $feedback->setRootCertificationAuthority($config['apn']['RootCertificat']);      $feedback->connect();      $aDeviceTokens = $feedback->receive();     if (!empty($aDeviceTokens)) {         foreach ($aDeviceTokens as $DeviceToken) {             /**              * формат              * [timestamp] => 1406040206              * [tokenLength] => 32              * [deviceToken] => 738d005a11bca268e2f1bffbfed88a456e261020b9277883cde14d9c8f47cde0              */             //'DELETE LOW_PRIORITY FROM tokens WHERE token=:token';             fnLog('Feedback - Удален токен ' . $DeviceToken[deviceToken]);         }     }      $feedback->disconnect(); }  

Затем сама отсылка:

function fnSendIos($tokens, $text, $config) {     $push = new ApnsPHP_Push(         ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION, $config['apn']['sert']);      // Set the Provider Certificate passphrase     $push->setProviderCertificatePassphrase($config['apn']['passphrase']);      $push->setRootCertificationAuthority($config['apn']['RootCertificat']);      $message = new ApnsPHP_Message();     $listTokens = array();     foreach ($tokens as $token) {         $message->addRecipient($token);         $listTokens[] = $token;     }      $push->connect();      $message->setText($text);     $push->add($message);     $push->send();     $push->disconnect();      $aErrorQueue = $push->getErrors();     if (!empty($aErrorQueue)) {         fnLog('Ошибка отправки ios  -  ' . print_r($aErrorQueue, true));         if (is_array($aErrorQueue)) {             foreach($aErrorQueue as $error) {                 if (isset($error['ERRORS']) && is_array($error['ERRORS'])) {                     foreach ($error['ERRORS'] as $m) {                         if (isset($m['statusMessage']) && $m['statusMessage'] == 'Invalid token') {                             $arrayID = $m['identifier'] - 1;                             if (isset($listTokens[$arrayID])) {                                 //DELETE LOW_PRIORITY FROM tokens WHERE token=:token'                                 fnLog('Удален ошибочный токен ' . $listTokens[$arrayID]);                             }                         }                      }                 }             }         }     } }  

Если Вы не напутали с сертификатами, то рассылка пройдет успешно.

Вот такой кондоминимум получился.

ссылка на оригинал статьи http://habrahabr.ru/post/231727/

BladeRoom выходит на рынок США

BladeRoom вывел на рынок США новое поколение модульных дата-центров. Британская компания объединилась с Modular Power Solutions для организации американской ветки BladeRoom, что позволит производить сборные элементы конструкции на фабрике в Мичигане. Это, в свою очередь, позволит организовать строительство модульных дата-центров на площадках клиентов по всем Соединенным Штатам. В январе 2014 года компания открыла технологический центр в Чикаго, чтобы представить свои проекты.

В Европе, Азии и Африке BladeRoom выстроила более 30 ЦОД, используя проекты, которые могут быть реализованы менее чем за 20 недель. Среди них — Merlin, дата-центр CapGemini в Великобритании, один из самых мощных в мире. BladeRoom сообщает, что такие проекты при использовании естественного охлаждения могут дать показатель PUE 1.09 – 1.17.

Компания с 20-летним стажем пришла в этот бизнес своим особым путем. Изначально BladeRoom занималась строительством модульных коммерческих кухонь, в т.ч. для Олимпийских игр, что требовало знаний в области управления тепловой энергией. Также было построено более 150 модульных операционных для больниц, технически сложных объектов, требовавших качественной фильтрации и вентиляции воздуха для обеспечения стерильности. В 2008 году компания была переименована в BladeRoom и переключилась на строительство модульных ЦОД.

Слабые истоки – глобальные амбиции

«Мы начали с не слишком уверенных позиций – строительства кухонь и операционных залов», – говорит Барнаби Смит, Глава пиар отдела в BladeRoom USA. – «Мы превратили ЦОД в отдельные инженерные части. Используя их, Вы можете создавать объекты любого размера и мощности».

Несмотря на достаточно скромный старт, у BladeRoom серьезные планы по завоеванию американского рынка. «BladeRoom несет прогресс рынку строительства ЦОД в Штатах, т.к. мы единственные производим сборные конструкции по Вашему индивидуальному требованию, сохраняя при этом гибкость и надежность традиционных ЦОД», – говорит Смит – «Наши объекты вводятся в эксплуатацию быстрее и обходятся значительно дешевле стандартных дата-центров благодаря более высокой энергоэффективности».

Modular Power Solutions (MPS) входит в состав холдинга Rosendin (учредителя Rosendin Electric ) и уже обеспечил более 60 МВт модульных мощностей своим клиентам, среди которых Digital Realty Trust и Bank of America. Опыт MPS/Rosendin в модульных структурах стал идеальным дополнением к опыту BladeRoom в IT-строительстве. «Мы всегда следили за рынком США», – сказал Смит. – «В прошлом году мы связались с Rosendin. Они заинтересовались нашей системой».

Гибкость в модульном проектировании

BladeRoom сейчас в авангарде среди компаний, развивающих производство структурных элементов для строительства модульных ЦОД, схожих с традиционным каменным строительством. Другие компании также предлагают аналогичные проекты нового поколения, среди них IO, Datapod, Colt и AST Modular. Но BladeRoom не видит в них конкурентов.

«Конкуренция в этой сфере, котороу мы видели, в основном включает стандартные решения и ЦОД конкретно заданных размеров. Это значительно отличается от того, что делает BladeRoom. Мы конкурируем с теми, кто выбирает традиционные, неизменяемые ЦОД. Иногда, конечно, мы вступаем в соревнование с модульными проектами, но в основном фокусируемся на традиционных.»

BladeRoom – нейтральный IT-поставщик, предлагающий любые решения по расположению шкафов и стоек, и способен предоставить проекты любых размеров и мощностей – от 70 КВт до 1,5 МВт. Оптимизированные для воздушного охлаждения залы в среднем имеют мощность от 1 до 20 КВт на шкаф, с немедленной доставкой шкафов до 50кВт.

Система охлаждения устроена так, что воздушный поток задействует наименьшее необходимое количество энергии и воды. BladeRoom имеет многокамерную систему охлаждения Air Optimizer, которая фильтрует свежий воздух и охлаждает его с помощью испарительного охлаждения. DX система используется в качестве резервной для периодов, когда температура наружного воздуха не поддерживает естественное охлаждение. Данная система позволяет охлаждать воздух, который подается в помещения, за счет непосредственного контакта потоков воздуха с испарители системы охлаждения. Каждый BladeRoom включает программное обеспечение для управления, которое автоматически регулирует охлаждение воздуха при изменении IT-деятельности в машинных залах. Система поддерживает различные плотности для залов данных в пределах одного объекта. Конструкция не использует фальшполов или воздуховодов. «Вот наш секретный ингредиент» — говорит Смит.

Более разнообразные требования в США

Rosendin/MPS задействует свои познания и опыт производства для различных климатических зон по всем штатам. «США – это особенный рынок», – говорит Смит. – «Он имеет совершенно разные требования по всей стране. Здесь не может быть универсального подхода. Потому наша система достаточно гибка, чтобы адаптироваться к потребностям клиентов в любом штате».

Есть решения для сейсмоопасных зон, ветроустойчивые конструкции для регионов, где ураганы и торнадо – реальная проблема. Значительное преимущество BladeRoom, напрямую влияющее на продажи, – это задействование сравнительно небольшого числа людей при возведении конструкций. «Одно из преимуществ нашего подхода – точный расчет материалов и процессов», – говорит Смит. – «Это позволяет нам конкурировать во многих плоскостях».

В международном бизнесе BladeRoom отмечает сильное слияние компаний, предоставляющих “collocation” (колокейшн) и “wholesale” (оптовая торговля), среди которых Metronode (Австралия), Megatron Federal (Южная Африка) и Ark Continuity (Великобритания). Та же ситуация может установиться и в США, где поставщики услуг искали возможность аутсорсить строительство своих объектов. Преимуществом такого подхода сейчас пользуется Compass Datacenters, использующий сборные конструкции и строящий ЦОДы для Windstream, Savvis/CenturyLink и Iron Mountain.

ссылка на оригинал статьи http://habrahabr.ru/company/ua-hosting/blog/231635/

Ruby On Rails — за 2 месяца, на Бали

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

В какой-то момент эта ситуация побудила сделать меня серию скринкастов по Ruby, Rails и Linux. Скринкасты стали популярными, люди начали писать и спрашивать по поводу индивидуальных занятий. И вот сейчас пришло понимание, что пробел в эффективном образовании надо закрывать серьезно, грамотно и основательно. Поэтому мы сделали проект Тру Программер и хотели бы предложить всем желающим поехать с нами на 2 месяца на Бали и погрузиться в изучение Ruby, Rails, Javascript, Dart и всего остального, что связано с веб-разработкой. Это будет обучение в жестком ежедневном режиме совмещенное с отличным отдыхом и новыми впечатлениями.

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

Ну и если есть вопросы, то не стесняйтесь спрашивать в комментариях.

ссылка на оригинал статьи http://habrahabr.ru/post/231781/