Pull to refresh
0
0

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

Send message

Один бинарник, любое окружение. Магия чистого C

Reading time5 min
Views34K


Как мы представляем себе кроссплатформенность? Мы пишем программу на языке, который либо компилируется в исполняемый файл отдельно для каждой поддерживаемой платформы, либо использует разновидность виртуальной машины вместо бинарника (и тогда эта среда должна присутствовать в целевых системах). Есть также и низкоуровневые языки, на которых писать серьёзные программы менее удобно, чем на высокоуровневых монстрах со своими компиляторами или рантаймами, но зато такие программы менее требовательны к предустановленному софту или наличию ОС в принципе, как и менее разборчивы в архитектуре. И всё же, есть возможность писать один и тот же код и собирать один и тот же бинарь под все популярные архитектуры и ОС (и даже bare metal), и эта возможность появилась благодаря гениальной Justine Tunney. Она написала Cosmopolitan, библиотеку на C, позволяющую исполнять один и тот же код на любой машине, подобно Java… но без какого-либо предустановленного интерпретатора или виртуальной машины! Один и тот же скомпилированный файл может исполняться как минимум в любом дистрибутиве Linux, на Mac OS, Windows NT, FreeBSD, OpenBSD, и NetBSD и на bare-metal на x86 и ARM*. Это настоящая магия.
Total votes 104: ↑94 and ↓10+113
Comments63

Логика сознания. Часть 12. Поиск закономерностей. Комбинаторное пространство

Reading time26 min
Views34K
imageПоэзия — та же добыча радия.
В грамм добыча, в годы труды.
Изводишь единого слова ради
Тысячи тонн словесной руды.
Но как испепеляюще слов этих жжение
Рядом с тлением слова-сырца.
Эти слова приводят в движение
Тысячи лет миллионов сердца.

Владимир Маяковский


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

Сделаем еще один шаг в сторону универсального обобщения. Опишем идею комбинаторного пространства и то, как это пространство помогает искать закономерности и тем самым решать задачу обучения с учителем.
Total votes 39: ↑36 and ↓3+33
Comments74

Unsafe.AsSpan: Span<T> как замена указателям?

Reading time16 min
Views10K


C# — невероятно гибкий язык. На нем можно писать не только бэкэнд или десктопные приложения. Я использую C# для работы, в том числе, и с научными данными, которые накладывают определенные требования на инструменты, доступные в языке. Хотя netcore захватывает повестку дня (учитывая, что после netstandard2.0 большинство фич как языков, так и рантайма, не бэк-портируются в netframework), я продолжаю работать и с легаси-проектами.


В этой статье я рассматриваю одно неочевидное (но, наверное, желаемое?) применение Span<T> и отличие реализации Span<T> в netframework и netcore из-за особенностей clr.

Добро пожаловать под кат
Total votes 26: ↑25 and ↓1+24
Comments16

Как сделать BTC-транзакцию без сдачи из мелких монет

Reading time5 min
Views12K

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


Многие кошельки биткоина при выборе монет для отправки предпочитают использовать крупную монету, баланс которой больше отправляемой суммы. После каждой такой транзакции образуется монета-сдача. Через какое-то время весь кошелёк зарастает такими монетами порядка 0.001 (~10 долларов на текущий момент), которые уже и не на что потратить. Когда в очередной раз мне понадобилось сделать транзакцию, мне пришла в голову мысль, а нельзя ли собрать транзакцию так, чтобы сдачи не было. Кошелёк упрямо предлагал «распилить» ещё одну более крупную монету, так что я решил руками выбрать монеты, чтобы насобирать необходимую сумму. Однако это оказалось не так просто: сумма или получалась меньше нужного значения или слишком сильно его превосходила. В итоге я решил, что должен быть алгоритм, с помощью которого из монет можно собрать нужную сумму или чуть больше. Оказалось, что это не только возможно, но работает настолько хорошо, что сподвигло меня написать эту статью. Но обо всём по порядку.

Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments25

Как найти лучшую локацию для бизнеса? Лайфхак без регистрации и смс

Reading time2 min
Views14K
Всем привет! Меня зовут Андрей Киселев, я основатель компании «ЖИШИ СУШИ».

Любой бизнес успешней в местах с хорошей проходимостью, но как найти это место? Рассказываю на личном опыте в статье как сравнивать локации онлайн.

image

Есть три способа оценки проходимости:

  • визуально(много/мало)
  • посчитать людей в час
  • использовать геотаргетинг

Первые два — это оффлайн методы. Они могут быть необъективны и требовать больших затрат по времени. Геотаргетинг лишен этих недостатков. И основное его преимущество — можно все сделать удаленно.

Об этом способе я и расскажу в этой статье.
Читать дальше →
Total votes 34: ↑28 and ↓6+22
Comments17

Kali Linux NetHunter на Android: зачем и как установить

