Как стать автором
Обновить
23
0
Масляев Александр @maslyaev

Пользователь

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

Python: метапрограммирование в продакшене. Часть первая

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

Многие считают, что метапрограммирование в Python излишне усложняет код, но если использовать его правильно, то можно быстро и элегантно реализовать сложные паттерны проектирования. Помимо этого, такие известные Python-фреймворки, как Django, DRF и SQLAlchemy, используют метаклассы, чтобы обеспечить легкую расширяемость и простое переиспользование кода.



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

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

Алгоритм установления соединения в протоколе SSH

Время на прочтение5 мин
Количество просмотров106K
(Начальное название статьи «Алгоритм работы протокола SSH» было изменено по рекомендациям Vindicar, Karroplan и других участников хабросообщества)

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

Попытаюсь внести немного ясности в работу протокола SSH, а заодно рассмотреть роль алгоритма RSA и ключей авторизации пользователя…

image
Читать дальше →
Всего голосов 65: ↑56 и ↓9+47
Комментарии52

Где и как врубиться в эмбеддинги графов

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

Привет, Хабр!


Три года назад на сайте Леонида Жукова я ткнул ссылку на курс Юре Лесковека cs224w Analysis of Networks и теперь мы будем его проходить вместе со всеми желающими в нашем уютном чате в канале #class_cs224w. Cразу же после разминки с открытым курсом машинного обучения, который начнётся через несколько дней.


image


Вопрос: Что там начитывают?
Ответ: Современную математику. Покажем на примере улучшения процесса IT-рекрутинга.


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

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

Динамическое программирование или «Разделяй и Властвуй»

Время на прочтение9 мин
Количество просмотров35K
В этой статье рассматриваются сходства и различия двух подходов к решению алгоритмических задач: динамического программирования (dynamic programing) и принципа «разделяй и властвуй» (divide and conquer). Сравнение будем производить на примере, соответственно, двух алгоритмов: бинарного поиска (как быстро найти число в отсортированном массиве) и расстояния Левенштейна (как преобразовать одну строку в другую с минимальным количеством операций).

Хочу сразу заметить, что данное сравнение и объяснение не претендует на исключительную правильность. И возможно даже некоторые преподаватели в университетах захотели бы меня отчислить :) Эта статья является всего-лишь моей персональной попыткой разложить себе же все по полочками и понять что такое динамическое программирование и каким образом в нем участвует принцип «divide and conquer».

Итак, приступим…

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

Курс MIT «Безопасность компьютерных систем». Лекция 8: «Модель сетевой безопасности», часть 3

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

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Нейронные сети с нуля. Обзор курсов и статей на русском языке, бесплатно и без регистрации

Время на прочтение5 мин
Количество просмотров219K
На Хабре периодически появляются обзоры курсов по машинному обучению. Но такие статьи чаще добавляют в закладки, чем проходят сами курсы. Причины для этого разные: курсы на английском языке, требуют уверенного знания матана или специфичных фреймворков (либо наоборот не описаны начальные знания, необходимые для прохождения курса), находятся на других сайтах и требуют регистрации, имеют расписание, домашнюю работу и тяжело сочетаются с трудовыми буднями. Всё это мешает уже сейчас с нуля начать погружаться в мир машинного обучения со своей собственной скоростью, ровно до того уровня, который интересен и пропускать при этом неинтересные разделы.

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

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


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

Руководство по Node.js, часть 1: общие сведения и начало работы

Время на прочтение10 мин
Количество просмотров337K
Мы начинаем публикацию серии материалов, которые представляют собой поэтапный перевод руководства по Node.js для начинающих. А именно, в данном случае «начинающий» — это тот, кто обладает некоторыми познаниями в области браузерного JavaScript. Он слышал о том, что существует серверная платформа, программы для которой тоже пишут на JS, и хотел бы эту платформу освоить. Возможно, вы найдёте здесь что-то полезное для себя и в том случае, если уже знакомы с Node.js.

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



Сегодня мы обсудим особенности Node.js, начнём знакомство с экосистемой этой платформы и напишем серверный «Hello World».

