Как стать автором
Обновить
11
0
Иван Ремень @BHYCHIK

CTO

Отправить сообщение

Память и задачи

Время на прочтение4 мин
Количество просмотров4.3K
Приветствую.
Сразу предупрежу, что пост полон личных соображений автора, которые могут быть ошибочными, да и тема эта обширна и интересна, так что обсуждение по теме в комментариях приветствуется.
Только сейчас осознал, что во-первых, не рассказал я многого, что полезно было бы знать перед тем, как писать код. К тому же есть намного более хорошие пути для реализации многозадачности, чем я упоминал в прошлом выпуске.
Также постараюсь последовать многочисленным советам и систематизировать содержание статей.
Читать дальше →
Всего голосов 14: ↑10 и ↓4+6
Комментарии0

Что такое свёрточная нейронная сеть

Время на прочтение13 мин
Количество просмотров266K


Введение


Свёрточные нейронные сети (СНС). Звучит как странное сочетание биологии и математики с примесью информатики, но как бы оно не звучало, эти сети — одни из самых влиятельных инноваций в области компьютерного зрения. Впервые нейронные сети привлекли всеобщее внимание в 2012 году, когда Алекс Крижевски благодаря им выиграл конкурс ImageNet (грубо говоря, это ежегодная олимпиада по машинному зрению), снизив рекорд ошибок классификации с 26% до 15%, что тогда стало прорывом. Сегодня глубинное обучения лежит в основе услуг многих компаний: Facebook использует нейронные сети для алгоритмов автоматического проставления тегов, Google — для поиска среди фотографий пользователя, Amazon — для генерации рекомендаций товаров, Pinterest — для персонализации домашней страницы пользователя, а Instagram — для поисковой инфраструктуры.


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


Задача


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


Читать дальше →
Всего голосов 91: ↑91 и ↓0+91
Комментарии74

Оптимизация кода: процессор

Время на прочтение18 мин
Количество просмотров114K
Все программы должны быть правильными, но некоторые программы должны быть быстрыми. Если программа обрабатывает видео-фреймы или сетевые пакеты в реальном времени, производительность является ключевым фактором. Недостаточно использовать эффективные алгоритмы и структуры данных. Нужно писать такой код, который компилятор легко оптимизирует и транслирует в быстрый исполняемый код.

image

В этой статье мы рассмотрим базовые техники оптимизации кода, которые могут увеличить производительность вашей программы во много раз. Мы также коснёмся устройства процессора. Понимание как работает процессор необходимо для написания эффективных программ.
Читать дальше →
Всего голосов 107: ↑102 и ↓5+97
Комментарии142

Современная операционная система: что надо знать разработчику

Время на прочтение22 мин
Количество просмотров67K

Александр Крижановский (NatSys Lab.)


Александр Крижановский

Нас сегодня будет интересовать операционная система – ее внутренности, что там происходит… Хочется поделиться идеями, над которыми мы сейчас работаем, и отсюда небольшое вступление – я расскажу о том, из чего состоит современный Linux, как его можно потюнить?

По моему мнению, современная ОС – это плохая штука.




Дело в том, что на картинке изображены графики сайта Netmap (это штуковина, которая позволяет вам очень быстро захватывать и отправлять пакеты сетевого адаптера), т.е. эта картинка показывает, что на одном ядре с разной тактовой частотой до 3 ГГц Netmap позволяет 10 Гбит – 14 млн. пакетов в сек. отрабатывать уже на 500 МГц. Синенькая линия – это pktgen – самое быстрое, что, вообще, есть в ядре Linux’а. Это такая штуковина – генератор трафика, который берет один пакет и отправляет его в адаптер много раз, т.е. никаких копирований, никакого создания новых пакетов, т.е., вообще, ничего – только отправка одного и того же пакета в адаптер. И вот оно настолько сильно проседает по сравнению с Netmap (то, что делается в user-space показано розовой линией), и оно вообще где-то там внизу находится. Соответственно, люди, которые работают с очень быстрыми сетевыми приложениями, переезжают на Netmap, Pdpdk, PF_RING – таких технологий море сейчас.
Читать дальше →
Всего голосов 102: ↑94 и ↓8+86
Комментарии51

