Архив метки: windows

Idea – подключение к Docker в Windows WSL2

Небольшая памятка для себя. Понадобилось воспользоваться докером в Windows 10. При этом – уже установлена Ubuntu внутри WSL2. То есть – ставить сверху ещё и графический Docker Desktop, поднимающий свои контейнеры в отдельных виртуалках WSL, особой необходимости нет. Управлять контейнерами можно прямо из Idea.
Небольшое неудобство возникло с тем, что Docker плагин в idea (под Win) поддерживает Docker for Windows, но не умеет напрямую работать с докером внутри WSL. Вариантов несколько, среди них – подключение через tcp socket или через ssh.
Против tcp socket возникли два аргумента – сложнее настроить (чтобы просто пара настроек – и заработало – такого не произошло, пришлось повозиться); кроме того – руководство Docker не рекомендует пользоваться им из-за наличия потенциальной уязвимости.
Остановился на ssh – это проще, и в целом удовлетворяет моим потребностям.
Читать далее Idea – подключение к Docker в Windows WSL2

Замена стандартной Windows-консоли. Вкладки-табы и выбор оболочки

Стандартная консоль Windows XP (та, что вызывается командой cmd) – весьма бедна возможностями. Основное, от чего я страдал, пользуясь ей или консолью из состава cygwin – отсутствие вкладок (табов), без которых приходится открывать несколько окон, занимающих место на рабочем столе. После gnome-terminal, rxvt дома или screen на хостинге – очень неудобно. Впрочем, такие “мелочи”, как невозможность изменить ширину окна растягиванием (надо лезть в настройки окна) тоже не добавляют удовольствия от работы с консолью.

Console

И вот случайно наткнулся в интернете на замечательный проект с незамысловатым названием Console (домашняя страница) – альтернативную консоль для Windows. Она мне понравилась, так что решил поделиться с читателями.
Перечислю основные достоинства:

  • лаконичный интерфейс
  • сохраняются настройки геометрии окна после выхода из программы
  • поддержка табов
  • для каждого таба можно настроить внешний вид, иконку и главное – задать оболочку (shell), с которой будет открываться данная вкладка (например – тот же bash из состава cygwin)
  • для таба/консоли задаётся каталог запуска по умолчанию
  • удобный скроллинг

Альтернативная консоль для Windows

В общем Console не требует долгого и подробного описания – это приятная глазу альтернативная консоль для Windows с поддержкой табов (вкладок) и оболочек. Рекомендую просто попробовать и сравнить со следующим эмулятором консоли – ConEmu.

ConEmu

В комментариях к этой заметке подсказали еще один эмулятор консоли для Windows под названием ConEmu. Она точно также поддерживает вкладки, выбор оболочки командной строки, имеет возможность задавать умолчальный каталог для запуска новой оболочки.

Что мне понравилось в ConEmu по сравнению с Console – во-первых, это скорость работы – ConEmu работает заметно быстрее. Во-вторых – наличие хорошего моноширинного консольного шрифта прямо из коробки. В-третьих – корректная поддержка кириллицы, как в консоли windows, так и в bash – везде русские буквы отображаются как надо. И в-четвёртых – нормально реализованная псевдографика, файловый менеджер MidnightCommander в ConEmu, в отличае от Console, работает правильно.

Из минусов ConEmu можно отметить пожалуй только отсутствие возможности свернуть её в трей, что можно сделать в Console. В остальном на мой взгляд ConEmu у Console выигрывает, я перешел на неё, а вам предлагаю сравнить самостоятельно и выбрать подходящий для вас многовкладочный эмулятор консоли для Windows.

Эмулятор Windows-консоли ConEmu

Дополнение из комментариев:
> Единственное, чего не хватило – возможности прятать в трей не нашел
Два способа для сворачивания ConEmu в трей:
а) Правый клик на крестике (“закрыть окно”) в заголовке;
б) Опция “Auto minimize to TSA” (Setup tasks -> Features);

> Как указать автосоздаваемые при старте табы с нужными оболочками:
Создать именованый “Task” на одноименной вкладке (Setup tasks -> Tasks, путь к нужной оболочке (или нескольким оболочкам) выбрать через кнопку Add application), выбрать этот Task на вкладке Startup. Причем конкретные табы можно запускать с конкретными параметрами – AsAdmin, Working dir, и т.п. смотреть в сторону -cur_console

Адаптация Cygwin shred для Windows

Адаптация утилиты shred для windows

Набросал тут как-то в свободную минуту скрипт-оболочку для вызова утилиты безопасного удаления файлов shred, которой постоянно пользуюсь дома.
Win-аналоги искать было лень – попробовал как-то найти под win софтинку для конвертации mp3 в wav – ради того, что в линухе делается одной командой, пришлось час ползать по сети и засорять машину, а в итоге всё найденное было платным или кривым.

Поскольку у меня на работе всё равно установлен cygwin – воспользовался сборкой shred под него, а батник сделал для большего удобства использования. Дальше всё просто – батник на рабочий стол и перетаскиваем на него предназначенные для безопасного удаления файлы.

Код батника предельно примитивный, так что просто приведу его ниже (под катом). Достаточно скопировать в текстовый файл и изменить расширение на .bat.

Читать далее Адаптация Cygwin shred для Windows

Автоматическое определение кодировки терминала в perl-скрипте.

Надоело руками менять кодировки для нормального вывода русского текста в своих perl-скриптах в зависимости от кодировки терминала (запускаю скрипты под Linux (utf8), Windows (ActivePerl, cp866) и Windows (Cygwin, cp1251)). Немного погуглил, но никаких готовых рецептов не встретил, хороший запрос для поиска что-то в голову не пришёл.

Решил поступить следующим образом – определять операционную систему, в которой запущен скрипт, и в зависимости от этого выставлять кодировку выходного потока (STDOUT):

#!/usr/bin/perl;
use utf8;
require encoding;
import encoding  ('utf8', 'STDOUT' => &SetEncoding);

sub SetEncoding {
    if ($^O =~ /^MSWin\d{2}$/i) {
        return 'cp866';
    }
    elsif ($^O =~ /^cygwin$/i) {
        return 'cp1251';
    }
    elsif ( условие для следующей ОС (например - linux) ) {
        return 'utf8';
    }
    # и так далее, исходя из личных потребностей
}

Замечания, исправления, дополнения и/или другие способы решения задачи по автоматической установке кодировки для perl-скрипта всегда приветствуются!

И на всякий случай, если вдруг мне не удастся найти время написать ещё что-то в блог до нового года – поздравляю всех своих читателей с наступающим новым годом, успехов вам и побольше приятных открытий! 🙂

PS: А для интересующихся фрилансом – новый, но достаточно любопытный ресурс ФрилансFM – портал о фрилансе.

Файл настройки vim – .vimrc (для Linux и Windows)

Продолжу сохранение самых интересных своих конфигурационных файлов. Сегодня пришла очередь файла конфигурации для редактора vim.vimrc (находится обычно в домашнем каталоге пользователя: ~/.vimrc, также пример файла есть в /etc/vim). Довольно много времени ему уделил, собирая настройки и разделяя их применение для разных ОС (Windows и Linux). А будет ли он завершён окончательно – даже и не знаю 🙂

Самое хорошее русскоязычное руководство (с примерами) по настройке Vim из встретившихся мне в интернете: Очередной HowTo по Vim. Именно из него я взял функцию для переключения раскладок клавиатуры без потери реакции редактора на нажатия управляющих клавишей в случае раскладки, отличной от английской.

Перемещение по табам сделано в стиле моего любимого эмулятора терминала – urxvt (Shift+стрелка). Можно просто скопировать все настройки в свой файл ~/.vimrc, открыв мой vimrc на отдельной странице.
Читать далее Файл настройки vim – .vimrc (для Linux и Windows)

Wget(rc) и flashgot – памятка

Настроил сегодня на работе wget в качестве загрузчика в Firefox (при помощи плагина flashgot). Теперь и с файлообменников качает, и имена закачиваемым файлам даёт нормальные, а не из имени ссылки. Чтобы не забыть в дальнейшем, что да как и при необходимости иметь лёгкий доступ к описанию процесса – сохраню памятку тут. Что удобно – wget под Win можно не только из cygwin использовать, но и нативную сборку скопировать например в C:\Windows\System32 (я на флешке виндовую сборку вгета ношу – один файлик маленький, установки не требует – очень удобно когда стоит только IE на машине, который докачку поддерживать, видимо, никогда не научится).
Читать далее Wget(rc) и flashgot – памятка

Cygwin – бесплатная реализация unix-подобного окружения для Windows

Cygwin - бесплатное Unix-окружение для Windows

Как ясно из заголовка, Cygwin представляет собой unix-подобную среду, реализованную для ОС Windows.

Cygwin включает в себя следующие основные компоненты:

  • Динамическая библиотека cygwin1.dll, которая обеспечивает совместимость на уровне API и предоставляет реализацию значительной части стандарта POSIX.
  • Коллекция прикладных утилит, обеспечивающих UNIX-образное окружение (включают в себя как утилиты с интерфейсом командной строки – например – утилита для безопасного удаления файлов shred, так и графическое окружение типа Gnome/KDE).

Cygwin распространяется бесплатно под лицензией GNU GPL v.2, разработкой занимаются как сотрудники Red Hat, так и сообщество добровольцев. В качестве стандартной оболочки командной строки используется Bash. Cygwin имеет встроенный эмулятор терминала, однако также для окружения существует сборка популярного легковесного unicode-терминала urxvt

Посредством Cygwin обеспечивается существенная интеграция ресурсов, данных и прикладных программ Windows с ресурсами, прикладными программами и данными Unix, что позволяет как вызывать Windows-приложения из Cygwin, так и использовать Unix-утилиты из состава Cygwin в консоли Windows.

Последние версии Cygvin (старше версии 1.7) имеют встроенную поддержку Unicode (UTF-8), при использовании Windows-утилит из Cygwin, последняя автоматически перекодирует вывод в UTF-16, применяемую в Windows по умолчанию. Таким образом, в современных версиях Cygwin отсутствуют проблемы при работе с кириллицей (ввод-вывод осуществляются корректно).

Небольшое практическое дополнение.
Для того, чтобы в Cygwin использовался файл .bashrc, расположенный в домашней директории пользователя, можно воспользоваться следующим способом –
в файл путь_куда_установлен_cygwin\etc\defaults\etc\skel\.bash_profile дописать такие строки:

# source the users bashrc if it exists
if [ -e "${HOME}/.bashrc" ] ; then
source "${HOME}/.bashrc"
fi