Читать дальше →
Всего голосов 47: ↑39 и ↓8+31
Комментарии25

Этические вопросы искусственного интеллекта

Время на прочтение10 мин
Количество просмотров20K
Автор статьи — Алексей Маланов, эксперт отдела развития антивирусных технологий «Лаборатории Касперского»

Искусственный интеллект врывается в нашу жизнь. В будущем, наверное, все будет классно, но пока возникают кое-какие вопросы, и все чаще эти вопросы затрагивают аспекты морали и этики. Можно ли издеваться над мыслящим ИИ? Когда он будет изобретен? Что мешает нам уже сейчас написать законы робототехники, вложив в них мораль? Какие сюрпризы преподносит нам машинное обучение уже сейчас? Можно ли обмануть машинное обучение, и насколько это сложно?
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии59

Матрица мотивационных ценностей для управления разработчиками

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

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

Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии20

KivyMD — жизнь продолжается

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

Приветствую!

Сегодня мы поговорим о UI на Android в приложениях, написанных с использованием фреймворка для кроссплатформенной разработки Kivy. Возможно, вы не знали об этом, но для Kivy сущестсвует библиотека KivyMD, которая предоставляет для ваших программ виджеты в стиле Material Design. К сожалению, ничего подобного не существует под платформы iOS. Более того, KivyMD, судя по всему, оставлена своим создателем, так как последний коммит в репе был около года назад. Что делать и как с этим жить, читайте далее…
Всего голосов 18: ↑16 и ↓2+14
Комментарии3

Размещение веб-приложения на Amazon Web Services. Дёшево. Возможно ли это?

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

Наверняка все слышали про Amazon Web Services (AWS). А некоторые даже заглянули на страницу Pricing. И заметили, что цены там заметно выше, чем на DigitalOcean, Linode, Hetzner Cloud и др. Вот таблица для сравнения цен:


Тип RAM CPUs Диск Трафик Цена
DigitalOcean - 4 GB 2 vCPUs 80 GB 4 TB $20
Linode Linode 4GB 4 GB 2 vCPUs 80 GB 4 TB $20
AWS t2.medium 4 GB 2 vCPUs - - $40

Amazon берёт деньги за трафик, причём цены тоже не низкие:



Так для чего же тогда выбирать Amazon? Вот какие причины вижу я:


  1. Большое количество полезных сервисов.
  2. Free Tier.

О втором и пойдет речь в этой статье.

Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии58

Асинхронный Python: различные формы конкурентности

Время на прочтение8 мин
Количество просмотров131K
С появлением Python 3 довольно много шума об “асинхронности” и “параллелизме”, можно полагать, что Python недавно представил эти возможности/концепции. Но это не так. Мы много раз использовали эти операции. Кроме того, новички могут подумать, что asyncio является единственным или лучшим способом воссоздать и использовать асинхронные/параллельные операции. В этой статье мы рассмотрим различные способы достижения параллелизма, их преимущества и недостатки.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии36

Выбор языка программирования: 3 совета от программиста из Apple

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

От переводчика: эта статья — перевод материала, написанного программистом Аластером Парагасом (Alastair Paragas) из Apple.Он работал с такими языками программирования, как Javascript, Python, PHP, Java, Scala, Haskell, Swift и Rust. Аластер делится собственными размышлениями на тему выбора и изучения «своего» языка, ведь этот вопрос актуален как для новичков, так и для профессионалов, которые хотят выбрать новый инструментарий.

Изучаете ли вы язык программирования ради трудоустройства или повышения квалификации или же это чистой воды хобби, рано или поздно вам придется выбирать между ними. Как это сделать? Вопрос непростой, но ответить на него можно так: каждый день это делают тысячи программистов. Чтобы облегчить себе задачу, стоит следовать нескольким принципам.
Читать дальше →
Всего голосов 16: ↑10 и ↓6+4
Комментарии36

Генераторы непрерывно распределенных случайных величин

Время на прочтение15 мин
Количество просмотров117K
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)

Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX

unsigned long long BasicRandGenerator() {
    unsigned long long randomVariable;
    // some magic here
    ...
    return randomVariable;
}

и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.

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


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