Reading time8 min
Views182K

Здравствуй, мой любознательный друг! Наверняка тебя посещали мысли о том, как хакать все вокруг, не привлекая лишнего внимания санитаров службы безопасности и окружающих, быть похожим на героев фильмов, взламывающих системы просто с мобильного устройства, или как прокачать свою мобильность с минимальной потерей функционала? У меня для тебя хорошие новости.


Читать дальше →
Total votes 41: ↑31 and ↓10+21
Comments19

Обработка аппаратных прерываний в архитектуре intel. i8080 — i80486, PIC, ISA, conventional PCI

Reading time6 min
Views9.8K
В топике даётся обзор в исторической перспективе механизмов, используемых для сопряжения внешних устройств с CPU архитектуры x86.

Спойлер
Я понял, что никогда уже не допишу этот грандиозный обзор во всей его полноте, поэтому я просто убрал «часть 1» из названия. Возможно эта часть всё же будет кому-нибудь полезна.
Читать дальше →
Total votes 12: ↑12 and ↓0+20
Comments8

Прерывания от внешних устройств в системе x86. Часть 1. Эволюция контроллеров прерываний

Reading time8 min
Views43K
В данной статье хотелось бы рассмотреть механизмы доставки прерываний от внешних устройств в системе x86 и попытаться ответить на вопросы:

  • что такое PIC и для чего он нужен?
  • что такое APIC и для чего он нужен? Для чего нужны LAPIC и I/O APIC?
  • в чём отличия APIC, xAPIC и x2APIC?
  • что такое MSI? В чём отличия MSI и MSI-X?
  • как с этим связаны таблицы $PIR, MPtable, ACPI?

Если на какой-то из этих вопросов вам интересно получить ответ или вы просто хотите ознакомиться с эволюцией контроллеров прерываний в системе x86, добро пожаловать под кат.
Читать дальше →
Total votes 75: ↑74 and ↓1+73
Comments25

Установка OpenCV + CUDA на Windows

Reading time7 min
Views38K

Введение


В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.

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

Читать дальше →
Total votes 20: ↑15 and ↓5+10
Comments3

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

Reading time5 min
Views14K
Я хотел бы поделиться воспоминаниями о своих попытках сделать «3D графический движок» «своими руками» практически в до-интернетную эпоху (он как бы уже где-то там конечно был, но у меня его фактически не было). Никакую Америку открыть не удалось, революции тоже не случилось, но было много старания, мучений и фана. С годами память о многих событиях стирается, исчезают детали, тускнеют впечатления — при многочисленных переездах коробка с дискетами были потеряна и никаких артефактов от описываемых событий не осталось.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments27

Почему лучшие лётчики-истребители часто попадают в крупные передряги

Reading time7 min
Views26K


«Оценка за полёт – неудовлетворительно» – сказал я инструктору, который только что совершил полёт с одной из наших лучших курсанток.

Он посмотрел на меня в замешательстве.

Я ожидал такой взгляд: для него моя оценка была абсолютно неадекватной. Мы хорошо знали ученицу, я читал полётные доклады о ней из двух предыдущих лётных школ, а также нашего авиаотряда, где она проходила обучение на лётчика-истребителя Королевских ВВС (RAF). Она была превосходна – её техника пилотирования во всех отношениях была выше среднего. К тому же, она была трудолюбива и хорошо подготовлена для совершения полётов.

Но была одна проблема.

Я видел эту проблему и раньше, однако инструктор, очевидно, её не замечал.
Читать дальше →
Total votes 52: ↑34 and ↓18+16
Comments49

Изучаем данные, собранные Xiaomi Mi Band за год

Reading time3 min
Views83K

Введение


Люди носят фитнес-браслеты по разным причинам, я могу предположить некоторые из них:


  1. Для того, чтобы поддерживать себя в форме и выполнять цели по активности;
  2. Потому что это некая модная штучка;
  3. Чтобы ставить над собой эксперименты или узнать себя лучше.

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


Методы для извлечения этих данных работают для Mi Band 1, 1S и, возможно, 2 (приложение для 2, кажется, такое же).

Читать дальше →
Total votes 53: ↑49 and ↓4+45
Comments74

Raspberry Pi + CentOS = Wi-Fi Hotspot (или малиновый роутер в красной шляпе)

Reading time15 min
Views41K
UPD 14.03.2020:
Raspberry Pi + Fedora (aarch64) = Wi-Fi Hotspot (или малиновый роутер в синей шляпе)

В Интернете огромное количество информации по созданию Wi-Fi точек доступа на базе одноплатного ПК Raspberry. Как правило, подразумевается использование родной для «малинки» операционной системы — Raspbian.

Являясь адептом RPM-based систем, я не мог пройти мимо этого маленького чуда и не попробовать на нем мою любимую CentOS.

