Как стать автором
Обновить
1
0

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

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

Советская операция по спасению мертвой космической станции

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

Источник: Spacefacts.de

Эта история произошла в 1985 году, но в последствии постепенно забылась. Шли годы — многие подробности были искажены, кое-что было выдумано. Даже те, кто первыми рассказал об этих событиях, допускали явные ошибки. Операция «Союза-13» по спасению орбитальной станции «Салют-7» была впечатляющей попыткой проведения ремонта в открытом космосе. Писатель Николай Белаковский собрал все факты воедино и готов впервые за все время предоставить нам полноценный рассказ о тех событиях.
Читать дальше →
Всего голосов 312: ↑305 и ↓7 +298
Комментарии 116

Повышаем производительность кода: сначала думаем о данных

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


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

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

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

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →
Всего голосов 141: ↑133 и ↓8 +125
Комментарии 103

40 книг и образовательных ресурсов для изучения фондового рынка и алгоритмической торговли

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


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

В нашем сегодняшнем материале — подборка из 40 книг и образовательных, которые помогут лучше подготовиться к началу работы на фондовом рынке и написанию механических торговых систем.
Читать дальше →
Всего голосов 22: ↑18 и ↓4 +14
Комментарии 8

Пик вычислений перед пиком нефти?

Время на прочтение 7 мин
Количество просмотров 29K
Сегодня попробуем на себе популярный в блогосфере жанр Кассандры — негативных пророчеств. Итак, “общеизвестно”, что зима близко, человечество во всём достигло пределов роста и мы доживаем последние спокойные деньки перед неминуемым скатыванием в новые темные века. Последним источником техно оптимизма и самым ярким символом прогресса, который противостоял последние 20 лет многим стагнирующим процессам на планете стало бурное развитие микроэлектроники. Пришло время сорвать покровы и с этой области.

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

Как видно из графика, уже три года производительность топового суперкомпьютера (выраженная в операциях с плавающей точкой в секунду — FLOPS) не растёт. Более того, если заглянуть в анонсированные планы, то можно с уверенностью сказать, что ситуация не изменится как минимум в ближайший год. А значит стагнация производительности топового суперкомпьютера распространится и на 2016 год:

image

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

Пишем поисковый плагин для Elasticsearch

Время на прочтение 7 мин
Количество просмотров 11K
Elaticsearch — популярный поисковый сервер и NoSQL база данных. Одной из интересных его особенностей является поддержка плагинов, которые могут расширить встроенный функционал и добавить немного бизнес-логики на уровень поиска. В этой статье я хочу рассказать о том, как написать такой плагин и тесты к нему.
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 7

Делаем универсальный ключ для домофона

Время на прочтение 5 мин
Количество просмотров 541K
Заголовок получился слишком громким — и ключ не такой и универсальный, и домофон поддастся не любой. Ну да ладно.
Речь пойдет о домофонах, работающих с 1-wire таблетками DS1990, вот такими:



В интернете можно найти множество материалов о том, как читать с них информацию. Но эти таблетки бывают не только read-only. Человеку свойственно терять ключи, и сегодня ларёк с услугами по клонированию DS1990 можно найти в любом подземном переходе. Для записи они используют болванки, совместимые с оригинальными ключами, но имеющие дополнительные команды. Сейчас мы научимся их программировать.

Зачем это нужно? Если отбросить заведомо нехорошие варианты, то самое простое — это перепрограммировать скопившиеся и ставшие ненужными клонированные таблетки от старого домофона, замененного на новый, от подъезда арендованной квартиры, где больше не живете, от работы, где больше не работаете, и т.п.

Читать дальше →
Всего голосов 223: ↑208 и ↓15 +193
Комментарии 109

Как сделать красивую документацию для Web API, за которую будет не стыдно

Время на прочтение 3 мин
Количество просмотров 40K
Я хотел бы рассказать вам об утилите, с которой вы сможете забыть о боли создания документации для Web API. О том как это сделать прошу всех под кат.


Все вкусняшки тут
Всего голосов 45: ↑39 и ↓6 +33
Комментарии 25

Использование morph.io для веб-парсинга

Время на прочтение 3 мин
Количество просмотров 17K
Если вы читали предыдущие две статьи, Веб-парсинг на Ruby и Продвинутый парсинг веб-сайтов с Mechanize, то у вас есть базовые знания как написать парсер, который получает структурированные данные с веб-сайта.

Следующим логичным шагом будет запускать парсер регулярно, чтобы всегда иметь свежие данные. Этим как раз и занимается morph.io от талантливых людей из OpenAustralia.

Morph.io позиционирует себя как «Heroku для парсеров». Вы можете выбрать либо запускать парсеры вручную, или им работать автоматически каждый день. При этом вы можете использовать API для извлечения данных в JSON/CSV и использования их в своем приложении или скачать sqlite базу с данными.
Morph.io заполняет пробел, оставленный Scraperwiki Classic. Парсеры в morph.io хостятся на GitHub, что означает что вы можете их «форкнуть» и исправить в дальнейшем, если они перестанут работать.

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

Поисковые технологии в Airbnb

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


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

Пост подготовлен по материалам выступления Максима Чаркова:


Поиск — это сила паросочетаний. Говоря по существу, здесь мы и пытаемся стыковать запросы наших пользователей с тем, что доступно на рынке.

Сперва хотелось бы сказать пару слов о себе и своих коллегах. Я работаю в поисковой команде. Начал работать в компании я два года назад. До этого был сотрудником Google, где я провел несколько лет, занимаясь всем подряд, от функций поиска до веб-браузеров. Конечно, все то, что я собираюсь представить здесь, не было бы возможным без людей из нашей команды. Search Airbnb — постоянно действующая команда. Наши инженеры работают над проблемами поиска и потока бронирования, включая инфраструктуру, пользовательский интерфейс и т.д. Сфера нашей деятельности также включает в себя разработку оборудования, дизайн, пользовательские исследования, обработку и анализ данных.

Сперва хочу представить проблему поиска на Airbnb и как мы помогаем нашим гостям найти наилучшие позиции. Затем я расскажу о проблеме конверсии бронирования. Вы увидите, что на Airbnb не всегда достаточно позиций, удовлетворяющих всем запросам пользователей. А это представляет собой интересную задачу. Также я скажу пару слов об оценке модификаций. Работая над новыми поисковыми продуктам, очень важно учредить оценочные инструменты и факторы, которые бы давали уверенность в том, что каждое сделанное изменение будет иметь положительные эффект для пользователя.
Читать дальше →
Всего голосов 35: ↑32 и ↓3 +29
Комментарии 6

Мини-курс «Оптимизация веб-производительности»

Время на прочтение 1 мин
Количество просмотров 16K
На обучающем ресурсе Udacity запустился мини-курс по веб-производительности от сотрудника Google Ильи Григорика.


Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Комментарии 2

Конфигурируем Ruby модуль

Время на прочтение 4 мин
Количество просмотров 6.3K
Я думаю вы знакомы с методом configure, который многие гемы предоставляют для конфигурации. Например конфигурация carrierwave:

CarrierWave.configure do |config|
  config.storage = :file
  config.enable_processing = false
end

Как реализовать это в своем модуле?
Читать дальше →
Всего голосов 24: ↑20 и ↓4 +16
Комментарии 10

Elastics: простой ElasticSearch-клиент для Ruby со всем необходимым

Время на прочтение 2 мин
Количество просмотров 6.7K
Года полтора назад столкнулся с проблемой выбора клиента к ElasticSearch для node.js. Тогда нашлось несколько проектов, но все были либо слишком усложненные, либо написаны абы как. Хотя казалось: все что нужно — это обертка вокруг http запроса с JSON.encode/decode, обработкой ошибок и парой хэлперов. Тогда для ноды я быстро написал небольшой модуль, который оказался очень удобным.

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

Я решил написать минималистичный гем, взяв за основу модуль для node.js и расширив его функционал так, чтобы были все самые необходимые инструменты для разработки, деплоя и управления. Вот что получилось.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 13

OAuth: описание протокола простым и понятным языком

Время на прочтение 16 мин
Количество просмотров 189K
OAuth — популярный протокол, который позволяет социальным сервисам интегрироваться между собой и дает безопасный способ обмена персональной информацией. OAuth может связать между собой 2 сервиса, каждый из которых имеет свою пользовательскую базу — именно их я в данном случае называю «социальными». Когда начинаешь работать с OAuth, первое ощущение — что протокол весьма сложен и избыточен. В этой статье я попытаюсь объяснить основы OAuth человеческим языком.

Пример кросс-авторизации


Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
Под катом - повествование с примерами
Всего голосов 134: ↑124 и ↓10 +114
Комментарии 34

Прямая передача данных между ПЛИС Virtex-7 по шине PCI Express

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

Аннотация


В данной статье рассматривается передача данных по шине PCI Express с одновременным участием нескольких ПЛИС. В компьютерной системе, к PCI Express шине которой подключено несколько (в нашем случае 8) оконечных устройств (PCIe endpoints) ПЛИС запускается одновременно несколько транзакций передачи данных двух типов: А) DMA передача между ОЗУ и ПЛИС (чтение/запись) и Б) прямая передача данных между двумя ПЛИС (запись). Используя соединение PCI Express x4 Gen 2.0 при обращении в память была получена скорость записи 1451 МБ/с (90% от максимальной). Скорость записи данных между ПЛИС была равна 1603 МБ/с (99 % от максимальной) при длине пакетов 128 байт и 1740 МБ/с (99% от максимальной) при длине пакета 256 байт. Латентность передачи данных между ПЛИС зависит от количества промежуточных коммутаторов, и была равна 0,7 мкс для одного коммутатора и 1 мкс для трех. Также показано, что при одновременных передачах через общий канал скорость отдельных передач не уменьшается до тех пор, пока суммарная скорость передачи не превышает пропускную способность общего канала; затем канал используется на 100%, а его пропускная способность делится поровну между устройствами.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Комментарии 11

