Pull to refresh
2K+
44
Иван Новиков@stranger777

Редактор-переводчик

0,1
Rating
45
Subscribers
Send message

Мы переписали наш парсер WASM с Rust на TypeScript — и он ускорился в три раза

Level of difficultyEasy
Reading time7 min
Reach and readers16K

Мы создали парсер openui‑lang на Rust и скомпилировали его в WASM. Логика была здравой: Rust быстрый, WASM в браузере даёт скорость, близкую к нативной, а наш парсер — разумно сложный, многоэтапный конвейер. Почему бы не захотеть его на Rust?

Но оказалось, мы оптимизировали не то, что нужно.

Читать далее

Slug — GPU‑рендеринг шрифтов из кривых Безье лицензирован MIT

Level of difficultyMedium
Reading time7 min
Reach and readers8.3K

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

Для всех юридических экспертов, читающих это: моя компания подала форму SB/43 в USPTO и оплатила пошлину за отказ от конечной части срока действия патента № 10 373 352, действующий с 17 марта 2026 года.

Читать далее

Перебазирование в Magit

Level of difficultyEasy
Reading time5 min
Reach and readers9.4K

Статья Яна Уитлока о том, почему он не может отказаться от Magit, вдохновила меня поделиться своим взглядом на Magit. Этот текст посвящён перебазированию.

Я открыл лог Git. Вызвал Magit, привязанный к F3, и нажал lL. Первая l включает работу с логом, вторая — показывает его для всех локальных и отслеживаемых ими удалённых веток.

Читать далее

Как C#‑строки и Dapper тихо убивают индексы Microsoft SQL Server

Level of difficultyEasy
Reading time6 min
Reach and readers8.3K

Недавно я посвятил время проблеме производительности на продакшене. Приложение работало в горячке — загрузка процессора в среднем превышала 50% и периодически подскакивала до 90%. Мы сделали диагностический снапшот и начали работать с топом запросов по процессорному времени.

Нарушитель номер один? Простой запрос Dapper. Незамысловатое условие WHERE по проиндексированному столбцу. Должно было быть молниеносным, но в среднем потребляло тысячи миллисекунд процессора при сотнях тысяч выполнений в день.

Несоответствие типов на пару символов, совсем невидимое в C#‑коде. Я очень долго глазел на запрос, прежде чем понял происходящее.

Читать далее

Физик проанализировала более 100 000 «исправленных» багов ядра Linux

Level of difficultyEasy
Reading time16 min
Reach and readers31K

В вашем ядре сейчас есть баги, которые не найдут в течение многих лет. Я знаю это, потому что проанализировала 125 183 из них, каждый в 20-летней git-истории ядра Linux помечен прослеживаемым тегом Fixes:.

Средний баг ядра существует 2,1 года. А некоторые подсистемы намного хуже: драйверы CAN‑шины [шины сети контроллеров] — в среднем 4,2 года, работа с сетью SCTP4,0 года. Самый долгоживущий баг в моём наборе данных — переполнение буфера в ethtool — сохранялся в ядре 20,7 лет. Подробно остановлюсь на утечке памяти из‑за подсчёта ссылок в netfilter, существовавшей 19 лет.

Я создала инструмент, который выявляет 92% исторических багов в отложенном тестовом наборе данных о времени коммита. Вот что я узнала.

Читать далее

Как потерять управление оболочкой… Расследование

Level of difficultyMedium
Reading time9 min
Reach and readers4K

image


Несколько недель назад я занимался хаком языковых серверов в Zed, пытаясь заставить Zed определять, когда заданный бинарник языкового сервера, например gopls, уже присутствует в $PATH. Если так, вместо загрузки нового бинарника Zed должен использовать его.


Трудность: часто $PATH динамически изменяется такими инструментами, как direnv, asdf, mise и другими, которые позволяют в данной папке установить определённый $PATH. Почему эти инструменты так делают? Потому что это даёт возможность, скажем, в начале $PATH добавить ./my_custom_binaries, пока вы находитесь в my-cool-project. Поэтому нельзя просто использовать $PATH, связанный с процессом Zed, нужен $PATH, как он есть, когда выполняется cd в каталог проекта.


