...

суббота, 20 февраля 2016 г.

Получаем данные по websocket используя swift и заполняем UITableView (сервер node.js)

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

Для подключения по websocket мы будем использовать SocketIOClientSwift

Скачать можно тут.

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

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

 var arrayOfTickets:[String] = []


Можно сделать получение данных по кнопке или при загрузке, в нашем примере при загрузке.
    override func viewDidLoad() {
        super.viewDidLoad()

            let hostUrl = NSURL(string:"http://IP_или_домен:ПОРТ")! //тут указываем адрес подключения
            let tokenSDK = "ТОКЕН ЕСЛИ ЕСТЬ" //тут токен если есть
            let socket = SocketIOClient(socketURL: hostUrl, options: ["log": false,
            "reconnects": true,
            "reconnectAttempts": 1,
            "reconnectWait": 1,
            "connectParams": ["token":tokenSDK]]) // тут задаем параметры передачи данных
        
            socket.on("connect") {data,ack in
            
            let hejka = [""] // тут параметр (если есть)
            let paginav = [""] // тут параметр 2 (если есть)
            
            socket.emitWithAck("ВАШЕ_СОБЫТИЕ", "", hejka, paginav)(timeoutAfter: 0) // указываем событие которое генерируем
                {data in
                
                let dataTickets = data[1]["result"] as! NSArray // парсим json который пришел
                let howMuchTickets = dataTickets.valueForKey("name")
                
                
                for (var i=0; i < howMuchTickets.count; i++){
                    let ticketName = dataTickets[i].valueForKey("name") as? String
                    self.arrayOfTickets.append(ticketName!) // заполняем массив тикетов
                                   }

             }
        }
        
        socket.connect()


Считаем сколько нам нужно сгенерировать ячеек в таблице:
 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrayOfTickets.count
    }