Аппаратный сортировщик чисел на verilog-е

Время на прочтение 5 мин
Количество просмотров 21K
В этой моей статье, как и в предыдущей рассматривается цифровая схемотехника с точки зрения программиста. Но в этот раз будет разобрана «более алгоритмическая» задача сортировки чисел, с разбором verilog-кода. Рассматриваемое аппаратное решение позволяет отсортировать n чисел за время 2*n. На картинке ДПВ показан вывод на монитор от тестового проекта для ПЛИС, там каждой линии соответствует один тик сортировщика, сначала n тиков случайные числа записываются в сортировщик, затем n тиков выводятся числа отсортированные.



Читать дальше →
Всего голосов 45: ↑44 и ↓1 +43
Комментарии 49

Борьба за трафик. Как вывести сайт из-под спам-фильтра Google (Вторая Часть)

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

Настало время опубликовать вторую часть статьи — заключительную, с хеппи эндом. Для тех, кто не в теме, в первой части я подробно рассказала о том, как выяснить попал ли ваш сайт под спам-фильтры Google и что с этим делать, если все-таки, фильтры к вашему сайту были применены и трафик с Google упал.





Сегодня я расскажу, что делать дальше, если все этапы первой части успешно выполнены. Напомню, что статья написана исходя из личного опыта вытаскивания нашего сайта rusonyx.ru из-под фильтра Гугл.
Читать дальше →
Всего голосов 35: ↑28 и ↓7 +21
Комментарии 12

ИБП для роутера

Время на прочтение 4 мин
Количество просмотров 227K
Вначале был свет, и было хорошо. Внезапно, отключили электричество, и родилась идея.

image

Дома имеется планшет и пара телефонов, которые позволяют пользоваться интернетом без шнурка к розетке. Инет приходит через 3G модем и раздается роутером через Wi-Fi. Остается мелочь – заставить работать роутер при отсутствии электричества.

Вот тут я и вспомнил про старенький источник бесперебойного питания (ИБП) Back-UPS 300. Вполне себе рабочий девайс, но давно пылящийся по причине того, что «ничего он не тянет, да и нафиг он нужен».

Идея такая – упростить схему, исключив преобразование в 220В, понижать 12В сразу в 5В и получить приличное время автономной работы.
Читать дальше →
Всего голосов 151: ↑145 и ↓6 +139
Комментарии 108

Вы опасно некомпетентны в криптографии

Время на прочтение 7 мин
Количество просмотров 140K
От переводчика: Хоть посыл статьи Najaf Ali, переведённой ниже, и носит слегка рекламный оттенок («оставьте криптографию нам, экспертам»), но описанные в ней примеры показались мне довольно интересными и заслуживающими внимания.
Кроме того, никогда не будет лишним повторить прописную истину: не придумывайте свою крипто-защиту. И эта статья отлично иллюстрирует почему.

Читать дальше →
Всего голосов 181: ↑168 и ↓13 +155
Комментарии 143

Как оптимизировать процессы Unicorn в Ruby on Rails приложении

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

Если вы являетесь rails-разработчиком, то вы наверняка слышали про Unicorn, http-сервер, способный одновременно обрабатывать множество запросов.

Для обеспечения параллельности Unicorn использует создание множества процессов. Т.к. созданные (форкнутые) процессы являются копиями друг друга, это значит, что rails-приложение должно быть потокобезопасным.

Это здорово, т.к. нам тяжело быть уверенными, что наш код является потокобезопасным. Если мы не можем быть уверены в этом, то ни о параллельных веб-серверах, таких как Puma, ни даже об альтернативных реализациях Ruby, реализующих параллелизм, таких как JRuby и Rubinius, не может быть и речи.

Поэтому Unicorn предоставляет нашим rails-приложениям параллельность даже если они не потокобезопасны. Однако, это требует определенной платы. Rails-приложения, запускаемые на Unicorn’е требуют гораздо больше памяти. Не обращая никакого внимания на потребление памяти вашим приложением, вы можете в итоге обнаружить, что ваш облачный сервер перегружен.

В этой статье мы рассмотрим несколько способов использования параллельности Unicorn'а, при этом контролируя количество потребляемой памяти.
Читать дальше →
Всего голосов 22: ↑18 и ↓4 +14
Комментарии 24

Домашний мини-климат-контроль своими руками

Время на прочтение 11 мин
Количество просмотров 104K
Доброго времени суток, дорогие хабровчане. Хочу поделиться своим небольшим опытом создания домашнего климат контроля с веб информером на основе платы Arduino с использованием TSOP, IR, DHT22 и напольного кондиционера Electrolux и некоторых других компонентов.



Итак, если вам интересна моя реализация добро пожаловать под хабракат (готовый к заливке скетч там же).
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 27

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность