• Как полюбить машинное обучение и перестать страдать

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


    Читать дальше →
  • Экосистема R как инструмент для автоматизации бизнес-задач

      Настоящая статья является продолжением предыдущей публикации «Инструменты DataScience как альтернатива классической интеграции ИТ систем». Основная цель — заострить внимание как разработчиков, так и руководителей среднего звена, на широком спектре возможностей, которые предоставляют современные инструменты из сферы Data Science за рамками классических задач статистических вычислений и модной нынче темы машинного обучения. В частности, возможности экосистемы R по состоянию на август 2016 года и применение этих возможностей на примере двух задач: одной из прикладной науки, другой – из среднего бизнеса.
      Читать дальше →
    • Межпланетная автоматическая станция «Хабр-1»

        Обсуждая «Вопросы водителю марсохода» мы слегка затронули тему самостоятельной отправки на Марс аппарата, который посмотрит на Curiosity и отправится дальше исследовать Красную планету. Меня эта тема и раньше интересовала, тут подумалось: а не замахнуться ли нам на Вильяма нашего Шекспира? Сегодня любители и негосударственные организации уже все активнее выбираются в космос: SpaceX, Planetary Resourses, Bigelow Aerospace, Armadillo Aerospace, Deep Space Industries… Пока не тысячи их, но общий счет уже за десяток перевалил. Поэтому сейчас предлагаю устроить «мозговой штурм» и подумать: может уже и нам пора?
        image
        Читать дальше →
      • Сбор статистики производительности и вывод результатов в SSMS в виде пользовательских отчетов

        • Tutorial
        Итак, у нас появилась задача по сбору статистики производительности SQl-сервера и дальнейший анализ результатов. Для чего это надо? Например, вы хотите перенести с одного сервера на другой некую базу данных, и вам надо просчитать производительность до переноса и после.

        image

        Чуть подробнее. Есть некий сервер, назовем его server-sql-001, на котором крутятся базы данных CRM и ERP компании. И есть еще сервер, назовем его server-sql-1c, на котором крутятся БД 1С. Server-sql-001 – это новый брендовый сервер, с современными характеристиками и т.д. А server-sql-1c – это довольно средний по современным меркам сервер. И вот, вся бухгалтерия жаждет переехать на server-sql-001, дабы наступило им счастье, увеличилась производительность и скорость работы отличной желтой программы. Вот и встала задача проверить, а правда ли наступит всем счастье? Или же после переезда пострадает производительность и CRM и ERP и 1С? Вот один из примеров, по которым нам необходимо собрать и проанализировать статистику.

        Да, можно средствами системного монитора собрать всю необходимую статистику в excel-файл, затем построить графики и т.д. Но что если сбор статистики продолжает неделю, месяц? А еще с интервалом 10 секунд? Удобно будет работать с таким файлом? Ну смотрите сами.
        Читать дальше →
      • Управление Firefox и Thunderbird из Групповой политики


          Предисловие


          Одним из недостатков программных продуктов от Mozilla является их слабая ориентированность на корпоративный сегмент пользователей. К сожалению для управления инсталляциями продуктов Mozilla в крупных компаниях существует не так много инструментов. Построены они бывают на основе:
          • Получения части конфигурации с веб сервера — Mozilla AutoConfig (https://developer.mozilla.org/en-US/docs/MCD,_Mission_Control_Desktop_AKA_AutoConfig)
          • Интеграции части конфигурации в дистрибутив продукта (плагина для продукта)
            — CCK (https://addons.mozilla.org/en-US/firefox/addon/cck/)
          • Получение части настроек из GPO GPOFirefox (https://addons.mozilla.org/ru/firefox/addon/gpo-for-firefox/)

          Мне больше нравится последний подход: он позволяет гибко привязывать настройки к различным группам компьютеров и пользователей, а также все настройки можно делать из консоли групповой политики не углубляясь в написание каких-либо скриптов (в AutoConfig тоже можно формировать настройки на основе данных о пользователе, но там для этого потребуется разработка скриптов на стороне сервера). Кроме того для реализации управления из групповой политики не требуется разворачивать дополнительных отказоустойчивых серверов.
          К сожалению, плагин GPOFirefox реализован только для Firefox и не имеет некоторого необходимого мне функционала, поэтому пришлось написать собственный, подходящий и для Firefox и для Thunderbird, которым я решил поделиться с сообществом.
          Подробности о плагине управления
        • Mozilla предлагает создавать «тяжёлые» 3D-игры для web на их новом движке

            Сегодня Mozilla совместно с игровой студией Epic Games выступила с инициативой создания визуально привлекательных 3D-игр, которые не должны уступать декстопным аналогам, и выполняться прямо в браузере.

            Фактически речь идёт о том, чтобы перенести в веб опыт создания качественных, требующих высокой производительности, игровых приложений, которые должны будут выполняться обновленным движком JavaScript OdinMonkey, который недавно был включён в ночные сборки FireFox и скорость выполнения кода на Asm.js которым в 10 раз превышает аналогичный в других браузерах. Причём это всё без сторонних плагинов вроде Flash или Silverlight — чистый JavaScript.

            Тот визуальный опыт, который должен получить геймер в интернете, играя в 3D-игру, предлагается оценить на видео ниже — так выглядит порт Unreal Engine 3, сделанный инженерами Epic Games и Mozilla:



            Узнать подробности
          • Новый этап в гонке скоростей JavaScript. Модуль OdinMonkey ускоряет низкоуровневый код в 10 раз

              Модуль OdinMonkey — часть движка IonMonkey, отвечающая за оптимизацию и компиляцию низкоуровневого Asm.js — 21 марта был включён в состав сборки Firefox Nightly. Что такое Asm.js? — это подмножество языка JavaScript, позволяющее программировать «на уровне ассемблера» — без динамической типизации и выделения памяти. В каком-то смысле Asm.js аналогичен технологии Google Native Client, только с обратной совместимостью — код, написанный по спецификации Asm.js, является корректным кодом JavaScript и будет выполняться на любом движке, только медленнее, чем при наличии OdinMonkey.

              Asm.js позволяет в ряде случаев вплотную приблизиться к производительности нативного кода — программа на Си, скомпилированная в Asm.js, обычно работает всего вдвое медленнее оригинала:


              Читать дальше →
            • Drupal + Omega + Bootstrap: быстрое создание полностью кастомных тем оформления без верстки (Часть 1. Omega)

              Drupal 7 на сегодняшний день развился настолько, что позволяет создавать темы оформления для сайтов любой сложности, практически не прибегая к HTML-верстке. Процесс создания таких тем напоминает использование конструктора, вся основная работа по переносу эскиза макета в жизнь заключается только в задании необходимых стилей в CSS. Дополнительных ограничений при этом никаких не возникает, можно создавать темы любой сложности, причем полностью настраиваемые; и разве что натыкаешься на ограничения самой платформы (Drupal) или выбранного фреймворка (Bootstrap).

              Мой опыт разработки под Drupal более 7 лет, начинал в 2005 году с Drupal 4.6, с тех пор использую и восхищаюсь тем, как он развивается и становится лучше и удобнее от версии к версии. В этой статье я поделюсь своим опытом создания и использования сабжевой связки. Подразумевается, что вы знакомы с Drupal, умеете устанавливать модули и создавать темы оформления, но по каким-то причинам еще не используете фреймворк Omega для разработки своих тем. Первая часть статьи представляет собой простую инструкцию о том, как создать и настроить субтему на базе Omega. Также надеюсь, что идея этой статьи будет интересна пользователям альтернативных платформ, и немного прорекламирует мощь, простоту и гибкость Drupal в этом вопросе.
              Читать дальше →
            • LLVM+Clang 3.2: собираем самим собой под Windows

              • Tutorial
              LLVM — это набор «кирпичиков» для построения компиляторов, а clang — новый компилятор C++ на его основе. По сравнению с gcc — обеспечивается большая скорость компиляции при сравнимом качестве кода, более человеко-понятные исходники т.к. они не несут десятилетия жесточайшей C-only разработки как в gcc.

              Помимо этого, Clang и llvm распространяются под лицензией BSD, в отличии от GPLv3 у GCC. BSD позволяет не открывать исходники при распространении исполняемых файлов компилятора.

              С LLVM+CLang будет интересно поиграть любому кто когда-либо хотел написать свой компилятор, или считает, что компилятор собранный своими руками дает более теплый бинарный код.

              БОльшая часть часть разработчиков llvm/clang используют его под Linux/MacOS — и там его сборка/установка не вызывает каких либо проблем, путь основательно протоптан. А вот в случае windows ситуация несколько осложняется — об обходе нескольких граблей при сборке, о том, что связывает clang и gcc, и какие баги придется фиксить в релизе — под катом.
              Читать дальше →
            • Как построить разработку дизайна очень большого и долгого проекта

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



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

              Посмотрим как они выкрутятся?
              Читать дальше →
            • Что плохого в работе на результат

                Все чаще приходится слышать: "Работай на результат!"

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

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

                "Обязательна ориентированность на результат!" — напишет пожилая кадровичка «ГорАвиаВагонМорСтроя» в требования к кандидату на должность помощника бухгалтера, будучи уверенной в том, что раз все так пишут, то и ей надо.

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

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



                А хуже ли?
                Осторожно! Тентакли под катом!
              • Приручаем и прокачиваем огнелиса: The Ultimate Guide

                Подчини себе этого 9-хвостого лиса

                Лирическое вступление


                Не люблю гонку версий, своей бессмысленностью отдаленно напоминающую гонку вооружений. Не успели как следует довести до ума текущую версию — выпускают новую, с новыми багами, уязвимостями и «особенностями». Для таких как я — любителей стабильных и проверенных решений для корпоративной среды, да и для себя тоже — у команды Мозилы есть сборка типа ESR: в течение длительного времени для нее выходят обновления, устраняющие ошибки и уязвимости, сама же major версия браузера не обновляется! Вот ссылка на страницу оф.сайта, откуда можно скачать эту замечательную ESR-версию (достигается путем не слишком очевидных ходов), также, ESR можно скачать с официального FTP ftp.mozilla.org/pub/firefox/releases/latest-esr/
                Только что вышла давно мной ожидавшаяся 17-я ESR версия (предыдущая была только 10-я). В связи с этим событием решил написать подробное руководство по оптимизации нашего (не)любимого браузера — с разбором всех параметров, что каждый из них делает и откуда он получен.

                Читать дальше →
              • Coroutines в PHP и работа с неблокирующими функциями

                • Translation
                • Tutorial
                Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

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

                Генераторы


                Суть генератора в том, что это функция, которая возвращает не просто одно значение, а последовательность значений, где каждое значение выброшено одно за другим. Или, другими словами, генераторы позволяют вам реализовать итератор, без лишнего кода.
                Читать дальше →
              • Принудительно внедряем Helpdesk: опыт «Корпорации Зла»

                  Что такое хелпдеск? Система управления заявками пользователей, личинка сервисдеска, первый шаг эникейщика на пути к ITIL, бла-бла-бла…



                  Литература, посвященная вопросу организации системы управления инцидентами (заявками пользователей, проблемами в ИТ — называйте, как хотите) делится на две категории. Первая включает в себя технические низкоуровневые мануалы, посвященные, в основном, тонкостям настройки конкретных решений. Такие работы могут рассказать в подробностях, как добиться прироста производительности в WonderDesk величиной 0.001% под SuperSQL v.0.0001 alpha, но, как правило, ничего не говорят о том, зачем вообще нужен этот WonderDesk, и, главное, что с ним, существенно ускоренным, потом делать.

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

                  Остается одно — пытаться действовать «по наитию». О двух таких попытках, о том, как именно они предпринимались, какие имели предпосылки, к каким привели результатам, т.е. о практическом опыте внедрения хелпдеска в условиях агрессивной враждебной среды, и будет рассказано в этом топике. Надеюсь, он хоть немного заполнит образовавшийся пробел, предоставив эникейщикам и низкоквалифицированным админам сведения о том, как из состояния A, когда о хелпдеске и речи быть не может, перейти в состояние A', когда этот хелпдеск уже внедрен и работает.
                  Читать дальше →
                • Поднимает телефонию с нуля: Asterisk, FreePBX, GSM-шлюз на Huawei E173 в Debian



                  Сначала маленькая предыстория. Не так давно наша фирма практически лишилась городской связи, один телефонный оператор, что-то не поделил с другим и в результате между ними перестали проходить звонки. Было принято решение, раз уж так произошло полностью отказаться от обычной телефонной связи и полностью перейти на ip-телефонию.
                  Постановка задачи:
                  1) Организовать телефонную связь;
                  2) Запись разговоров;
                  3) Очередь звонков;
                  4) Голосовое меню;
                  5) GSM-шлюз, так-как должны обрабатываться и звонки с мобильных операторов.
                  6) Минимальная стоимость решения, так как ситуация форс-мажорная и бюджет выделен не был.

                  Никогда раньше я с телефонией не работал, задача встала срочная, попытаюсь подробно рассказать как ее решал лично я, про грабли на которые наступил, если что сделано не совсем оптимально или вообще криво буду благодарен за исправления и дополнения, и так поехали.
                  Читать дальше →
                • Батники против эксплойтов

                    Доброго времени суток, многоуважаемый %USERNAME%. Меня зовут Голованов Сергей, и я всё еще являюсь ведущим вирусным аналитиком в «Лаборатории Касперского». Я понимаю, что название этого поста в корпоративном блоге компании может вызвать смех, грусть, а у некоторых даже эпилептический припадок, но дайте мне всё объяснить.

                    Я понимаю, что для всех батники выглядят как нечто очень простое и со времен AUTOEXEC.BAT уже практически забытое, в то же время эксплойты, если вы конечно не профессиональный исследователь уязвимостей, выглядят очень сложно и практически неправдоподобно, особенно для некоторых разработчиков. Но! В данном посте я постараюсь перевернуть эти представления и рассказать, что всё как будто наоборот. Батники чуть легче и сильнее по функционалу brainfuck'а, а эксплойты не страшнее сортировки пузырьком на basic'е.

                    image

                    (Осторожно! 3 МБ иллюстрированного потока сознания и куча скриптов)
                    Читать дальше →
                  • Мультисайтинг в Drupal


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

                    Я не сторонник англицизма, но в нашем языке нет даже похожего термина. Вкратце мультисайтинг можно определить как возможность использовать файлы движка для разных сайтов. Не стану разбираться в этимологии этого слова, но осмелюсь предположить, что его появление было связано с Drupal. Одним из наиболее распространённых примеров мультисайтинга может быть использование общей базы данных пользователей на нескольких сайтах. В друпале мультисайтинг реализован привлекательно, с точки зрения простоты и удобства, о чём я и решил написать.
                    Читать дальше →
                  • Консоль для CodeIgniter

                    Добрый день Хабрасообщество.

                    Выношу на ваш справедливый суд консоль для PHP фреймворка CodeIgniter.

                    Перед этим небольшое пояснение — я не являюсь фанатом CI, но, так как приходится работать в команде пополняющейся новобранцами, выбирается наиболее легкодоступный для освоения инструмент. Это же и касается ОС на которой ведется разработка Windows, хотя инструмент тестировался и прекрасно себя чувствует в Linux-based системах, по крайней мере в Ubuntu. Это является прототипом, поэтому код можно критиковать бесконечно.

                    Небольшое иллюстрирующее видео:

                    Читать дальше →
                  • Tiling в 2D-играх на Unity, масштабирование материала

                    При разработке 2D-игр на Unity часто возникает необходимость делать множество элементов различного размера из одного и того же материала. Самый простой пример – тайлы земли, травы, каменей и прочие элементы во всякого рода платформерах. Как правило, одинаковые тайлы по умолчанию используют один и тот же материал (в противном случае кол-во заранее созаднных материалов было бы чересчур большим). Часто делать каркас уровня из элементарных тайлов может быть неудобно из-за слишком большого кол-ва объектов на уровне, поэтому вместо элементарных тайлов используются большие тайлы – те же тайлы, только увеличенного масштаба. Допустим, нам надо поверх земли «посадить» два участка травы:

                    image

                    Читать дальше →
                    • +25
                    • 12.9k
                    • 9