Выводим данные (у нас в примере кастомные ячейки, как их сделать не суть моего поста, но если есть вопросы — пишите):
   override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // dequeue the cell from our storyboard
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomTableViewCell
        
        // if the cell has a text label, set it to the model that is corresponding to the row in array
        cell.ticketName?.text = arrayOfTickets[indexPath.row]
        
        // return cell so that Table View knows what to draw in each row
        return cell
    }


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

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

 override func viewDidLoad() {
        super.viewDidLoad()

            let hostUrl = NSURL(string:"http://IP_или_домен:ПОРТ")! //тут указываем адрес подключения
            let tokenSDK = "ТОКЕН ЕСЛИ ЕСТЬ" //тут токен если есть
            let socket = SocketIOClient(socketURL: hostUrl, options: ["log": false,
            "reconnects": true,
            "reconnectAttempts": 1,
            "reconnectWait": 1,
            "connectParams": ["token":tokenSDK]]) // тут задаем параметры передачи данных
        
            socket.on("connect") {data,ack in
            
            let hejka = [""] // тут параметр (если есть)
            let paginav = [""] // тут параметр 2 (если есть)
            
            socket.emitWithAck("ВАШЕ_СОБЫТИЕ", "", hejka, paginav)(timeoutAfter: 0) // указываем событие которое генерируем
                {data in
                
                let dataTickets = data[1]["result"] as! NSArray
                let howMuchTickets = dataTickets.valueForKey("name")
                
                
                for (var i=0; i < howMuchTickets.count; i++){
                    let ticketName = dataTickets[i].valueForKey("name") as? String
                    self.arrayOfTickets.append(ticketName!) // // заполняем массив тикетов
                   self.tableView.reloadData()  // ВОТ ЭТА СТРОКА
                 }

             }
        }
        
        socket.connect()


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

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Security Week 07: Apple против ФБР, глобальная уязвимость в glibc, криптолокеры и медицина

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

Хочется сказать, что на этой неделе активизировался спор за возможность влиять на развитие технологий: между, так сказать, технарями и гуманитариямиполитиками. Первые руководствуются возможностью реализовать ту или иную функциональность в софте и железе, вторые — необходимостью договариваться с различными заинтересованными сторонами. На самом деле спорят не об этом. Технологии всегда развиваются независимо от того, согласны ли с этим окружающие или нет. Выводя свой спор с ФБР в общественное пространство, Apple борется за то, чтобы оставаться в авангарде этого самого технического развития. Иными словами, если Apple проиграет, и реальная (а то и воображаемая!) защищенность устройств компании каким-то образом пострадает, это не значит, что за всеми нами обязательно будет следить большой брат. Это значит, что условный вымпел с надписью «самый безопасный смартфон» перехватит какая-то другая компания.

Впрочем, это только гипотеза. Не исключено, что пока мы все бурно обсуждаем взлом зашифрованных данных, кто-то где-то копает очередную критическую дыру в очередной glibc, и когда докопает — все остальное по теме безопасности станет вообще неактуально. Рассмотрим оба случая подробнее. Все выпуски дайджеста доступны по тегу.
Apple против ФБР: дело о заблокированном айфоне, терроризме и законе 1789 года.
Новость.

Второго декабря 2015 года в Сан Бернардино, штат Калифорния произошел теракт. Американский гражданин пакистанского происхождения вместе с сообщницей расстрелял своих коллег из окружного департамента здоровья. Нападавшим удалось скрыться, но их заблокировали в трех километрах от места преступления. В последовавшей перестрелке преступники были застрелены. В ходе расследования был обнаружен телефон преступника: Apple iPhone 5c, корпоративный смартфон, официально принадлежащий работодателю. Предположительно, Apple по запросу госорганов предоставила резервную копию данных с телефона из облачного сервиса с iCloud. Но в облаке была устаревшая копия данных, датированная 19 октября, после чего, опять же предположительно, владелец телефона отключил функцию резервного копирования.

Намерение ФБР получить абсолютно все данные со смартфона выразилось в судебном предписании к компании Apple (исходник выложила EFF), в котором довольно четко прописано, что компания должна сделать, чтобы помочь следствию. А именно: (1) отключить функцию, которая уничтожает данные на телефоне после десяти неправильных попыток ввода пасскода (2) обеспечить возможность ввода пасскода электронным способом (3) отключить задержку между попытками ввода.

Иными словами, ФБР хочет подобрать пасскод перебором, и требует от Apple обойти все встроенные ограничения, которые делают подбор невозможным. В материале The Intercept отмечают, что успех такого сценария зависит от длины пароля: на четырехзначный пинкод уйдут секунды, на семизначный — до девяти дней, на десятизначный — 25 лет. Но это если Apple подчинится, но пока компания этого делать не хочет. В обращении к клиентам компании CEO Apple Тим Кук заявил, что компания передала госорганам все данные, которые у нее имелись, и которые могли помочь следствию. А «план по перебору» справедливо назвал бэкдором: «Правительство США попросило нас дать то, чего у нас попросту нет и сделать то, что мы считаем слишком опасным».

Факты на этом закончились, дальше началось бурное обсуждение. Но мы ведь имеем дело с вопросом политическим, который имеет весьма отдаленное отношение к технике, и возможная победа или проигрыш Apple, скорее всего, станут результатом переговоров, под влиянием общественного мнения, доводов адвокатов в суде, высказываний заинтересованных сторон в СМИ и так далее. Собрать воедино основные (на сегодняшний день) результаты такого «обсуждения» проще всего в формате вопросов и ответов.

Чем обосновано требование к Apple с точки зрения законодательства США?
Очень интересный вопрос, спасибо. Требование основано на акте 1789 года, известном как All Writs Act. Он входит в состав закона, который собственно и создал всю судебную систему США, после подписания Джорджем Вашингтоном, первым президентом страны. В общем, это произошло еще в те времена, когда Калифорния, где через двести с лишним лет будет находиться штаб-квартира Apple и произойдет упомянутый теракт, вместе с Мексикой являлась колонией Испании, и в состав США не входила. Если предельно все упростить, акт оставлял лазейку для несовершенной законодательной системы молодого американского государства: давал судам свободу принимать необходимые решения, не ссылаясь на уже принятые законы.

В детальном обзоре законодательной части этой истории, Gizmodo приводит судебную практику с применением данного акта. Сейчас, когда с законодательством вроде проблем нет, All Writs Act задействуется не часто, но регулярно. Например, в 1977 году, телекоммуникационную компанию обязали помочь отследить переговоры криминальной банды, занимавшейся рэкетом. То есть получается, что древний закон применяется потому, что правила взлома смартфонов нигде больше не прописаны. Если Конгресс США не озаботился подведением такой практики в порядок, то суду приходится использовать вот такие вот шорткаты. В материале Gizmodo приводится и редкий случай, когда судья отказался применять данный акт, поставив справедливый вопрос (правда по другому делу и другому поводу): законодательной базы нет, потому что Конгресс не успел ее создать, или потому, что не захотел?

Почему ФБР просит Apple взломать iPhone, а не делает это самостоятельно?
Очевидно, потому, что самостоятельно федералы этого сделать не могут. Вся ситуация говорит о том, что методы защиты информации, внедренные Apple работают. Есть еще один нюанс, который всплыл буквально вчера. Apple организовала конференц-звонок с журналистами, на каких-то невиданных ранее условиях. Представители компании поделились своим видением проблемы, при этом журналистам было запрещено их цитировать дословно! Более того, даже имена представителей компании не были раскрыты. По мнению анонимных сотрудников Apple, ФБР выстрелила себе в ногу, случайно сбросив пароль к учетной записи iCloud, к которой был привязан смартфон. Если бы этого не произошло, телефон, будучи включенным, но все еще заблокированным, сам бы синхронизировался с iCloud, откуда данные, предположительно, можно было добыть с помощью компании. После сброса такая возможность была упущена: пароль на телефоне неправильный, а какой правильный, никто не знает и узнать не может.

Каковы вообще позиции сторон?
Apple озвучила свою позицию 16 февраля: предложенное решение эквивалентно созданию бэкдора, это ставит в опасность всех наших клиентов, мы это делать не хотим. Причем заявление было сделано в публичном поле. Представители государства ответили 19 февраля, и не публично, а в виде заявления в суд по данному делу. По мнению представителей Департамента Юстиции, Apple имеет техническую возможность реализации системы перебора паролей, но не желает подчиняться, отдавая предпочтение не Закону, а «маркетинговой стратегии». «Не желает подчиняться» в данном случае может иметь прямые юридические последствия в суде, и звучит как угроза.

А Apple вообще может обойти систему защиты?
Неизвестно. Заявление Тима Кука четкого ответа на этот вопрос не содержит: «это опасно», «они просят то, чего у нас нет» и так далее. Понятно, что Apple, как разработчик и софта, и железа для айфонов, может многое. Главный вопрос: будет ли компания подчиняться?

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

Так что история действительно важная. Она проходит на фоне общего обсуждения о том, где находится баланс между защитой личных данных и интересами государства, в том числе, при расследовании преступлений, актов террора и так далее. Вот показательная новость от декабря прошлого года: ФБР (и не только) утверждает, что бэкдоры к системам шифрования — это нормально, если доступ к ним имеют только специально обученные люди по решению суда. Специалисты по защите данных, естественно, не согласны: бэкдорами может воспользоваться кто угодно. Спор между Apple и ФБР в таком контексте становится показательным кейсом: его исход может серьезно повлиять на безопасность устройств, которые все мы используем. Запасаемся попкорном.

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

Вишенка на тортике: Джон Макафи вызвался взломать айфон бесплатно, за три недели, используя «преимущественно методы социальной инженерии». Интернет задается вопросом, как именно Макафи собирается применять методы социальной инженерии к владельцу телефона, застреленному три месяца назад.

Обнаружена критическая уязвимость в glibc
Новость.

В библиотеке GNU C Library (glibc) обнаружилась критическая уязвимость, затрагивающая все версии, начиная с 2.9, которая была выпущена в 2008 году. Виновной оказалась функция getaddrinfo(), отвечающая за запрос к DNS-серверу. Проблема заключается в том, что к ответу от сервера можно дописать произвольный код, и, вызвав, переполнение буфера, выполнить его на системе жертвы. Уязвимость обнаружили исследователи в Google, причем случайно — их внимание привлекли постоянные падения SSH-клиента с segmentation fault при обращении к определенному серверу. То есть, чтобы провести атаку с использованием этой уязвимости, нужно определенным образом настроить DNS-сервер и каким-то образом заставить жертву сделать запрос. Это не так уж сложно, и может быть реализовано, например, в процессе атаки man-in-the-middle, когда вместо легитимного DNS-сервера на пути запроса оказывается подставной.

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

Серьезность уязвимости заключается в том, что glibc используется повсеместно. В качестве иллюстрации не могу не привести этот твит:

Библиотека стандартных функций является зависимостью для огромного числа программ и пакетов для Linux. Соответственно, трудно толком оценить, какие программы и каким образом данной уязвимости подвержены. Например, Android (система сама по себе) — не подвержена, так как в ней вместо glibc там используется альтернатива Bionic, разработанная Google. Это не значит, что не подвержены все нативные приложения для Android. Предыдущая серьезная уязвимость в glibc, известная как GHOST, вызвала такие же вопросы, хотя там возможностей для реальной удаленной эксплуатации было меньше. Результат: масса проблем для разработчиков и администраторов огромного количества софта и железа. Примечательно, что исследователи в Google и Red Hat обнаружили баг независимо друг от друга. Более того, выяснилось, что мейнтейнеры glibc узнали о проблеме еще в июле 2015 года. Пока не ясно, почему проблему не закрывали так долго, и как вообще получилось, что уязвимость появилась. Но в отличие от истории Apple, обсуждать тут нечего, прежде всего надо накатывать патчи. Много патчей в самых неожиданных местах в софте и железе.

Голливудская больница заплатила выкуп после атаки криптолокера
Новость.

Ну и на закуску, история из мира обычного вредоносного ПО. Индустрия троянцев-шифровальщиков, увы, приносит миллионные убытки, но типичной жертвой такого кибер-развода становятся простые пользователи. Все значительно сложнее, когда атакуются компании. В данном случае жертвой стал госпиталь в Голливуде (том самом). Cудя по всему, злоумышленники смогли зашифровать все или почти все данные, после чего потребовали от руководства больницы рекордный выкуп — три миллиона долларов (точнее 3,4 млн или 9000 биткоинов). Или не потребовали — сообщения с мест противоречивые, а официальное заявление организации опровергает факт запроса такой огромной суммы.

Тем не менее, выкуп мошенники получили, хотя и меньший — 17 тысяч долларов. В больнице заявили, что это был единственный способ оперативно восстановить работоспособность IT-систем больницы. Печально, но понятно, что прежде всего атаку шифровальщиков нужно не допускать. А если она происходит — сделать так, что ущерб будет ограничен данными на одной системе (а не на всех сетевых папках сразу). Новость привлекла большое внимание из-за специфики организации, попавшей под удар — никто не желает утечки самых чувствительных данных о своем здоровье. Больничные компьютерные сети, между тем, остаются уязвимыми не только и не столько перед обычными троянцами. На конференции Security Analyst Summit об этом рассказывал наш эксперт Сергей Ложкин: довольно простыми инструментами он смог обнаружить доступное из интернета уязвимое специализированное ПО, такое, например, как софт для МРТ.

Древности:
«Typo-Boot»

Опасный вирус, методом «Brain» поражает Boot-сектора винчестера и флоппи-дисков при чтении с них. На диске располагается стандартным способом. Работает только на компьютерах IBM PC/XT, так как содержит команду 'MOV CS,AX' (межсегментный JMP), которая выполняется только процессором 8086. Перехватывает int 13h, 17h. Подменяет знаки, которые выводятся на принтер.

Цитата по книге «Компьютерные вирусы в MS-DOS» Евгения Касперского. 1992 год. Страница 103.

Disclaimer: Данная колонка отражает лишь частное мнение ее автора. Оно может совпадать с позицией компании «Лаборатория Касперского», а может и не совпадать. Тут уж как повезет.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Километры логов и восстановление баз данных на MS SQL

Или как без труда восстанавливать базы данных из длинной цепочки бэкапов



Введение


Если вы используете SQL Server, то, вероятно, слышали про Полную и Простую модель восстановления баз данных. Вы, возможно, знаете, что Простая модель позволяет восстановить данные только на момент создания резервной копии, в то время как Полная — на любой момент времени, надо лишь регулярно делать резервные копии журнала транзакций. Однако, для восстановления данных при Полной модели потребуется «накатить» резервные копии журналов транзакций в определенной последовательности. Это можно без проблем сделать с помощью SSMS, но только на том SQL Server, где создавались резервные копии. Для восстановления на другом сервере потребуется вручную написать T-SQL скрипт. И чем длиннее будет цепочка резервных копий, тем больше будет сам скрипт и тем больше времени уйдет на его создание. По этой же причине администраторы редко используют уже созданные резервные копии, когда требуется развернуть копию базы на другом SQL Server, и предпочитают создавать свежий полный бэкап. Но такая процедура может быть настоящей проблемой для больших баз данных из-за высокой нагрузки на сервер. Кроме этого, если сервер «упал», то, как правило, нет времени писать длинный T-SQL скрипт для восстановления. В такие моменты нужно делать все максимально быстро и без лишней нервотрепки.

В интернете, в том числе и на Хабре (например, тут), можно найти различные способы, решающие задачу автоматизированного построения T-SQL скрипта восстановления. В основном это различные скрипты, базирующиеся на названиях файлов резервных копий или запросы на сервер-источник к истории резервных копий (к базе msdb). В этой статье я хотел бы сделать обзор возможностей XML-планов восстановления, которые появились в Quick Maintenance & Backup for MS SQL начиная с версии 1.6.

Обзор самой утилиты можно почитать в статье по этой ссылке или на официальном сайте. Наличие XML-плана восстановления в сетевой папке вместе с резервными копиями позволит не тратить время на подготовку T-SQL скрипта. Какая бы длинная ни была цепочка резервных копий, вы в несколько кликов восстановите базу данных на другом SQL Server. Также это можно делать по расписанию, на тестовом или рабочем сервере, например, для проверки всей цепочки резервных копий или актуализации копий баз данных.

Что такое XML-план восстановления


XML-план восстановления — это XML-файл, в котором перечислены имена файлов резервных копий в последовательности, необходимой для восстановления одной или нескольких баз данных. Пример содержимого XML-файла:
Пример
<?xml version="1.0" encoding="cp866"?>

<RestorationPlanInfo xmlns:i="http://ift.tt/ra1lAU" xmlns="http://ift.tt/1oAymuh">
  <Version>1</Version>
  <ServerName>London</ServerName>
  <ServerVersion>10</ServerVersion>
  <ServerDescriptrion>Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) </ServerDescriptrion>
  <CreationDate>2016-02-16T17:00:04.65625+03:00</CreationDate>
  <Databases>
    <RestorationPlanDbInfo>
      <Name>Northwind</Name>
      <RestorePoint>2016-02-16T17:00:02</RestorePoint>
      <Files>
        <RestorationPlanDbFileInfo>
          <FileName>London\Northwind\Full\20160216_155457_London_Northwind_Full.bak</FileName>
          <BackupType>Full</BackupType>
          <Position>1</Position>
          <BackupStartDate>2016-02-16T15:54:57</BackupStartDate>
          <FirstLsn>58000000021900037</FirstLsn>
          <LastLsn>58000000023500001</LastLsn>
          <StopAt i:nil="true" />
        </RestorationPlanDbFileInfo>
        <RestorationPlanDbFileInfo>
          <FileName>London\Northwind\Diff\20160216_162546_London_Northwind_Diff.bak</FileName>
          <BackupType>Differential</BackupType>
          <Position>1</Position>
          <BackupStartDate>2016-02-16T16:25:47</BackupStartDate>
          <FirstLsn>58000000024300034</FirstLsn>
          <LastLsn>58000000025800001</LastLsn>
          <StopAt i:nil="true" />
        </RestorationPlanDbFileInfo>
        <RestorationPlanDbFileInfo>
          <FileName>London\Northwind\Log\20160216_163000_London_Northwind_Log.trn</FileName>
          <BackupType>Log</BackupType>
          <Position>1</Position>
          <BackupStartDate>2016-02-16T16:30:01</BackupStartDate>
          <FirstLsn>58000000024300001</FirstLsn>
          <LastLsn>58000000025800001</LastLsn>
          <StopAt i:nil="true" />
        </RestorationPlanDbFileInfo>
        <RestorationPlanDbFileInfo>
          <FileName>London\Northwind\Log\20160216_170001_London_Northwind_Log.trn</FileName>
          <BackupType>Log</BackupType>
          <Position>1</Position>
          <BackupStartDate>2016-02-16T17:00:02</BackupStartDate>
          <FirstLsn>58000000025800001</FirstLsn>
          <LastLsn>58000000025800001</LastLsn>
          <StopAt i:nil="true" />
        </RestorationPlanDbFileInfo>
      </Files>
    </RestorationPlanDbInfo>
  </Databases>
