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

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

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

Написание компилятора на Haskell + LLVM

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

На работе я пишу почти исключительно на Python, с университетской скамьи остались некоторые знания C/C++, в одном pet-project использовал Haskell. С таким багажом знаний я взялся за написание компилятора на основе LLVM - зачем и что получилось я уже рассказывал в предыдущей статье.

Эту статью я пишу для тех, кто, как и я, заинтересован в изучении Haskell, создании собственных языков программирования, или хочет поиграться с LLVM - но не знает с какого конца подойти к задаче.

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

Читать далее

Посмотрите, как Google отслеживает ваше местоположение. С Python, Jupyter, Pandas, Geopandas и Matplotlib

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

В отделе продаж можно услышать аббревиатуру ABC: Always Be Closing, что означает заключение сделки с покупателем. Последнее десятилетие породило еще одну аббревиатуру ABCD: Always Be Collecting Data

Мы используем Google для почты, карт, фотографий, хранилищ, видео и многого другого. Мы используем Twitter, чтобы читать поток сознания одного президента. Мы используем Facebook для обмена сообщениями и… ну, почти все. Но наши родители пользуются им. Мы используем TikTok… Понятия не имею, зачем. 

На самом деле, оказывается, что большинство из вышеперечисленного бесполезно… Ничего подобного, суть в том, что мы их используем. Мы их используем, и они бесплатны. В экономике XXI века, если вы не платите за товар, вы являетесь товаром. 

Итак, короче говоря, я хотел выяснить, насколько корпорация Alphabet, владелец Google, обо мне знает. Крошечная доля, я посмотрел на историю геолокации. Я никогда не отключал службы определения местоположения, потому что ценил комфорт выше конфиденциальности. Плохая идея.

Читать далее

Переход с iptables на nftables. Краткий справочник

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

В Debian теперь нет iptables. Во всяком случае, по умолчанию.

Узнал я об этом, когда на Debian 11 ввёл команду iptables и получил “command not found”. Сильно удивился и стал читать документацию. Оказалось, теперь нужно использовать nftables.

Хорошие новости: одна утилита nft заменяет четыре прежних — iptables, ip6tables, ebtables и arptables.

Плохие новости: документация (man nft) содержит больше 3 тысяч строк.

Чтобы вам не пришлось всё это читать, я написал небольшое руководство по переходу с iptables на nftables. Точнее, краткое практическое пособие по основам nftables. Без углубления в теорию и сложные места. С примерами.
Читать дальше →

Мой MikroTik – моя цифровая крепость (часть 2)

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

Статья является продолжением первой части, посвящённой организации практической безопасности сетей, построенных на оборудовании MikroTik. До этого уже даны общие рекомендации по настройке оборудования, а также подробно рассмотрены вопросы безопасности L1 и L2 уровней. В текущей части поговорим о настройке протокола Dot1X и работе Firewall.
Читать дальше →

Мой MikroTik – моя цифровая крепость (часть 1)

Время на прочтение10 мин
Количество просмотров134K
В статье рассмотрены различные подходы к организации практической безопасности сетей, построенных на оборудовании MikroTik, в том числе при помощи дополнительного открытого программного обеспечения, расширяющего имеющиеся штатные возможности, что в комплексе позволяет качественно администрировать сетевые средства, а также своевременно реагировать на различные угрозы информационной безопасности.
Читать дальше →

Заметки фитохимика 2021. БОРЩЕВИК

Время на прочтение25 мин
Количество просмотров55K
Когда-то давным-давно, после публикации статьи посвященной лампе Вуда (см. gReebok detected. Сам себе дерматовенеролог), я анонсировал «борьбу с борщевиком». Потом периодически то в телеграм-канале, то в патреоне читатели у меня спрашивали на предмет этого ненароком брошенного «бороться». Вот на улице весна и кое-где «главный ворог православного народа» начал показываться из-под земли. А значит, самое время описать свое видение того, а надо ли бороться вообще и только ли с борщевиком.

Если хочется узнать почему петрушка/укроп/лайм/бабушкин фикус не менее токсичны (?) чем борщевик Сосновского, как с помощью компонентов борщевика за пару дней стать негром или вылечить рак и облысение — добро пожаловать под кат!


Памятка по работе с борщевиком

Растения I класса опасности. Памятка по идентификации

Время на прочтение15 мин
Количество просмотров174K
Признаю честно, я не собирался сейчас писать заметку, ибо в лавине разномастного хабр-научпопа ботанике с примесью химии конкурировать достаточно сложно. Да и все, кому интересны мои публикации давным-давно координируются телеграм-каналом, а самые активные даже patreon-ируют и влияют на создание контента. Но внезапно, после того, как аннотация заметки в фэйсбуке набрала кучу репостов, я решил вынести ее на Хабр, ибо «Знание-сила». Под катом короткая статья, про растительные сверхтоксины, которые в прямом смысле вокруг нас. Как не крути, а это надо знать всем!

Вторая часть — Токсины растений. User Stories
Третья часть — Ядовитые декоративные растения в саду и огороде. Справочник
Четвертая часть — Опасные «вкусняшки». Ядовитые лесные ягоды. Памятка для детей и взрослых


Определить сверхтоксичное растение!

Андрей Карпати: Bitcoin на Python (часть 1)

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

Андрей Карпати — директор по искусственному интеллекту и Autopilot Vision в Tesla.

Я считаю, что блокчейн — классная штука, потому что он расширяет open source разработку софта до open source + state. Это кажется интересным нововведением в компьютерных парадигмах; Мы не просто делиться кодом, мы можем предоставить общий доступ к работающему компьютеру, и любой человек в любом месте может использовать его открыто и без разрешения. Семена этой революции, возможно, начались с биткойна, поэтому мне стало любопытно вникнуть в него более подробно, чтобы получить интуитивное понимание того, как он работает. И в духе «то, что я не могу создать, я не понимаю», что может быть лучше, чем реализовать биткойна с нуля?

Мы собираемся создать, поставить цифровую подпись и транслировать биткойн-транзакцию на чистом Python, с нуля и с нулевыми зависимостями. В процессе мы немного узнаем о том, как биткойн представляет ценность. Давай попробуем.

(кстати, если визуальный формат этого поста вас раздражает, посмотрите версию jupyter notebook, у которой идентичный контент).

Шаг 1: создание крипто сущности


Для начала мы хотим создать совершенно новую криптографическую сущность, которая представляет собой всего лишь пару ключей: публичный и приватный. Биткойн использует криптографию на эллиптических кривых (Elliptic-Сurve Сryptography, ECC) вместо чего-то более распространенного, например RSA, для защиты транзакций. Я не собираюсь здесь углубляться в ECC, потому что другие проделали значительно лучшую работу, например, я считаю серию постов в блоге Андреа Корбеллини очень полезным ресурсом. Здесь мы просто напишем код, но чтобы понять, почему он работает математически, вам нужно прочитать эти посты.
Читать дальше →

SOHO UPS в маленьком корпусе и своими руками. Менее чем за 1500 руб

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

Хотите обеспечить бесперебойное питание своим устройствам, но при этом не сильно потратиться? Именно такой своей разработкой я и хотел с вами поделиться.

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

А что если сделать такой источник бесперебойного питания, который можно поставить прямо рядом с защищаемым устройством – лёгкое, компактное, недорогое?
Читать дальше →

Чернобыль. ч.3. Терминологическая справка и суть рокового эксперимента

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

Автор: Александр Старостин

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

При разговоре об авариях на реакторах РБМК часто упоминается ряд профессиональных терминов, которые ни о чём не говорят человеку, далёкому как минимум от ядерной физики. Однако без их понимания невозможно и объяснение произошедшего в 1975 (!!) и 1986 годах выше уровня обывателя.

Читать далее

Вторая жизнь пыльного Андроида

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

Три мысли всё не давали мне жить спокойно:

1) есть ноутбук, но для работы нужен второй экран
2) давно мечтаю о пульте управления для Photoshop в дополнение к клавиатуре
3) на полках пылятся устаревшие гаджеты, которые продавать глупо, а выкидывать жалко

Решим одно за счёт другого

Как мы с братом алмаз делали

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

Наверное кто-то задумывался, а можно ли сварить алмаз «на кухне и/или на коленке». Можно! Я решился рассказать, как мы с братом это делали.

Читать далее

SQLite — не игрушка

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

Рассказываю, почему SQLite отлично подойдет вам в повседневной работе. И неважно, разработчик вы, аналитик, тестировщик, админ или продакт-менеджер.

Читать далее

Трассировщик лучей с нуля за 100 строчек Python

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

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

Примечание: Эта статья ни в коем случае не является полным руководством/объяснением трассировки лучей, поскольку эта тема слишком обширна, а скорее просто введением для любопытствующих.

Читать далее

Перегон картинок из Pillow в NumPy/OpenCV всего за два копирования памяти

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

Стоп, что? В смысле «всего»? Разве преобразование из одного формата в другой нельзя сделать за одно копирование, а лучше вообще без копирования?

Да, это кажется безумием, но более привычные методы преобразования картинок работают в 1,5-2,5 раза медленнее (если нужен не read-only объект). Сегодня я покопаюсь в кишках обеих библиотек, расскажу почему так получилось и кто виноват. А также покажу финальный результат, который работает так же, только быстрее. Никаких репозиториев или пакетов не будет, только рассказ и рабочий код в конце. Но давайте обо всём по порядку.

Читать далее

Microsoft Excel: революционный игровой 3D-движок?

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

Введение


В самых передовых компьютерных играх используются различные графические подсистемы — так называемые трёхмерные графические движки. Играм и специалистам этой отрасли хорошо известны Source (Half Life 2), Unreal Engine (Unreal Tournament), idTech 4 (Doom 3), CryENGINE2 (Crysis) и Paradox [прим. пер.: оригинал статьи написан в 2008 году].

Настало время узнать имя нового 3D-движка: Microsoft Excel.

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

В этой статье я продемонстрирую арифметические возможности Excel, встроенные подсистемы рендеринга (их целых две!) и революционный подход, который может привести к сдвигу парадигмы. Надеюсь, статья позволит вам узнать, что Excel эффективно и оптимально сочетает в себе практичность, кучу возможностей, многоплатформенность и высокую производительность с уникальными и футуристичными функциями 3D-движка.

В разделах статьи даже представлены демо-программы и фильмы, созданные при помощи 3D-движка Excel.

Обратный поиск изображений: руководство от детективного агентства Bellingcat

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

Кадр одного из онлайновых расследований Bellingcat

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

Оказалось, что в этом отношений нет равных российской поисковой системе «Яндекс. Картинки». По одному образцу движок находит фотографии этого лица в совершенно другой обстановке и освещении, что говорит о продвинутом распознавании лиц. У Google и других компаний нет ничего подобного, признают специалисты. Таким образом, «Яндекс» можно назвать безусловным лидером по обратному поиску изображений.

В опубликованном руководстве разъясняются базовые методы онлайн-расследований, с акцентом на идентификацию лиц и адресов.
Читать дальше →

Делаем из старого усилителя многофункциональный медиа сервер с помощью Raspberry pi

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

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

Правда, в них отсутствует много всяких цифровых штучек. Разные flac и тому подобные форматы. Управление проигрыванием, музыкой и фильмами через телефон или компьютер. Возможность запустить музыку с Youtube, Last.fm или выбрать интернет радио. Удаленное проигрывание медиа через DLNA. Или просто возможность подключить ваш компьютер через Bluetooth и выводить весь звук через большие колонки. Или что там еще напридумывают нам в будущем для облегчения нашей аудиофильской жизни.

Но что нам мешает использовать все эти технологии в старой технике? Да и почему обязательно в старой… У вас есть RCA, miniJack 3.5 или S/PDIF разъем на вашей магнитоле? Тогда мы идем к вам и … И делаем из старого усилителя многофункциональный медиа сервер с помощью Raspberry Pi. Подключаем нашу Raspberry Pi через RCA и обновляем нашу технику до "острия технологической атаки". Не обязательно использовать RCA. Найдите аналоговый или цифровой вход на своей технике и выберите нужную комплектацию вашей Raspberry Pi. Я буду рассматривать вопрос сугубо с практической точки зрения. Как настроить все быстро на Raspberry Pi? Ведь статей профессионалов об особенностях работы той или иной технологии достаточно, чтобы не останавливаться на этом. Я возьму в качестве примера Raspberry Pi и плату для цифровой обработки звука на основе чипа PCM 5102 A .

Читать далее

Микшерный пульт из USB-звучки и опенсорса

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

Иногда у меня, как у звукача аниме/гик фестивалей/конвентов, появляется задача обеспечить звуком небольшой ивент, на площадке которого нет вообще ничего из оборудования. Такие патички довольно лайтовы и располагают к экспериментам. Так, для нашего осеннего опенэйра я выбрал следующий (весьма непривычный) опенсорсный сетап, который в итоге отлично сработал:


  • Колонка 50 Вт
  • Два микрофона
  • Аудиоинтерфейс из серии BEHRINGER U-PHORIA
  • Ноутбук на линуксе
  • Ardour в качестве микшера и хоста плагинов
  • Calf Studio Gear для обработки звука
  • JACK в качестве звукового сервера
  • VLC в качестве основного плеера

Идея делать микшер из простейшего аудиоинтерфейса на опенсорсном софте мне настолько понравилась, что я решил поделиться.


Читать дальше →

Эффективное кеширование. От теории к практике

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

Как правило, статьи о кешировании начинаются за здравие, а заканчиваются LRU кешем. Попробуем переломить эту тенденцию? Начнем с того, чем LRU плох, а закончим за здравие. Я надеюсь.

Вне зависимости от того, строите ли вы хайлоад сервис для миллионов посетителей или проектируете мобильное приложение, пишите операционную систему или СУБД — ключевое звено, влияющее на конечную стоимость системы и на отзывчивость интерфейса/сервиса — это кеш.
Читать дальше →

Информация

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