Равномерное распределение





Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии7

Kivy. Xamarin. React Native. Три фреймворка — один эксперимент

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

Приветствую всех! Как только дым от жаркой дискуссии в комментариях к моей статье Kivy — фреймворк для кроссплатформенной разработки №1 осел, и среди прочих пробился достойный внимания комментарий, мы (Mirimon, SeOd), подумали, что было бы интересно и нам и читателям самостоятельно сравнить Kivy, Xamarin.Forms и React Native, написав на них одно и тоже приложение, сопроводить его соответствующей статьей на Хабре, репой на GitHub и честно рассказать, кто с какими трудностями столкнулся при реализации. Собравшись в Телеграмме и обсудив детали, мы принялись за работу.
Всего голосов 20: ↑15 и ↓5+10
Комментарии33

T2F: проект преобразования текста в рисунок лица при помощи глубинного обучения

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


Код проекта доступен в репозитории

Введение


Когда я читал описания внешнего вида персонажей в книгах, мне всегда было интересно, как бы они выглядели в жизни. Вполне можно представить себе человека в целом, но описание наиболее заметных деталей – задача сложная, и результаты разнятся от человека к человеку. Много раз у меня не получалось представить себе ничего, кроме весьма размытого лица у персонажа до самого конца произведения. Только когда книгу превращают в фильм, размытое лицо заполняется деталями. К примеру, я никогда не мог представить себе, как именно выглядит лицо Рэйчел из книжки "Девушка в поезде". Но когда вышел фильм, я смог сопоставить лицо Эмили Блант с персонажем Рэйчел. Наверняка у людей, занимающихся подбором актёров, уходит много времени на то, чтобы правильно изобразить персонажей сценария.
Всего голосов 19: ↑18 и ↓1+17
Комментарии5

База данных штрихкодов скачать бесплатно без регистрации (и прочей хурмы)

Время на прочтение5 мин
Количество просмотров88K
Добрый день. В открытом доступе наконец-то появился огромный справочник штрихкодов с наименованиями товаров, категориями и брендами.

Мы работаем над ним лет 8 и теперь в нем около 3 миллионов штрихкодов в стандартах EAN (EAN-13, EAN-8) и UPC (UPC-A, UPC-E).
Читать дальше →
Всего голосов 114: ↑114 и ↓0+114
Комментарии54

Курс MIT «Безопасность компьютерных систем». Лекция 6: «Возможности», часть 3

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

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Всего голосов 15: ↑12 и ↓3+9
Комментарии0

Конец эпохи закона Мура и как это может повлиять на будущее информационных технологий

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


О том, что собой представляет так называемый Закон Мура на Geektimes, наверное, рассказывать в подробностях не стоит — все мы знаем о нем, хотя бы и приблизительно. Если вспомнить кратко, то этот закон — эмпирическое наблюдение, которое сделано Гордоном Муром. Формулировок самого закона было несколько, но современная гласит, что количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается каждые 24 месяца. Чуть позже появилась разновидность закона, где фигурирует не два года, а 18 месяцев. Это связано уже не с Муром, а с Давидом Хаусом из Intel. По его мнению, производительность процессоров должна удваиваться каждые 18 месяцев из-за одновременного роста как количества транзисторов, так и быстродействия каждого из них.

Со времени формулировки закона разработчики электронных элементов стараются шагать в ногу с установленными временными рамками. Вообще говоря, для 1965 года закон был чем-то необычным, его даже можно назвать радикальным. Тогда «мини ЭВМ» все еще не были очень уж маленькими, занимая в помещении объем обычного рабочего стола, а то и больший. В то время сложно было представить, что компьютеры со временем могут даже стать частью холодильника, стиральной машины или другой бытовой техники. Большинство людей никогда не видели компьютер, а те, кто видели, почти никогда с ними не работали. Ну а те, кто работали, использовали перфокарты и другие не слишком удобные инструменты взаимодействия с ЭВМ, которые, в свою очередь, работали для решения достаточно узкого круга задач.
Читать дальше →
Всего голосов 28: ↑19 и ↓9+10
Комментарии41
12 ...
13

Информация

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