</RestorationPlanInfo>

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

Создание XML-плана


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


Перед созданием XML-файла программа определит последовательность резервных копий по информации, хранимой в системной базе mdsb, аналогично тому, как это делает SQL Server Management Studio. Для первого и второго способов XML-план будет содержать последовательность резервных копий, необходимых для восстановления базы данных на последнее возможное состояние.

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

Восстановление по XML-плану


Восстановление баз данных по XML-плану может выполняться двумя способами:

1. Вручную. Для этого в программе имеется специальное окно, которое вызывается командой «Восстановить по XML-плану» из контекстного меню в древовидном списке серверов.


На форме нужно выбрать XML-файл и базы данных, резервные копии которых будут восстановлены. Обратите внимание, восстанавливать можно в одноименные базы данных, во временную, либо в указанную базу данных. Режим восстановления во временную базу данных удобен для проверки цепочки резервных копий. Режим в Указанную базу данных может быть полезен, если требуется восстановить в определенную базу данных, например, с нестандартным размещением её файлов на дисках. По кнопке «Показать Т-SQL» можно просмотреть сформированный T-SQL скрипт, который будет запущен для восстановления.

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

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

Заключение


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

Если вы уже используете QMB и не задействовали эту возможность, то скорее включайте XML-план восстановления!  С удовольствием ответим на ваши вопросы в комментариях или по электронной почте support@qmbsql.ru

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

[Перевод] Стек приложений Blockchain

Здравствуйте, Хабр!