В статье представлена инструкция по изготовлению 5GHz/AC Wi-Fi роутера из Raspberry Pi 3 Model B+ на базе операционной системы CentOS. Будет несколько стандартных, но малоизвестных трюков, а в качестве бонуса — чертеж подключения к «малинке» дополнительного Wi-Fi оборудования, позволяющего ей одновременно работать в нескольких режимах (2,4+5GHz).

image
(микс изображений из свободного доступа)
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments39

Введение в Си. Послание из прошлого столетия

Reading time15 min
Views208K

Предисловие


Я несколько раз в своих комментариях ссылался на книгу Эндрю Таненбаума «Operating Systems Design and Implementation» на ее первое издание и на то, как в ней представлен язык Си. И эти комментарии всегда вызывали интерес. Я решил, что пришло время опубликовать перевод этого введения в язык Си. Оно по-прежнему актуально. Хотя наверняка найдутся и те, кто не слышал о языке программировании PL/1, а может даже и об операционной системе Minix.

Это описание интересно также и с исторической точки зрения и для понимания того, как далеко ушел язык Си с момента своего рождения и IT-отрасль в целом.
Читать дальше →
Total votes 64: ↑52 and ↓12+40
Comments104

Инструментарий для анализа и отладки .NET приложений

Reading time6 min
Views22K

Заглянуть «под капот» кода или посмотреть на внутреннее устройство CLR можно с помощью множества инструментов. Этот пост родился из твита, и я должен поблагодарить всех, кто помог составить список подходящих инструментов. Если я пропустил какие-то из них, напишите в комментариях.


Во-первых, я должен упомянуть, что хороший отладчик уже присутствует в Visual Studio и VSCode. Также существует множество хороших (коммерческих) профилировщиков .NET и инструментов мониторинга приложений, на которые стоит взглянуть. Например, недавно я попробовал поработать с Codetrack и был впечатлён его возможностями.


Однако оставшийся пост посвящён инструментам для выполнения отдельных задач, которые позволят лучше понять, что происходит. Все инструменты имеют открытый исходный код.


Total votes 50: ↑50 and ↓0+50
Comments9

Расставим точки над структурами C/C++

Reading time4 min
Views266K
Недавно познакомился со структурами C/C++ — struct. Господи, да «что же с ними знакомиться» скажете вы? Тем самым вы допустите сразу 2 ошибки: во-первых я не Господи, а во вторых я тоже думал что структуры — они и в Африке структуры. А вот как оказалось и — нет. Я расскажу о нескольких жизненно-важных подробностях, которые кого-нибудь из читателей избавят от часовой отладки…


Читать дальше →
Total votes 125: ↑90 and ↓35+55
Comments82

5 способов вычисления чисел Фибоначчи: реализация и сравнение

Reading time5 min
Views323K

Введение


Программистам числа Фибоначчи должны уже поднадоесть. Примеры их вычисления используются везде. Всё от того, что эти числа предоставляют простейший пример рекурсии. А ещё они являются хорошим примером динамического программирования. Но надо ли вычислять их так в реальном проекте? Не надо. Ни рекурсия, ни динамическое программирование не являются идеальными вариантами. И не замкнутая формула, использующая числа с плавающей запятой. Сейчас я расскажу, как правильно. Но сначала пройдёмся по всем известным вариантам решения.

Код предназначен для Python 3, хотя должен идти и на Python 2.

Для начала – напомню определение:

Fn= Fn-1+ Fn-2

и F1= F2=1.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments19

Visual Studio Mobile Center: Деплоим мобильный софт с помощью devops-конвейера Microsoft

Reading time5 min
Views4.9K

В прошлой статье мы рассмотрели автоматизацию сборки мобильных приложений с помощью Bitrise, разобрались со сборкой Android- (и iOS-) приложения, подключили Xamarin Test Cloud, провели автоматическое UI-тестирование и внедрили HockeyApp для получения обратной связи. Сегодня мы продолжим погружение в мир инструментов Mobile DevOps, которые не просто ускоряют, но еще и заметно упрощают разработку мобильных приложений. На этот раз мы рассмотрим интегрированное решение Visual Studio Mobile Center.


Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments2

Наука о нейронных сетях. Прямой эфир

Reading time2 min
Views11K
До конца года остаётся 213 дней, так что самое время начать изучать что-то новое, например, погрузиться в науку о нейронных сетях. Сегодня за один день мы познакомимся с устройством нейросетей в прямом эфире, начиная с простых архитектур и заканчивая глубоким обучением — сетями, в которых десятки и сотни слоев. Также рассмотрим сверточные сети, применяемые для распознавания изображений, и рекуррентные сети для анализа последовательностей. Причем вы сможете вместе с нами обучить нейронную сеть для решения нетривиальных задач — от распознавания рукописных цифр до узнавания котиков на фотографиях.


Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments2

Information

Rating
Does not participate
Registered
Activity