Давно собирался написать статью о numba и о сравнении её быстродействия с си. Статья про хаскелл «Быстрее, чем C++; медленнее, чем PHP» подтолкнула к действию. В комментариях к этой статье упомянули о библиотеке numba и о том, что она магическим образом может приблизить скорость выполнения кода на питоне к скорости на си. В данной статье после небольшого обзора по numba (часть 1) чуть более подробный разбор этой ситуации (часть 2).
User
Замедление YouTube с технической стороны
Привет, Хабр!
В последнее время замечаю огромное количество информации по поводу замедления Великого, но очень мало где видел конкретику о том, как именно это работает. Одно лишь отчаяние "мы все умрём".
Сразу скажу, что буду говорить обо всём, что известно на данный момент. Понятно, что с этим разбирался далеко не один я: огромное спасибо обывателям ntc party форума за проделанный ресёрч.
Так вот, начнём сначала, с злополучного GGC. Официальное заявление было, что кэш сервера устарели и долго не обновлялись, но у многих возникло такое скептическое чувство: "до этого работали, а тут в один момент всё поломалось". К тому же есть статья на википедии, которая утверждает, что разговоры про эти GGC шли еще с 2018 года. Да и если это были они, у нас бы плохо работала львиная доля гугл сервисов, включая Google Drive, Google PlayMarket, Google Images. А оно работает прекрасно, как и прежде.
Вы нас просили и мы сделали. VPN на собственном сервере с XRay Reality за 5 минут с помощью Amnezia
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/7de/8d0/698/7de8d06985734683af132bb961237d9e.png)
Всем привет! Это команда Amnezia.
Мы читаем комментарии под нашими постами и знаем, что один из самых частых вопросов – когда будет XRay? Так вот, мы добавили XRay в приложение AmneziaVPN, а точнее протокол Reality от XRay для всех платформ - IOS, Android, Windows, Linux и MacOS. Если у вас еще нет последнего релиза, скорее скачивайте и создавайте VPN на собственном сервере в пару кликов с одним из самых защищенных и быстрых протоколов в мире, ниже мы немного о нем расскажем, а в конце статьи будет пошаговая инструкция как это сделать.
Почему XRay Reality так популярен ?
Все дело в том, что Reality подходит для стран с самым высоким уровнем интернет-цензуры, сейчас его используют в Китае и Иране, он защищен от детектирования методами active probing.
Распознать цензоров REALITY может еще на этапе TLS-хендшейка. Если REALITY видит, что к нему приходит его клиент, то сервер запускает для него VPN туннель, а если приходит любой другой запрос на 443 порт, то TLS-подключение передается на какой-нибудь другой реальный сайт, например, google.com, где цензор получит настоящий TLS-сертификат от google.com и вообще все настоящие данные с этого сайта.
Со стороны систем анализа трафика это выглядит как подключение к настоящему сайту, сервер отдает настоящий TLS-сертификат этого сайта, и вообще все (включая TLS fingerprint сервера) выглядит очень по-настоящему и не вызывает подозрений.
Особенно приятно, что при этом производительность REALITY и скорость подключения у протокола действительно хороши, в сравнении, например, со связкой OpenVPN over Cloak.
Wireguard VPN, Yggdrasil, ALFIS DNS и AdGuard
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/b36/929/48c/b3692948cb2433e58aa2d8a7abbe8aa0.png)
На написание этой статьи спровоцировала вот эта статья, с кучей странностей, и необязательных действий. Если коротко, то автор не понимает зачем он ставит те или иные программы, а именно - Unbound и dnsproxy. Но так как кроме исправления недочётов той статьи хочется добавить чего-то полезного, мы несколько расширим возможности подключающихся к серверу клиентов.
Во-первых, несколько слов об Yggdrasil. Это одноранговая сеть с адресами IPv6, которая по сути может считаться новым слоем сети Интернет. При установке и настройке у вас появляется новый сетевой интерфейс, который является окном в этот новый слой. Всё так же, как с обычным протоколом IPv6 - вы можете использовать его для удалённого подключения к своим устройствам без реального IPv4, для удалённого администрирования, размещения там каких-то ресурсов, например того же Nextcloud. Всё это находится как бы в глобальном пространстве общей приватной сети. Кто-то там разместил прокси-серверы для Telegram, которые нельзя заблокировать, кто-то выход в "большой" Интернет через сеть Tor. Там же есть несколько серверов для общения, вроде Mattermost, IRC и XMPP. Статей по настройке и использованию на Хабре уже достаточно.
Задача трёх тел (не китайская нефантастика)
![](https://habrastorage.org/getpro/habr/upload_files/d03/3d5/919/d033d591928ad30265fb60fc4d54e418.gif)
Однажды, выполнив в Гугле запрос "Three body problem" ("Задача трёх тел"), я был просто поражен - первая страница результатов состояла только из ссылок на роман китайского писателя-фантаста Лю Цысиня с соответствующим названием, а также на телесериал, снятый по этому роману, т.е. ссылок на собственно задачу трёх тел не было вообще! Мне это показалось удивительным и несправедливым, поскольку сама по себе задача трёх тел тоже может выглядеть увлекательной в популярном изложении. В этой публикации я постарался привести некоторые доказательства этого утверждения.
Локальный HTTPS в dev-окружении — простая настройка
![](https://habrastorage.org/webt/rq/wd/yx/rqwdyx_zgc9yqzn7nbm_arfx6cm.png)
Иногда в процессе веб-разработки требуется безопасное окружение в браузере, то есть HTTPS. Удобный способ сделать это — установить локальный УЦ и автоматизировать выдачу сертификатов на любые поддомены lcl.host и localhost. Это более функциональная и удобная альтернатива самоподписанным сертификатам.
Для установки локального УЦ есть инструменты lcl.host и mkcert, которые помогают быстро настроить и использовать HTTPS в dev-окружении.
История двух стандартных библиотек Си
SIGSEGV
. Исследование проблемы позволило мне провести отличное сравнение между musl libc
и glibc
. Для начала посмотрим на стектрейс:==26267==ERROR: AddressSanitizer: SEGV on unknown address 0x7f9925764184
(pc 0x0000004c5d4d bp 0x000000000002 sp 0x7ffe7f8574d0 T0)
==26267==The signal is caused by a READ memory access.
0 0x4c5d4d in parse_text /scdoc/src/main.c:223:61
1 0x4c476c in parse_document /scdoc/src/main.c
2 0x4c3544 in main /scdoc/src/main.c:763:2
3 0x7f99252ab0b2 in __libc_start_main
/build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
4 0x41b3fd in _start (/scdoc/scdoc+0x41b3fd)
В исходниках на данной строчке написано вот что:
if (!isalnum(last) || ((p->flags & FORMAT_UNDERLINE) && !isalnum(next))) {
Подсказка:
p
— это корректный, ненулевой указатель. Переменные last
и next
имеют тип uint32_t
. Сегфолт случается на втором вызове функции isalnum
. И, самое важное: воспроизводится только при использовании glibc, но не musl libc. Если вам пришлось перечитать код несколько раз, вы не одиноки: тут попросту нечему вызывать сегфолт.Насколько быстр Javascript? Симулируем 20 миллионов частиц
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/edd/70a/c68/edd70ac680636c803b9c6854a24e10a5.png)
Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.
Поехали.
Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.
Как американская коррупция превратила физика-ядерщика в быдло-кодера
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/38f/77f/fab/38f77ffab67f277c4a1050cda96e7dcb.png)
Это история из цикла «как войти в IT», написанная старпером, ветераном броуновского движения, который помнит динозавров. Поэтому его опыт вхождения в ИТ никому не пригодится, но представляет интерес с точки зрения истории.
Также поделюсь своим мыслями об интерфейсе инженерного ПО. Участвуя в разработках различного ПО, предназначенного для ускорения разработки сложных систем, периодически приходится выслушивать жалобы от новых пользователей на «кривой и устаревший» интерфейс ПО. Однако инженеры, погруженные в проблемы проектирования реальных железок, вообще не задают нам таких вопросов, либо потому, что уже искривили свои руки о кривой интерфейс, либо им это вообще неважно. Более того, есть два примера, когда реальные высокопрофессиональные инженеры в своей области предъявляли претензии обратного свойства, и первая версия кривая версия GUI была удобнее, а вот улучшения делали какие-то полупокеры.
К написанию данного текста меня подтолкнула беседа с одним из крутых разрабов из «жирной» конторы, с которым мы пересеклись на яхте в Средиземном море. Узнав, что я тоже из Бауманки, и у меня свой бизнес, он заинтересовался и выспрашивал. Как я смог начать бизнес на софте, почему не пошел в большую контору, типа Yandex, Сбер и прочие. У него тоже знакомство с софтом началось как создание собственной разработки по анализу результатов металлургических испытаний в лаборатории, но закончилось работой прогером по найму. Попивая вино на яхте где-то между Турцией и Грецией в 2023 году, он предположил, что, возможно, если бы он продолжал писать софт для металлургических исследований, то, наверное, сейчас мог плавать на своей яхте, а не арендованной, и не около Турции, а на Карибах (но это не точно). А поскольку фарш невозможно провернуть назад, я решил описать свою историю успеха, так как она забавна и поучительна.
IRC. Первый мессенджер в истории
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/73c/253/8a1/73c2538a1e6c2d49222a2dc7b65f6d2b.png)
Время рождения протокола IRC хорошо ощущается по одному факту: у IRC нет официального логотипа. Видимо, в конце 80-ых уделяли мало внимания красивой обложке программного обеспечения. Несмотря на это, IRC — настоящий титан своей ниши среди современников того времени: синхронизированная работа нескольких серверов в рамках одной IRC-сети, различные роли пользователей, групповые чаты, личные сообщения, простота разработки ботов, крайне низкое потребление системных ресурсов сервера.
Если вы давно забыли про "ирку", либо вовсе никогда не имели с ней дело — эта статья адресована вам.
Краткая шпаргалка по tmux (менеджеру терминалов)
tmux
— это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen
, только лучше (в первую очередь потому, что использует модель клиент—сервер).![image](https://habrastorage.org/getpro/habr/post_images/7b4/9e4/04f/7b49e404f2c1a98a7d8978b7fca8db34.png)
Вашему вниманию предлагается минималистическая шпаргалка, позволяющая быстро начать использовать
tmux
, а уж тонкую настройку, продвинутые команды и бесконечные хот-кеи желающие найдут, набрав man tmux
.Взламываем транспортные карты: чит на бесконечные деньги
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/535/81a/adc/53581aadcfecf184f5ab8781984f9d17.jpg)
Этот парень открыл все турникеты на станции. Вы до сих пор считаете, что все хакеры вредны?
Начну с простого вопроса: кто из вас пользуется общественным транспортом? А кому нравится за него платить? Если такие все же найдутся, то могут смело переставать читать статью. Для остальных у меня есть рассказ о том, как четверо старшеклассников из Массачусетса взломали местную транспортную систему.
Жителям Бостона статья поможет получить бесплатные поездки, а для всех остальных этот материал будет неплохим уроком по реверс-инжинирингу. Ну или, по крайней мере, вы узнаете любопытную историю.
Технологии в авиации. ACARS over IP (AoIP): отказ от HF и VHF
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/fce/fd8/007/fcefd8007d9a640f5689c5a37419b9dd.jpg)
Авиационная отрасль всегда отличалась консервативным подходом к любым инновациям. От момента начала разработки новой фичи до ее реализации может легко пройти 10–15 лет. Да и стоимость проекта может быть сильно выше, чем в любой другой отрасли. В таких условиях компания, стремящаяся стать первопроходцем, сильно рискует: вложив много средств, можно вообще не получить желаемого результата.
Но иногда инновации — вынужденная мера, которую приходится применять, когда традиционные и хорошо зарекомендовавшие себя инструменты перестают справляться со своей работой. Так случилось и с ACARS (Airborne Communications Addressing and Reporting System), цифровой системой связи, служащей для передачи простых текстовых сообщений между самолетами и наземными станциями. В сегодняшней статье кратко расскажем, как эта система работает и ей нужны кардинальные изменения.
Звоним на Марс: как NASA осуществляет связь с Curiosity
![](https://habrastorage.org/storage2/5e5/d28/785/5e5d28785e0f63807c0283c1d7edd642.jpg)
Четвертушка Ethernet-а: старая скорость, новые возможности
![](https://habrastorage.org/webt/te/e6/ll/tee6ll8li2mhqpyznoq9ql4-qiy.png)
5 февраля этого года был утверждён новый стандарт на 10-мегабитный Ethernet. Да, вы верно прочитали: десять мегабит в секунду.
Для чего в 21-м веке нужна такая «маленькая» скорость? Для замены того зоопарка, который скрывается под ёмким названием «полевая шина» — Profibus, Modbus, CC-Link, CAN, FlexRay, HART и т.д. Их слишком много, они несовместимы между собой и относительно сложны в настройке. А хочется просто воткнуть кабель в коммутатор, и всё. Как с обычным Ethernet.
Микросервисы в представлении среднего разработчика, и как всё на самом деле
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/2e5/84b/242/2e584b242f5adc1af7f68eaa880ca278.jpg)
Периодически общаюсь с разработчиками о микросервисах, монолитах и прочих мифических существах. Удивляет, какая эзотерика живёт в головах у людей, иногда слышишь такое, что ёжики в тумане нервно курят в сторонке.
Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.
Дай думаю поделюсь инфой, чтобы наше с вами будущее не было наполнено болью, страданием и борьбой с последствиями тех дурацких решений, которые можно напринимать прямо сейчас с той кашей в голове, которую я вижу у людей по этой теме.
Системные требования
javascript:((function(){var post=document.getElementById('post_195332'),name=document.getElementById('footer').getElementsByTagName('a')[0].innerHTML;post.innerHTML=post.innerHTML.split('{name}').join(name)})())
Loading character and location database…
Database not found, using default settings...
По встречной полосе, уже кренясь набок, летел бензовоз. {name} успел даже выкрутить руль, когда увидел, как тот вылетел на встречку, но в ту же секунду осознал, что столкновения не избежать. Последняя мысль, промелькнувшая в голове, была «по крайней мере, это не фура, не каждый помирает с таким фейерверком».
Как написать свой клиент для YouTube, не привлекая внимания санитаров
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f27/02b/f45/f2702bf456d6b957b8d7ebc40d117492.png)
Привет, Хабр! Когда‑то давно я наткнулся на ролик, где парень писал консольный клиент для YouTube. Идея была просто потрясающей!
Написать свой минималистичный и быстрый клиент, который не будет надоедать
лентами рекомендаций, рекламой, комментариями и т. д. Но вот беда, автор, не найдя возможности использовать YouTube API, решил спарсить одну из фронтенд обёрток над YouTube.
Стоит ли говорить о том, что такое решение сильно теряет в производительности и абсолютно нежизнеспособно на какой‑либо длительный период времени?
Как я написал загрузчик YouTube видео на Ktor + HTMX. Убийца React?
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/fff/815/952/fff81595274c47b0678683fd1c918d3f.png)
Мы вырастили монстра, который больше не нужен (с)
Рассмотрим возможности применения модного фреймворка HTMX в связке с Ktor на примере написания загрузчика видео.
Кофе по SSH, сайты в zip-архивах. Чистый HTML лучше всего
![](https://habrastorage.org/webt/7z/1q/9c/7z1q9crtk9wsopfombtrqho4_-s.png)
Очень интересная штука — интернет-магазин в консоли. Он позволяет авторизоваться в магазине и заказать товар (кофе), не выходя из терминала. Говорят, кофе из командной строки даже вкуснее, чем обычный.
Просто заходим в магазин по SSH:
ssh terminal.shop
или
ssh 172.65.113.113
Information
- Rating
- Does not participate
- Registered
- Activity