Что особенного в СУБД для данных в оперативной памяти

Время на прочтение31 мин
Количество просмотров32K

Константин Осипов (kostja )


Константин Осипов

Как родилась идея доклада? Я не очень люблю выступать и рассказывать про фичи, особенно про будущие фичи. Выясняется, что и люди не особо любят это слушать. Они любят слушать про то, как все устроено. Это доклад о том, как все устроено или должно быть, с моей точки зрения, устроено в современной СУБД.

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



На макроуровне – это то, как должна быть устроена современная СУБД. Почему у нас сегодня есть возможность создавать новые базы данных, почему нельзя взять текущую и удовлетвориться ее производительностью, подтюнить или написать для нее патч? Просто взять и написать патч, который бы ее ускорил, если она медленная? Из какого пространства решений мы выбираем?
Всего голосов 67: ↑63 и ↓4+59
Комментарии22

Лекции Техносферы. 1 семестр. Введение в анализ данных (весна 2016)

Время на прочтение3 мин
Количество просмотров43K
Слушайте и смотрите новую подборку лекций Техносферы Mail.Ru. На этот раз представляем в открытом доступе весенний курс «Введение в анализ данных», на котором слушателей знакомят со сферой анализа данных, основными инструментами, задачами и методами, с которыми сталкивается любой исследователь данных в работе. Курс преподают Евгений Завьялов (аналитик проекта Поиск Mail.Ru, занимающийся извлечением полезных бизнесу знаний из данных, генерируемых поисковым движком и десктопными приложениями), Михаил Гришин (программист-исследователь из отдела анализа данных) и Сергей Рыбалкин (старший программист из студии Allods Team).

Лекция 1. Введение в Python


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


Читать дальше →
Всего голосов 70: ↑65 и ↓5+60
Комментарии10

Куда податься программисту за знаниями в этом году

Время на прочтение6 мин
Количество просмотров32K

image
Highload++ в Москве, ноябрь 2016


Мы сделали для вас подборку лучших (по нашему мнению) выступлений с IT-конференций, на которые собираемся поехать в первой половине 2017 года (как и обещали).


Всё это будет полезно web-программистам (PHP, Go, JS), QA и DevOps. Да, в списке довольно мало конференций, проводящихся на территории России и стран СНГ, но на сегодняшний день их, увы, в принципе не так много. Так что, если вдруг вы знаете о каком-нибудь стоящем мероприятии, дополняйте наш список в комментариях.

Всего голосов 58: ↑55 и ↓3+52
Комментарии22

Singleton (Одиночка) или статический класс?

Время на прочтение6 мин
Количество просмотров194K
Статья будет полезна в первую очередь разработчикам, которые теряются на собеседованиях когда слышат вопрос «Назовите основные отличия синглтона от статического класса, и когда следует использовать один, а когда другой?». И безусловно будет полезна для тех разработчиков, которые при слове «паттерн» впадают в уныние или просят прекратить выражаться :)

Что такое статический класс?


Для начала вспомним что такое статический класс и для чего он нужен. В любом CLI-совместимом языке используется следующая парадигма инкапсуляции глобальных переменных: глобальных перменных нет. Все члены, в том числе и статические, могут быть объявлены только в рамках какого-либо класса, а сами классы могут (но не должны) быть сгруппированы в каком-либо пространстве имен. И если раньше приходилось иммитировать поведение статического класса с помощью закрытого конструктора, то в .NET Framework 2.0 была добавлена поддержка статических классов на уровне платформы. Основное отличие статического класса от обычного, нестатического, в том, что невозможно создать экземпляр этого класса с помощью оператора new. Статические классы по сути являются некой разновидностью простанства имен — только в отличие от последних предназначены для размещения статических переменных и методов а не типов.