Легко, подумал я. Просто запусти $SHELL, выполни cd в проект, чтобы запустить direnv и всё такое, запусти env, сохрани окружение, выбери $PATH, найди в нём бинарники. И это было легко. Вот часть кода, та часть, которая запускает $SHELL, cd и получает env:


fn load_shell_environment(dir: &Path) -> Result<HashMap<String, String>> {
    // Получает $SHELL
    let shell = std::env::var("SHELL")?;

    // Конструирует команду, которую хочется выполнить в $SHELL
    let command = format!("cd {:?}; /usr/bin/env -0;", dir);

    // Запускает $SHELL как интерактивную оболочку (чтобы использовались файлы пользователя rc).
    // и выполняет `command`:
    let output = std::process::Command::new(&shell)
        .args(["-i", "-c", &command])
        .output()?;

    // [... проверка кода выхода, получение stdout, превращение stdout в HashMap и т. д. ...]
}

За исключением одного: после запуска экземпляра Zed в терминале, который выполнял эту функцию, я больше не мог убить Zed, нажав Ctrl-C.

Что?

Поведение Curl на macOS отличается от документированного. Apple считает, что это нормально

Level of difficultyEasy
Reading time3 min
Reach and readers10K

tldr: Apple считает, что все в порядке. Я нет.


28 декабря 2023 года в систему отслеживания ошибок Curl был отправлен отчет об ошибке 12 604. Мы получаем множество таких отчетов изо дня в день, так что сам по себе этот факт вряд ли был чем-то необычным. Мы читаем отчеты, проводим расследование, задаем дополнительные вопросы, чтобы увидеть, что мы можем узнать и на что нужно обратить внимание.


Название проблемы в этом случае было совершенно ясным: поведение флага --cacert несовместимо между macOS и Linux, и оно было зарегистрировано Юэдуном Ву.

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

Как работать с помощью разных ИИ прямо в VSCode: AIConfig Editor

Level of difficultyEasy
Reading time4 min
Reach and readers36K

AIConfig Editor превращает VS Code в генеративную среду разработки, позволяющую в единой универсальной песочнице запускать модели любого провайдера (OpenAI, Google, Hugging Face, с вашего локального компьютера...) или в любой модальности (текст, изображение, аудио).

Подсказки и настройки модели сохраняются в файле .aiconfig.yaml или в .aiconfig.json, исходный код которых можно контролировать и использовать в вашем приложении через AIConfig SDK.

Читать далее

Cloudflare открыла код Rust-фреймворка для программируемых сетевых сервисов — Pingora

Level of difficultyEasy
Reading time6 min
Reach and readers7.7K



Мы гордимся тем, что открываем исходный код Pingora — фреймворка на Rust, который мы используем для создания сервисов, обеспечивающих значительную часть трафика в Cloudflare. Pingora выпускается под лицензией Apache 2.0.

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

Часы на синусах и косинусах в CSS

Level of difficultyEasy
Reading time7 min
Reach and readers9.2K

В этой статье осторожно прикоснёмся к sin() и cos(). Есть и другие функции, в том числе tan(), зачем же останавливаться только на синусе и косинусе? Они идеальны для размещения текста по краю круга. Об этом уже рассказывалось на CSS-Tricks, когда Крис поделился подходом к размещению текста по кругу с миксинами Sass. Это было шесть лет назад [оригинал опубликован 8 марта 2023 года], поэтому поработаем с размещением чисел по-новому.


Вот о чём я говорю:


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

Итак, вы думаете, что знаете Git? Часть третья: реально большие репозитории

Reading time7 min
Reach and readers22K


Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.

Вам хочется использовать ванильный Git, чтобы управлять репозиторием с объёмом 300 ГБ в 3,5 млн файлов, которые без проблем получают пуш каждые 20 секунд от 4000 разработчиков? Тогда читайте дальше!


Вот агенда блога — наша блогенда:


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

