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

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

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

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

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


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

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


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

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

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

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

Пролетая над долиной Маринера

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


Если в новогодние каникулы у вас окончательно испортилась погода, и посмотреть на небесные красоты нельзя, то есть еще минимум два интересных варианта. Можно открыть какую-нибудь из немаленького набора программ-планетариев. А можно, набравшись храбрости, преодолеть ненулевой порог вхождения и научиться летать с честной ньютоновской физикой в Orbiter. Благо, кроме недели отдыха, есть отличный повод — в этом году после шестилетнего перерыва вышла новая версия.
Всего голосов 34: ↑34 и ↓0+34
Комментарии21

Дроны Amazon будут защищать друг друга от людей-вандалов

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

Доставка первого заказа бесплилотником Amazon Prime Air. 7 декабря 2016 года, район Кембриджа (Великобритания). Доставка товара (Fire TV и пачка попкорна) заняла 13 минут

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

Контрмеры в случае угроз беспилотному летательному аппарату (БПЛА) описаны в патенте США № 9524648, который опубликован 20 декабря 2016 года (заявка подана 17 ноября 2014 года).
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии79

Хакинтош: разворачиваем macOS Sierra на Intel-PC подробно и понятно

Время на прочтение13 мин
Количество просмотров1.1M
ПРОЧТИ МЕНЯ ПОЖАЛУСТО

Если вы НЕ МОЖЕТЕ распаковать файлы на флешку, пожалуйста, отойдите от кливиатуры и срочно прочитайте книгу «Компьютер для чайников: подробное пособие как пользоваться ПК»!!!



1. Все файлы залиты на МЕГУ. Кто испытывает с ней проблемы — в комментариях перезалили на торрент.
2. Пожалуйста, не спрашивайте меня про установку Мака на ноутбуки. Прошу вас. Пожалуйста. Это очень геморройный процесс. Поставьте себе убунту и подключите тему Мака. Тот же экспириенс получите
3. Я на хабре редко отвечаю, пишите в вк по всем вопросам.


Данный мануал/гайд/etc написан для тех, кому лень собирать по кускам ту или иную информацию об установке «мака» на PC, все понятно и по полочкам.
Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии146

Теории заговора. Срок годности товаров

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


Каким образом производитель устанавливает срок годности своего продукта? Например, почему на пищевой соли указан срок годности 1 год (365 дней)? Что произойдёт с NaCl на 366-й день по истечении срока годности? Что происходит с детской резиновой игрушкой через три года использования (типичный срок годности резиновых игрушек)? Почему столетнее вино продают на аукционе за тысячи долларов? Об этих вопросах редко задумываются люди, которые привыкли смотреть на срок годности каждого продукта в холодильнике и каждого товара, как будто эти цифры значат что-то важное.

Факт в том, что дата и время на упаковке не имеют практически никакого смысла. Продукт начинает портиться в первую секунду после своего изготовления, фрукты и овощи начинают разлагаться сразу после того, как их сорвали. Употребляемые в пищу продукты в любом случае будут испорченными.
Читать дальше →
Всего голосов 47: ↑33 и ↓14+19
Комментарии628

Зарази ПК двух друзей и получи ключ разблокировки собственного компьютера: новая схема работы криптовымогателя

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


Ransomware в последнее время становится все более распространенной разновидностью зловредного ПО. Речь идет о программах-криптовымогателях, которые, заражая компьютер пользователя, шифруют все его данные, причем ключ находится на сервере у злоумышленника. После того, как ПК заражен, пользователю обычно предоставляют выбор — заплатить определенную сумму за расшифровку своих файлов или же смириться с тем, что они будут удалены через 2-3 дня. При этом жертве показывается таймер с обратным отсчетом времени.