Готовимся к собеседованию дальше?
Всего голосов 70: ↑58 и ↓12+46
Комментарии84

Lock-free структуры данных. Iterable list

Время на прочтение7 мин
Количество просмотров14K
Lock-free list является основой многих интересных структур данных, — простейшего hash map, где lock-free list используется как список коллизий, split-ordered list, построенный целиком на списке с оригинальным алгоритмом расщепления bucket'а, многоуровневого skip list, являющегося по сути иерархическим списком списков. В предыдущей статье мы убедились, что можно придать такую внутреннюю структуру конкурентному контейнеру, чтобы он поддерживал thread-safe итераторы в динамичном мире lock-free контейнеров. Как мы выяснили, основным условием для того, чтобы lock-free контейнер стал итерабельным, является стабильность внутренней структуры: ноды не должны физически удаляться (delete). В этом случае итератор суть просто (быть может, составной) указатель на ноду с возможностью перехода к следующей (оператор инкремента).

Можно ли такой подход распространить на lock-free list?.. Посмотрим…
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии0

Барьеры доступа к памяти в Linux

Время на прочтение15 мин
Количество просмотров48K
Эта статья — частичный перевод исчерпывающего руководства Дэвида Хоуэлса (David Howells) и Пола Маккени (Paul E. McKenney) распространяемого в составе документации Linux (Documentation/memory-barriers.txt онлайн версия).

Must read для разработчиков ядра/драйверов и очень познавательно для прикладных программистов.
ASCII art и очень много букв
Всего голосов 114: ↑109 и ↓5+104
Комментарии33

Как перенести проект размером в 9 млн строк кода на 64-битную платформу?

Время на прочтение10 мин
Количество просмотров30K
64 бита? О, интересненько!
Недавно наша команда завершила миграцию на 64-битную платформу довольного большого проекта (9 млн строк кода, 300Mb исходников). Проект занял полтора года. Хотя в силу NDA мы не можем привести название проекта, надеемся, что наш опыт окажется полезен другим разработчикам.

Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии52

Вероятностное программирование

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



Лекция была прочитана Борисом hr0nix Янгелем на факультете компьютерных наук, открытом в Высшей школе экономики при поддержке Яндекса. Сам Борис окончил ВМиК МГУ и Школу анализа данных Яндекса. Работал в Microsoft Research Cambridge в группе Кристофера Бишопа над фреймворком Infer.NET. Сейчас Борис — ведущий разработчик поиска Яндекса.

Под катом — расшифровка рассказа.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии15

Lock-free структуры данных. Concurrent maps: rehash, no rebuild

Время на прочтение6 мин
Количество просмотров19K

Пройдем по следам C++ 2015 Russia далее.
В предыдущей статье мы рассмотрели алгоритм для lock-free ordered list и на его основе сделали простейший lock-free hash map. У этого hash map есть недостаток: размер хеш-таблицы постоянен и не может быть изменен в процессе роста числа элементов в контейнере. Это не представляет проблемы, если мы заранее примерно представляем требуемый объем контейнера. А если нет?
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии8

Квантовая онлайн-песочница от Google

Время на прочтение4 мин
Количество просмотров59K

(возможно вы уже видели эту картинку, хотя странно, что на хабре так мало материалов по квантовой информатике)

Спасибо гениальным инженерам Google, теперь мы все дружно можем превратить наши настольные ПК в квантовые компьютеры. Ну, хорошо, не совсем так: подразумевается лишь моделирование работы квантового компьютера на его младшем собрате путем запуска веб-приложения для Chrome. Quantum Computing Playground позволяет прогонять известные квантовые алгоритмы (такие как алгоритм Гровера, Шора) и писать собственных квантовые программы.

За исключением непосредственного приобретения квантового компьютера — что, несмотря на заявления D-Wave, вряд ли когда-нибудь удастся — решение от Google является наиболее удачным шагом в сторону популяризации квантового зверя. Если хочется лично встать на первую ступеньку вычислений будущего, это тот самый шанс. У вас есть дети? Вы обязаны посадить их в эту песочницу как минимум на шесть часов, чтобы они научились всем тонкостям квантовых вычислений.
Читать дальше →
Всего голосов 68: ↑67 и ↓1+66
Комментарии22

Дискретные структуры: матан для айтишников

Время на прочтение4 мин
Количество просмотров223K


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

Хотя раньше такого понятия, как «дискретная математика» вовсе не было, это не значит, что не возникало дискретных задач: Абель, Дирихле, Фибоначчи, Эйлер, чьи имена возникают по ходу изучения дискретной математики, — отнюдь не наши современники! Но просто в те времена для выделения самостоятельной ветви математики ещё не сложилось критической массы задач и приёмов, не было видно взаимосвязей между ними. А большое количество плодотворных взаимосвязей между, на первый взгляд, различными понятиями, — то, что математики в своей науке очень ценят.

Ну хорошо, математикам всё математическое интересно. А зачем дискретная математика программисту?
Читать дальше →
Всего голосов 63: ↑59 и ↓4+55
Комментарии43

Как запустить программу без операционной системы: часть 6. Поддержка работы с дисками с файловой системой FAT

Время на прочтение11 мин
Количество просмотров21K
В пятой части нашей серии статей мы показали, как можно использовать прерывания BIOS'а после перехода в защищенный режим, и в качестве примера определили размер оперативной памяти. Сегодня мы разовьем этот успех и реализуем полноценную поддержку работы с дисками с файловой системой FAT16 и FAT32. Работу с файлами на диске можно разбить на 2 части: работа с файловой системой и работа с диском на уровне чтения/записи секторов. Можно сказать, что для этого нам нужно написать «драйвер» файловой системы и «драйвер» диска.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии3

Сделай сам: MSc Computer Science на уровне топ американских университетов из дома

Время на прочтение12 мин
Количество просмотров162K

Вступление


Давно хотел написать статью про образование в Computer Science, но руки не доходили. Решил все-таки это наконец сделать. Итак, о чем пойдет речь? Речь о том, что из себя представляет диплом MSc Computer Science топовых университетов США (во всех подробностях, включая основные курсы, книги и проекты) и как ему соответствовать.

Почему именно MSc? Это — некая развилка: с одной стороны после MSc — вы уже готовый к жизни инженер (да, речь идет о инженерной подготовке, как мне кажется это самое больное место в нашей системе образования), с другой — можно спокойно идти по пути PhD. Как известно, в PhD программу можно попасть и не особо умея программировать — особенно это касается теоретического Computer Science. С другой стороны найти работу программиста тоже дело не очень сложное, и часто не требует мощного образования. Но достигнув уровня MSc — вы получаете возможность разбираться как во всех новый идеях в Computer Science, так и возможность их воплотить в практику. То есть с одной стороны круто разобраться в каком-нибудь deep learning и сделать в нем что-то новое, а также взять и написать свою операционную систему (кто так сделал?). Причем вы не зажаты в рамки узкой специализации (если конечно продолжаете учиться). То есть вы теперь — универсальный солдат, готовый на все.

Надеюсь что эта статья будет полезна:
1. Студентам, которые хотят соответствовать высоким стандартам топ вузов США, или собирающиеся туда в аспирантуру по Computer Science
2. Профессионалам, которые хотят закрыть «дыры» и пробелы
3. Может кто-то из преподавателей возьмет на заметку для своих курсов.
4. Студентам, аспирантам американских вузов — хотелось бы тоже получить фидбэк, особенно касается последних трендов в образовании

Что же здесь будет написано? Минимум философии и общих мыслей: конкретная программа undergraduate и graduate курсов, конечно из дисциплин наиболее мне близких. Все курсы были лично прочувствованы на собственной шкуре, по этому и пишу. (Я пытался записаться на все интересные курсы, которые были, но мой основной упор — системное программирование, базы данных и искусственный интеллект. Отсюда конечно некий bias, но пытаюсь предложить более-менее универсальную программу).
Читать дальше →
Всего голосов 86: ↑81 и ↓5+76
Комментарии64

Логика мышления. Промежуточный итог

Время на прочтение3 мин
Количество просмотров29K


Итак, на сегодня в сеть выложены 17 статей из цикла «Логика мышления». Сам цикл – это попытка построить достаточно полную модель работы мозга. То есть, не просто описать отдельные механизмы, но и показать, как из их взаимодействия может рождаться человеческое мышление. То, что уже опубликовано – это фундамент излагаемой концепции. В нем показывается, как на уровне нейронов реализуются основные информационные механизмы. Этот фундамент определенным образом задает правила всей дальнейшей игры. Он определяет, каким инструментарием мы располагаем для реализации более сложных процессов. Я постарался показать, что, оставаясь в рамках биологически достоверных идей, можно создать модель, обладающую высокими вычислительными возможностями. Как пример было показано соответствие между свойствами коры и возможностями реляционной алгебры.
Читать дальше →
Всего голосов 68: ↑58 и ↓10+48
Комментарии54

Безопасность Виртуализации. Часть 1

Время на прочтение11 мин
Количество просмотров29K
Перевод статьи «Virtualization Security» за авторством Terry Komperda.

Безопасность Виртуализации. Часть 2

1. КРАТКИЙ ОБЗОР

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

2. ВВЕДЕНИЕ

Виртуализация развивается и планирует задержаться здесь надолго. Хотя ее концепция известна уже более пятидесяти лет, эта технология будет по-прежнему расти и совершенствоваться в сферах, существующих повсеместно и планирующих развивать себя и дальше. Более того, половина всех серверов сегодня работают на Виртуальных Машинах. IDC предсказывает, что 70% всех рабочих нагрузок будет работать и на ВМ к 2014 году. Что действительно должно идти в ногу с технологическим прогрессом из-за широкомасштабного применения — это обеспечение безопасности компонентов виртуализации и виртуальных сред. Давайте рассмотрим некоторые выгоды в плане безопасности, существующие благодаря использованию виртуализации.

Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии6

Краткий конспект по языку JavaScript

Время на прочтение15 мин
Количество просмотров113K
Я —.NET разработчик. Но в последнее время всё чаще сталкиваюсь с JavaScript. Причём, процентах в 50 случаев я что-то на нём пишу, в остальных 50 — разбираюсь с чужим кодом, да ещё и прошедшим через минификацию, а иногда и обфускацию. В этой статье захотелось поделиться теми моментами, которые мне показались важными для понимания языка и эффективной работы с ним. Тут не будет ничего нового или неизвестного для людей, уже имевших дело с языком, и не будет чего-то такого, чего нельзя найти в других источниках. Для меня статья будет полезна как способ лучше разобраться в предмете, для читателей, я надеюсь, — как повод освежить знания.

Брендан Айк упоминал, что JavaScript был создан за 10 дней. Думаю, идея вынашивалась дольше. Как бы то ни было, язык получился и с тех пор только набирает популярность. Особенно после появления AJAX.

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

JavaScript состоит из трёх обособленных частей:

  • ядро (ECMAScript),
  • объектная модель браузера (Browser Object Model или BOM),
  • объектная модель документа (Document Object Model или DOM).


В статье, в основном, пойдёт речь о ядре. Конечно, в примерах кода будут использоваться элементы DOM и BOM, но заострять на них внимание не буду.
Читать дальше →
Всего голосов 75: ↑65 и ↓10+55
Комментарии20

Информация

В рейтинге
Не участвует
Откуда
Зеленоград, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность