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

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

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

 

 -Постоянные читатели

 -Статистика

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

Habrahabr








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

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

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

[recovery mode] Индия приняла закон о «выключении» интернета

Понедельник, 11 Сентября 2017 г. 10:00 + в цитатник
VASExperts сегодня в 10:00 Администрирование

Индия приняла закон о «выключении» интернета

В конце августа жители Индии из штатов Харьяна и Пенджаб обнаружили, что 2G, 3G, 4G, CDMA и GPRS перестали работать. Были отключены и СМС-сообщения. На несколько дней 50 млн человек остались без доступа к мобильному интернету. С учетом, что 77% городских и 92% сельских жителей Индии пользуются мобильными телефонами для выхода в Сеть, почти все цифровые каналы распространения информации для жителей оказались перекрыты.

Это не первый раз, когда власти страны прибегли к такой мере: с начала 2017 года в разных районах производилось 20 частичных отключений. После случая с Харьяном и Пенджабом СМИ обратили внимание на документ, который был выпущен правительством Индии в начале августа. В нем описываются правила и процесс отключения интернета в стране.


/ Flickr / Field Engineer / CC

Право на блэкаут


Документ, изданный Министерством связи Индии, носит название «Временное приостановление обслуживания телекоммуникационных услуг ([в случае] чрезвычайных ситуаций или [в целях соблюдения] общественной безопасности)». Он был опубликован в рамках седьмого раздела «Закона о телеграфе» от 1885 года. По большому счету, он обеспечивает правовой механизм для «отключения» интернета. Ранее процедура не имела четкого юридического фундамента.

Согласно новым правилам распоряжение о блокировке интернета может быть вынесено должностным лицом высшего уровня, отвечающим за внутреннюю безопасность, как на уровне страны, так и на уровне штата. Поводом для отключения могут быть «непреодолимые обстоятельства». Документ разрешает любому сотруднику Объединенного секретариата распорядиться о блокировке, если получение разрешения от Министерства внутренних дел «не представляется возможным». Запрет может сохраняться в течение 24 часов без разрешения Главного управления. Однако любое распоряжение о блокировке должно иметь под собой определенные основания.

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

Почему блокируют?


По данным доклада IMRB, общее распространение интернета в Индии в марте 2017 года составляло 31%. В городской черте этот показатель возрастает вдвое. С учетом объема цифровой экономики, согласно исследованию Института Брукингса, в 2015 году Индия потеряла почти миллиард долларов из-за остановок интернета. Это больше, чем любая другая страна за тот же период.

Правительство Индии объясняет блокировку попыткой защитить граждан. После терактов в ноябре 2008 года в Мумбаи индийский парламент утвердил поправки к «Закону об информационных технологиях», которые расширили возможности правительства по мониторингу. Ограничение доступа встало в один ряд с введением комендантского часа для обеспечения безопасности в случае беспорядков.

В 2017 году большая часть блокировок пришлась на штат Кашмир, территория которого имеет спорный статус. Блокировки также совершались в Харьяне, Раджастхане, Уттар-Прадеше, Мадхья-Прадеше, Западной Бенгалии и Махараштре.

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

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

«Инвесторы больше не будут закрывать глаза на финансовые потери, вызванные приостановкой обслуживания, — считает Питер Мисек (Peter Micek), юрисконсульт в Access Now. — Отключение напрямую вредит крупнейшим мультинациональным компаниям и самым маленьким стартапам, препятствуя мобильным транзакциям и блокируя доступ к рынкам».

Институт Брукингса пришел к выводу, что в период с 1 июля 2015 года по 30 июня 2016 года страны мира понесли ущерб в размере $2,4 млрд в связи с локальными отключениями.

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

P.S. О чем еще мы пишем в нашем блоге VAS Experts:

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

https://habrahabr.ru/post/337584/


Метки:  

Новый VPU Myriad X от Intel обучит дронов самостоятельности

Понедельник, 11 Сентября 2017 г. 09:38 + в цитатник
1cloud сегодня в 09:38 Разработка