Надеемся не слишком вас шокировать, признавшись в неподдельном интересе к децентрализованным приложениям.

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

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

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

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

Идея такова, что все компоненты в серых прямоугольниках — децентрализованные, с открытым исходным кодом. Пока назовем их «Разделяемые данные» (Shared Data) и «Уровни протоколов» (Protocol layers). Этими частями системы никто не управляет, поэтому они доступны для любого разработчика или компании. Так, в случае Bitcoin уровнем разделяемых данных будет Blockchain, а протоколом — Decentralized Protocol.

Вы заметите, что чем выше вы поднимаетесь по схеме, тем тоньше становятся отдельные уровни. Кроме того, на уровень разделяемых данных и уровень протоколов приходится около 80% всего стека. Современные приложения для Интернета создаются на базе открытых децентрализованных технологий, таких как TCP/IP и HTTP, но если начертить примерно такую схему стека интернет-приложений, как показана выше, то эти открытые децентрализованные протоколы займут, вероятно, всего 15%, а выше них будут только приватные и централизованные технологии.

1. Майнеры и Blockchain

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

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

2. Наложенные сети

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

Один из примеров такого решения — Counterparty. Другой, возможно, Side Chains. Какую бы форму ни имели эти наложенные сети, всех они связаны с блокчейном Bitcoin, а также выгодно используют его сетевые эффекты для достижения гибкости; при этом в них нет необходимости создавать собственную криптовалюту и/или цепочки блоков, как того требуют альтернативные решения вроде Ethereum.

3. Децентрализованные протоколы

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

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

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

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

4. Свободные и коммерческие API

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

Речь идет либо о коммерческих сервисах, либо о свободных проектах. Хорошие примеры – API Chain.com и Coinbase Toshi для Bitcoin. Они оба предназначены для одних и тех же целей, но Chain – арендуемый коммерческий сервис, а Toshi – свободный.

5. Приложения

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

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

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

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

[Из песочницы] Тестирование плагинов для Apache Cordova

Я собираюсь рассказать об одной из тем, касающихся Apache Cordova, которая практически не освещена в рунете — как тестировать свой плагин для Apache Cordova.

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

Немного теории


Итак, каким образом осуществляется тестирование плагинов для Apache Cordova. Прежде всего, архитектура тестов состоит из двух частей:
  1. Собственно тесты, использующие ту или иную библиотеку для тестирования.
  2. Так называемая test harness, или часть кода ответственная за запуск тестов и генерацию результатов теста.

В случае с плагинами в качестве библиотеки используется BDD-фреймворк Jasmine — довольно популярный в JavaScript мире. Соответственно будущие тесты могут выглядеть примерно так (отрывок взят из тестов для cordova-plugin-device — одного из плагинов, поддерживаемых сообществом Apache Cordova):
it("should exist", function() {
  expect(window.device).toBeDefined();
});

it("should contain a platform specification that is a string", function() {
  expect(window.device.platform).toBeDefined();
  expect((new String(window.device.platform)).length > 0).toBe(true);
});

it("should contain a version specification that is a string", function() {
  expect(window.device.version).toBeDefined();
  expect((new String(window.device.version)).length > 0).toBe(true);
});

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

Самым простым способом здесь будет использование cordova-plugin-test-framework — еще одного плагина, который добавляет в приложение интерфейс для запуска тестов в виде отдельной страницы с элементами управления для запуска, остановки и выбора тестов для запуска, а так же осуществляет загрузку всех объявленных тестов во время работы приложения и их запуск.

Вот как это выглядит в работе:

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

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

  1. Для объявления тестов их нужно выделить в отдельный плагин. Расположение плагина не критично, но часто он находится внутри подпапки /tests основного плагина.
  2. Сами тесты должны находиться в модуле с именем, оканчивающимся на tests, (например <js-module src="tests/tests.js" name="my.plugin.tests">)
  3. Модуль с тестами должен экспортировать две функции:
exports.defineAutoTests = function() { };
exports.defineManualTests = function(contentEl, createActionButton) {};

которые будут выполнены при загрузке модуля. Название функций говорит само за себя.
  1. Полезно так же будет добавить cordova-plugin-test-framework — а возможно еще и тестируемый плагин — в качестве зависимости для ваших тестов, чтобы они устанавливались автоматически вместе с тестами. Это делается добавлением следующих элементов в tests/plugin.xml:
<dependency id="cordova-plugin-test-framework"/>
<dependency id="my-awesome-plugin" url=".." />

Создаем каркас плагина


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

plugin.xml будет выглядеть так:

<plugin xmlns="http://ift.tt/1cqrl5D"
    id="my-awesome-tests" version="0.0.1">
    <name>My Awesome Plugin Tests</name>
    <dependency id="cordova-plugin-test-framework" />
    <dependency id="my-awesome-plugin" url=".." />
    <js-module src="tests.js" name="tests" />
</plugin>

tests.js:
exports.defineAutoTests = function() {
    // To be done
};
exports.defineManualTests = function(content, createActionButton) {
    // To be done
};

Это можно сделать вручную в вашем $EDITOR, а можно использовать plugman — еще один инструмент для работы с плагинами Apache Cordova:
npm install -g plugman
plugman create --name "My awesome plugin tests" --plugin_id my-awesome-plugin-tests --plugin_version 0.0.1 --path=./tests

чтобы сгенерировать каркас плагина и отредактировать файлы вручную.

Пишем автоматические тесты


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

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

Итак, сначала создаем каркас тестового плагина, как описано в предыдущем разделе и начинаем наполнять его тестами.

exports.defineAutoTests = function() {
    describe('plugin', function() {
        it('should be exposed as cordova.plugins.MyAwesomePlugin object', function() {
            expect(cordova.plugins.MyAwesomePlugin).toBeDefined();
            expect(cordova.require('my-awesome-plugin.MyAwesomePlugin'))
                .toBe(cordova.plugins.MyAwesomePlugin);
        });

        it('should have corresponding methods defined', function() {
            ['coolMethod', 'logCoolMessage'].forEach(function(methodName) {
                expect(cordova.plugins.MyAwesomePlugin[methodName]).toBeDefined();
                expect(cordova.plugins.MyAwesomePlugin[methodName]).toEqual(jasmine.any(Function));
            });
        });
    });
};

Пока этого достаточно. Теперь создадим тестовое приложение и запустим наши тесты. Для этого выполняем следующие команды в папке с тестируемым плагином:
cordova create my-sample-app && cd my-sample-app
cordova platform add android --save
cordova plugin add .. ../tests --save

и правим элемент <content src="index.html" /> в файле config.xml внутри нашего тестового приложения — меняем значение на cdvtests/index.html. Это необходимо чтобы вместо основной стартовой страницы при запуске приложения открылась страница плагина и загрузился test-framework.

Теперь запускаем приложение:

cordova run

и видим страницу плагина. Нажимаем "Autotests" и практически сразу видим отчет jasmine об успешном завершении тестов.

Добавляем ручные тесты


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

С ручными тестами все работает немного по-другому. test-framework предполагает, что каждому тесту полагается отдельная кнопка в интерфейсе и общее для всех тестов поле в которое можно вывести свои результаты. Это параметры createActionButton и content соответственно для функции defineManualTests.

createActionButton это функция, которая создает кнопку, добавляет ее в DOM внутрь указанного элемента и выполняет указанную функцию при нажатии кнопки. Параметры функции выглядят так:

`function createActionButton('Текст кнопки', выполняемая_функция, 'ИД_элемента') {...}`

content это контейнер на странице, внутри которого можно поместить информацию о тесте и описать процесс верификации для тестировщика.

Для примера добавим один ручной тест:

exports.defineManualTests = function(contentEl, createActionButton) {

    var show_preferences_test =
        '<h3>Press "Open preferences" button to show preferences pane</h3>' +
        '<div id="open_prefs"></div>' +
        'Expected result: A "Preferences"  box should appear';

    contentEl.innerHTML = '<div id="info"></div>' + show_preferences_test;

    var log = document.getElementById('info');
    var logMessage = function (message) {
        var logLine = document.createElement('div');
        logLine.innerHTML = message;
        log.appendChild(logLine);
    };

    createActionButton('Open preferences', function() {
        log.innerHTML = ''; // cleanup log area
        plugins.appPreferences.show(function(result) {
            logMessage(result);
        }, function(error) {
            logMessage(error);
        });
    }, "open_prefs");
};

Теперь нам нужно пересобрать приложение с обновленным плагином. Для этого просто удалим плагин из приложения и попробуем запустить приложение.
cordova plugin rm my-awesome-plugin-tests && cordova run

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

Запускаем тесты на CI


Пересобирать приложение для того чтобы запустить тесты еще раз — довольно рутинное занятие, которое конечно хочется делать автоматически. Вместо того чтобы изобретать собственный велосипед, воспользуемся готовым решением — cordova-paramedic. Это приложение написано специально для того чтобы автоматизировать запуск тестов для плагинов в т.ч. и для CI. Вот что оно делает:
  • создает новое приложение во временной папке
  • добавляет в приложение необходимы для запуска тестов плагины
  • изменяет стартовую страницу приложения
  • запускает локальный сервер для коммуникации с приложением и обработки результатов
  • выводит результат запуска тестов на консоль
  • завершается с соответствующим кодом в зависимости от того, прошли ли все тесты успешно или нет.

Для того чтобы начать использовать paramedic, установим его и добавим в package.json нашего плагина:
npm install cordova-paramedic --save-dev

и добавим пару команд для запуска тестов для iOS и Android.
"scripts": {
    ...
    "test-android": "cordova-paramedic --platform android --plugin ./ --verbose",
    "test-ios": "cordova-paramedic --platform ios --plugin ./ --verbose"
},

Все. Теперь вместо того чтобы собирать приложение вручную, править его config.xml, запускать и потом смотреть как появляются точки и крестики пройденных и упавших тестов просто запускаем соответствующий скрипт, например для Android:
npm run test-android

И через некоторое время получаем результаты тестов на консоль:
...
Results: ran 2 specs with 0 failures
result code is : 0
{"mobilespec":{"specs":2,"failures":0,"results":[]},"platform":"Desktop","version":"5.1.0","timestamp":1455530481,"model":"none"}

Теперь становится очень просто запускать тесты на CI-машине. Возьмем для примера Travis CI и Circle CI:

.travis.yml

language: objective-c
install:
  - npm install
script:
  - npm run test-ios

circle.yml
test:
  pre:
    - emulator -avd circleci-android21 -no-audio -no-window:
        background: true
        parallel: true
    - circle-android wait-for-boot
  override:
    - npm run test-android

Затем идем в панель управления соответствующего сервиса, включаем интеграцию с GitHub и наслаждаемся:

Заключение


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

Напоследок еще раз приведу ссылку на демонстрационный плагин: http://ift.tt/1VuAOwP. Посмотреть этапы добавления тестов можно по истории коммитов.

Удачного тестирования!

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Чем заменить Cisco? Импортозамещение коммутаторов доступа

Здравствуйте коллеги! Сегодня хотелось бы поговорить о такой актуальной проблеме, как “Импортозамещение”. Мы попробуем подобрать замену для коммутаторов уровня доступа. В свете последних событий в некоторые организации больше нельзя покупать свичи уже полюбившихся нам производителей, таких как: Cisco, Juniper, HP, Extreme Networks, Brocade, Dell и т.д. У многих возникает вопрос: “А на что менять?”. Поэтому я решил поискать возможные отечественные аналоги или же коммутаторы из стран, которые не поддерживают санкции.

А рассматривать мы будем коммутаторы уровня доступа. (Здесь описаны различия между коммутаторам уровня доступа, распределения и ядра). В качестве эталона возьмем один из самых распространенных коммутаторов компании Cisco — WS-C2960S-24TS-L.

Если вы заинтересовались данной темой, добро пожаловать под кат…
Ключевые характеристики WS-C2960S-24TS-L:
Расположение: США, Сан Хосе (Калифорния)
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Ориентировочная цена: 2500$

При подборе аналогов мы не будем углубляться в сравнение всего функционала, а возьмем только ключевые параметры, такие как:
— Коммутатор должен быть управляемым
— Коммутатор второго уровня (L2)
— Монтируется в 19 дюймовую стойку
— Поддержка VLAN
— Наличие функций безопасности (Port Security, DHCP-snooping, IP source guard, ARP Inspection и т.д.)
— Гигабитные порты (пора уже переходить с Fast Ethernet)
— SFP uplink-и
— Наличие командной строки (cli)
— Наличие хоть каких-то сертификатов (соответствия, ФСТЭК)

Так же мы попытаемся сравнить цены. Все цифры найдены в свободном доступе в Интернете и могут быть неверными. Цены будут указываться из расчета 1$=80 руб.

Для начала пройдемся по коммутаторам из поднебесной.
1) Huawei. При необходимости заменить Cisco это первое что приходит в голову. Это гигантская компания, которая производит почти все в сфере телекоммуникаций. Коммутаторы, роутеры, межсетевые экраны, сервера, СХД, wifi точки доступа, оборудование для сотовой связи, есть своя система виртуализации… Список можно продолжать очень долго (ну и конечно же смартфоны). Компания очень динамично развивается. Однако, ознакомившись с их модельным рядом, я обнаружил что у них нет гигабитных коммутаторов второго уровня. С гигабитным портами есть только модели L3. В качестве аналога я выбрал следующую модель: S2750-28TP-EI-AC

Производство: КНР, Шэньчжэнь
Скорость портов: 100 Мбит/с
Кол-во Uplink (SFP): 4 шт
Сертификат соответствия в области связи
Ориентировочная цена: 500$
К сожалению не удалось найти информацию о коммутационной матрице.

2) ZTE. Так же очень крупная компания с большим спектром оборудования (коммутаторы, роутеры, схд, wifi и т.д.). Лично не работал с этим вендором, но по информации из Интернета это практически тот же Huawei, только немного дешевле. У ZTE так же отсутствуют L2 свичи с гигабитными портами. В качестве аналога подобрал ZXR10 2928E-AC

Производство: КНР, Шэньчжэнь
Скорость портов: 100 Мбит/с
Кол-во Uplink (SFP): 4 шт
Ориентировочная цена: 250-300$
К сожалению не удалось найти информацию о коммутационной матрице.

3) D-Link. Данную компанию никому представлять не нужно. Является чуть ли не стандартом для Интернет провайдеров. Очень большая линейка коммутаторов, подобрать можно практически под любые задачи. В сознании большинства админов почему-то закрепилась не очень хорошая репутация у этого оборудования. Однако по своему опыту могу сказать, что коммутаторы хорошего качества и проблем с ними практически не возникает. Я считаю что у них идеальное соотношение цена-качество. В качестве аналога подобрал DGS-1210-28.

Производство: Китайская Республика, Тайбэй
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 56 Гбит/с
Ориентировочная цена: 250-280$
Декларация соответствия в области связи

4) Zyxel. Это последний вендор из поднебесной, которого мы рассмотрим в рамках этой статьи. Основными направлениями деятельности компании являются ADSL, Ethernet, VoIP, Wi-Fi, WiMAX и другие технологии. Так же имел опыт работы с этим оборудованием. Каких-то глобальных претензий не было. В качестве аналога рассматриваю GS2210-24.

Производство: Китайская Республика, Синьчжу
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 56 Гбит/с
Ориентировочная цена: 380$
Декларация соответствия в области связи

Теперь рассмотрим отечественного производителя.
5) Zelax — ведущий российский разработчик и производитель решений для сетей передачи данных. Компания выпускает системы оптического уплотнения, маршрутизаторы, коммутаторы, мультиплексоры, модемы, шлюзы TDM через IP, конвертеры, устройства защиты и другое связное оборудование. В качестве аналога можно рассмотреть ZES-2028GS.

Производство: Россия
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 56 Гбит/с
Ориентировочная цена: к сожалению найти цену найти не удалось.
Декларация соответствия в области связи

6) Nateks — разрабатывает и производит широкий спектр телекоммуникационного оборудования. Продуктовая линейка включает оборудование сетей доступа (мультиплексоры, коммутаторы), зоновых и местных сетей связи (SHDSL, SDH, радиорелейные системы, wimax), ведомственных и технологических сетей, оборудование GPON. Опыт работы с коммутаторами данной компании не имею. Предполагаемый аналог — NX-3424GW

Производство: Россия
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 64 Гбит/с
Ориентировочная цена: 800-900$
Сертификат соответствия в области связи

7) QTech — российская компания, специализирующаяся на разработке и производстве оборудования доступа операторского класса на базе различных технологий: xDSL, MetroEthernet, PON, Wi-Fi; оборудования для обеспечения беспроводного доступа 3G, построения цифровых линий связи на базе технологий PDH/SDH, а также беспроводных цифровых линий на базе РРЛ. Так же не могу прокомментировать это оборудование. В качестве аналога предлагается QSW-3300-28T-AC.

Производство: Россия
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 56 Гбит/с
Ориентировочная цена: 28000 руб (350$)
Сертификат соответствия в области связи

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

Производство: Россия
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 2-4 шт
Коммутационная матрица: Нет информации
Ориентировочная цена: Нет информации
Сертификат соответствия в области связи

9) Русьтелетех — разработчик и производитель доверенного телекоммуникационного оборудования. Ничего не могу сказать о качестве этого оборудования. В качестве аналога предлагается RTT-A220-24T-4G.

Производство: Россия
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 56 Гбит/с
Ориентировочная цена: От 1100$
Сертификат соответствия в области связи
Сертификат ФСТЭК: 3 уровень РД НДВ и ТУ

10) Eltex — один из ведущих российских разработчиков и производителей телекоммуникационного оборудования. Основные направления разработки – оборудование GPON, Ethernet-коммутаторы, VoIP-шлюзы, MSAN, Softswitch & IMS, медиацентры, тонкие клиенты и др. В качестве аналога — MES2124МВ

Производство: Россия
Скорость портов: 1 Гбит/с
Кол-во Uplink (SFP): 4 шт
Коммутационная матрица: 56 Гбит/с
Ориентировочная цена: 26000 руб (325$)
Декларация соответствия в области связи

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

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

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

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Виртуализация и виртуальные дата-центры: Базовые вопросы

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

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

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

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

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

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

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

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

Теперь давайте рассмотрим основные преимущества виртуального ЦОД.

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

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

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

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

Потери энергии в зависимости от нагрузки на оборудование

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

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

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

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

P.S. Наши материалы по теме на Хабре:

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Не упусти шанс попасть на //Build: разработай или обнови UWP приложение и участвуй в Race to Build 2016

сегодня в 14:40

Впереди длинные выходные. Ещё не придумали чем заняться? Разработайте или обновите UWP приложение и участвуйте в Race to Build 2016.

Race to Build 2016 — это шанс получить билет на Build 2016!
Race to Build 2016 — это активность в рамках программы TechRewards. Чтобы участвовать в активности необходимо зарегистрироваться в программе. Активность длится до 4 марта.

В чём суть активности:

  1. Необходимо разработать новое UWP приложение или обновить существующее.
  2. Приложение должно быть опубликовано и доступно в Windows Store до 4 марта 2016 года.
  3. После того, как приложение стало доступно, отошлите ваше приложение, заполнив форму активности Race to Build 2016 и указав имя приложения и его ID (App Name и App ID) в секции комментариев.

Вы можете отослать только одно приложение на Race to Build 2016.

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

Подробные правила, дополнительный условия и требования к приложению доступны на странице активности Race to Build 2016 программы TechRewards: http://ift.tt/21fRTOr

Автор: @stasus

Microsoft — мировой лидер в области ПО и ИТ-услуг

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

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

[Перевод] Список ресурсов по машинному обучению. Часть 2

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

Разное


  • Список: отличные фреймворки, библиотеки и приложения машинного обучения;
  • Список: отличные библиотеки и другие ресурсы для визуализации данных;
  • Awesome Data Science: материалы по науке о данных;
  • Data Science Masters: обучающие материалы и литература по даталогии;
  • Cross Validated: FAQ по машинному обучению;
  • Список: университетские курсы, связанные с машинным обучением;
  • Quora: алгоритмы машинного обучения, которые нужно понимать;
  • Статья: разница между линейно независимыми, ортогональными и некоррелированными переменными;
  • Список: концепции и алгоритмы машинного обучения;
  • Презентации: различные темы;

  • Презентация: лекции MIT по машинному обучению;
  • Статья: сравнение алгоритмов обучения с учителем;
  • Статья: основы науки о данных;
  • Статья: три ошибки в машинном обучении, которые стоит избегать;
  • TheAnalyticsEdge: лекции с примерами;

Интервью


  • Quora: как студенту подготовиться к интервью на должность специалиста по работе с данными;
  • Quora: с чего начать знакомство с машинным обучением;
  • Quora: FAQ по интервью на должность специалиста по работе с данными;
  • Quora: самые важные навыки для специалиста по обработке данных;

Искусственный интеллект


  • Репозиторий: список ресурсов по искусственному интеллекту;
  • edX: курс по искусственному интеллекту от Дэна Клейна и Питера Аббеля;
  • Udacity: курс Питера Норвига и Себастьяна Труна;
  • TED Talks: искусственный интеллект;

Генетические алгоритмы


  • Wiki: генетические алгоритмы;
  • Outlace: простая реализация генетических алгоритмов на Python (часть 1);
  • Outlace: простая реализация генетических алгоритмов на Python (часть 2);
  • ai-junkie: о генетических алгоритмах простым языком;
  • Wiki: генетическое программирование;
  • GitHub: генетическое программирование на Python;
  • Quora: генетические алгоритмы и генетическое программирование;

Статистика


  • Stat Trek: все о статистике и вероятностях;
  • Intro2stats: изучайте статистику с помощью Python;
  • Statistics for Hackers: презентация от Джейка Вандерпласа;
  • Online Statistics Book: интерактивный мультимедийный курс по статистике;
  • Статья: что такое выборочное распределение;
  • Обучение: программа углубленного изучения статистики;
  • Обучение: статистика и вероятность;
  • Обучение: алгебра матриц;
  • Форум: что такое несмещенная оценка;
  • Wiki: критерий согласия;
  • Статья: что такое квантиль-квантиль графики;

Полезные блоги


  • Блог Эдвина Чена: блог о математике, статистике, машинном обучении и науке о данных;
  • Data School: даталогия для начинающих;
  • ML Wave: изучение машинного обучения;
  • Karpathy: блог о глубоком обучении и науке о данных;
  • Colah: отличный блог о нейронных сетях;
  • Блог Алекса Минаара: блог о машинном обучении и программировании;
  • Statistically Significant: блог Эндрю Ландграфа о науке о данных;
  • Simply Statistics: блог ведут три профессора биостатистики;
  • Yanir Seroussi: блог о науке о данных и не только;
  • fastML: доступным языком о машинном обучении;

  • Trevor Stephens: персональная страница Тревора Стефенса;
  • Kaggle: все об обработке и анализе данных;
  • Outlace: блог студента о машинном обучении;
  • r4stats: все о науке о данных и R;
  • Variance Explained: блог Дэвида Робинсона;
  • AI Junkie: блог об искусственном интеллекте;

Ресурсы на Quora


Kaggle Competitions


  • Статья: как (почти) выиграть Kaggle Competitions;
  • Статья: применение сверточных нейронных сетей для расшифровки сигналов ЭЭГ;
  • Статья: разбор Facebook Recruiting III;
  • Статья: предсказание коэффициента CTR с помощью динамического машинного обучения;

Шпаргалки


Классификация


  • Статья: помогает ли балансировка классов улучшить результаты работы классификатора;
  • Quora: преимущества различных алгоритмов классификации;
  • Статья: ROC-анализ;
  • Статья: матрица неточностей – терминология;

Линейная регрессия


  • Статья: условия применения линейной регрессии;
  • duke.edu: все о линейной регрессии;
  • Data School: применение и оценка результатов линейной регрессии;
  • ResearchGate: что, если зависимая переменная не имеет нормального распределения;
  • Wiki: мультиколлинеарность;
  • Статья: мультиколлинеарность и фактор инфляции дисперсии (VIF);
  • Статья: регуляризация и выбор переменных с помощью метода эластичных нейронных сетей;

Логистическая регрессия


  • Wiki: логистическая регрессия;
  • Статья: геометрическая интерпретация логистической регрессии;
  • FAQ: что такое псевдо R-квадрат;

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


  • Wiki: повторная выборка/ресэмплинг;
  • Chioka: хорошие материалы по перекрестной проверке;
  • Эндрю Ын: предотвращение переобучения при перекрестной проверке;
  • Гевин Коули:влияние переобучения и систематических ошибок отбора на оценку эффективности модели;
  • Эндрю Мур: перекрестная проверка для выявления и предотвращения переобучения;
  • Wiki: статистический бутстрэп;
  • Бутстрэп: анимации;
  • Пример: статистический бутстрэп;

Глубокое обучение


  • Список: руководства, проекты и сообщества по глубокому обучению;
  • Deeplearning4j: ресурсы по глубокому обучению;
  • Стэнфорд: интересные проекты по глубокому обучению и обработке естественного языка;
  • Статья: ключевые концепции глубокого обучения;
  • Статья: обработка естественного языка с применением глубоких сетей на Torch;
  • Стэнфорд: руководство по глубокому обучению;
  • Quora: FAQ по глубокому обучению;
  • Google: страничка, посвященная глубокому обучению;
  • Reddit: сабреддит по глубокому обучению;
  • Reddit: еще один сабреддит;

  • Статья: где изучать глубокое обучение;
  • NVidia: концепции глубокого обучения;
  • Intro2deeplearning: глубокое обучение и Python;
  • Intro2deeplearning: отличная презентация;
  • Оксфорд: видео с лекциями 2015 года;
  • Видео: Deep Learning Summer School 2015;
  • Список: программное обеспечение для глубокого обучения;
  • Статья: нейронные сети с точки зрения программиста;
  • Kdnuggets: топ-5 работ по глубокому обучению;
  • Видео: Джеффри Хинтон о глубоком обучении;
  • Deeplearning: лучшие материалы по глубокому обучению;
  • Deeplearning: все о машинном обучении;

  • Deeplearning: ПО для машинного обучения;
  • Deeplearning4j: руководство по библиотеке;
  • Статья: поразительное руководство по глубокому обучению;
  • Статья: основы глубокого обучения;
  • Стэнфорд: статья по глубокому обучению;
  • Deeplearning: руководства по глубокому обучению;
  • Статья: нейронный машинный перевод с применением GPU (Часть 1);
  • Статья: нейронный машинный перевод с применением GPU (Часть 1);
  • Статья: нейронный машинный перевод с применением GPU (Часть 1);
  • Deep Speech: распознавание речи с применением GPU-системы для обучения глубоких нейронных сетей;

Фреймворки для глубокого обучения


  • FastML: Torch или Theano;
  • Deeplearning4j: Dl4j, Torch7 или Theano;
  • Список: библиотеки для глубокого обучения;
  • Theano: Python-библиотека;
  • Статья: знакомство с Theano;
  • Theano: руководство;
  • Theano: еще одно руководство;
  • Theano: применение логистической регрессии для классификации цифр;
  • Theano: многослойный перцептрон;
  • Theano: сверточные нейронные сети;

  • Theano: рекуррентная нейронная сеть;
  • Theano: LSTM-сети для анализа эмоциональной окраски высказываний;
  • Theano: ограниченная машина Больцмана;
  • Theano: глубокие сети доверия;
  • Theano: еще руководства;
  • Torch: еще одна библиотека для машинного обучения;
  • Руководство: машинное обучение в Torch;
  • Статья: знакомство с Torch;
  • Репозиторий: обучающие материалы по Torch;
  • Репозиторий: отличные материалы по Torch;

  • Оксфорд: лекции по машинному обучению с использованием Torch;
  • Torch: небольшой обзор;
  • Torch: подсказки и советы;
  • Torch: обработка естественного языка с помощью глубоких нейронных сетей;
  • Caffe: глубокое обучение для решения задач компьютерного зрения с Caffe и cuDNN;
  • TensorFlow: библиотека машинного обучения от Google;
  • TensorFlow: примеры для начинающих;
  • Репозиторий: материалы для изучения TensorFlow;
  • TensorFlow: бенчмарки;

Нейронные сети прямого распространения


  • Руководство: реализация нейронной сети;
  • Статья: ускорение работы нейронной сети с помощью Theano и GPU;
  • Статья: основы нейронных сетей;
  • Статья: метод обратного распространения ошибки;
  • AI Junkie: нейронная сеть на C++;
  • Code Project: нейронные сети для начинающих;
  • Презентация: алгоритмы регрессии и классификации;
  • Статья: знакомство с нейронными сетями;

Рекуррентные и LSTM-сети


  • Awesome-rnn: список ресурсов;
  • Руководство: рекуррентная нейронная сеть (Часть 1);
  • Руководство: рекуррентная нейронная сеть (Часть 2);
  • Руководство: рекуррентная нейронная сеть (Часть 3);
  • Статья: обработка естественного языка, рекуррентные сети и представления;
  • Статья: эффективность рекуррентных нейронных сетей;
  • Deeplearning4j: введение в рекуррентные нейронные сети;
  • Deeplearning4j: введение в LSTM-сети;
  • Статья: применение рекуррентных нейронных сетей;
  • Статьи: оптимизация производительности рекуррентных сетей;

  • Пример: простая рекуррентная нейронная сеть;
  • Статья: генерация кликбейт-заголовков с помощью рекуррентных нейронных сетей;
  • Презентация: использование рекуррентных сетей для текстового анализа;
  • Статья: использование рекуррентных нейронных сетей для машинного перевода;
  • Keras: создание музыки с помощью рекуррентных нейронных сетей;
  • Keras: использование рекуррентных нейронных сетей для генерации диалога;
  • Статья: введение в LSTM-сети;
  • Статья: LSTM-сети;
  • Deeplearning4j: LSTM-сети для новичков;
  • Статья: реализация LSTM-сети с нуля;

  • GitHub: символьная модель языка и её реализация char-rnn в Torch;
  • GitHub: применение LSTM-сетей для расшифровки сигналов ЭЭГ;
  • Статья: применение LSTM-сетей для анализа текстов на Theano;
  • Статья: применение глубокого обучения для анализа изображений;
  • Google: компьютер отвечает на email с помощью LSTM;
  • Google: LSTM-сети значительно повышают эффективность голосового поиска;
  • Deeplearning: еще одна статья на тему голосового поиска;
  • NVidia: обработка естественного языка с помощью LSTM-сетей на Torch;
  • Torch: анализ изображений с помощью сверточных и LSTM-сетей;
  • Сравнение: LSTM или управляемые рекуррентные модули (GRU);
  • Wiki: рекурсивные нейронные сети;
  • Deeplearning4j: рекурсивная тензорная нейронная сеть (RNTN);
  • Deeplearning4j: использование word2vec, глубоких сетей доверия и RNTN для анализа текста;

Ограниченная машина Больцмана


  • Deeplearning4j: руководство для начинающих по ограниченной машине Больцмана;
  • Deep Learning: еще одно хорошее руководство;
  • Статья: введение в ограниченные машины Больцмана;
  • Джеффри Хинтон: руководство по обучению ограниченных машин Больцмана;
  • GitHub: ограниченные машины Больцмана на R;
  • Deeplearning4j: руководство по созданию глубоких сетей доверия;

Автокодировщики


  • Эндрю Ын: разреженные автокодировщики;
  • Deeplearning4j: руководство по глубоким автокодировщикам;
  • Deep Learning: шумоподавляющие автокодировщики;
  • Deep Learning: вложенные шумоподавляющие автокодировщики;

Сверточные сети


  • Awesome Deep Vision: список ресурсов по машинному зрению;
  • Deeplearning4j: введение в сверточные нейронные сети;
  • Статья: применение сверточных сетей для обработки естественного языка;
  • Стэнфорд: применение сверточных сетей для распознавания образов;
  • Стэнфорд: библиотека JavaScript для работы со сверточными сетями;
  • Статья: применение сверточных сетей для распознавания лиц;
  • Статья: создание классификатора фотографий;
  • Kaggle: интервью с Яном Лекуном;
  • Статья: визуализация сверточных сетей;

Обработка естественного языка


  • Статья: обновление ЛРД-модели в реальном времени;
  • Статья: обновление ЛРД-модели в реальном времени со Spark;
  • Статья: ЛРД на Scala (Часть 1);
  • Статья: ЛРД на Scala (Часть 2);
  • Статья: сегментация ленты событий Twitter с применением тематического моделирования;
  • Статья: построение тематической модели подписчиков в Twitter;
  • Google: word2vec;
  • Wiki: модель bag-of-words;
  • Статья: тщательный анализ моделей skip-gram;
  • Руководство: skip-gram-моделирование;

  • Kaggle: векторное представление слов;
  • Статья: как работать с word2vec;
  • Deeplearning4j: алгоритм word2vec;
  • Quora: как работает word2vec;
  • Quora: об архитектурах CBOW и skip-gram простыми словами;
  • Quora: в чем разница между BOW и CBOW;
  • Quora: что лучше для word2vec – CBOW или skip-gram;
  • Wiki: расстояние Левенштейна;

  • Статья: классификация текстов с помощью модели bag-of-words;
  • Статья: изучение языка с помощью методов обработки естественного языка и обучения с подкреплением;
  • Kaggle: векторное представление слов и bag-of-words (Часть 1);
  • Kaggle: векторное представление слов и bag-of-words (Часть 2);
  • Kaggle: векторное представление слов и bag-of-words (Часть 3);
  • Руководство: предсказание слов в обработке естественного языка;
  • Статья: подробнее о skip-gram-моделировании;

Компьютерное зрение


Метод опорных векторов


  • Статья: сравнение метода опорных векторов и нейронных сетей;
  • Статья: алгоритмы оптимизации в методе опорных векторов;
  • LIBSVM: библиотека для классификации методом опорных векторов;

  • Quora: что такое ядра в машинном обучении;
  • Quora: гауссово ядро в методе опорных векторов;
  • Wiki: шкалирование по Платту;
  • Статья: калибровка классификаторов с использованием шкалирования по Платту;

Обучение с подкреплением


Деревья решений


  • Статья: использование суррогатов с целью улучшения неполных наборов данных;
  • Статья: деревья решений;
  • Wiki: отсечение ветвей деревьев решений;
  • Wiki: процесс обратный отсечению ветвей;
  • Сравнение: алгоритмы CART и CTREE;
  • Сравнение: алгоритмы CHAID и CART;

  • Сравнение: алгоритмы CART и CHAID;
  • Статья: еще одно сравнение различных алгоритмов;
  • Wiki: рекурсивное секционирование;
  • Статья: алгоритм CART;
  • CART: оценка важности переменной;
  • FAQ: рекурсивное секционирование;
  • Статья: пакет party в R;
  • Wiki: автоматический детектор взаимодействия Хи-квадрат (CHAID);
  • Статья: введение в CHAID;
  • Руководство: CHAID;

MARS


  • Wiki: многомерные адаптивные регрессионные сплайны (MARS);

Вероятностные деревья решений


  • Статья: байесовское обучение в вероятностных деревьях решений;
  • Статья: вероятностные деревья;

Случайный лес


  • GitHub: список ресурсов по теме случайного леса;
  • Kaggle: настройка параметров алгоритма случайного леса;
  • Презентация: ошибка out-of-bag;
  • Статья: оценка алгоритмов случайного леса для анализа выживаемости;
  • FAQ: случайный лес;

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


Композиционное обучение


Стэкинг


  • Статья: стэкинг, блендинг и многоярусное обобщение;
  • Статья: многоярусное обобщение;
  • Статья: когда следует применять многоярусное обобщение;
  • Статья: многоярусное обобщение;

Размерность Вапника — Червоненкиса


  • Wiki: размерность Вапника – Червоненкиса;
  • Quora: интуитивно понятное объяснение размерности Вапника – Червоненкиса;
  • Видео: что такое размерность Вапника – Червоненкиса;
  • Статья: знакомство с размерностью Вапника – Червоненкиса;
  • FAQ: размерность Вапника – Червоненкиса;

Байесовские методы машинного обучения


  • GitHub: знакомство с байесовскими методами машинного обучения;
  • Видео: должны ли все методы машинного обучения быть байесовскими;
  • Руководство: байесовская оптимизация;
  • Статья: байесовский вывод и глубокое обучение;
  • Статья: байесовская статистика простыми словами;
  • GitHub: фильтры Калмана и Байеса на Python;
  • Wiki: цепь Маркова;

Частичное обучение


Оптимизация


  • Статья: оптимизация портфеля активов на R с применением квадратичного программирования;
  • Статья: алгоритмы оптимизации в машинном обучении;
  • Видео: алгоритмы оптимизации в машинном обучении;
  • Статья: алгоритмы оптимизации в анализе данных;
  • Видео: лекции по оптимизации;
  • Статья: алгоритмы оптимизации для метода опорных векторов;
  • Статья: взаимосвязь проблем оптимизации и машинного обучения;

Дополнительно


  • GitHub: коллекция руководств по использованию R в науке о данных.

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

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.