Как стать автором
Обновить
28
0
Алексей Соловьёв @mrxak

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

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

Python 3.5; async/await

Время на прочтение5 мин
Количество просмотров280K
Тихо и незаметно (с), вышел Python версии 3.5! И, безусловно, одно из самых интересных нововведений релиза является новый синтаксис определения сопрограмм с помощью ключевых слов async/await, далее в статье об этом.

Поверхностный просмотр «PEP 0492 — Coroutines with async and await syntax» поначалу оставил у меня вопрос «Зачем это надо». Сопрограммы удовлетворительно реализуются на расширенных генераторах и на первый взгляд может показаться, что все свелось к замене yield from на await, а декоратора, создающего сопрограмму на async. Сюда можно добавить и возникающее ощущение, что все это сделано исключительно для использования с модулем asyncio.

Но это, конечно же, не так, тема глубже и интереснее.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии26

LLVM для исследователей

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

Что такое LLVM?


LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

LLVM имеет несколько ключевых отличий от других компиляторов:

  • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
Читать дальше →
Всего голосов 72: ↑68 и ↓4+64
Комментарии6

Квартиры-модули или путь развития жилых помещений

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

Стоит сразу отметить, что автор ни разу не строитель, а в лучшем случае обычный гик.

В IT, транспорте, машиностроении всё давно уже идёт по пути стандартизации и модуляризации. Яркий пример — это ISO контейнеры для интермодальной перевозки. В современных офисных зданиях делают модульные полы, потолки, перегородки и собирают всё как конструктор, но в строительстве жилых домов подобное пока можно увидеть только в начинке (кухня, санузлы, электрика и т. п.), а вот чтобы сделать всю квартиру сменным модулем пока вроде бы не дошли. Подозревается, что это объясняется экономическими соображениями и технологическими ограничениями прошлого, без учёта социальных и правовых факторов, а они следующие (добавьте свои):
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии39

NAS для нас: от дорогого к простому и бюджетному

Время на прочтение4 мин
Количество просмотров132K
Продолжая тему накопителей, поднятую в постах про беспроводные диски и флешки, хочу перейти к теме NAS. Штука эта довольно интересная, особенно в эпоху планшетов, ноутбуков и множества семейных устройств. Я специально остановлюсь на домашнем применении, потому что корпоративный NAS – тема отдельной большой статьи.



Зачем нужен NAS дома? Вроде бы простой вопрос и большинство на него ответит так – для хранения данных и доступа к ним всех членов семьи. Только вот это совсем не так, потому что тогда проще и вполне достаточно будет взять нормальный роутер и подключить к нему внешний диск по USB.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии63

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

Время на прочтение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

Мир розеток: как зарядить гаджеты в разных странах мира

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


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

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

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

Каждый путешественник на себе испытал неудобства проводной передачи энергии. Во многих странах мира используются разные стандарты электрических вилок и розеток, о чем нужно помнить, отправляясь в далекое путешествие.
Читать дальше →
Всего голосов 58: ↑54 и ↓4+50
Комментарии69

Голосовое управление компьютером и Python

Время на прочтение4 мин
Количество просмотров42K
Начитавшись разных постов о Google Voice и его использовании, решил написать что-то свое. А именно — голосовое управление компьютером. Сразу оговорюсь, что ОС — Windows.

Нам понадобится:

— Python 2.7
— библиотеки:
pyaudio
pycurl
pywin32
+ набор стандартных библиотек
— какой-либо аудиоконвертер поддерживающий flac и wav, а также работу из командной строки, я использовал этот.
Читать дальше →
Всего голосов 15: ↑11 и ↓4+7
Комментарии9

Русский отец Звездных Войн

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


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



Если нужно посмотреть всего один фильм для знакомства с ХХ веком, звездные войны вне конкуренции. Нет фильма оказавшего больше влияние на поп-культуру, подтверждением тому Рейган назвавший СССР Империей зла и объявивший ей «Звездные Войны» СОИ. Почему именно Звездные Войны завоевали такую популярность?

Секрет успеха звездных войн лежит на поверхности если вы хоть немного знакомы с теорией кино или т.н. «электронных средств коммуникации». Вся теория укладывается в четыре слова «Media is the message». Медиа и есть сообщение — впервые вывел в своей книги Маршалл Макклюен в своей книге «Понимание медиа». Она вышла в 1968 небольшим тиражом, но просочилась в среду хиппи и киношников Голливуда. Книга была довольно заумной, местами малодоказательной и похожей на эзотерику хиппи, но его схемы безупречно объясняли, что происходит. Например, почему телевизор с плохой картинкой неожиданно оказался гораздо популярнее кино.

Как устроены Звездные Войны?
Всего голосов 63: ↑56 и ↓7+49
Комментарии69

Нейроинтерфейсы: от фотобумаги до нейропыли

