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

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

Send message

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

Level of difficultyMedium
Reading time9 min
Views3.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 12: ↑10 and ↓2+11
Comments8

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

Level of difficultyEasy
Reading time3 min
Views9.3K

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


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


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

Читать дальше →
Total votes 45: ↑42 and ↓3+53
Comments43

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

Level of difficultyEasy
Reading time4 min
Views8.9K

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

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

Читать далее
Total votes 8: ↑7 and ↓1+9
Comments2

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

Level of difficultyEasy
Reading time6 min
Views5.5K



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

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

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

Level of difficultyEasy
Reading time7 min
Views8.1K

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


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


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

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

Level of difficultyEasy
Reading time7 min
Views20K


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

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


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


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

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

Level of difficultyEasy
Reading time4 min
Views28K

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


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


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


Погружаемся!
Total votes 35: ↑34 and ↓1+40
Comments84

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

Level of difficultyEasy
Reading time4 min
Views15K

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


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



Давайте покопаемся!
Total votes 22: ↑21 and ↓1+23
Comments6

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

Reading time9 min
Views52K

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



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

Читать дальше →
Total votes 21: ↑9 and ↓120
Comments14

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

Reading time7 min
Views39K


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


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


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

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

Reading time7 min
Views4K

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

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

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

Reading time6 min
Views20K

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

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

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

Reading time13 min
Views188K

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

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

Читать далее
Total votes 23: ↑11 and ↓12+2
Comments9

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

Reading time8 min
Views5K

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

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

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

Reading time5 min
Views7.6K

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

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

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

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

Reading time12 min
Views5.5K

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

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

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

Reading time5 min
Views5.5K

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

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

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

Reading time6 min
Views7.8K

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

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

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

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

Reading time9 min
Views10K

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

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

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

Reading time24 min
Views18K

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

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

Information

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