Обновить
16K+
43
Иван Новиков@stranger777

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

11,2
Рейтинг
44
Подписчики
Отправить сообщение

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

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели16K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели8.1K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.3K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.2K

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели31K

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

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4K

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 считает, что это нормально

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели10K

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


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


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

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

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

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели35K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.7K



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

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

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

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.2K

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


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


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

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

Время на прочтение7 мин
Охват и читатели22K


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

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


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


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

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

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели31K

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


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


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


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

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

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели18K

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


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



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

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

Время на прочтение9 мин
Охват и читатели56K

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



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

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

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

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


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


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


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

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

Время на прочтение7 мин
Охват и читатели4.9K

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

Читать далее

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

Время на прочтение6 мин
Охват и читатели32K

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

Читать далее

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

Время на прочтение13 мин
Охват и читатели195K

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

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

Читать далее

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

Время на прочтение8 мин
Охват и читатели5.2K

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

Читать далее

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

Время на прочтение5 мин
Охват и читатели8.3K

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

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

Читать далее

Информация

В рейтинге
707-й
Откуда
Белорецк, Башкортостан(Башкирия), Россия
Дата рождения
Зарегистрирован
Активность