Время на прочтение12 мин
Количество просмотров44K
Всё взаимодействие с внешним миром человек делает при помощи мышц (речь, пальцы, жесты и пр). Нейроинтерфейс позволяет править взаимодействовать с миром без мышечной активности. Первый шаг к «мозгам в банке». И к взлому мозга.

В фильме «Чаппи» при помощи ЭЭГ-шлема робот копировал сознание (как свое, так и человеческое), а DARPA тем временем научила парализованную женщину не только есть шоколадки, но и управлять малозаметным истребителем-бомбардировщиком пятого поколения F-35. На симуляторе.

Посылать аудио и видео сигнал напрямую в мозг научились еще несколько десятилетий назад. Сейчас в секретных лабораториях МГУ учат людей не только набирать текст «мыслью»(13–15 символов в минуту), но и устанавливать скрытый интерфейс «подсознание-компьютер», а в свободной продаже есть устройства любительские от 10.000 руб (NeuroSky, есть в свободном доступе в Хакспейсе) и вполне профессиональные за 200.000 руб (BioRadio, я в в Питере тестил)



О том, как мы докатились до жизни такой (про историю ЭЭГ и нейроинтерфейсов), речь пойдет под катом. (А также про первые попытки использования нейроинтерфейсов для ИБ).
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии32

Пример векторной реализации нейронной сети с помощью Python

Время на прочтение14 мин
Количество просмотров49K
В статье речь пойдет о построение нейронных сетей (с регуляризацией) с вычислениями преимущественно векторным способом на Python. Статья приближена к материалам курса Machine learning by Andrew Ng для более быстрого восприятия, но если вы курс не проходили ничего страшного, ничего специфичного не предвидится. Если вы всегда хотели построить свою нейронную сеть с преферансом и барышням векторами и регуляризацией, но что то вас удерживало, то сейчас самое время.

Данная статья нацелена на практическую реализацию нейронных сетей, и предполагается что читатель знаком с теорией (поэтому она будет опущена).
Читать дальше →
Всего голосов 46: ↑43 и ↓3+40
Комментарии4

Мой интернет вещей: Гостевой замок

Время на прочтение17 мин
Количество просмотров80K
Так сложились обстоятельства, что имеется у меня однокомнатная квартира, в которой я не живу, а сдавать ее «обычным способом» мне не интересно. Попробовал я ее сдать через сервис Airbnb, понравилось. И не то, что бы это выгоднее, но точно интереснее, процесс захватывает. Но я не об этом…

Было у меня пару раз ситуация, когда я не мог лично встретить гостя и вручить ему ключ. Обычно в таких ситуациях приходится придумывать различные способы, от закладывания ключа под коврик до передачи через консьержку. Мне же не хочется посвящать в свои дела посторонних и как-то не комильфо прятать ключ под ковриком.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии58

О передаче данных через аудиоразъём

Время на прочтение4 мин
Количество просмотров68K
Одним из важных интерфейсов на мобильных устройствах и планшетных компьютерах является разъём для наушников/микрофона. Однако не стоит думать, что он предназначен только для колонок-наушников-микрофона – его можно использовать в том числе для передачи данных. Об этом сегодня и поговорим.


Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии63

Здоровье гика: как не закиснуть к старости

Время на прочтение7 мин
Количество просмотров81K
Привет, Geektimes! Сегодня мы поговорим — внезапно! — о здоровье. А если быть точным — о том, как влияет многочасовое ежедневное сидение за компьютером и как можно минимизировать этот вред, чтобы в старости радоваться жизни и продолжать работать сидя за компом, а не жаловаться на жизнь на приёмах у врачей.


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

Условно все «компьютерные» упражнения можно поделить на три блока — для глаз, для суставов кистей и для осанки. Итак, поехали.
Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии42

Тест недорогих тепловизоров

Время на прочтение8 мин
Количество просмотров57K
Здравствуйте.

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

Несколько месяцев назад я устраивал сравнительный тест недорогих тепловизоров Fluke VT04, FLIR TG165 и прототипа FLIR C2. Потом немного потестил серийный FLIR C2. Ну а сейчас подумал: а почему я до сих пор не написал про это на Geektimes?..

В принципе, все результаты тестов я тогда сразу же выкладывал на YouTube, так что те, кому лень читать, могут посмотреть видео. Но предупреждаю, там суммарно минут 40-45. Кому больше интересен текст — тем эта статья. Кому всё это скучно — для тех в конце статьи котики.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии42

Раз плюнуть: обзор и результаты генетического теста Атлас и дайджест основных ДНК-тестов в России и мире

Время на прочтение5 мин
Количество просмотров84K
«Домашний» ДНК — бизнес относительно молодой. Большинство компаний предоставляют типовую услугу, состоящую из 3 базовых элементов: пробирка для сбора материала, курьер, доступ к личному кабинету с расшифровкой данных о наследственных рисках и предрасположенностях к заболеваниям.

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



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



Что оказалось в нашем личном кабинете — под катом.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии50

Введение в функциональное программирование на Python

Время на прочтение10 мин
Количество просмотров152K
Рассуждая о функциональном программировании, люди часто начинают выдавать кучу «функциональных» характеристик. Неизменяемые данные, функции первого класса и оптимизация хвостовой рекурсии. Это свойства языка, помогающие писать функциональные программы. Они упоминают мапирование, каррирование и использование функций высшего порядка. Это приёмы программирования, использующиеся для написания функционального кода. Они упоминают распараллеливание, ленивые вычисления и детерменизм. Это преимущества функциональных программ.

Забейте. Функциональный код отличается одним свойством: отсутствием побочных эффектов. Он не полагается на данные вне текущей функции, и не меняет данные, находящиеся вне функции. Все остальные «свойства» можно вывести из этого.

Нефункциональная функция:

a = 0
def increment1():
    global a
    a += 1


Функциональная функция:

def increment2(a):
    return a + 1


Вместо проходов по списку используйте map и reduce
Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии51

Персональные данные: dura lex, sed lex

Время на прочтение11 мин
Количество просмотров21K
В последнее время защита персональных данных стала одним из наиболее актуальных для организаций вопросов. Её считают даже одним из драйверов развития рынка коммерческих ЦОД. Однако готовых предложений услуг хостинга информационных систем, обрабатывающих персональные данные по требованиям закона, на рынке услуг ЦОД пока немного.

По прогнозу iKS-Consulting, к 2018 году российский рынок ЦОД вырастет почти вдвое по сравнению с началом 2015 года и превысит 26,3 млрд. рублей, а количество установленных стоек в коммерческих дата-центрах увеличится до 48,3 тыс. Вступление в силу ФЗ № 152 «О персональных данных», требующего хранения персональных данных на территории РФ, в ближайшей перспективе станет одним из ключевых факторов его роста. Кроме того, ужесточение законодательства в финансовой и банковской сферах, а также растущая конкуренция в телекоммуникационной отрасли и розничной торговле и повышенные требования к надёжности будут подталкивать все большее число компаний к использованию услуг коммерческих ЦОД.
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии14

Как перевести сайт целиком на постоянный HTTPS для всех

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

Шифруем всё подряд


Эра незашифрованного веба проходит, и это хорошо. В этой инструкции мы предполагаем, что на вашем сервере работает веб-сервер Nginx. И теперь мы сделаем так, чтобы все посетители сайта пользовались исключительно протоколом HTTPS. Кроме этого мы включим HSTS – это «HTTP Strict Transport Security», когда сайт не только поддерживает HTTPS, но и настаивает на его использовании.

Для этого есть множество способов, но я опишу метод под названием «HTTPS termination». Иначе говоря, мы поставим перед веб-сервером обратный прокси, который и будет обеспечивать HTTPS. Это получается проще и гибче, чем настраивать HTTPS только при помощи возможностей веб-сервера. Возможно, вам покажется контринтуитивным, что добавление ещё одного приложения в стек упростит вашу жизнь – но это действительно так.

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

То, что будет работать прежде всех остальных приложений в стопке – это HAProxy. Это в первую очередь приложение для балансировки – он умеет распределять приходящие запросы между разными физическими серверами. Много высоконагруженных сайтов используют его в этом качестве (тот же reddit), но в последней версии у него появилась возможность выполнять SSL termination. Он умеет устанавливать HTTPS-соединения от имени сервера.

Поэтому мы поставим HAProxy, скормим ему наши сертификаты SSL/TLS, поручим перенапрявлять все HTTP запросы на HTTPS, и покажем ему уже сам веб-сервер в качестве бэкенда.
Читать дальше →
Всего голосов 63: ↑49 и ↓14+35
Комментарии38

100 наиболее интересных ИТ-компаний по версии SharesPost

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


В этом списке собраны наиболее интересные (по версии SharesPost) частные ИТ-компании, находящиеся на поздних стадиях развития (late-stage) и работающие с привлечением венчурного капитала.

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

Для вашего удобства мы адаптировали подборку SharesPost и распределили компании по сферам их деятельности.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии0

Mythbusters. Мифы о жестких дисках

Время на прочтение4 мин
Количество просмотров27K
Наряду с циклом статей PC Buyer’s Guide блог компании Юлмарт будет пополняться заметками на тему разрушения мифов. Первыми в очереди станут жесткие диски и сомнений тут больше, чем предполагают многие…



Под катом пара распространенных мнений, их опровержение и доскональный разбор на тему жестких дисков для сетевых хранилищ.
Читать дальше →
Всего голосов 32: ↑20 и ↓12+8
Комментарии17

Информация

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