Итак, вы думаете, что знаете Git? Часть вторая: новое в Git

Level of difficultyEasy
Reading time4 min
Reach and readers31K

Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.


Далее в нашей серии постов из трёх частей у нас новые фичи! Здесь я расскажу про пять относительно новых вещей в git, о которых вы могли не слышать, потому что ну почему вы?


Мы взглянем на:


Погружаемся!

Итак, вы думаете, что знаете Git? Часть первая: старый добрый Git

Level of difficultyEasy
Reading time4 min
Reach and readers18K

Автор оригинала Скотт Чакон — сооснователь GitHub и основатель нового клиента GitButler. Этот клиент ставит во главу угла рабочий процесс и удобство разработки, в том числе код-ревью, и не является просто очередной обёрткой над CLI git.


В первом посте из этой короткой серии по Git я хотел начать с вещей, уже существующих какое-то время. При этом кажется, что многие люди о них не знают или не умеют ими пользоваться. В них нет ничего нового, но я нахожу их полезными и, возможно, не совсем освещёнными. Я просто хочу рассказать о:



Давайте покопаемся!

Самые востребованные IT-профессии 2022-го. Итоги года

Reading time9 min
Reach and readers56K

Данные и зарплаты



Разбираем самые востребованные IT-специальности 2022 года: почему они так популярны, сколько платят айтишникам сегодня, где получить нужный навык и как влиться в сферу. А еще, конечно, делаем прогнозы, чтобы понять, какой опыт и IT-профессию выбрать в 2023.

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

Хабратоп. Самые востребованные языки программирования в 2022 году

Reading time7 min
Reach and readers41K


Подводим итоги 2022 года в рейтингах языков программирования — от IEEE и TIOBE до не столь известных, например RedMonk и GitHut. Цифры, подробности, наблюдения и, конечно, раскрытие сути разнообразных топов ждут под катом. 


Читайте этот материал, если хотите понять, на какие языки программирования стоит обратить внимание, чтобы не отстать от IT-сферы. Вот рейтинги статьи в этом году:


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

Шейдеры, голограммы и утечка света на чистом CSS

Reading time7 min
Reach and readers5K

К старту курса по Fullstack-разработке на Python рассказываем, как на чистом современном CSS имитировать шейдеры аккуратным наложением слоёв и эффектов. За подробностями и демонстрациями приглашаем под кат.

Читать далее

За кулисами Google Colab

Reading time6 min
Reach and readers32K

Заглянем во внутренности Google Colab и узнаем, как можно подстроить Colab под свои рабочие нужды, а не подстраиваться под ограничения этого инструмента. Подробности рассказываем к старту флагманского курса по Data Science.

Читать далее

Главные IT-профессии 2022 года, которые стали ещё более востребованными

Reading time13 min
Reach and readers195K

Экономика России переживает тектонические перемены, перестраиваются целые отрасли. Объясняем, зачем идти в IT — и в какие именно сферы.

Это не просто мода, не очередной стереотип лучшей профессии, а острая необходимость. Уже в 2020 году не хватало 150 000 специалистов, а сегодня в одной только сфере информационной безопасности ищут 30 000 сотрудников.

Читать далее

Что будет, если объединить трансформер и дерево решений

Reading time8 min
Reach and readers5.2K

Исследователи добились значительного прогресса в скорости конвергенции, точности и интерпретируемости решений визуального трансформера. За подробностями приглашаем под кат. Материалом из блога Google Research делимся к старту флагманского курса по Data Science.

Читать далее

Stacks Project — учебник по алгебраической геометрии с открытым исходным кодом

Reading time5 min
Reach and readers8.3K

Последние 15 лет профессор Колумбийского университета Йохан де Йонг посвятил тому, что собирал основополагающие теоремы алгебраической геометрии в одном месте. Его творение, Stacks Project, предлагает новую модель организации и визуализации математических сведений.

К старту флагманского курса по Data Science рассказываем о проекте профессора.

Читать далее

Information

Rating
3,660-th
Location
Белорецк, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity