PostgreSQL coub express.js freeware git jquery laravel links linux macos mysql node.js php powershell python ubuntu vim virtualbox анекдот блог игры интересно стихи цитаты

Поскольку с регистрами я до сих пор не разобрался, забываю эту ерунду постоянно. В визуальном режиме выбираем область для копирования и выполняем команду ниже
"+y
# для копирования в консоль под линукс, почему-то работает этот регистр
"*y
На эту тему есть небольшой скринкаст.
vim


Оказывается можно не приплясывать каждый раз с консолью типа
killall Finder
Есть способ значительно более человечный. Зажимаем на клавиатуре Option (оно же alt) и кликаем правой кнопкой мыши по иконке Finder в доке. В меню увидим дополнительный пункт "Перезапустить". Просто как двери в милиции.


Первоисточник: osxdaily.com


В общем это практически так же как и в linux
1. Втыкаем флешку и смотрим из консоли diskutil list
Вот так это выглядит у меня на машине
$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            CDROM                  *4.0 GB     disk1
2. Размонтируем флешку diskutil unmountDisk /dev/disk1
После этого флешка будет видна в через diskutil list но в файндере отключится.
3. Записываем образ на флешку sudo dd if=my-linux-distr.iso of=/dev/disk1 (понятно что вместо образа можно пихать путь к файлу на диске)
4. Ждем завершения записи
$ sudo dd if=archlinux-2014.03.01-dual.iso of=/dev/disk1
Password:
1079296+0 records in
1079296+0 records out
552599552 bytes transferred in 472.350022 secs (1169894 bytes/sec)
Теперь если macos не предложила извлечь флешку автоматически - делаем это вручную
diskutil eject /dev/disk1
5. Profit!


Имеем такую ситуацию: есть бд mysql, все таблицы этой бд в кодировке latin1, текст внутри этих таблиц засунут в кодировке cp1251. Цель: конвертировать таблицы и данные в них в utf8.

КОРОТКО И ВНЯТНО
mysqldump -u user -p --default-character-set=latin1 --set-charset db_name > dump_db.sql
iconv -f cp1251 -t utf8 dump_db.sql > dump_db_utf.sql
Затем заменить в конвертированном дампе кодировку latin1 на utf8 вручную.

ДЛИННО И ВДУМЧИВО
Понадобится: консоль, screen, iconv, vim(другой ваш любимый редактор) и mysql c mysqldump конечно.

Делаем дамп исходной базы обычным образом (чтобы не корячить боевую)
mysqldump -u user -p db_name > dump.sql
Создаем в mysql базу для того чтобы над ней измываться и заливаем туда наш дамп
mysql -u user -p
# ввели пароль, зашли
CREATE DATABASE db1;
# выходим из mysql ^D
mysql -u user -p db1 < dump.sql
# ввели пароль
Итого имеем тоже самое в нашей тестовой базе. Теперь чтобы понять суть проблемы сделаем так: переведем кодировку в screen в cp1251 и заглянем в бд чтобы увидеть русский.
# переводим кодировку консоли в screen (или вашим способом)
^a:encoding cp1251
# идем в mysql
mysql -u user -p
# переключаемся на кодировку нашей бд
set names latin1;
use db1;
# выбираем поле в котором ожидаем русский язык
select field from table_name limit 1;
Если русский увидели то все ок. Дальше все понятно. mysqldump умеет выгружать данные с установленным чарсетом, делается это вот так
mysqldump -u user -p --default-character-set=latin1 --set-charset db1 > dump_db1.sql
То есть выводим содержимое в файл так же как мы смотрели выше через mysql, установив кодировку исходной БД. Теперь открываем наш дамп в vim. Учитывая что кодировка консоли у нас сейчас тоже выставлена в cp1251 - должны увидеть в дампе русский текст. Выходим из редактора и конвертируем дамп
iconv -f cp1251 -t utf8 dump_db1.sql > dump_db1_utf.sql
Теперь меняем кодировку консоли обратно в utf8
# для screen
^a:encoding utf8
Открываем наш дамп в utf8 и правим кодировки latin1 на utf8
vim dump_db1_utf.sql
# замена с подтверждением для vim
:%s/CHARSET=latin1/CHARSET=utf8/gc
Ещё в начале дампа надо будет изменить строку вида
/*!40101 SET NAMES latin1 */;
На вот такую
/*!40101 SET NAMES utf8 */;
Все, имеем дамп в utf8. По аналогии немного повращав мозгами можно справляться с другими подобными заморочками.


Вообще элементарная штука, но полезная, можно прикрутить что-то при необходимости. Суть простая - читаем результат какой-то команды выполненной в консоли и вставляем его в текущий открытый файл и положение курсора в этом файле соответственно.
В виме смотрим короткое описание :h read + помним что выполнение внешней команды в виме начинается с восклицательного знака :!ls -1
Итого имеем вот такие примеры использования
:r!ls -l1
:r!fortune
:r!df -H
:r!date +\%F_\%H_\%M
С учетом того что команды мы можем повесить на выбранные хоткеи или их последовательности/комбинации, то возможность на мой взгляд достаточно интересная.
vim


aghr