Криптовымогателей довольно много, среди всего этого многообразия иногда встречаются очень любопытные экземпляры. Например, есть программа, которая ничего не шифрует, а просто безвозвратно удаляет файлы пользователя, притворяясь криптовымогателем. Да, программа просит денег, но никакого ключа пользователь не получает даже в случае оплаты. Все удаляется хоть с оплатой, хоть без нее. Еще одна программа удаляет по нескольку файлов в час, чтобы жертва находилась в состоянии стресса и быстрее заплатила. Недавно появился новый «штамм» ransomware, который использует самый оригинальный способ нажиться.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии117

Что нам стоит сеть построить

Время на прочтение8 мин
Количество просмотров60K
Когда пользуешься сложными алгоритмами для решения задач компьютерного зрения — нужно знать основы. Незнание основ приводит к глупейшим ошибкам, к тому, что система выдаёт неверифицируемый результат. Используешь OpenCV, а потом гадаешь: «может, если сделать всё специально под мою задачу ручками было бы сильно лучше?». Зачастую заказчик ставит условие «сторонних библиотек использовать нельзя», или, когда работа идёт для какого-нибудь микроконтроллера, — всё нужно прогать с нуля. Вот тут и приходит облом: в обозримые сроки реально что-то сделать, только зная как работают основы. При этом чтения статей зачастую не хватает. Прочитать статью про распознавание номеров и попробовать самому такое сделать — огромная пропасть. Поэтому лично я стараюсь периодически писать какие-нибудь простенькие программки, включающие в себя максимум новых и неизвестных для меня алгоритмов + тренирующих старые воспоминания. Рассказ — про один из таких примеров, который я написал за пару вечеров. Как мне показалось, вполне симпатичный набор алгоритмов и методов, позволяющий достичь простенького оценочного результата, которого я ни разу не видел.



Сидя вечером и страдая от того, что нужно сделать что-то полезное, но не хочется, я наткнулся на очередную статью по нейросетям и загорелся. Нужно сделать наконец-таки свою нейросеть. Идея банальная: все любят нейросети, примеров с открытым кодом масса. Мне иногда приходилось пользоваться и LeNet и сетями из OpenCV. Но меня всегда настораживало, что их характеристики и механику я знаю только по бумажкам. А между знанием «нейросети обучаются методом обратного распространения» и пониманием того, как это сделать пролегает огромная пропасть. И тогда я решился. Пришло время, чтобы 1-2 вечера посидеть и сделать всё своими руками, разобраться и понять.
Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии11

Трудная дорога на Марс

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

Авария марсианского посадочного модуля «Скиапарелли» все еще расследуется, но по приходящим новостям главным подозреваемым становится программное обеспечение — парашют был сброшен на 41 секунду раньше, посадочные двигатели проработали всего три секунды, и бортовой компьютер, уверенный, что уже стоит на поверхности, даже успел включить научные приборы. Увы, созданные для работы на поверхности, они не смогли собрать полезных данных во время падения с высоты 2-4 километра. Дорога на Марс никогда не была легкой, и успехи последних лет не гарантируют, что и последующие миссии так же будут успешны. Скорее, если опираться на историческую статистику, вероятность успеха марсианской миссии равна примерно одной второй. Всего человечество успело отправить на Марс более 50 аппаратов. Из них не выполнили свою задачу примерно 30 (в зависимости от критериев аварии и способов подсчетов аппаратов получаются разные цифры). На каких же этапах и как они погибали?
Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии68

Рак. Что с этим делать и чего делать не надо. Личный опыт

Время на прочтение5 мин
Количество просмотров254K
Примерно год назад я расширенно ответил на статью о раке. Это вызвало массу комментариев и неподдельный интерес к теме. Я долго не писал, потому что я не был уверен, что все закончится в итоге хорошо. К сожалению, хорошо не закончилось. Эта статья в основном, о том чего делать не надо.
Читать дальше →
Всего голосов 170: ↑146 и ↓24+122
Комментарии332

Глупый дом

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

Краткое предисловие



TLDR: переходите сразу к заключению!

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

Многословное введение



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

Сразу хочу отметить, что:
во-первых — являюсь дилетантом во всем, что связанно с хардварной частью реализации умных домов;
во-вторых — описываю положение вещей с точки зрения потребителя из среднего класса, не касаясь дорогих и ультра-дорогих решений из премиум сегмента, которые лишены как большинства указанных мною в заметке недостатков, так и резона их покупать в случаях, если у вас нет лишних ста тысяч долларов;
в-третих — я не пытаюсь вам ничего навязать, продать или пропиарить какой-то сервис;
в-четвертых — в статье много текста

и всего одна картинка
Всего голосов 80: ↑76 и ↓4+72
Комментарии191

Обучаем нейросеть играючи

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


Разработки в области нейронных сетей в этом году пережили настоящий бум. Свои алгоритмы мы продемонстрировали в Artisto и Vinci, Google — в AlphaGo, Microsoft — в ряде сервисов для идентификации изображений, были запущены такие стартапы, как MSQRD, Prisma и другие. Приложения на основе нейросетей мгновенно занимали первые строчки рейтингов, в первые десять дней после релиза их скачали более миллиона пользователей, а споры вокруг них не утихают до сих пор. Развлекательные сервисы создаются не для решения широкого спектра задач, а для демонстрации способностей нейронных сетей и проведения их обучения.
Всего голосов 45: ↑43 и ↓2+41
Комментарии8

Новая заря гигантов

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


Мы живем в интересное время, когда количество активных проектов сверхтяжелых ракет-носителей уже превысило количество пальцев на одной руке. Государственные космические агентства и частные компании анонсируют свои планы по созданию именно сверхтяжелых ракет, и, хотя большинство должны будут полететь в 2020-х, увидеть первый пуск одной из них мы имеем шансы уже в следующем году. Но в истории космонавтики сверхтяжелые ракеты неоднократно проигрывали, и эти проекты закрывались. Что ждет их сейчас?
Читать дальше →
Всего голосов 57: ↑57 и ↓0+57
Комментарии109

Печатаем простейший корпус для самодельного устройства

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

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


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

Асгардия: первая нация, которая собирается жить в космосе

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


Не всем спокойно живётся на одном месте. Желание уехать куда-нибудь, неважно куда — вполне нормальное желание для человека. Тяга к неизвестному, стремление посетить другие земли сопровождали человечество на протяжении всей истории. Вот почему многим людям хочется улететь в далёкие края.

Кто-то переезжает на другую улицу, кто-то осмеливается уехать в другой город. Даже эмигрировать в другую страну. Путешественники, учёные и следопыты исследовали Землю вдоль и поперёк, забирались в самые глубокие глубины и поднимались высоко в атмосферу. 546 человек из 37 стран побывали на околоземной орбите. Куда нам двигаться дальше? Что исследовать?
Читать дальше →
Всего голосов 35: ↑27 и ↓8+19
Комментарии95

Kак взрываются литий-ионные аккумуляторы

Время на прочтение4 мин
Количество просмотров129K
Последнее время тема самовозгорания литий-ионных аккумуляторов часто мелькает в заголовках новостей: то смартфон загорится, то ховерборд, а то и автомобиль. Так что же происходит внутри аккумулятора во время термического разгона и почему возникает самовозгорание?

image
Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии70

Разгугленный Chromium

Время на прочтение4 мин
Количество просмотров74K
Даже если у вас нет аккаунта в Google, свободный браузер Chromium всё равно в фоновом режиме обменивается данными с серверами Google. Это довольно странно, ведь люди устанавливают Chromium вместо Chrome именно для того, чтобы получить чистую программу без коммерческой привязки. Тем не менее, при сборке Chromium в нормальном режиме всё равно скачиваются и устаналиваются бинарные блобы от Google.

Проект ungoogled-chromium — это набор конфигурационных флагов, патчей и специальных скриптов, чтобы удалить интеграцию с Google, улучшить настройки безопасности и управления.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии40

Лекарства от радиации в чрезвычайных ситуациях

Время на прочтение13 мин
Количество просмотров389K
image
Американские учения «Desert Rock» с применением ядерного оружия. 1951 год.

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

Население в случае подобной серьезной угрозы эффективнее всего спасать путем эвакуации, хотя ряд медикаментов можно применять и им. А вот спасателей и военных, которым придется работать в опасных условиях, обязательно нужно снабжать средствами индивидуальной защиты, в том числе и разными медицинскими препаратами от действия ионизирующих излучений. Ряд таких препаратов, называемых радиопротекторами, и сценарии для их применения я и попытаюсь описать в этой статье.
Всего голосов 102: ↑102 и ↓0+102
Комментарии108

PayPal – Ловушка для неопытных. Осторожно

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


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

Я являюсь достаточно долго (уже несколько лет) покупаю товары на Ebay и поскольку оплата там возможна только через палку, то естественно у меня там открыт счёт. К нему у меня привязаны несколько карт (предназначенных для онлайн платежей), и банковский счёт для вывода средств (мои зарубежные партнёры время от времени подкидывают денежку). В остальном я с PayPal особенно не знаком. Как говорится, работает, работает неплохо и удобно. Счёт был в категории «Личный».

В последнее время сервис начал активно рекламировать перевод счёта в категорию «Корпоративный», расхваливая новые возможности. Меня соблазнила возможность работы нескольких пользователей в одной учётной записи. Захотелось подключить к своей учетке жену. К сожалению, нигде при этом не рассказывалось о проблемах при таком переходе. Наоборот заявлялось, что вы в любой момент можете сменить категорию счёта. Переход на корпоративный счёт прошёл без каких-либо проблем, спросили название компании и что-то ещё, сейчас даже и не помню.
Читать дальше →
Всего голосов 81: ↑61 и ↓20+41
Комментарии213

О фундаментальных ошибках в дизайне языков программирования

Время на прочтение6 мин
Количество просмотров22K
Как-то раз мне на глаза попалась статья о том, что самой дорогой ошибкой в дизайне языков программирования было решение определять окончание строки в C по NULL-байту. Один из вариантов перевода этой статьи на Хабре (хотя я, по-моему, читал другой). Эта статья меня немного удивила. Во-первых, как будто в те времена экономии каждого бита памяти можно было шикануть и выделить ещё 2-4 байта в каждой строке на хранение её размера. Во-вторых, никаких особо катастрофических последствий это решения для программиста не несёт. Ошибок, которые можно по этому поводу совершить я могу придумать целых две: неверно выделить память для строки (забыть место под NULL) и неверно записать строку (забыть NULL). О первой ошибке уже предупреждают компиляторы, избежать второй помогает использование библиотечных функций. Всей-то беды.

Значительно большей проблемой времён дизайна языка С (и затем С++) мне кажется другое — оператор for. При всей его кажущейся безвредности — это просто кладезь потенциальных ошибок и проблем.

Давайте вспомним классическое его применение:

for (int i = 0; i < vec.size(); i++)
{...}

Что же здесь может пойти не так?
Читать дальше →
Всего голосов 72: ↑40 и ↓32+8
Комментарии115

Универсальный ImageLoader для Android

Время на прочтение4 мин
Количество просмотров31K
В этой статье Я расскажу о разработанном мной (и не только) инструменте для асинхронной подгрузки изображений, их кэширования и отображения. На данном этапе развития его можно использовать повсеместно, где надо загрузить картинку в ImageView из интернета или из файловой системы. Все, что нужно, это URL картинки (для файловой системы он будет начинаться на «file://») и собственно ImageView, в который загруженную картинку надо будет положить. Более подробно о возможностях универсального разработанного ImageLoader'а читайте ниже.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии28

Информация

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