Новый VPU Myriad X от Intel обучит дронов самостоятельности

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

    28 августа компания Intel представила визуальный процессор (VPU) Myriad X, который разработан специально для автономных интеллектуальных устройств. Главная особенность чипа — встроенный аппаратный ускоритель для нейросетей (Neural Compute Engine). Он отвечает за обучение искусственного интеллекта на периферийных устройствах, имея при этом низкое энергопотребление. Среди предложенных Intel сфер применения чипа числятся дроны, системы безопасности и наблюдения, VR/AR и другие устройства.


    / Flickr / Bidgee / CC

    По словам разработчиков, Myriad X — первая в мире однокристальная система, специально «заточенная» под ускоренное глубокое обучение. Neural Compute Engine помогает устройствам видеть, интерпретировать и реагировать на окружающую среду в реальном времени. С ускорителем производительность Myriad X достигает триллиона операций в секунду (TOPS).

    «Мы близки к тому, чтобы машинное зрение и глубокое обучение вошли в число стандартных требований к миллиардам ежедневно окружающих нас устройств», — сказал Реми Эль-Уаззани (Remi El-Ouazzane), вице-президент и генеральный менеджер Movidius, компании-разработчика чипов семейства Myriad.

    Архитектура VPU-чипа Movidius Myriad X VPU состоит из нескольких специализированных вычислительных устройств. Это несколько процессоров общего назначения, наряду с 16 процессорами SHAVE (Streaming Hybrid Architecture Vector Engine). Последние работают совместно с нейронным вычислительным движком.

    Процессоры SHAVE состоят из шестнадцати программируемых 128-битных векторных процессоров VLIW, конфигурируемых шин MIPI, аппаратных ускорителей и централизованной архитектуры встроенной памяти.

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

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

    Применение VPU


    Однако наиболее вероятной сферой применения нового чипа в Intel видят беспилотники. Дроны становятся умнее. Например, Spark — мини-дрон от DJI — оборудован набором из камер и датчиков и процессором Vision Movivius Myriad 2, который помогает интеллектуальной системе бортового зрения обнаруживать и избегать столкновения с объектами, создавать 3D-карты, распознавать лица и жесты.

    И достигнутый уровень развития — не предел. По словам Кормака Брика (Cormac Brick), руководителя по бортовым системам искусственно интеллекта в Movidius, дроны учатся думать и реагировать.

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

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

    Есть и еще одно применение VPU нового поколения. В июле Intel представили мобильный модуль Movidius Neural Compute Stick с разъемом USB 3.0. Его задача — обучение искусственного интеллекта на различных устройствах. Характеристики и особенности те же: низкое энергопотребление при высокой производительности, компактность, офлайн-режим работы, нацеленность на приложения машинного зрения.

    Акцент на AI


    По данным Accenture, рынок AI в 12 развитых странах удвоит темпы роста к 2035 году. Например, только в Китае к 2020 году собираются установить 450 млн новых камер видеонаблюдения с системами распознавания лиц. К слову, компания Dahua Technology, которая уже экспериментировала с процессором Myriad 2, занимает второе место на рынке камер наблюдения и базируется в Ханчжоу.

    На AI-рынке у Intel до выхода Myriad X было несколько серьезных противников: Qualcomm Neural Processing Engine, процессор Google TPU 2.0, предназначенный для обучения нейронных сетей, и NVIDIA Tesla V100. По мнению аналитиков Seeking Alpha, самую серьезную конкуренцию Intel на рынке машинного обучения, который достигнет $5 млрд к 2021 году, составляет именно NVIDIA.

    Однако вскоре могут появиться и другие сильные конкуренты. В августе компания Microsoft представила проект Brainwave. Это платформа для глубокого обучения AI в реальном времени с низкой задержкой в обработке запросов. Архитектура Brainwave поддерживает выполнение более 130 тыс. вычислений за цикл. Работа в этом направлении вскоре позволит применять нейронные сети для выполнения бытовых задач.

    О компании Movidius

    Компания Movidius разрабатывает визуальные процессоры для интернета вещей. Штаб-квартира располагается в Сан-Матео, Калифорния. В сентябре 2016 года была приобретена компанией Intel.

    P.S. А вот еще несколько статей из нашего блога:

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

    https://habrahabr.ru/post/337612/


    Метки:  

    [Перевод] Погружение в CSS: метрики шрифтов, line-height и vertical-align

    Понедельник, 11 Сентября 2017 г. 09:23 + в цитатник

    Метки:  

    Зачем мы сделали VOD на WebRTC

    Понедельник, 11 Сентября 2017 г. 08:23 + в цитатник
    flashphoner сегодня в 08:23 Разработка

    Зачем мы сделали VOD на WebRTC


      VOD — это про video on demand, т.е. проигрывание обычных роликов, как это делается на YouTube или другом стриминговом сервисе. WebRTC — это видео реалтайм с низкой задержкой. Вы спросите — как эти две вещи могут быть связаны? Заходите под кат за подробностями.

      Сапорт и багфикс


      Все началось, как обычно, с сапорта. К нам обратилась девушка-программист, предположительно из аутсорсинговой компании в Индии, которая участвовала в разработке мобильного приложения для телемедицины. Одной из хотелок клиента была запись WebRTC видеочата с iOS приложения, с последующим воспроизведением в этом же iOS приложении. Такая запись работала, но при воспроизведении стандартными средствами iOS SDK, обнаружились зеленые артефакты. Точнее даже не артефакты, а вполне четкие прямоугольные области зеленого цвета, занимающие 3/4 экрана. Конечно же это никуда не годилось, и мы приступили к изучению проблемы.


      Воспроизведение записанного WebRTC видео через AVPlayerViewController

      В мобильном приложении для воспроизведения видео, мы использовали стандартные компоненты MPMoviePlayer или AVPlayerViewController, которые могут играть mp4 ролик если указать его http URL, например http://host/sample.mp4. Эти компоненты отыгрывали MP4 видео нормально, но в случае с трансляциями, записанными с iOS приложения, зеленая область никуда не исчезала и все портила.

      WebRTC динамически меняет разрешение потока


      Оказалось, что зеленые артефакты в записи были связаны с тем, что для WebRTC нормально менять разрешение видео на лету. При этом, в файле записи mp4 мы имеем чудесные фреймы разного размера, точнее сначала последовательность одного размера 640x480, потом другого 320x240, и т.д. Такие фокусы замечательно отыгрывает например VLC, без каких либо артефактов, а встроенные компоненты воспроизведения видео в iOS по HTTP дают зеленые артефакты при изменении разрешения видео в битстриме.

      Давайте запустим трансляцию с iOS-приложения и убедимся, что это действительно так. Для тестирования можно воспользоваться нашим мобильным приложением для iOS — Two Way Streaming на базе iOS SDK и демо-сервером WCS5-EU.

      Так выглядит приложение, которое стримит поток на сервер:


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


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

      WebRTC VOD, как решение


      Выходом из сложившейся ситуации стал бы рескейлинг с транскодингом, т.е. декодирование фреймов, приведение к одному разрешению, например 640x480 и запись в этом разрешении. Но если делать так с каждым публикуемым на сервер стримом, ресурсы CPU быстро иссякнут на 10-20 видеопотоках. Поэтому нам требовалось какое-то решение, не задействующее транскодинг.

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

      Осталось реализовать зачитку записанного mp4 и проброс в движок Web Call Server для дальнейшей конвертации в WebRTC. Первые же тесты показали хорошие результаты — зеленые прямоугольники исчезли.

      Так мы получили VOD с воспроизведением не только по WebRTC, но и по всем поддерживаемым протоколам и технологиям: RTMP, RTMFP, RTSP, HTML5 Canvas, Media Source, HLS, WebRTC.

      WebRTC VOD — Live трансляция


      Дальше возник вопрос — “А вдруг пользователи захотят транслировать ролик как поток, всем сразу и одновременно?”.

      В результате, пришлось сделать два типа VOD.

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

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

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

      Для VOD мы ввели следующие схемы:

      Если нужно проиграть ролик персонально, передаем имя потока так:

      vod://sample.mp4

      Если же требуется устроить из ролика полноценную онлайн-трансляцию, то имя потока будет таким:

      vod-live://sample.mp4

      Сам файл sample.mp4 должен лежать в папке сервера WCS_HOME/media и иметь формат MP4 / H.264 + AAC.

      Что же стало с iOS приложением? — спросите вы.

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

      WebRTC VOD в Web плеере


      А теперь посмотрим, как WebRTC VOD выглядит в вебе. Для этого, на стороне сервера скопируем mp4-файл в папку /usr/local/FlashphonerWebCallServer/media. Пусть это будет всем известный Big Buck Bunny, sample.mp4.

      Открываем страницу с тестовым плеером, указываем название потока vod://sample.mp4 и нажимаем Test Now.


      Плеер начинает играть поток через WebRTC. В chrome://webrtc-internals можно видеть графики воспроизведения:


      В итоге история закончилась хорошо. Мы пофиксили баг с зеленым экраном при воспроизведении mp4-записи трансляции в iOS приложении и сделали WebRTC-VOD-функцию для веб-браузеров и мобильных устройств под управлением iOS и Android.

      Ссылки


      1. Тестовое iOS приложение Two Way Streaming для трансляций
      2. Web плеер — пример плеера для воспроизведения VOD — WebRTC потоков
      3. Сервер Web Call Server 5, раздающий mp4 ролики по WebRTC
      4. WebRTC SDK для iOS — библиотека для разработки стриминг-приложений для iOS
      Original source: habrahabr.ru (comments, light).

      https://habrahabr.ru/post/337560/


      [Перевод] Создание языка программирования с использованием LLVM. Часть 10: Заключение и другие вкусности LLVM

      Понедельник, 11 Сентября 2017 г. 04:55 + в цитатник
      32bit_me сегодня в 04:55 Разработка

      Создание языка программирования с использованием LLVM. Часть 10: Заключение и другие вкусности LLVM

      • Перевод
      • Tutorial
      Оглавление:
      Часть 1: Введение и лексический анализ
      Часть 2: Реализация парсера и AST
      Часть 3: Генерация кода LLVM IR
      Часть 4: Добавление JIT и поддержки оптимизатора
      Часть 5: Расширение языка: Поток управления
      Часть 6: Расширение языка: Операторы, определяемые пользователем
      Часть 7: Расширение языка: Изменяемые переменные
      Часть 8: Компиляция в объектный код
      Часть 9: Добавляем отладочную информацию
      Часть 10: Заключение и другие вкусности LLVM



      9.1. Заключение


      Добро пожаловать в заключительную часть руководства “Создание языка программирования с использованием LLVM”. На протяжении этого руководства, мы вырастили наш маленький язык Калейдоскоп с бесполезной игрушки до довольно интересной (хотя, возможно, по-прежнему бесполезной) игрушки.

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

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

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

      глобальные переменные — хотя ценность глобальных переменных в современной программной инженерии находится под вопросом, они часто используются для маленьких быстрых хаков, таких, как сам по себе компилятор Калейдоскопа. К счастью, в нашу программу добавить глобальные переменные очень легко: просто проверяем для каждой переменной, есть ли она в глобальной таблице символов. Для того. чтобы создать новую глобальную переменную, создайте экземпляр класса LLVM GlobalVariable.
      типизированные переменные — сейчас Калейдоскоп поддерживает только переменные типа double. Это делает язык очень элегантным, потому что поддержка только одного типа означает, что вам не нужно указывать типы переменных. Различные языки имею разные способы решения этой проблемы. Самый простой путь — потребовать от пользователя указывать тип для каждого определения переменной, и записывать типы переменных в таблицу символов вместе с их Value*.
      массивы, структуры, вектора, и т.п. Если вы вводите типы, вы можете начать расширять систему типов в разных интересных направлениях. Простые массивы сделать очень просто и полезно для разных видов приложений. Добавьте их в качестве упражнения, для изучения того, как работает инструкция LLVM getelementptr: она настолько элегантна и необычна, что имеет свой собственный FAQ!
      стандартный рантайм — в текущем виде язык даёт пользователю возможность доступа к произвольным внешним функциям, и мы используем это для таких вещей, как «printd» и «putchard». Вы можете расширить язык так, чтобы добавить конструкции более высокого уровня, часто имеет смысл приводить такие конструкции к функциям рантайма, чем делать их в виде inline-последовательностей команд.
      управление памятью — сейчас в языке Калейдоскоп есть доступ только к стеку. Также будет полезно выделять память в куче, либо путём вызова стандартных интерфейсов libc malloc/free, либо с помощью сборщика мусора. Если вы предпочтёте сборщик мусора, заметим, что LLVM полностью поддерживает точную сборку мусора (Accurate Garbage Collection), включая алгоритмы перемещения объектов, и необходимые для сканирования/обновления стека.
      поддержка исключений — LLVM поддерживает генерацию исключений с нулевой стоимостью и с возможностью взаимодействия с кодом, скомпилированным в других языках. Вы можете также генерировать код, который подразумевает, что каждая функция возвращает значение ошибки, и проверяет это. Также можно реализовать исключения явным использованием setjmp/longjmp. В общем, существует много разных способов.
      ООП, обобщённые типы, доступ к базам данных, комплексные числа, геометрическое программирование,… на самом деле, нет конца безумным штукам, которые можно добавить в язык.
      необычные применения — мы говорили о применении LLVM в области, которой интересуются многие: построение компилятора для специфического языка. Однако, существует много других областей, для которых применение компилятора, на первый взгляд, не рассматривается. Например, LLVM используется для ускорения графики OpenGL, трансляции кода C++ в ActionScript, и множества других интересных вещей. Возможно, вы будете первым, кто построит JIT-компилятор в нативный код для регулярных выражений с помощью LLVM?
      удовольствие — пробуйте сделать что-то безумное и необычное. Сделать язык, такой же, как все остальные, не так весело, как сделать что-то безумное. Если вы хотите поговорить об этом, не стесняйтесь писать в рассылку llvm-dev: там много людей, которые интересуются языками и часто желают помочь.

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

      10.2. Свойства LLVM IR


      Есть пара вопросов насчёт кода в форме LLVM IR, давайте рассмотрим их сейчас.

      10.2.1. Независимость от целевой платформы


      Калейдоскоп является примером «переносимого языка»: любая программа, написанная на Калейдоскопе будет работать одинаково на любой целевой платформе, на которой будет запущена. Многие другие языки имеют такое же свойство, например, Lisp, Java, Haskell, Javascript, Python и т.п. (отметим, что, хотя эти языки являются переносимыми, не все их библиотеки переносимы).

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

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

      Проблема с С (опять же, в общем случае) в том, что он очень полагается на платформеннозависимые допущения. В качестве простого примера, препроцессор сделает код платформеннозависимым, если он обрабатывает следующий текст:
      #ifdef __i386__
        int X = 1;
      #else
        int X = 42;
      #endif
      

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

      Но подмножество С можно сделать переносимым. Если вы сделаете примитивные типы фиксированного размера (например, int = 32 бита, long = 64 бита), не будете беспокоиться насчёт совместимости ABI с существующими бинарными файлами, и откажетесь от некоторых других возможностей, то вы можете получить переносимый код. Это имеет смысл для некоторых особых случаев.

      10.2.2. Гарантии безопасности


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

      Определённо возможно реализовать безопасный язык в LLVM, но LLVM IR сам по себе не гарантирует безопасности. LLVM IR допускает небезопасные преобразования указателей, использование памяти после её освобождения, переполнение буферов, и различные другие проблемы. Безопасность должна быть реализована на уровне выше, чем LLVM и, к счастью, несколько групп занимались исследованием этого вопроса. Спрашивайте в списке рассылки llvm-dev, если вам интересны детали.

      10.2.3. Оптимизации, специфичные для языка


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

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

      Первое, это правда, LLVM теряет информацию. Например, невозможно различить на уровне LLVM IR, было ли SSA-значение порождено из типа С «int» или «long» на ILP32-машине (кроме как из отладочной информации). Оба компилируются в значение типа «i32», и информация об исходном типе теряется. Более общая проблема в том, что система типов LLVM считает эквивалентными типы с одинаковой структурой, не с одинаковыми именами. Это ещё одна вещь, которая удивляет людей, что если у вас есть два типа в высокоуровневом языке, имеющие одинаковую структуру, (например, две разных структуры, имеющие по одному полю int): эти типы будут скомпилированы в один тип LLVM, и будет невозможно сказать, какой исходной структуре принадлежали переменные.
      Второе, хотя LLVM и теряет информацию, он не имеет фиксированной целевой платформы: мы продолжаем расширять и улучшать его в разных направлениях. Мы добавляем новые возможности (LLVM не всегда поддерживал исключения или отладочную информацию), мы расширяем IR, чтобы захватывать важную для оптимизации информацию (был ли аргумент расширен нулями или знаковым битом, информацию об аласинге указателей и т.п.). Многие улучшения инициированы пользователями: люди хотят, чтобы LLVM имел какие-либо специфические возможности, и мы идём им навстречу.
      В-третьих, возможно легко добавлять специфические для языка оптимизации, и есть ряд способов сделать это. Как тривиальный пример, легко добавить проход оптимизации, который «знает» разные вещи о исходном коде. В случае С-подобных языков, такой проход оптимизации «знает» о функциях стандартной библиотеки С. Если вы вызываете функцию «exit(0)» в main(), он знает, что вызов можно безопасно конвертировать в «return 0», потому что стандарт С описывает, что должна делать функция «exit».

      Вдобавок к простым знаниям о библиотеке, возможно встроить другую различную специфическую для языка информацию в LLVM IR. Если у вас есть специфические нужды, пожалуйста, напишите в список рассылки llvm-dev. В худшем случае, вы можете рассматривать LLVM как если бы он был «тупым кодогенератором» и реализовывать высокоуровневые оптимизации, какие вам угодно, в вашем фронтенде, в специфичном для вашего языка AST.

      10.3. Приёмы и хитрости


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

      10.3.1. Реализация переносимых offsetof/sizeof


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

      10.3.2. Стековые кадры сборщика мусора


      Некоторые языки хотят явно управлять кадрами стека, часто из=за наличия сборщика мусора или для того, чтобы проще реализовать замыкания. Часто есть лучшие способы реализации этих возможностей, чем явное управление кадрами стека, но LLVM поддерживает это, если вы хотите. Для этого нужно, чтобы ваш фронтенд конвертировал код в Continuation Passing Style и использовал хвостовые вызовы (которые LLVM также поддерживает).
      Original source: habrahabr.ru (comments, light).

      https://habrahabr.ru/post/337240/


      Метки:  

      PHP-Дайджест № 116 – свежие новости, материалы и инструменты (27 августа – 10 сентября 2017)

      Понедельник, 11 Сентября 2017 г. 01:47 + в цитатник
      pronskiy сегодня в 01:47 Разработка

      PHP-Дайджест № 116 – свежие новости, материалы и инструменты (27 августа – 10 сентября 2017)



        Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 RC 1, Laravel 5.5 LTS, чистый код на PHP, предложения из PHP Internals, видео с конференций и митапов, и многое другое.
        Приятного чтения!



        Новости и релизы


        • PHP 7.2.0 RC 1 — Стартовал цикл релиз-кандидатов ветки 7.2. Ожидается всего не менее 6 выпусков для стабилизации. Тем временем можно почитать что нового в PHP 7.2: тут habr и тут.
        • PHP 7.0.23, PHP 7.1.9
        • Laravel 5.5 LTS — Под капотом filp/whoops для ошибок, автообнаружение пакетов, улучшения очереди задач, улучшения исключений, фронтенд пресеты для React, и многое другое.
        • Behat 3.4.0 — Обновление популярного BDD-фреймворка.
        • NGINX Unit — Анонсирован сервер приложений от команды Nginx с поддержкой PHP.


        PHP Internals


        • RFC: Operator functions — Для всех операторов, кроме присваивания, предлагается добавить одноименные функции, чтобы их можно было использовать в качестве аргументов функций высшего порядка:
          // Суммирует элементы массива (Эквивалент array_sum())
          $sum = array_reduce($terms, '+', 0);
          
        • Add Fiber (sackful coroutine) support — Интересное улучшение генераторов в PHP, которое позволило бы упростить асинхронный код. Пока не оформлено в виде формального RFC, но уже имеется черновой пул-реквест.


        Инструменты


        • Botman 2.0.0 — Фреймворк для создания чат-ботов. Из коробки поддерживает: Slack, Telegram, Nexmo, HipChat, Facebook Messenger, WeChat. Туториалы Laravel + Botman: Telegram, FB Messenger, Slack.
        • nkkollaw/zubr — Инструмент призван исправить проблемы встроенных функций PHP: добавлены неймспейсы, консистентное именование и порядок аргументов.
        • Prooph — Инструменты для реализации CQRS и Event Sourcing на PHP. Туториал. Что такое Event Sourcing и почему это круто.
        • parpalak/rose — Встраиваемый поисковый движок с поддержкой русского языка.
        • spatie/fractalistic — Обертка над thephpleague/fractal добавляющая короткий текучий интерфейс.


        Материалы для обучения




        Аудио и видеоматериалы




        Занимательное



        Спасибо за внимание!

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

        Прислать ссылку
        Быстрый поиск по всем дайджестам
        <- Предыдущий выпуск: PHP-Дайджест № 115

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

        https://habrahabr.ru/post/337616/


        Метки:  

        PHP-Дайджест № 116 – свежие новости, материалы и инструменты (27 августа – 10 сентября 2017)

        Понедельник, 11 Сентября 2017 г. 01:47 + в цитатник
        pronskiy сегодня в 01:47 Разработка

        PHP-Дайджест № 116 – свежие новости, материалы и инструменты (27 августа – 10 сентября 2017)



          Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 RC 1, Laravel 5.5 LTS, чистый код на PHP, предложения из PHP Internals, видео с конференций и митапов, и многое другое.
          Приятного чтения!



          Новости и релизы


          • PHP 7.2.0 RC 1 — Стартовал цикл релиз-кандидатов ветки 7.2. Ожидается всего не менее 6 выпусков для стабилизации. Тем временем можно почитать что нового в PHP 7.2: тут habr и тут.
          • PHP 7.0.23, PHP 7.1.9
          • Laravel 5.5 LTS — Под капотом filp/whoops для ошибок, автообнаружение пакетов, улучшения очереди задач, улучшения исключений, фронтенд пресеты для React, и многое другое.
          • Behat 3.4.0 — Обновление популярного BDD-фреймворка.
          • NGINX Unit — Анонсирован сервер приложений от команды Nginx с поддержкой PHP.


          PHP Internals


          • RFC: Operator functions — Для всех операторов, кроме присваивания, предлагается добавить одноименные функции, чтобы их можно было использовать в качестве аргументов функций высшего порядка:
            // Суммирует элементы массива (Эквивалент array_sum())
            $sum = array_reduce($terms, '+', 0);
            
          • Add Fiber (sackful coroutine) support — Интересное улучшение генераторов в PHP, которое позволило бы упростить асинхронный код. Пока не оформлено в виде формального RFC, но уже имеется черновой пул-реквест.


          Инструменты


          • Botman 2.0.0 — Фреймворк для создания чат-ботов. Из коробки поддерживает: Slack, Telegram, Nexmo, HipChat, Facebook Messenger, WeChat. Туториалы Laravel + Botman: Telegram, FB Messenger, Slack.
          • nkkollaw/zubr — Инструмент призван исправить проблемы встроенных функций PHP: добавлены неймспейсы, консистентное именование и порядок аргументов.
          • Prooph — Инструменты для реализации CQRS и Event Sourcing на PHP. Туториал. Что такое Event Sourcing и почему это круто.
          • parpalak/rose — Встраиваемый поисковый движок с поддержкой русского языка.
          • spatie/fractalistic — Обертка над thephpleague/fractal добавляющая короткий текучий интерфейс.


          Материалы для обучения




          Аудио и видеоматериалы




          Занимательное



          Спасибо за внимание!

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

          Прислать ссылку
          Быстрый поиск по всем дайджестам
          <- Предыдущий выпуск: PHP-Дайджест № 115

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

          https://habrahabr.ru/post/337616/


          Метки:  

          Контроль на рабочем месте: новое постановление Европейского Суда

          Понедельник, 11 Сентября 2017 г. 01:26 + в цитатник
          iou-iou сегодня в 01:26 Управление

          Контроль на рабочем месте: новое постановление Европейского Суда

            Фабула дела

            10 лет назад заявитель — Богдан Барбулеску был уволен из частной компании за то, что переписывался в рабочее время с невестой и братом в Yahoo Messanger.
            Он работал в румынской частной компании в отделе по поддержке продаж. В его обязанности входило отвечать на запросы клиентов и для этого он использовал Yahoo Messanger, который установил по просьбе работодателя и в котором завел специальный аккаунт.
            В компании существовали внутренние правила, которыми очень строго запрещалось использование ресурсов компании (в том числе интернета) для личных нужд. Заявитель был ознакомлен с ними под расписку. Через год после этого в компании был разослан документ, в котором напоминалось о запрете использовать оборудование компании и интернет в целях, не связанных с работой. Там также было указано, что компания может контролировать работников на предмет того, как они используют оборудование и интернет на рабочем месте. Также был описан случай увольнения сотрудницы за то, что она пользовалась для личных целей интернетом, факсом и ксероксом, не справлялась со своими обязанностями и халатно относилась к работе. Заявитель также был ознакомлен с этим документом под роспись. 
            В июле 2007 года заявителя вызвали к начальству и попросили дать объяснения, почему его активность в интернете намного выше, чем у его коллег. На обвинение в использовании интернета в личных целях Богдан Барбулеску написал письменное заявление, что он не использует интернет в личных целях.  Через час начальство предъявило ему распечатку его переписки в Yahoo Messanger на 45 страницах за неделю, предшествовавшую его вызову к начальству. Из этой распечатки было ясно видно, что он переписывался по личным вопросам с братом и невестой. Через 2 недели его уволили. Заявитель проиграл в румынских судах спор с работодателем относительно его увольнения. Он обратился в Европейский Суд с жалобой на вторжение в его право на частную жизнь (статья 8 Европейской Конвенции). Дело рассматривалось с точки зрения обязательств государства охранять права от нарушения другими лицами, в данном случае бывшим работодателем заявителя. Сначала Суд сначала не нашел нарушения. После пересмотра дела в Большой Палате было установлено нарушение.

            Что решил Европейский Суд

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

            1. Работник должен быть заранее уведомлен о том, что работодатель может его контролировать и о сути такого контроля.
            2. Содержание мониторинга и степень вторжения в частную жизнь работника. В решении отмечается, что имеется разница между просмотром переписки и чтением содержания переписки. Во втором случае вторжение в частную жизнь намного серьезнее.
            3. Основания для контроля должны быть законные и обоснованные.
            4. При проведении контроля при возможности должны быть использованы методы, при которых не проводится оценка всего содержания переписки работника.
            5. Должна проводиться оценка последствий контроля для работника и насколько результаты контроля используются для тех целей, для которых такой контроль установлен.
            6. При контроле работнику должны предоставляться адекватные способы защиты его частной жизни: компания не может читать никакие сообщения работников до тех пор, пока они не предупреждены о том, что компания может это делать. 
             
            Основной вопрос, который анализировал Суд в данном деле – насколько национальные суды взвесили конкурирующие интересы сторон: с одной стороны — право на частную жизнь и неприкосновенность переписки, предусмотренные статьей 8 Конвенции; с другой стороны – интерес компании в эффективности ее бизнеса и ее безопасности. И соответственно насколько румынские суды учли перечисленные выше факторы, когда рассматривали спор заявителя с его компанией.
              
            1. Предупреждение о мониторинге:
            Суд отметил, что национальные суды исходили из того, что заявитель был предупрежден о том, что его переписка будет просматриваться его работодателем. В частности, он был уведомлен под расписку о том, что в компании запрещено использовать ее ресурсы, в том числе интернет, для личных целей, и что другой работник был уволен за использование ресурсов компании для личных целей. Однако, по мнению ЕСПЧ, они не исследовали вопрос о том, было ли заявитель уведомлен об объеме и характере такого мониторинга. По мнению ЕСПЧ компания, которая собирается контролировать переписку работника, должна уведомить его об этом перед началом мониторинга, особенно, когда контроль производится в отношении содержания переписки. 

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

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

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

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

            6. Момент, в который компания узнала содержание переписки 
            Румынские суды не изучали вопрос о том, когда же компания прочла содержание переписки. По всей вероятности эти произошло до того, как заявителя вызвали, чтобы спросить об использовании интернета в личных целях. Тот факт, что компания могла получить доступ к содержанию переписки в любой момент дисциплинарного производства противоречит требованию прозрачности, закрепленному в рекомендациях Комитета Министров (CM/Rec(2015)5).

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

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

            https://habrahabr.ru/post/337614/


            Метки:  

            Контроль на рабочем месте: новое постановление Европейского Суда

            Понедельник, 11 Сентября 2017 г. 01:26 + в цитатник
            iou-iou сегодня в 01:26 Управление

            Контроль на рабочем месте: новое постановление Европейского Суда

              Фабула дела

              10 лет назад заявитель — Богдан Барбулеску был уволен из частной компании за то, что переписывался в рабочее время с невестой и братом в Yahoo Messanger.
              Он работал в румынской частной компании в отделе по поддержке продаж. В его обязанности входило отвечать на запросы клиентов и для этого он использовал Yahoo Messanger, который установил по просьбе работодателя и в котором завел специальный аккаунт.
              В компании существовали внутренние правила, которыми очень строго запрещалось использование ресурсов компании (в том числе интернета) для личных нужд. Заявитель был ознакомлен с ними под расписку. Через год после этого в компании был разослан документ, в котором напоминалось о запрете использовать оборудование компании и интернет в целях, не связанных с работой. Там также было указано, что компания может контролировать работников на предмет того, как они используют оборудование и интернет на рабочем месте. Также был описан случай увольнения сотрудницы за то, что она пользовалась для личных целей интернетом, факсом и ксероксом, не справлялась со своими обязанностями и халатно относилась к работе. Заявитель также был ознакомлен с этим документом под роспись. 
              В июле 2007 года заявителя вызвали к начальству и попросили дать объяснения, почему его активность в интернете намного выше, чем у его коллег. На обвинение в использовании интернета в личных целях Богдан Барбулеску написал письменное заявление, что он не использует интернет в личных целях.  Через час начальство предъявило ему распечатку его переписки в Yahoo Messanger на 45 страницах за неделю, предшествовавшую его вызову к начальству. Из этой распечатки было ясно видно, что он переписывался по личным вопросам с братом и невестой. Через 2 недели его уволили. Заявитель проиграл в румынских судах спор с работодателем относительно его увольнения. Он обратился в Европейский Суд с жалобой на вторжение в его право на частную жизнь (статья 8 Европейской Конвенции). Дело рассматривалось с точки зрения обязательств государства охранять права от нарушения другими лицами, в данном случае бывшим работодателем заявителя. Сначала Суд сначала не нашел нарушения. После пересмотра дела в Большой Палате было установлено нарушение.

              Что решил Европейский Суд

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

              1. Работник должен быть заранее уведомлен о том, что работодатель может его контролировать и о сути такого контроля.
              2. Содержание мониторинга и степень вторжения в частную жизнь работника. В решении отмечается, что имеется разница между просмотром переписки и чтением содержания переписки. Во втором случае вторжение в частную жизнь намного серьезнее.
              3. Основания для контроля должны быть законные и обоснованные.
              4. При проведении контроля при возможности должны быть использованы методы, при которых не проводится оценка всего содержания переписки работника.
              5. Должна проводиться оценка последствий контроля для работника и насколько результаты контроля используются для тех целей, для которых такой контроль установлен.
              6. При контроле работнику должны предоставляться адекватные способы защиты его частной жизни: компания не может читать никакие сообщения работников до тех пор, пока они не предупреждены о том, что компания может это делать. 
               
              Основной вопрос, который анализировал Суд в данном деле – насколько национальные суды взвесили конкурирующие интересы сторон: с одной стороны — право на частную жизнь и неприкосновенность переписки, предусмотренные статьей 8 Конвенции; с другой стороны – интерес компании в эффективности ее бизнеса и ее безопасности. И соответственно насколько румынские суды учли перечисленные выше факторы, когда рассматривали спор заявителя с его компанией.
                
              1. Предупреждение о мониторинге:
              Суд отметил, что национальные суды исходили из того, что заявитель был предупрежден о том, что его переписка будет просматриваться его работодателем. В частности, он был уведомлен под расписку о том, что в компании запрещено использовать ее ресурсы, в том числе интернет, для личных целей, и что другой работник был уволен за использование ресурсов компании для личных целей. Однако, по мнению ЕСПЧ, они не исследовали вопрос о том, было ли заявитель уведомлен об объеме и характере такого мониторинга. По мнению ЕСПЧ компания, которая собирается контролировать переписку работника, должна уведомить его об этом перед началом мониторинга, особенно, когда контроль производится в отношении содержания переписки. 

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

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

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

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

              6. Момент, в который компания узнала содержание переписки 
              Румынские суды не изучали вопрос о том, когда же компания прочла содержание переписки. По всей вероятности эти произошло до того, как заявителя вызвали, чтобы спросить об использовании интернета в личных целях. Тот факт, что компания могла получить доступ к содержанию переписки в любой момент дисциплинарного производства противоречит требованию прозрачности, закрепленному в рекомендациях Комитета Министров (CM/Rec(2015)5).

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

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

              https://habrahabr.ru/post/337614/


              Метки:  

              Работа и жизнь в Болгарии. Часть вторая

              Воскресенье, 10 Сентября 2017 г. 23:47 + в цитатник
              slamon вчера в 23:47 Управление

              Работа и жизнь в Болгарии. Часть вторая



                18-ое ноября 2010-го года, Москва, 6 утра. На улице промозглый холодный ветер с мелким моросящими дождиком, заставляющий ёжиться в ожидании машины до Шереметьево. Регистрация, осмотр, паспортный контроль, небольшое ожидание, и вот уже в 8.20 самолет отрывается от полосы и несёт нас вдаль, в Софию. Два с половиной часа полёта, пустой встречающий аэропорт, небольшая очередь на паспортном контроле… И вот мы уже за дверьми аэропорта. Нас встречает яркое болгарское солнышко, ласково обогревающими своими лучами, и теплый легкий ветерок приятно пахнет свежестью и переменами…

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

                Приезд




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

                Такси высадило нас возле дома, где у нас был арендован апартамент. Выгрузив багаж, мы стали ожидать Николая, нашего агента, который должен был организовать передачу ключей и подпись акта приема-передачи имущества в апартаменте. Николай появился минут через 15 с маленьким букетом, который с улыбкой вручил моей супруге. После этого мы стали ожидать уже хозяйку апартамента, которая появилась ещё минут через 20. Опоздания у болгар — это достаточно распространенное явление, потом не удивляйтесь этому. Будьте на расслабоне, тут так все живут :-)

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

                Проснувшись через несколько часов, я отправился на разведку в продуктовый магазин, ближайшим из которых была обычная «Билла». Улыбчивые продавцы, которые поздоровались со мной на кассе, заставили меня с непривычки чуть ли не шарахнуться в сторону. Впрочем, к этому затем очень быстро привыкаешь :-)

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



                Дело в том, что в Болгарии договора чтут и блюдут. И если вы подписали договор на 1 год, то будьте добры весь год и оплачивать. И если примерно за месяц до окончания договора вы не изъявили желание договор разорвать, то он будет автоматом продлен ещё на год (а то и на три). Пользуетесь ли вы при этом интернетом / сотовой связью, или нет — это никого не интересует. Если вы при этом решили забить на оплату, то не удивляйтесь, если затем на вас могут подать в суд из-за копеечных 50 евро. Так вот, интернет с ТВ нам подключили спустя 2 недели, оказался он паршивым, и я сменил провайдера на м-тел. Что не помешало blizoo затем заваливать меня бумажками «немедленно оплатите счет».

                В Болгарии есть аналог нашей большой тройки. Это компании Vivacom, M-tel и Telenor, более известный как Globul. Любопытные читатели могут заглянуть на сайты этих операторов, чтобы увидеть тарифные планы (ищите слово «планове», это «тариф» по-болгарски). По большей части все услуги являются пост-оплатными, хотя есть и предоплатные симки. Для заключения договора иностранцам нужен или паспорт, или лична карта (если вы её уже получили).

                Интернет и ТВ от М-Тел весьма качественные, быстрые, в общем — я доволен. На ТВ сотни каналов, включая и русские (ну, если вы вдруг соскучились по «Братки в законе-17», то НТВ вам поможет наверстать упущенное). Большая часть каналов идет на болгарском языке, многие на оригинальном языке, но с болгарскими субтитрами. И тут я хотел бы немного рассказать о самом болгарском языке.

                Болгарский язык


                Болгарский язык для русского человека может показаться удивительным. Для неподготовленного русского человека, который никогда не сталкивался с болгарским языком, не составит проблем с лету прочитать текст, написанный на болгарском. Скажем так, процентов 80 вы сможете понять с лёту. Это и неудивительное: славянский язык, общие корни, старая добрая кириллица без добавления латинских букв. И даже если болгарское слово на письме содержит в себе «неправильный» порядок букв, ваш мозг легко сможет конвертировать слово в «правильное». Можете проверить: прочитайте фразу «Строителни работници оставиха четири столични квартала без ток». Уверен, что ни у одного читателя не вызовет проблем прочитать и понять эту фразу.

                Но совсем другое дело, когда вы впервые слышите болгарскую речь вживую. И понимаете, что нифига не понимаете :-)

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

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

                Ещё одно интересное отличие: произношение буквы "Ъ". Если вы когда-нибудь сталкивались с болгарским письмом (на болгарский сайт, например, забредали), то наверняка удивились обилию рассыпанных по словам твердых знаков. И вот теперь внимание — это вовсе не твердый знак, а гласная буква, близкая в первом приближении по произношению к русскому "Ы". Произносится она, разумеется, не прямо как русское Ы, но аналог очень близкий. Другая необычная буква — "Щ". Произносится приблизительно как слитное «ШТ». И напоследок: буква "Е" в болгарском практически всегда читается как русское «Э».
                Для особо любопытных читателей даю домашнее задание: потренируйтесь в произношении слова «КЪЩА» («дом» в переводе на русский).

                Также хочу рассказать вкратце о так называемых словах-обманках (не помню, как официально называется это явление, да и не суть). К примеру, болгарское слово «пердета» означает вовсе не то, что вы подумали, а просто «шторы». Если вы попросите продавца в магазине показать вам, где продается дыня, то продавец вам покажет на арбузы. Ибо слово «диня» означает «арбуз». Баня — это не то место, где весело хлестаются горячими вениками, а простая ванная. Стая — это комната, булка — невеста, грижа — забота, живот — жизнь, страхотно — синоним «красиво, прикольно»… Слов подобных очень много, и если, скажем, слово «стая» вы говорите не часто, то вот неверно понятое слово «право» меня в первую же мою поездку заставило лишних пару километров чесать по улице в поисках МакДональдса. Ибо нужно было пойти не вправо, а прямо. Да, кстати, если вы попросите болгар отыскать вам где-нибудь мангал, то болгарин может удивленно поднять брови. Ибо мангалами болгары называют цыган (примерный аналог «хач», извиняюсь за терминологию).

                В изучении болгарского языка никаких особенностей нет по сравнению с изучением любого другого иностранного языка. Язык достаточно легко изучается в процессе общения с болгарами, при просмотре телепередач и чтении текстов (газет, например). Разумеется, если вы будете постоянно сидеть дома и выбираться только в магазин, то и ваш словарный запас будет ограничен числительными и банальными «привет, спасибо, сколько стоит». Заводите знакомых, больше общайтесь — и спустя уже несколько месяцев вы сможете чесать на болгарском на вполне приличном бытовом уровне. Сами болгары весьма дружелюбны и любопытны к русским, и проблем в поисках друзей у вас не будет. Если же вы жуткий интроверт и никак не хотите идти на контакт, то и это не будет проблемой. Многие болгары знают русский язык в разной степени (пожилые получше, молодые похуже), плюс включаем язык жестов и синонимов — и готово, главное не бояться и не комплексовать.

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

                Бизнес


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

                В Болгарии вести бизнес не просто, а очень просто. Нет никаких ограничений на открытие фирмы иностранцами, открытие новой фирмы занимает около недели, расчетный счет открывается в банке за 10 минут на месте, бухгалтерия прозрачна и проста. Минимальный уставной капитал фактически отсутствует (1 евро). В абсолютом большинстве случае действует налоговый режим 10% от прибыли (доход минус расход). Это всё касается ЕООД/ООД — фактически полный аналог российскому ООО. Есть ещё АД (акционерно дружество), аналог АО в РФ), тут уставной капитал составляет уже 25 000 евро. Многие лицензируемые деятельности вроде кредитных/банковских/платежных также требуют минимальный уставной капитал не ниже особо установленных законом.

                Бумажная волокита сведена к минимуму, все документы в электронном виде доступны через Търговски регистър (аналог ЕГРЮЛ), там же любой человек может просмотреть все данные по вашей фирме. У вас есть на руках «дружествен договор» (в качестве аналога можно рассмотреть российский «Устав фирмы»), «решение за вписване в търговски регистър» и ЕИК — уникальный номер вашей фирмы. По факту, в повседневной жизни управления фирмой вам нужен только знать свой ЕИК. За исключением редчайший случаев при заключении сделок никто тут в здравой уме не будет просить от вас копии копий всяких там ИНН и прочего бумажного барахла. Есть ЕИК, есть реестр — этого более чем достаточно на практике. Ах да, при определенном обороте фирме необходимо будет зарегистрироваться на выплату ДДС (аналог НДС), он составляет сегодня 20%, возврат ДДС осуществляется раз в год.

                Практически все небольшие фирмы (а они составляют абсолютное большинство фирм в Болгарии) отдают всю бухгалтерию на аутсорс таким же небольшими бухгалтерским компаниям. Стоимость ведения фирмы разное и обычно стартует от размера минимальной заработной платы в месяц. Эта цифра каждый год корректируется правительством страны, и на 2017-ый год составляет 460 лева (примерно 230 евро).

                Найм сотрудников мало чем отличается от найма в России за одним исключением: уволить сотрудника можно без особых объяснений причин, достаточно уведомить за определенный срок, обозначенный в трудовом договоре, обычно это 1 месяц. Аналогично и сотрудник перед увольнением должен будет отработать один месяц. Другими словами, здесь отсутствуют какие-то различия между работодателем и работником: две стороны заключают между собой равный договор: ты работаешь — я плачу, это просто бизнес и ничего личного. Я лично считаю такой подход правильным и справедливым.

                Налоги за сотрудника как и в России выплачивает работодатель; отпуск, зарплата, рабочие часы, обязанности работодателя и работника — всё прописывается в трудовом договоре. Болгарию с Россией также роднит ещё один факт в сфере рабочих отношений, доставшийся в наследие от СССР — это наличие трудовой книжки у работника, полного аналога российской трудовой книжки. Ну а остальных каких-то особых различий в плане работы между Болгарией и Россией, если честно, я не заметил. Атмосфера в коллективе, технологии, рабочие места, офис — всё это уже в дальнейшем зависит от конкретной фирмы и конкретных людей. Есть и тимбилдинги с размахом (корпоративы), есть и овертаймы, есть и дружеские отношения, есть и конфликты. В общем, всё как и в России :-)

                Медицина


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

                Для плановых же походов по врачам (в основном для дочери) мы использовали платные клиники. На мой первичный взгляд, стоимость лечения в платных клиниках в Болгарии дешевле московских раза в полтора-два. Квалификация врачей — разная, есть и хорошие профи, есть и раздолбаи аля Лобанов из «Интернов», прогуливающих лекции в университете. Клиники также тут разные: есть и супер-навороченные, например, «Токуда», где всё сделано на манер американских клиник; есть и клиники попроще. Государственные же больницы, куда мы ходили сдавать анализы для поступления в детский садик, визуально изнутри представляют страшенные убогие кабинеты, где можно снимать сцены для фильмов ужасов. Да, кстати, меня тут поправила супруга в процессе чтения: поход в государственную клинику даже для болгар платный, по направлению — стоимость будет небольшой (порядка пары евро), без направления — выше.

                В Болгарии есть понятие «семейного доктора». Это что-то вроде нашего терапевта из прикрепленной поликлиники. Именно этот доктор будет выписывать вам рецепты на лекарства, проводить первичные осмотры и направлять к другим врачам. Да, кстати, имейте ввиду, что очень многие лекарства, которые есть в России, в Болгарии отсутствуют в принципе. Особенно выпадают в осадок аптекари, когда ты им пытаешься объяснить, что такое «зелёнка» :-)

                При оформлении ВНЖ вы в обязательном порядке должны будете делать медицинскую страховку с покрытием до 30 000 евро. Если вы делаете эту страховку для отмазки (как это делали мы), то стоимость такой страховки будет не выше 30-50 евро. Но я советую вам сделать нормальную страховку в проверенной фирме. Дело в том, что по этой страховке вы сможете отбивать многие расходы в платных клиниках, что поможет здорово сэкономить на визитах к врачам. Мы про этот лайфхак узнали достаточно поздно от своих знакомых. Даже сами болгары очень часто предпочитают ходить в платные поликлиники, используя эти же страховки.

                Если кратко резюмировать, то на улице вас никто умирать не оставит, а плановые визиты по врачам сильно по кошельку ударить не должны. Но лучше всё-таки не болеть )

                Образование



                Вначале, когда я работал из дома, супруга с ребенком осваивали местные детские площадки, коих было в достаточном количестве вокруг нашего дома. Помимо площадек для нас было приятным открытием таких мест, как детские «занимальни». Суть их простая: большая детская комната, набитая игрушками и небольшими аттракционами. Под присмотром воспитателей ребенок играет, рисует, лепит, в общем — развлекается по полной программе. Родители же в этот момент могут присесть отдохнуть в соседнее кафе или сгонять по своим делам. Стоимость более чем доступная (от 3 евро в час). Сегодня в Москве такие занимальни также появляются, но на 2010 год их ещё не было.

                Затем мы решили, что пора бы ребенка социализировать. Нашей дочери на тот момент исполнилось 2.5 года, и мы решили отдать её в частный детский садик «Питър Пан»(не рекомендую). Для иностранцев есть возможность отдать ребенка и в государственный сад, но на тот конкретный момент (это было весной) нам пришлось бы ожидать осени для этого. Наша дочь на тот момент с трудом ещё говорила по-русски, поэтому определенные опасения насчет адаптации у нас с супругой были. Но как оказалось на практике — опасения оказались напрасны. Уже через несколько дней дочь с удовольствием ходила в садик, и уже тогда начала произносить первые болгарские слова. Спустя где-то полгода мы перевели её в другой детский сад, ибо отношение воспитателей к детям нам не особо понравилось (засекали не раз, что воспитательницы забивали на присмотр за детьми и тупо пялились в телевизор). Новый детский садик называется Доверие, мы оказались крайне довольны этим садиком, рекомендую и советую.

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

                В Болгарии есть как государственные школы, так и частные. Для иностранцев обучение детей в государственной школе ранее было платным, сегодня же эту плату отменили. Не могу рассказать подробно об обучении в государственной школе, ибо мы свою дочь отдали по окончанию детского сада в платную школу под названием Образователни технологии, куда вместе с нами ушло в первый класс почти половина группы из детского сада. Стоимость обучения в школе составляет 350 евро в месяц (если оплачивать по-месячно) или 3550 евро при оплате сразу за год. Учатся дети с утра и до обеда (затем у нас была продленка с играми и прогулками), профессионально оборудованные классы, углубленное изучение английского языка. Учеба продолжается вплоть до 8-го класса, после чего идет уже так называемое профессиональное обучение либо в обычной, либо в специализированной школе. Суммарно в болгарских школах 12 классов, система оценок — 6-ти бальная. Стартует учеба 15-го сентября, и продолжается вплоть до июня. Таких каникул, как в России, в школах нет, исключение только одно — рождественские каникулы, которые длятся с 25-го декабря по 4-5 января. Кстати, для взрослых новогодних каникул тоже нет, уже 2-го января все выходят на работу.

                В Софии также есть и настоящая русская школа. Это школа при посольстве, где обычно учатся дети консулов и прочих дипломатических сотрудников, впрочем она открыта и для всех остальных желающих. Обучение также платное (было 180 долларов несколько лет назад, когда мы интересовались этой темой), количество мест ограничено, всё обучение соответствует российским стандартам, и даже болгарский язык там не изучается. Нужно ли подобное обучение вашим детям? Если вы рассматриваете проживание в Болгарии только как временное перед возвратом в Россию — то, наверное, да, лучше отправить в эту школу. В ином случае, это не имеет никакого смысла.

                P.S. Меня тут просили кота показать, ловите:

                P.P.S. Продолжение следует :-)
                Original source: habrahabr.ru (comments, light).

                https://habrahabr.ru/post/337602/


                Метки:  

                Работа и жизнь в Болгарии. Часть вторая

                Воскресенье, 10 Сентября 2017 г. 23:47 + в цитатник
                slamon вчера в 23:47 Управление

                Работа и жизнь в Болгарии. Часть вторая



                  18-ое ноября 2010-го года, Москва, 6 утра. На улице промозглый холодный ветер с мелким моросящими дождиком, заставляющий ёжиться в ожидании машины до Шереметьево. Регистрация, осмотр, паспортный контроль, небольшое ожидание, и вот уже в 8.20 самолет отрывается от полосы и несёт нас вдаль, в Софию. Два с половиной часа полёта, пустой встречающий аэропорт, небольшая очередь на паспортном контроле… И вот мы уже за дверьми аэропорта. Нас встречает яркое болгарское солнышко, ласково обогревающими своими лучами, и теплый легкий ветерок приятно пахнет свежестью и переменами…

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

                  Приезд




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

                  Такси высадило нас возле дома, где у нас был арендован апартамент. Выгрузив багаж, мы стали ожидать Николая, нашего агента, который должен был организовать передачу ключей и подпись акта приема-передачи имущества в апартаменте. Николай появился минут через 15 с маленьким букетом, который с улыбкой вручил моей супруге. После этого мы стали ожидать уже хозяйку апартамента, которая появилась ещё минут через 20. Опоздания у болгар — это достаточно распространенное явление, потом не удивляйтесь этому. Будьте на расслабоне, тут так все живут :-)

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

                  Проснувшись через несколько часов, я отправился на разведку в продуктовый магазин, ближайшим из которых была обычная «Билла». Улыбчивые продавцы, которые поздоровались со мной на кассе, заставили меня с непривычки чуть ли не шарахнуться в сторону. Впрочем, к этому затем очень быстро привыкаешь :-)

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



                  Дело в том, что в Болгарии договора чтут и блюдут. И если вы подписали договор на 1 год, то будьте добры весь год и оплачивать. И если примерно за месяц до окончания договора вы не изъявили желание договор разорвать, то он будет автоматом продлен ещё на год (а то и на три). Пользуетесь ли вы при этом интернетом / сотовой связью, или нет — это никого не интересует. Если вы при этом решили забить на оплату, то не удивляйтесь, если затем на вас могут подать в суд из-за копеечных 50 евро. Так вот, интернет с ТВ нам подключили спустя 2 недели, оказался он паршивым, и я сменил провайдера на м-тел. Что не помешало blizoo затем заваливать меня бумажками «немедленно оплатите счет».

                  В Болгарии есть аналог нашей большой тройки. Это компании Vivacom, M-tel и Telenor, более известный как Globul. Любопытные читатели могут заглянуть на сайты этих операторов, чтобы увидеть тарифные планы (ищите слово «планове», это «тариф» по-болгарски). По большей части все услуги являются пост-оплатными, хотя есть и предоплатные симки. Для заключения договора иностранцам нужен или паспорт, или лична карта (если вы её уже получили).

                  Интернет и ТВ от М-Тел весьма качественные, быстрые, в общем — я доволен. На ТВ сотни каналов, включая и русские (ну, если вы вдруг соскучились по «Братки в законе-17», то НТВ вам поможет наверстать упущенное). Большая часть каналов идет на болгарском языке, многие на оригинальном языке, но с болгарскими субтитрами. И тут я хотел бы немного рассказать о самом болгарском языке.

                  Болгарский язык


                  Болгарский язык для русского человека может показаться удивительным. Для неподготовленного русского человека, который никогда не сталкивался с болгарским языком, не составит проблем с лету прочитать текст, написанный на болгарском. Скажем так, процентов 80 вы сможете понять с лёту. Это и неудивительное: славянский язык, общие корни, старая добрая кириллица без добавления латинских букв. И даже если болгарское слово на письме содержит в себе «неправильный» порядок букв, ваш мозг легко сможет конвертировать слово в «правильное». Можете проверить: прочитайте фразу «Строителни работници оставиха четири столични квартала без ток». Уверен, что ни у одного читателя не вызовет проблем прочитать и понять эту фразу.

                  Но совсем другое дело, когда вы впервые слышите болгарскую речь вживую. И понимаете, что нифига не понимаете :-)

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

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

                  Ещё одно интересное отличие: произношение буквы "Ъ". Если вы когда-нибудь сталкивались с болгарским письмом (на болгарский сайт, например, забредали), то наверняка удивились обилию рассыпанных по словам твердых знаков. И вот теперь внимание — это вовсе не твердый знак, а гласная буква, близкая в первом приближении по произношению к русскому "Ы". Произносится она, разумеется, не прямо как русское Ы, но аналог очень близкий. Другая необычная буква — "Щ". Произносится приблизительно как слитное «ШТ». И напоследок: буква "Е" в болгарском практически всегда читается как русское «Э».
                  Для особо любопытных читателей даю домашнее задание: потренируйтесь в произношении слова «КЪЩА» («дом» в переводе на русский).

                  Также хочу рассказать вкратце о так называемых словах-обманках (не помню, как официально называется это явление, да и не суть). К примеру, болгарское слово «пердета» означает вовсе не то, что вы подумали, а просто «шторы». Если вы попросите продавца в магазине показать вам, где продается дыня, то продавец вам покажет на арбузы. Ибо слово «диня» означает «арбуз». Баня — это не то место, где весело хлестаются горячими вениками, а простая ванная. Стая — это комната, булка — невеста, грижа — забота, живот — жизнь, страхотно — синоним «красиво, прикольно»… Слов подобных очень много, и если, скажем, слово «стая» вы говорите не часто, то вот неверно понятое слово «право» меня в первую же мою поездку заставило лишних пару километров чесать по улице в поисках МакДональдса. Ибо нужно было пойти не вправо, а прямо. Да, кстати, если вы попросите болгар отыскать вам где-нибудь мангал, то болгарин может удивленно поднять брови. Ибо мангалами болгары называют цыган (примерный аналог «хач», извиняюсь за терминологию).

                  В изучении болгарского языка никаких особенностей нет по сравнению с изучением любого другого иностранного языка. Язык достаточно легко изучается в процессе общения с болгарами, при просмотре телепередач и чтении текстов (газет, например). Разумеется, если вы будете постоянно сидеть дома и выбираться только в магазин, то и ваш словарный запас будет ограничен числительными и банальными «привет, спасибо, сколько стоит». Заводите знакомых, больше общайтесь — и спустя уже несколько месяцев вы сможете чесать на болгарском на вполне приличном бытовом уровне. Сами болгары весьма дружелюбны и любопытны к русским, и проблем в поисках друзей у вас не будет. Если же вы жуткий интроверт и никак не хотите идти на контакт, то и это не будет проблемой. Многие болгары знают русский язык в разной степени (пожилые получше, молодые похуже), плюс включаем язык жестов и синонимов — и готово, главное не бояться и не комплексовать.

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

                  Бизнес


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

                  В Болгарии вести бизнес не просто, а очень просто. Нет никаких ограничений на открытие фирмы иностранцами, открытие новой фирмы занимает около недели, расчетный счет открывается в банке за 10 минут на месте, бухгалтерия прозрачна и проста. Минимальный уставной капитал фактически отсутствует (1 евро). В абсолютом большинстве случае действует налоговый режим 10% от прибыли (доход минус расход). Это всё касается ЕООД/ООД — фактически полный аналог российскому ООО. Есть ещё АД (акционерно дружество), аналог АО в РФ), тут уставной капитал составляет уже 25 000 евро. Многие лицензируемые деятельности вроде кредитных/банковских/платежных также требуют минимальный уставной капитал не ниже особо установленных законом.

                  Бумажная волокита сведена к минимуму, все документы в электронном виде доступны через Търговски регистър (аналог ЕГРЮЛ), там же любой человек может просмотреть все данные по вашей фирме. У вас есть на руках «дружествен договор» (в качестве аналога можно рассмотреть российский «Устав фирмы»), «решение за вписване в търговски регистър» и ЕИК — уникальный номер вашей фирмы. По факту, в повседневной жизни управления фирмой вам нужен только знать свой ЕИК. За исключением редчайший случаев при заключении сделок никто тут в здравой уме не будет просить от вас копии копий всяких там ИНН и прочего бумажного барахла. Есть ЕИК, есть реестр — этого более чем достаточно на практике. Ах да, при определенном обороте фирме необходимо будет зарегистрироваться на выплату ДДС (аналог НДС), он составляет сегодня 20%, возврат ДДС осуществляется раз в год.

                  Практически все небольшие фирмы (а они составляют абсолютное большинство фирм в Болгарии) отдают всю бухгалтерию на аутсорс таким же небольшими бухгалтерским компаниям. Стоимость ведения фирмы разное и обычно стартует от размера минимальной заработной платы в месяц. Эта цифра каждый год корректируется правительством страны, и на 2017-ый год составляет 460 лева (примерно 230 евро).

                  Найм сотрудников мало чем отличается от найма в России за одним исключением: уволить сотрудника можно без особых объяснений причин, достаточно уведомить за определенный срок, обозначенный в трудовом договоре, обычно это 1 месяц. Аналогично и сотрудник перед увольнением должен будет отработать один месяц. Другими словами, здесь отсутствуют какие-то различия между работодателем и работником: две стороны заключают между собой равный договор: ты работаешь — я плачу, это просто бизнес и ничего личного. Я лично считаю такой подход правильным и справедливым.

                  Налоги за сотрудника как и в России выплачивает работодатель; отпуск, зарплата, рабочие часы, обязанности работодателя и работника — всё прописывается в трудовом договоре. Болгарию с Россией также роднит ещё один факт в сфере рабочих отношений, доставшийся в наследие от СССР — это наличие трудовой книжки у работника, полного аналога российской трудовой книжки. Ну а остальных каких-то особых различий в плане работы между Болгарией и Россией, если честно, я не заметил. Атмосфера в коллективе, технологии, рабочие места, офис — всё это уже в дальнейшем зависит от конкретной фирмы и конкретных людей. Есть и тимбилдинги с размахом (корпоративы), есть и овертаймы, есть и дружеские отношения, есть и конфликты. В общем, всё как и в России :-)

                  Медицина


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

                  Для плановых же походов по врачам (в основном для дочери) мы использовали платные клиники. На мой первичный взгляд, стоимость лечения в платных клиниках в Болгарии дешевле московских раза в полтора-два. Квалификация врачей — разная, есть и хорошие профи, есть и раздолбаи аля Лобанов из «Интернов», прогуливающих лекции в университете. Клиники также тут разные: есть и супер-навороченные, например, «Токуда», где всё сделано на манер американских клиник; есть и клиники попроще. Государственные же больницы, куда мы ходили сдавать анализы для поступления в детский садик, визуально изнутри представляют страшенные убогие кабинеты, где можно снимать сцены для фильмов ужасов. Да, кстати, меня тут поправила супруга в процессе чтения: поход в государственную клинику даже для болгар платный, по направлению — стоимость будет небольшой (порядка пары евро), без направления — выше.

                  В Болгарии есть понятие «семейного доктора». Это что-то вроде нашего терапевта из прикрепленной поликлиники. Именно этот доктор будет выписывать вам рецепты на лекарства, проводить первичные осмотры и направлять к другим врачам. Да, кстати, имейте ввиду, что очень многие лекарства, которые есть в России, в Болгарии отсутствуют в принципе. Особенно выпадают в осадок аптекари, когда ты им пытаешься объяснить, что такое «зелёнка» :-)

                  При оформлении ВНЖ вы в обязательном порядке должны будете делать медицинскую страховку с покрытием до 30 000 евро. Если вы делаете эту страховку для отмазки (как это делали мы), то стоимость такой страховки будет не выше 30-50 евро. Но я советую вам сделать нормальную страховку в проверенной фирме. Дело в том, что по этой страховке вы сможете отбивать многие расходы в платных клиниках, что поможет здорово сэкономить на визитах к врачам. Мы про этот лайфхак узнали достаточно поздно от своих знакомых. Даже сами болгары очень часто предпочитают ходить в платные поликлиники, используя эти же страховки.

                  Если кратко резюмировать, то на улице вас никто умирать не оставит, а плановые визиты по врачам сильно по кошельку ударить не должны. Но лучше всё-таки не болеть )

                  Образование



                  Вначале, когда я работал из дома, супруга с ребенком осваивали местные детские площадки, коих было в достаточном количестве вокруг нашего дома. Помимо площадек для нас было приятным открытием таких мест, как детские «занимальни». Суть их простая: большая детская комната, набитая игрушками и небольшими аттракционами. Под присмотром воспитателей ребенок играет, рисует, лепит, в общем — развлекается по полной программе. Родители же в этот момент могут присесть отдохнуть в соседнее кафе или сгонять по своим делам. Стоимость более чем доступная (от 3 евро в час). Сегодня в Москве такие занимальни также появляются, но на 2010 год их ещё не было.

                  Затем мы решили, что пора бы ребенка социализировать. Нашей дочери на тот момент исполнилось 2.5 года, и мы решили отдать её в частный детский садик «Питър Пан»(не рекомендую). Для иностранцев есть возможность отдать ребенка и в государственный сад, но на тот конкретный момент (это было весной) нам пришлось бы ожидать осени для этого. Наша дочь на тот момент с трудом ещё говорила по-русски, поэтому определенные опасения насчет адаптации у нас с супругой были. Но как оказалось на практике — опасения оказались напрасны. Уже через несколько дней дочь с удовольствием ходила в садик, и уже тогда начала произносить первые болгарские слова. Спустя где-то полгода мы перевели её в другой детский сад, ибо отношение воспитателей к детям нам не особо понравилось (засекали не раз, что воспитательницы забивали на присмотр за детьми и тупо пялились в телевизор). Новый детский садик называется Доверие, мы оказались крайне довольны этим садиком, рекомендую и советую.

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

                  В Болгарии есть как государственные школы, так и частные. Для иностранцев обучение детей в государственной школе ранее было платным, сегодня же эту плату отменили. Не могу рассказать подробно об обучении в государственной школе, ибо мы свою дочь отдали по окончанию детского сада в платную школу под названием Образователни технологии, куда вместе с нами ушло в первый класс почти половина группы из детского сада. Стоимость обучения в школе составляет 350 евро в месяц (если оплачивать по-месячно) или 3550 евро при оплате сразу за год. Учатся дети с утра и до обеда (затем у нас была продленка с играми и прогулками), профессионально оборудованные классы, углубленное изучение английского языка. Учеба продолжается вплоть до 8-го класса, после чего идет уже так называемое профессиональное обучение либо в обычной, либо в специализированной школе. Суммарно в болгарских школах 12 классов, система оценок — 6-ти бальная. Стартует учеба 15-го сентября, и продолжается вплоть до июня. Таких каникул, как в России, в школах нет, исключение только одно — рождественские каникулы, которые длятся с 25-го декабря по 4-5 января. Кстати, для взрослых новогодних каникул тоже нет, уже 2-го января все выходят на работу.

                  В Софии также есть и настоящая русская школа. Это школа при посольстве, где обычно учатся дети консулов и прочих дипломатических сотрудников, впрочем она открыта и для всех остальных желающих. Обучение также платное (было 180 долларов несколько лет назад, когда мы интересовались этой темой), количество мест ограничено, всё обучение соответствует российским стандартам, и даже болгарский язык там не изучается. Нужно ли подобное обучение вашим детям? Если вы рассматриваете проживание в Болгарии только как временное перед возвратом в Россию — то, наверное, да, лучше отправить в эту школу. В ином случае, это не имеет никакого смысла.

                  P.S. Меня тут просили кота показать, ловите:

                  P.P.S. Продолжение следует :-)
                  Original source: habrahabr.ru (comments, light).

                  https://habrahabr.ru/post/337602/


                  Метки:  

                  Дайджест свежих материалов из мира фронтенда за последнюю неделю №279 (4 — 10 сентября 2017)

                  Воскресенье, 10 Сентября 2017 г. 23:41 + в цитатник
                  alexzfort сегодня в 23:41 Разработка

                  Дайджест свежих материалов из мира фронтенда за последнюю неделю №279 (4 — 10 сентября 2017)

                    Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.


                        Медиа    |    Веб-разработка    |    CSS    |    Javascript    |    Браузеры    |    Занимательное


                    Медиа


                    podcast Подкаст «Пятиминутка React» #34: Moscow Frontend Conference 2017 и BEM React Core
                    podcast Подкаст «devschacht»: Ночной фронтенд #3
                    podcast Подкаст «Фронтенд Юность (18+)» #18 Как Лёха не попал в Booking: Прокрастинация, собеседование в Booking, Приватные данные классов ES6, async_hooks
                    podcast Подкаст «Drinkcast», Выпуск #7 — «Все фронтендеры попадают в Питер»
                    video .getInstance: «Промисы в JavaScript»
                    video Видео докладов с конференции ChernivtsiJS #3, прошедшей 10 июня, 2017
                    video en Свежий выпуск шоу «Supercharged» о новом свойстве Font-Display, позволяющим улучшить скорость загрузки веб-шрифтов
                    video en Свежий выпуск шоу «Totally Tooling Tips» об инструменте Lighthouse

                    Веб-разработка


                    en confs.tech — сайт, где можно ознакомиться с грядущими международными конференциями по фронтенду
                    en Руководство по виртуальной реальности для веб-разработчиков
                    en Об особенностях и огранизации фронтенда на HealthCare.gov
                    en Примеры того, что я делаю каждый день в качестве разработчика фронтенда. Блог разработчика из IoT-компании
                    en Как в сервисе каршеринга car2go выбирали себе фреймворк
                    en Ленивое асинхронное растрирование SVG. Jake Archibald показывает способ растрирования SVG с помощью createImageBitmap
                    Еженедельная подборка красивых эффектов на CSS/SVG/JS #52




                    CSS


                    habr Сокращённые свойства. Зачем задавать картинку через background-image, если можно просто написать background?
                    en codepen Сборник советов по организации интерфейсов от Steve Schoger, на HTML и CSS
                    en Онлайн-генератор Critical Path CSS
                    en Цзен просто писать CSS. Заметка от Rich Harris, где он рассказывает, как самые большие проблемы с CSS могут быть решены без CSS-in-JS


                    JavaScript


                    video 8 Ошибок при изучении JavaScript — видео на канале Web Developer Blog
                    JavaScript и SEO: сканирует ли Google JavaScript?
                    [[][[]]+[]][+[]][++[+[]][+[]]] — это «n» в JavaScript
                    7 советов по обработке «undefined» в JavaScript
                    Базовый набор JavaScript алгоритмов: для начинающих
                    en Javascript: любопытный случай с Null >= 0
                    en Ироничный рассказ о руковостве каждого JavaScript фреймворка, написанного более чем 5 минут назад
                    en Как я убедил нашего технического директора перейти с CoffeeScript на ES6
                    en React vs Angular: подробное сравнение







                    Браузеры


                    Chrome Выпуск web-браузера Chrome 61
                    Firefox en 9 вещей в Firefox Dev Tools, о которых вы не знали
                    Chrome habr Обзор всех инструментов разработчика Chrome DevTools
                    Chrome en Как отлаживать JavaScript с помощью Chrome DevTools
                    Chrome В Chrome 63 появятся средства информирования о попытках перехвата HTTPS
                    Создатель Opera обвинил Google в препятствовании работе Opera и Vivaldi

                    Занимательное


                    Мэтт Мулленвег описал проблемы, связанные с Gutenberg, и подтвердил, что новый редактор появится в WordPress 5.0
                    Компания-владелец Trello и Jira запустила корпоративный мессенджер Stride
                    Facebook запустил сервис для встреч с друзьями в духе Badoo и Tinder
                    Криптовалюта: текущее состояние и перспективы развития
                    Наставничество в IT: что делать, если вам поручили джуниора
                    Как защитить веб-приложение: основные советы, инструменты, полезные ссылки
                    Как Google в тайне финансирует академические исследования. Себе на пользу
                    Ради всего святого, напишите на главной сайта, что делает ваша компания

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



                    Дайджест за прошлую неделю.
                    Материал подготовили dersmoll и alekskorovin.
                    Original source: habrahabr.ru (comments, light).

                    https://habrahabr.ru/post/337610/


                    Дайджест свежих материалов из мира фронтенда за последнюю неделю №279 (4 — 10 сентября 2017)

                    Воскресенье, 10 Сентября 2017 г. 23:41 + в цитатник
                    alexzfort сегодня в 23:41 Разработка

                    Дайджест свежих материалов из мира фронтенда за последнюю неделю №279 (4 — 10 сентября 2017)

                      Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.


                          Медиа    |    Веб-разработка    |    CSS    |    Javascript    |    Браузеры    |    Занимательное


                      Медиа


                      podcast Подкаст «Пятиминутка React» #34: Moscow Frontend Conference 2017 и BEM React Core
                      podcast Подкаст «devschacht»: Ночной фронтенд #3
                      podcast Подкаст «Фронтенд Юность (18+)» #18 Как Лёха не попал в Booking: Прокрастинация, собеседование в Booking, Приватные данные классов ES6, async_hooks
                      podcast Подкаст «Drinkcast», Выпуск #7 — «Все фронтендеры попадают в Питер»
                      video .getInstance: «Промисы в JavaScript»
                      video Видео докладов с конференции ChernivtsiJS #3, прошедшей 10 июня, 2017
                      video en Свежий выпуск шоу «Supercharged» о новом свойстве Font-Display, позволяющим улучшить скорость загрузки веб-шрифтов
                      video en Свежий выпуск шоу «Totally Tooling Tips» об инструменте Lighthouse

                      Веб-разработка


                      en confs.tech — сайт, где можно ознакомиться с грядущими международными конференциями по фронтенду
                      en Руководство по виртуальной реальности для веб-разработчиков
                      en Об особенностях и огранизации фронтенда на HealthCare.gov
                      en Примеры того, что я делаю каждый день в качестве разработчика фронтенда. Блог разработчика из IoT-компании
                      en Как в сервисе каршеринга car2go выбирали себе фреймворк
                      en Ленивое асинхронное растрирование SVG. Jake Archibald показывает способ растрирования SVG с помощью createImageBitmap
                      Еженедельная подборка красивых эффектов на CSS/SVG/JS #52




                      CSS


                      habr Сокращённые свойства. Зачем задавать картинку через background-image, если можно просто написать background?
                      en codepen Сборник советов по организации интерфейсов от Steve Schoger, на HTML и CSS
                      en Онлайн-генератор Critical Path CSS
                      en Цзен просто писать CSS. Заметка от Rich Harris, где он рассказывает, как самые большие проблемы с CSS могут быть решены без CSS-in-JS


                      JavaScript


                      video 8 Ошибок при изучении JavaScript — видео на канале Web Developer Blog
                      JavaScript и SEO: сканирует ли Google JavaScript?
                      [[][[]]+[]][+[]][++[+[]][+[]]] — это «n» в JavaScript
                      7 советов по обработке «undefined» в JavaScript
                      Базовый набор JavaScript алгоритмов: для начинающих
                      en Javascript: любопытный случай с Null >= 0
                      en Ироничный рассказ о руковостве каждого JavaScript фреймворка, написанного более чем 5 минут назад
                      en Как я убедил нашего технического директора перейти с CoffeeScript на ES6
                      en React vs Angular: подробное сравнение







                      Браузеры


                      Chrome Выпуск web-браузера Chrome 61
                      Firefox en 9 вещей в Firefox Dev Tools, о которых вы не знали
                      Chrome habr Обзор всех инструментов разработчика Chrome DevTools
                      Chrome en Как отлаживать JavaScript с помощью Chrome DevTools
                      Chrome В Chrome 63 появятся средства информирования о попытках перехвата HTTPS
                      Создатель Opera обвинил Google в препятствовании работе Opera и Vivaldi

                      Занимательное


                      Мэтт Мулленвег описал проблемы, связанные с Gutenberg, и подтвердил, что новый редактор появится в WordPress 5.0
                      Компания-владелец Trello и Jira запустила корпоративный мессенджер Stride
                      Facebook запустил сервис для встреч с друзьями в духе Badoo и Tinder
                      Криптовалюта: текущее состояние и перспективы развития
                      Наставничество в IT: что делать, если вам поручили джуниора
                      Как защитить веб-приложение: основные советы, инструменты, полезные ссылки
                      Как Google в тайне финансирует академические исследования. Себе на пользу
                      Ради всего святого, напишите на главной сайта, что делает ваша компания

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



                      Дайджест за прошлую неделю.
                      Материал подготовили dersmoll и alekskorovin.
                      Original source: habrahabr.ru (comments, light).

                      https://habrahabr.ru/post/337610/


                      Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec

                      Воскресенье, 10 Сентября 2017 г. 22:57 + в цитатник
                      eov сегодня в 22:57 Администрирование

                      Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec

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

                        Итак, у нас есть статический публичный IP адрес, который приходит Ethernet шнуром в MikroTik RouterBOARD 750G r3 (hEX). Пробуем собрать вот такую конструкцию.


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

                        1. Поднимаем VPS


                        Как вы уже догадались, нужна система, которая включена в интернет за пределами РФ. Большие деньги на это тратить не хотелось, и я остановился на Aruba Cloud. Здесь всего за 1 евро в месяц дается VM в локациях Италия, Чехия, Германия, Франция и Великобритания. Я свой выбор остановил на Чехии, потому что ping до наших ресурсов оказался на 20ms меньше, чем с Итальянского (50ms против 70ms). Ubuntu 16.04 LTS поднялась очень быстро. Войти в нее удалось раньше, чем «позеленел» статус в интерфейсе «облака».



                        Сервер устанавливается в минимальной конфигурации. Не помешает установить утилитку traceroute.

                        $ sudo apt install traceroute

                        2. Настраиваем GRE между MikroTik и Ubuntu


                        Выбор в пользу GRE был сделан по нескольким причинам:

                        • просто и понятно настраивается;
                        • легко траблешутится;
                        • маршрутизация проще некуда;
                        • элементарно отрисовывается график загрузки интерфейса в MikroTik.

                        Итак, на стороне Ubuntu описываем интерфейс tun1 в /etc/network/interfaces

                        $ sudo cat << EOF >> /etc/network/interfaces
                         iface tun1 inet static
                            address 192.168.10.1
                            netmask 255.255.255.0
                            pre-up iptunnel add tun1 mode gre local 80.211.x.x remote 188.x.x.x ttl 255
                            up ifconfig tun1 multicast
                            pointopoint 192.168.10.2
                            post-down iptunnel del tun1
                        EOF
                        

                        Здесь все просто:

                        • 80.211.x.x — адрес VM с Ubuntu в Чехии;
                        • 188.x.x.x — внешний адрес MikroTik;
                        • 192.168.10.1 — адрес на туннельном интерфейсе tun1 на стороне Ubuntu;
                        • 192.168.10.2 — адрес туннельного интерфейса на MikroTik;

                        Активацию этой части конфигурации я по-старинке делаю так:

                        $ sudo service networking restart

                        У нас получился вот такой интерфейс:

                        $ ifconfig tun1
                        tun1      Link encap:UNSPEC  HWaddr 10-D3-29-B2-00-00-B0-8A-00-00-00-00-00-00-00-00
                                  inet addr:192.168.10.1  P-t-P:192.168.10.2  Mask:255.255.255.255
                                  inet6 addr: fe80::200:5ffa:50d3:c9c2/64 Scope:Link
                                  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1476  Metric:1
                                  RX packets:379 errors:0 dropped:0 overruns:0 frame:0
                                  TX packets:322 errors:4 dropped:7 overruns:0 carrier:0
                                  collisions:0 txqueuelen:1
                                  RX bytes:103387 (103.3 KB)  TX bytes:159422 (159.4 KB)
                        
                        

                        Со стороны MikroTik настройка тоже несложная. Я делал это из Web-интерфейса.



                        Обращаю внимание на то, что не сконфигурирован keepalive. Мне так и не удалось включить ответную часть на Ubuntu. Если не будет трафика, то интерфейс на MikroTik будет «уходить» из running и подниматься, только если пойдет трафик со стороны Ubuntu.

                        На этом этапе у нас должны подняться туннельные интерфейсы с двух сторон. Проверить это просто. Достаточно запустить ping c Ubuntu в сторону MikroTik.

                        $ ping 192.168.10.2
                        PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.
                        64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=56.0 ms
                        64 bytes from 192.168.10.2: icmp_seq=2 ttl=64 time=59.9 ms
                        64 bytes from 192.168.10.2: icmp_seq=3 ttl=64 time=56.3 ms
                        64 bytes from 192.168.10.2: icmp_seq=4 ttl=64 time=56.1 ms
                        --- 192.168.10.2 ping statistics ---
                        4 packets transmitted, 4 received, 0% packet loss, time 3004ms
                        rtt min/avg/max/mdev = 56.091/57.137/59.936/1.618 ms
                        user@vps:~$ 

                        Настраиваем маршрутизацию в сторону абонентских сетей в туннельный интрефейс

                        Приватные IP адреса локальной сети, из которой осуществляется выход в интернет — 192.168.1.0/24. Сеть 192.168.6.0/24 — это сеть, выделенная для подключения к MikroTik по L2TP из «внешнего мира». Для того, чтобы работали компьютеры локальной сети и удаленные устройства, добавляем маршруты на обе сети в конец файла /etc/network/interfaces

                        $ sudo cat << EOF >> /etc/network/interfaces
                        #static route"
                        up ip ro add 192.168.1.0/24 via 192.168.10.2
                        up ip ro add 192.168.6.0/24 via 192.168.10.2
                        EOF
                        

                        Еще раз просим систему обновить сетевые настройки

                        $ sudo service networking restart

                        Включаем ip_forward

                        $ sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
                        $ sudo sysctl -p

                        Прописываем маскарадинг

                        $ sudo iptables -t nat -A POSTROUTING -j SNAT --to-source 80.211.x.x -o eth0

                        Настаиваем маршрутизацию на MikroTik

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

                        Итак, добавляем маршруты на MikroTik (через терминалку):

                        /ip route
                        add comment=linkedin distance=1 dst-address=91.225.248.0/22 gateway=gre-tunnel1
                        add comment=linkedin distance=1 dst-address=108.174.0.0/20 gateway=gre-tunnel1
                        add comment=linkedin distance=1 dst-address=185.63.144.0/22 gateway=gre-tunnel1
                        

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

                        На дальнейшие эксперименты меня натолкнул тот факт, что в настройках GRE интерфейса MikroTik есть опция IPsec Secret. Неужели действительно все так просто?!

                        3. Зашифровываем туннель


                        В качестве шифровальщика на стороне Ubuntu я выбрал strongSwan. Пример конфигурации я взял из материала Configure GRE over IPSec secured private channel, но сразу не заработало и пришлось внести некоторые правки.

                        Устанаваливаем

                        $ apt install strongswan

                        Вносим в основной конфигурационный файл strongSwan вот это:

                        $ cat << EOF > /etc/ipsec.conf 
                        # ipsec.conf - strongSwan IPsec configuration file
                        
                        config setup
                            charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"
                        
                        conn %default
                        #    keyexchange=ikev2
                        
                        conn mikrotik
                            # Try connect on daemon start
                            auto=start
                        
                            # Authentication by PSK (see ipsec.secret)
                            authby=secret
                        
                            # Disable compression
                            compress=no
                        
                            # Re-dial setings
                            closeaction=clear
                            dpddelay=30s
                            dpdtimeout=150s
                            dpdaction=restart
                        
                            # ESP Authentication settings (Phase 2)
                            esp=aes128-sha1
                        
                            # UDP redirects
                            forceencaps=no
                        
                            # IKE Authentication and keyring settings (Phase 1)
                            ike=aes128-sha1-modp2048,aes256-sha1-modp2048
                            ikelifetime=86400s
                            keyingtries=%forever
                            lifetime=3600s
                        
                            # Internet Key Exchange (IKE) version
                            # Default: Charon - ikev2, Pluto: ikev1
                            keyexchange=ikev1
                        
                            # connection type
                            type=transport
                        
                            # Peers
                            left=188.x.x.x
                            right=80.211.x.x
                        
                            # Protocol type. May not work in numeric then need set 'gre'
                            leftprotoport=47
                            rightprotoport=47
                        EOF 
                        

                        Прописываем pre-shared-key (PSK) в /etc/ipsec.secrets

                        $ echo "80.211.x.x 188.x.x.x : PSK VeryBigSecret" >> /etc/ipsec.secrets

                        Перезапускаем strongSwan

                        $ ipsec restart

                        На этом настройка Ubuntu практически завершена. Приступаем к настройке MikroTik.

                        Я выставил вот такие настройки дефалтового proposal



                        Настало время вписать в поле IPsec Secret тот же PSK, что был указан в /etc/ipsec.secrets на сервере (VeryBigSecret).

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

                        MikroTik



                        Если «провалиться» глубже, то должно быть вот так:



                        Ubuntu

                        $ ipsec status
                        Security Associations (1 up, 0 connecting):
                                mikrotik[2]: ESTABLISHED 60 minutes ago, 80.211.x.x[80.211.x.x]...188.x.x.x[188.x.x.x]
                                mikrotik{2}:  INSTALLED, TRANSPORT, reqid 1, ESP SPIs: cc075de3_i 07620dfa_o
                                mikrotik{2}:   80.211.x.x/32[gre] === 188.x.x.x/32[gre]
                        

                        Теперь GRE (protocol 47) между MikroTik и Ubuntu шифруется IPseс (ESP). Анализ pcap файла, снятого tcpdump-ом, это подтвердил.



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

                        Решение нашлось быстро. Оказалось, что достаточно уменьшить MTU до 1435 на обоих концах туннеля.

                        MikroTik



                        Ubuntu — добавляем mtu 1435 в описание интерфейса.

                        auto tun1
                        iface tun1 inet static
                            address 192.168.10.1
                            netmask 255.255.255.0
                            pre-up iptunnel add tun1 mode gre local 80.211.x.x remote 188.x.x.x ttl 255
                            up ifconfig tun1 multicast
                            pointopoint 192.168.10.2
                            mtu 1435
                            post-down iptunnel del tun1
                        

                        Диагностика установления IPsec соединения не тривиальна. На Ubuntu логи читаются значительно проще, чем на MikroTik. По умолчанию на MikroTik выключено логирование IPsec. Включается просто, но проводить анализ проще через терминалку.

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

                        P.S.: В планах настроить IKEv2 туннель с моих устройств (я использую технику Apple) непосредственно на сервер с использованием сертификатов. Пока мне не удалось это сделать. Apple-девайсы почему-то не отвечают на запросы установления защищенного соединения со стороны сервера. Можно, конечно, сделать L2tp, но это уже не интересно: такой опыт у меня уже был.
                        Original source: habrahabr.ru (comments, light).

                        https://habrahabr.ru/post/337426/


                        Метки:  

                        Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec

                        Воскресенье, 10 Сентября 2017 г. 22:57 + в цитатник
                        eov сегодня в 22:57 Администрирование

                        Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec

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

                          Итак, у нас есть статический публичный IP адрес, который приходит Ethernet шнуром в MikroTik RouterBOARD 750G r3 (hEX). Пробуем собрать вот такую конструкцию.


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

                          1. Поднимаем VPS


                          Как вы уже догадались, нужна система, которая включена в интернет за пределами РФ. Большие деньги на это тратить не хотелось, и я остановился на Aruba Cloud. Здесь всего за 1 евро в месяц дается VM в локациях Италия, Чехия, Германия, Франция и Великобритания. Я свой выбор остановил на Чехии, потому что ping до наших ресурсов оказался на 20ms меньше, чем с Итальянского (50ms против 70ms). Ubuntu 16.04 LTS поднялась очень быстро. Войти в нее удалось раньше, чем «позеленел» статус в интерфейсе «облака».



                          Сервер устанавливается в минимальной конфигурации. Не помешает установить утилитку traceroute.

                          $ sudo apt install traceroute

                          2. Настраиваем GRE между MikroTik и Ubuntu


                          Выбор в пользу GRE был сделан по нескольким причинам:

                          • просто и понятно настраивается;
                          • легко траблешутится;
                          • маршрутизация проще некуда;
                          • элементарно отрисовывается график загрузки интерфейса в MikroTik.

                          Итак, на стороне Ubuntu описываем интерфейс tun1 в /etc/network/interfaces

                          $ sudo cat << EOF >> /etc/network/interfaces
                           iface tun1 inet static
                              address 192.168.10.1
                              netmask 255.255.255.0
                              pre-up iptunnel add tun1 mode gre local 80.211.x.x remote 188.x.x.x ttl 255
                              up ifconfig tun1 multicast
                              pointopoint 192.168.10.2
                              post-down iptunnel del tun1
                          EOF
                          

                          Здесь все просто:

                          • 80.211.x.x — адрес VM с Ubuntu в Чехии;
                          • 188.x.x.x — внешний адрес MikroTik;
                          • 192.168.10.1 — адрес на туннельном интерфейсе tun1 на стороне Ubuntu;
                          • 192.168.10.2 — адрес туннельного интерфейса на MikroTik;

                          Активацию этой части конфигурации я по-старинке делаю так:

                          $ sudo service networking restart

                          У нас получился вот такой интерфейс:

                          $ ifconfig tun1
                          tun1      Link encap:UNSPEC  HWaddr 10-D3-29-B2-00-00-B0-8A-00-00-00-00-00-00-00-00
                                    inet addr:192.168.10.1  P-t-P:192.168.10.2  Mask:255.255.255.255
                                    inet6 addr: fe80::200:5ffa:50d3:c9c2/64 Scope:Link
                                    UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1476  Metric:1
                                    RX packets:379 errors:0 dropped:0 overruns:0 frame:0
                                    TX packets:322 errors:4 dropped:7 overruns:0 carrier:0
                                    collisions:0 txqueuelen:1
                                    RX bytes:103387 (103.3 KB)  TX bytes:159422 (159.4 KB)
                          
                          

                          Со стороны MikroTik настройка тоже несложная. Я делал это из Web-интерфейса.



                          Обращаю внимание на то, что не сконфигурирован keepalive. Мне так и не удалось включить ответную часть на Ubuntu. Если не будет трафика, то интерфейс на MikroTik будет «уходить» из running и подниматься, только если пойдет трафик со стороны Ubuntu.

                          На этом этапе у нас должны подняться туннельные интерфейсы с двух сторон. Проверить это просто. Достаточно запустить ping c Ubuntu в сторону MikroTik.

                          $ ping 192.168.10.2
                          PING 192.168.10.2 (192.168.10.2) 56(84) bytes of data.
                          64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=56.0 ms
                          64 bytes from 192.168.10.2: icmp_seq=2 ttl=64 time=59.9 ms
                          64 bytes from 192.168.10.2: icmp_seq=3 ttl=64 time=56.3 ms
                          64 bytes from 192.168.10.2: icmp_seq=4 ttl=64 time=56.1 ms
                          --- 192.168.10.2 ping statistics ---
                          4 packets transmitted, 4 received, 0% packet loss, time 3004ms
                          rtt min/avg/max/mdev = 56.091/57.137/59.936/1.618 ms
                          user@vps:~$ 

                          Настраиваем маршрутизацию в сторону абонентских сетей в туннельный интрефейс

                          Приватные IP адреса локальной сети, из которой осуществляется выход в интернет — 192.168.1.0/24. Сеть 192.168.6.0/24 — это сеть, выделенная для подключения к MikroTik по L2TP из «внешнего мира». Для того, чтобы работали компьютеры локальной сети и удаленные устройства, добавляем маршруты на обе сети в конец файла /etc/network/interfaces

                          $ sudo cat << EOF >> /etc/network/interfaces
                          #static route"
                          up ip ro add 192.168.1.0/24 via 192.168.10.2
                          up ip ro add 192.168.6.0/24 via 192.168.10.2
                          EOF
                          

                          Еще раз просим систему обновить сетевые настройки

                          $ sudo service networking restart

                          Включаем ip_forward

                          $ sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
                          $ sudo sysctl -p

                          Прописываем маскарадинг

                          $ sudo iptables -t nat -A POSTROUTING -j SNAT --to-source 80.211.x.x -o eth0

                          Настаиваем маршрутизацию на MikroTik

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

                          Итак, добавляем маршруты на MikroTik (через терминалку):

                          /ip route
                          add comment=linkedin distance=1 dst-address=91.225.248.0/22 gateway=gre-tunnel1
                          add comment=linkedin distance=1 dst-address=108.174.0.0/20 gateway=gre-tunnel1
                          add comment=linkedin distance=1 dst-address=185.63.144.0/22 gateway=gre-tunnel1
                          

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

                          На дальнейшие эксперименты меня натолкнул тот факт, что в настройках GRE интерфейса MikroTik есть опция IPsec Secret. Неужели действительно все так просто?!

                          3. Зашифровываем туннель


                          В качестве шифровальщика на стороне Ubuntu я выбрал strongSwan. Пример конфигурации я взял из материала Configure GRE over IPSec secured private channel, но сразу не заработало и пришлось внести некоторые правки.

                          Устанаваливаем

                          $ apt install strongswan

                          Вносим в основной конфигурационный файл strongSwan вот это:

                          $ cat << EOF > /etc/ipsec.conf 
                          # ipsec.conf - strongSwan IPsec configuration file
                          
                          config setup
                              charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"
                          
                          conn %default
                          #    keyexchange=ikev2
                          
                          conn mikrotik
                              # Try connect on daemon start
                              auto=start
                          
                              # Authentication by PSK (see ipsec.secret)
                              authby=secret
                          
                              # Disable compression
                              compress=no
                          
                              # Re-dial setings
                              closeaction=clear
                              dpddelay=30s
                              dpdtimeout=150s
                              dpdaction=restart
                          
                              # ESP Authentication settings (Phase 2)
                              esp=aes128-sha1
                          
                              # UDP redirects
                              forceencaps=no
                          
                              # IKE Authentication and keyring settings (Phase 1)
                              ike=aes128-sha1-modp2048,aes256-sha1-modp2048
                              ikelifetime=86400s
                              keyingtries=%forever
                              lifetime=3600s
                          
                              # Internet Key Exchange (IKE) version
                              # Default: Charon - ikev2, Pluto: ikev1
                              keyexchange=ikev1
                          
                              # connection type
                              type=transport
                          
                              # Peers
                              left=188.x.x.x
                              right=80.211.x.x
                          
                              # Protocol type. May not work in numeric then need set 'gre'
                              leftprotoport=47
                              rightprotoport=47
                          EOF 
                          

                          Прописываем pre-shared-key (PSK) в /etc/ipsec.secrets

                          $ echo "80.211.x.x 188.x.x.x : PSK VeryBigSecret" >> /etc/ipsec.secrets

                          Перезапускаем strongSwan

                          $ ipsec restart

                          На этом настройка Ubuntu практически завершена. Приступаем к настройке MikroTik.

                          Я выставил вот такие настройки дефалтового proposal



                          Настало время вписать в поле IPsec Secret тот же PSK, что был указан в /etc/ipsec.secrets на сервере (VeryBigSecret).

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

                          MikroTik



                          Если «провалиться» глубже, то должно быть вот так:



                          Ubuntu

                          $ ipsec status
                          Security Associations (1 up, 0 connecting):
                                  mikrotik[2]: ESTABLISHED 60 minutes ago, 80.211.x.x[80.211.x.x]...188.x.x.x[188.x.x.x]
                                  mikrotik{2}:  INSTALLED, TRANSPORT, reqid 1, ESP SPIs: cc075de3_i 07620dfa_o
                                  mikrotik{2}:   80.211.x.x/32[gre] === 188.x.x.x/32[gre]
                          

                          Теперь GRE (protocol 47) между MikroTik и Ubuntu шифруется IPseс (ESP). Анализ pcap файла, снятого tcpdump-ом, это подтвердил.



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

                          Решение нашлось быстро. Оказалось, что достаточно уменьшить MTU до 1435 на обоих концах туннеля.

                          MikroTik



                          Ubuntu — добавляем mtu 1435 в описание интерфейса.

                          auto tun1
                          iface tun1 inet static
                              address 192.168.10.1
                              netmask 255.255.255.0
                              pre-up iptunnel add tun1 mode gre local 80.211.x.x remote 188.x.x.x ttl 255
                              up ifconfig tun1 multicast
                              pointopoint 192.168.10.2
                              mtu 1435
                              post-down iptunnel del tun1
                          

                          Диагностика установления IPsec соединения не тривиальна. На Ubuntu логи читаются значительно проще, чем на MikroTik. По умолчанию на MikroTik выключено логирование IPsec. Включается просто, но проводить анализ проще через терминалку.

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

                          P.S.: В планах настроить IKEv2 туннель с моих устройств (я использую технику Apple) непосредственно на сервер с использованием сертификатов. Пока мне не удалось это сделать. Apple-девайсы почему-то не отвечают на запросы установления защищенного соединения со стороны сервера. Можно, конечно, сделать L2tp, но это уже не интересно: такой опыт у меня уже был.
                          Original source: habrahabr.ru (comments, light).

                          https://habrahabr.ru/post/337426/


                          Метки:  

                          Специфика использования Redux в Polymer и Vue

                          Воскресенье, 10 Сентября 2017 г. 22:23 + в цитатник
                          kolesoffac сегодня в 22:23 Разработка

                          Специфика использования Redux в Polymer и Vue


                            Как я уже писал в своих предыдущих статьях я работал и с polymer и с vue в связке с redux. Поэтому хотелось бы поделиться опытом, связанным со спецификой использования redux в данных библиотеках. Рассматривать будем на простейших атомарных контролах: нативных (input, checkbox) и обернутых, в виде компонентов данных библиотек.
                            В статье я опуская описание настройки интеграции redux с polymer и vue, а так же описание азов самого redux, дабы не эту тему хочу раскрыть в статье.

                            0. Введение


                            Сначала вспомним один из основных принципов redux:
                            The only way to change the state is to emit an action, an object describing what happened.

                            Исходя из него ясно, что напрямую мы не можем изменить состояние, а сделать это можем только через диспатч экшена после наступление необходимого event'а.
                            Схематично это можно изобразить так:

                            Как видим наблюдается односторонний поток данных.

                            1. Нативные контролы


                            polymer


                            Очень удобная вещь в polymer при связке с redux дак это односторонний биндинг.

                            template:


                            js-code:
                            changeInput: function(e) {
                              this.dispatch("setText", e.currentTarget.value);
                            }


                            Поэтому с input все, в принципе стандартно: при событии change диспатчим action и после чего измененное значение попадает в propFromReduxStore и контрол перерендерится уже с новым значением.

                            vue


                            C vue немного другая ситуация, в нем нет как такагого одностороннего биндинга, как в polymer. Но подобную функциональность можно достигнуть через модификатор sync

                            template:


                            js-code:
                            changeInput: function(e) {
                              this.actionsRedux("setText", e.currentTarget.value);
                            }


                            Остальное все как и в варианте с polymer.

                            2. Компоненты


                            С компонентами сложней, так как это совокупность методов, событий, «завернутые» в компоновку html-элементов в виде шаблона.
                            Схематичное описание работы компонента:

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

                            polymer


                            На примере компонента paper-checkbox

                            template:


                            js-code:
                            changeCheck: function(e) { //Здесь ловим клик по компоненту
                              //Предотвращаем bubbling события, что бы компонент сразу не перерендерил компонент 
                              e.stopPropagation();
                              this.dispatch("setChecked", !this.propFromReduxStore);
                            }
                            


                            vue


                            На примере компонента el-checkbox

                            template:
                            
                            


                            js-code:
                            changeCheck: function() {
                            this.actionsRedux("setChecked", !this.propFromReduxStore);
                            }


                            В компоненте может даже и не быть события click, а если и есть, то узнаем мы об его наступлении уже постфактум, не говоря уже об его подалении, но зато есть модификатор native, который позволяет получить доступ ко всем возможным нативным событиям. Так же есть модификатор stop, который даже позволит нам не писать e.stopPropagation(), как это было с polymer. Малость, а приятно.

                            React не рассмотрел, так как на практике его не использовал, если не считать jsx-темплейтов в vue, но это совершенно не то. Но все-таки, насколько я наслышен от коллег по цеху, там таких проблем нет, в виду внутренней архитектуры обработки событий.
                            Original source: habrahabr.ru (comments, light).

                            https://habrahabr.ru/post/337564/


                            Метки:  

                            Специфика использования Redux в Polymer и Vue

                            Воскресенье, 10 Сентября 2017 г. 22:23 + в цитатник
                            kolesoffac сегодня в 22:23 Разработка

                            Специфика использования Redux в Polymer и Vue


                              Как я уже писал в своих предыдущих статьях я работал и с polymer и с vue в связке с redux. Поэтому хотелось бы поделиться опытом, связанным со спецификой использования redux в данных библиотеках. Рассматривать будем на простейших атомарных контролах: нативных (input, checkbox) и обернутых, в виде компонентов данных библиотек.
                              В статье я опуская описание настройки интеграции redux с polymer и vue, а так же описание азов самого redux, дабы не эту тему хочу раскрыть в статье.

                              0. Введение


                              Сначала вспомним один из основных принципов redux:
                              The only way to change the state is to emit an action, an object describing what happened.

                              Исходя из него ясно, что напрямую мы не можем изменить состояние, а сделать это можем только через диспатч экшена после наступление необходимого event'а.
                              Схематично это можно изобразить так:

                              Как видим наблюдается односторонний поток данных.

                              1. Нативные контролы


                              polymer


                              Очень удобная вещь в polymer при связке с redux дак это односторонний биндинг.

                              template:


                              js-code:
                              changeInput: function(e) {
                                this.dispatch("setText", e.currentTarget.value);
                              }


                              Поэтому с input все, в принципе стандартно: при событии change диспатчим action и после чего измененное значение попадает в propFromReduxStore и контрол перерендерится уже с новым значением.

                              vue


                              C vue немного другая ситуация, в нем нет как такагого одностороннего биндинга, как в polymer. Но подобную функциональность можно достигнуть через модификатор sync

                              template:


                              js-code:
                              changeInput: function(e) {
                                this.actionsRedux("setText", e.currentTarget.value);
                              }


                              Остальное все как и в варианте с polymer.

                              2. Компоненты


                              С компонентами сложней, так как это совокупность методов, событий, «завернутые» в компоновку html-элементов в виде шаблона.
                              Схематичное описание работы компонента:

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

                              polymer


                              На примере компонента paper-checkbox

                              template:


                              js-code:
                              changeCheck: function(e) { //Здесь ловим клик по компоненту
                                //Предотвращаем bubbling события, что бы компонент сразу не перерендерил компонент 
                                e.stopPropagation();
                                this.dispatch("setChecked", !this.propFromReduxStore);
                              }
                              


                              vue


                              На примере компонента el-checkbox

                              template:
                              
                              


                              js-code:
                              changeCheck: function() {
                              this.actionsRedux("setChecked", !this.propFromReduxStore);
                              }


                              В компоненте может даже и не быть события click, а если и есть, то узнаем мы об его наступлении уже постфактум, не говоря уже об его подалении, но зато есть модификатор native, который позволяет получить доступ ко всем возможным нативным событиям. Так же есть модификатор stop, который даже позволит нам не писать e.stopPropagation(), как это было с polymer. Малость, а приятно.

                              React не рассмотрел, так как на практике его не использовал, если не считать jsx-темплейтов в vue, но это совершенно не то. Но все-таки, насколько я наслышен от коллег по цеху, там таких проблем нет, в виду внутренней архитектуры обработки событий.
                              Original source: habrahabr.ru (comments, light).

                              https://habrahabr.ru/post/337564/


                              Метки:  

                              Считаем до трёх: четыре

                              Воскресенье, 10 Сентября 2017 г. 22:05 + в цитатник
                              haqreu сегодня в 22:05 Разработка

                              Считаем до трёх: четыре

                                Proof of concept: однотритный вычислитель



                                Это уже четвёртая статья, по мере готовности будет продолжение. Оглавление:


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



                                Неблизкое будущее: система команд трёхтритного вычислителя


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

                                • каждая инструкция будет фиксированной длины (5 тритов)
                                • два трита на идентификатор инструкции, три трита (одна триада) на её параметр

                                NN (-4) — расширение на будущее (сложение/вычитание с переносом/заёмом, пропуск следующей команды в зависимости от флага знака и флага переноса и т.д.)
                                NO (-3) — передать управление на ttt (в будущем можно переключать сегменты через регистр R13)
                                NP (-2) — выполнить OPB ttt (универсальная бинарная команда) над R1 и R2 (две другие триады, задающие команду, берутся из R3 и R4) и установить флаг знака
                                ON (-1) — выполнить OPA ttt (универсальная унарная команда) над R1 (результат записать в тот же R1) и установить флаг знака
                                OO (0) — копирование регистров (см. далее)
                                OP (+1) — записать триаду в регистр R1
                                PN (+2) — записать триаду в регистр R2
                                PO (+3) — записать триаду в регистр R3
                                PP (+4) — записать триаду в регистр R4

                                Копирование регистров:

                                OONNN — скопировать R1 в R13
                                OONNO — скопировать R1 в R12
                                OONNP — скопировать R1 в R11
                                OONON — скопировать R1 в R10
                                OONOO — скопировать R1 в R9
                                OONOP — скопировать R1 в R8
                                OOPON — скопировать R1 в R7
                                OOPOO — скопировать R1 в R6
                                OOPOP — скопировать R1 в R5
                                OOONN — скопировать R1 в R4
                                OOONO — скопировать R1 в R3
                                OOONP — скопировать R1 в R2
                                OOOON — декремент R1 и установить флаг знака
                                OOOOO — проверить R1 и установить флаг знака
                                OOOOP — инкремент R1 и установить флаг знака
                                OOOPN — скопировать R2 в R1
                                OOOPO — скопировать R3 в R1
                                OOOPP — скопировать R4 в R1
                                OOPNN — скопировать R5 в R1
                                OOPNO — скопировать R6 в R1
                                OOPNP — скопировать R7 в R1
                                OOPON — скопировать R8 в R1
                                OOPOO — скопировать R9 в R1
                                OOPOP — скопировать R10 в R1
                                OOPPN — скопировать R11 в R1
                                OOPPO — скопировать R12 в R1
                                OOPPP — скопировать R13 в R1

                                Обратите внимание, что копирование производится только из/в регистр R1. Копирование между другими регистрами придётся делать в две команды, но зато три трита параметра команды копирования OO мне позволяют адресовать аж 13 регистров.

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

                                Один сегмент памяти команд будет набран из пятнадцати вот таких платок:



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

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

                                Дело настоящего: однотритный вычислитель


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

                                IJ
                                NN — скопировать R1 в R4
                                NO — скопировать R1 в R3
                                NP — скопировать R1 в R2
                                ON — декремент R1 и установить флаг знака
                                OO — проверить R1 и установить флаг знака
                                OP — инкремент R1 и установить флаг знака
                                PN — скопировать R2 в R1
                                PO — скопировать R3 в R1
                                PP — скопировать R4 в R1

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

                                Собираем регистры


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

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



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



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



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





                                Адресуем правильные регистры в нужный момент


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

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



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

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





                                Непосредственно копирование


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

                                Копирование из регистра в буфер и обратно можно сделать крайне примитивно:



                                По отрицательному сигналу CLK на ногу C буфера придёт -1, а на ноге C памяти будет 0, что означает, что буфер запомнит то, что будет ему подано на ногу A. По положительному сигналу CLK всё с точностью до наоборот, скопируем содержимое буфера назад в память.

                                Теперь осталось вспомнить, что у нас есть не только команды копирования, но и команды увеличения/уменьшения регистра R1 на единицу. Конечная схема нашего компьютера выглядит так:



                                Когда старший трит команды ненулевой, то выход Q буфера подаётся напрямую на вход A памяти. Когда же он нулевой, то выход Q буфера подаётся в память через полусумматор (схему полусумматора смотрите в первой статье). Аналогично происходит и установка флага знака.

                                Ну а вот так выглядит железка в сборе:



                                А вот видео её тестирования:





                                Тестировать каждый кирпичик отдельно очень полезно, вот все дохлые перемычки, которые были найдены в процессе сборки только этой железки (привет нашим восточным партнёрам!)



                                Подведём итог


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

                                Буду рад услышать новые идеи и замечания!
                                Original source: habrahabr.ru (comments, light).

                                https://habrahabr.ru/post/337606/


                                Метки:  

                                Считаем до трёх: четыре

                                Воскресенье, 10 Сентября 2017 г. 22:05 + в цитатник
                                haqreu сегодня в 22:05 Разработка

                                Считаем до трёх: четыре

                                  Proof of concept: однотритный вычислитель



                                  Это уже четвёртая статья, по мере готовности будет продолжение. Оглавление:


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



                                  Неблизкое будущее: система команд трёхтритного вычислителя


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

                                  • каждая инструкция будет фиксированной длины (5 тритов)
                                  • два трита на идентификатор инструкции, три трита (одна триада) на её параметр

                                  NN (-4) — расширение на будущее (сложение/вычитание с переносом/заёмом, пропуск следующей команды в зависимости от флага знака и флага переноса и т.д.)
                                  NO (-3) — передать управление на ttt (в будущем можно переключать сегменты через регистр R13)
                                  NP (-2) — выполнить OPB ttt (универсальная бинарная команда) над R1 и R2 (две другие триады, задающие команду, берутся из R3 и R4) и установить флаг знака
                                  ON (-1) — выполнить OPA ttt (универсальная унарная команда) над R1 (результат записать в тот же R1) и установить флаг знака
                                  OO (0) — копирование регистров (см. далее)
                                  OP (+1) — записать триаду в регистр R1
                                  PN (+2) — записать триаду в регистр R2
                                  PO (+3) — записать триаду в регистр R3
                                  PP (+4) — записать триаду в регистр R4

                                  Копирование регистров:

                                  OONNN — скопировать R1 в R13
                                  OONNO — скопировать R1 в R12
                                  OONNP — скопировать R1 в R11
                                  OONON — скопировать R1 в R10
                                  OONOO — скопировать R1 в R9
                                  OONOP — скопировать R1 в R8
                                  OOPON — скопировать R1 в R7
                                  OOPOO — скопировать R1 в R6
                                  OOPOP — скопировать R1 в R5
                                  OOONN — скопировать R1 в R4
                                  OOONO — скопировать R1 в R3
                                  OOONP — скопировать R1 в R2
                                  OOOON — декремент R1 и установить флаг знака
                                  OOOOO — проверить R1 и установить флаг знака
                                  OOOOP — инкремент R1 и установить флаг знака
                                  OOOPN — скопировать R2 в R1
                                  OOOPO — скопировать R3 в R1
                                  OOOPP — скопировать R4 в R1
                                  OOPNN — скопировать R5 в R1
                                  OOPNO — скопировать R6 в R1
                                  OOPNP — скопировать R7 в R1
                                  OOPON — скопировать R8 в R1
                                  OOPOO — скопировать R9 в R1
                                  OOPOP — скопировать R10 в R1
                                  OOPPN — скопировать R11 в R1
                                  OOPPO — скопировать R12 в R1
                                  OOPPP — скопировать R13 в R1

                                  Обратите внимание, что копирование производится только из/в регистр R1. Копирование между другими регистрами придётся делать в две команды, но зато три трита параметра команды копирования OO мне позволяют адресовать аж 13 регистров.

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

                                  Один сегмент памяти команд будет набран из пятнадцати вот таких платок:



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

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

                                  Дело настоящего: однотритный вычислитель


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

                                  IJ
                                  NN — скопировать R1 в R4
                                  NO — скопировать R1 в R3
                                  NP — скопировать R1 в R2
                                  ON — декремент R1 и установить флаг знака
                                  OO — проверить R1 и установить флаг знака
                                  OP — инкремент R1 и установить флаг знака
                                  PN — скопировать R2 в R1
                                  PO — скопировать R3 в R1
                                  PP — скопировать R4 в R1

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

                                  Собираем регистры


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

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



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



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



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





                                  Адресуем правильные регистры в нужный момент


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

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



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

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





                                  Непосредственно копирование


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

                                  Копирование из регистра в буфер и обратно можно сделать крайне примитивно:



                                  По отрицательному сигналу CLK на ногу C буфера придёт -1, а на ноге C памяти будет 0, что означает, что буфер запомнит то, что будет ему подано на ногу A. По положительному сигналу CLK всё с точностью до наоборот, скопируем содержимое буфера назад в память.

                                  Теперь осталось вспомнить, что у нас есть не только команды копирования, но и команды увеличения/уменьшения регистра R1 на единицу. Конечная схема нашего компьютера выглядит так:



                                  Когда старший трит команды ненулевой, то выход Q буфера подаётся напрямую на вход A памяти. Когда же он нулевой, то выход Q буфера подаётся в память через полусумматор (схему полусумматора смотрите в первой статье). Аналогично происходит и установка флага знака.

                                  Ну а вот так выглядит железка в сборе:



                                  А вот видео её тестирования:





                                  Тестировать каждый кирпичик отдельно очень полезно, вот все дохлые перемычки, которые были найдены в процессе сборки только этой железки (привет нашим восточным партнёрам!)



                                  Подведём итог


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

                                  Буду рад услышать новые идеи и замечания!
                                  Original source: habrahabr.ru (comments, light).

                                  https://habrahabr.ru/post/337606/


                                  Метки:  

                                  Intel научит дроны самостоятельности

                                  Воскресенье, 10 Сентября 2017 г. 21:08 + в цитатник
                                  1cloud сегодня в 21:08 Разработка

                                  Intel научит дроны самостоятельности

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

                                    28 августа компания Intel представила визуальный процессор (VPU) Myriad X, который разработан специально для автономных интеллектуальных устройств. Главная особенность чипа — встроенный аппаратный ускоритель для нейросетей (Neural Compute Engine). Он отвечает за обучение искусственного интеллекта на периферийных устройствах, имея при этом низкое энергопотребление. Среди предложенных Intel сфер применения чипа числятся дроны, системы безопасности и наблюдения, VR/AR и другие устройства.


                                    / Flickr / Bidgee / CC

                                    По словам разработчиков, Myriad X — первая в мире однокристальная система, специально «заточенная» под ускоренное глубокое обучение. Neural Compute Engine помогает устройствам видеть, интерпретировать и реагировать на окружающую среду в реальном времени. С ускорителем производительность Myriad X достигает триллиона операций в секунду (TOPS).

                                    «Мы близки к тому, чтобы машинное зрение и глубокое обучение вошли в число стандартных требований к миллиардам ежедневно окружающих нас устройств», — сказал Реми Эль-Уаззани (Remi El-Ouazzane), вице-президент и генеральный менеджер Movidius, компании-разработчика чипов семейства Myriad.

                                    Архитектура VPU-чипа Movidius Myriad X VPU состоит из нескольких специализированных вычислительных устройств. Это несколько процессоров общего назначения, наряду с 16 процессорами SHAVE (Streaming Hybrid Architecture Vector Engine). Последние работают совместно с нейронным вычислительным движком.

                                    Процессоры SHAVE состоят из шестнадцати программируемых 128-битных векторных процессоров VLIW, конфигурируемых шин MIPI, аппаратных ускорителей и централизованной архитектуры встроенной памяти.

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

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

                                    Применение VPU


                                    Однако наиболее вероятной сферой применения нового чипа в Intel видят беспилотники. Дроны становятся умнее. Например, Spark — мини-дрон от DJI — оборудован набором из камер и датчиков и процессором Vision Movivius Myriad 2, который помогает интеллектуальной системе бортового зрения обнаруживать и избегать столкновения с объектами, создавать 3D-карты, распознавать лица и жесты.

                                    И достигнутый уровень развития — не предел. По словам Кормака Брика (Cormac Brick), руководителя по бортовым системам искусственно интеллекта в Movidius, дроны учатся думать и реагировать.

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

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

                                    Есть и еще одно применение VPU нового поколения. В июле Intel представили мобильный модуль Movidius Neural Compute Stick с разъемом USB 3.0. Его задача — обучение искусственного интеллекта на различных устройствах. Характеристики и особенности те же: низкое энергопотребление при высокой производительности, компактность, офлайн-режим работы, нацеленность на приложения машинного зрения.

                                    Акцент на AI


                                    По данным Accenture, рынок AI в 12 развитых странах удвоит темпы роста к 2035 году. Например, только в Китае к 2020 году собираются установить 450 млн новых камер видеонаблюдения с системами распознавания лиц. К слову, компания Dahua Technology, которая уже экспериментировала с процессором Myriad 2, занимает второе место на рынке камер наблюдения и базируется в Ханчжоу.

                                    На AI-рынке у Intel до выхода Myriad X было несколько серьезных противников: Qualcomm Neural Processing Engine, процессор Google TPU 2.0, предназначенный для обучения нейронных сетей, и NVIDIA Tesla V100. По мнению аналитиков Seeking Alpha, самую серьезную конкуренцию Intel на рынке машинного обучения, который достигнет $5 млрд к 2021 году, составляет именно NVIDIA.

                                    Однако вскоре могут появиться и другие сильные конкуренты. В августе компания Microsoft представила проект Brainwave. Это платформа для глубокого обучения AI в реальном времени с низкой задержкой в обработке запросов. Архитектура Brainwave поддерживает выполнение более 130 тыс. вычислений за цикл. Работа в этом направлении вскоре позволит применять нейронные сети для выполнения бытовых задач.

                                    О компании Movidius

                                    Компания Movidius разрабатывает визуальные процессоры для интернета вещей. Штаб-квартира располагается в Сан-Матео, Калифорния. В сентябре 2016 года была приобретена компанией Intel.

                                    P.S. А вот еще несколько статей из нашего блога:

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

                                    https://habrahabr.ru/post/337570/


                                    Метки:  

                                    Поиск сообщений в rss_rss_hh_full
                                    Страницы: 1824 ... 1525 1524 [1523] 1522 1521 ..
                                    .. 1 Календарь