Pull to refresh
34
42.5
Иван Новиков @stranger777

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

Send message

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

Level of difficulty Medium
Reading time 9 min
Views 3K

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.

Что?
Total votes 15: ↑13 and ↓2 +11
Comments 8

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

Level of difficulty Easy
Reading time 3 min
Views 8.8K

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


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


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

Читать дальше →
Total votes 59: ↑56 and ↓3 +53
Comments 43

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

Level of difficulty Easy
Reading time 4 min
Views 6.7K

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

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

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 2

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

Level of difficulty Easy
Reading time 6 min
Views 4.8K



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

Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 2

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

Level of difficulty Easy
Reading time 7 min
Views 7.2K

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


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


Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 8

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

Level of difficulty Easy
Reading time 7 min
Views 19K


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

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


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


Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Comments 30

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

Level of difficulty Easy
Reading time 4 min
Views 26K

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


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


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


Погружаемся!
Total votes 42: ↑41 and ↓1 +40
Comments 84

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

Level of difficulty Easy
Reading time 4 min
Views 14K

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


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



Давайте покопаемся!
Total votes 25: ↑24 and ↓1 +23
Comments 6

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

Reading time 9 min
Views 50K

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



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

Читать дальше →
Total votes 24: ↑12 and ↓12 0
Comments 14

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

Reading time 7 min
Views 38K


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


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


Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Comments 18

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

Reading time 7 min
Views 3.8K

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

Читать далее
Total votes 4: ↑4 and ↓0 +4
Comments 2

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

Reading time 6 min
Views 18K

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

Читать далее
Total votes 3: ↑3 and ↓0 +3
Comments 3

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

Reading time 13 min
Views 186K

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

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

Читать далее
Total votes 26: ↑14 and ↓12 +2
Comments 9

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

Reading time 8 min
Views 4.9K

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

Читать далее
Total votes 12: ↑9 and ↓3 +6
Comments 0

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

Reading time 5 min
Views 7.4K

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

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

Читать далее
Total votes 17: ↑14 and ↓3 +11
Comments 2

Как избавиться от Postman с помощью Emacs Org Mode

Reading time 12 min
Views 5.2K

К старту курса по тестированию на Python при помощи шаблона Read the Docs, пакетов restclient, ob-restclient и Org Mode в Emacs напишем красивую, полезную документацию API, которая генерируется автоматически и легко отображается на статическом сайте.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Comments 7

Terality — автоматически масштабируемая альтернатива Pandas

Reading time 5 min
Views 5.3K

К старту флагманского курса по Data Science делимся туториалом по библиотеке Terality, которая сильно облегчит работу с действительно большими наборами данных даже на маломощных машинах. За подробностями приглашаем под кат.

Читать далее
Total votes 11: ↑6 and ↓5 +1
Comments 4

Уязвимость Safari 15 может легко раскрыть вашу личность любому веб-сайту

Reading time 6 min
Views 7.6K

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

Мы верим, что уязвимости, подобные этой, должны открыто обсуждаться, чтобы помочь браузерам как можно быстрее устранить их, поэтому отправили баг-репорт мейнтейнерам WebKit, создали демонстрацию уязвимости и открыли репозиторий с её кодом.

Читать далее
Total votes 17: ↑15 and ↓2 +13
Comments 3

Мигающему курсору исполнилось 54 года

Reading time 9 min
Views 10K

Большинству людей знаком этот гипнотический ритм, подобный биению сердца или пульсации светофора в полночь. От Microsoft Word до Google Docs, мигающий курсор — это спутник, заставляющий нас работать с текстовыми документами, сообщениями и непослушными поисковыми запросами Google. Когда мы не успеваем написать что-то, мигающий курсор терпеливо спрашивает:

«Что дальше?»
Total votes 26: ↑19 and ↓7 +12
Comments 7

Компилятор C# 10, .NET 6 и интерполяция строк

Reading time 24 min
Views 17K

К старту курса по разработке на C# делимся материалом из блога .NET о том, как компилятор C# 10 и .NET 6 упрощают программирование, как они обращаются с форматированием, а также о причинах конкретных решений команды .NET. И это далеко не всё. За подробностями приглашаем под кат.

Читать далее
Total votes 29: ↑27 and ↓2 +25
Comments 60

Information

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