Как я писал ранее о расширениях этого стандартного в Ubuntu текстового редактора. Здесь я опишу, как он мне помог в быстром решении одного простого вопроса.
Считаю картриджи в коробках. Синих в этой 7, в той 5, тут 14... Так и записываю: 7+5+14 и т.д. И так для каждого цвета. А теперь это надо сложить. А лень.
Поэтому, открываю Gedit, Правка-Параметры-Модули. Ставлю галку на "Внешние инструменты".
Создаю новый, называю "Математика". Вот так:
Теперь выделяю мой математический кусок, жму Alt+m и он заменяется результатом.
Чувствуете, как руки начинают чесаться от желания что-нибудь наворотить? Тогда вот вам еще кое что. В скриптах используются переменные окружения, такие как $PATH, $HOME или $PWD. Но для скриптов Gedit есть и свои особенные. Вот они:
$GEDIT_SELECTED_TEXT - Выделенный текст
$GEDIT_CURRENT_WORD - Слово, на котором находится курсор
$GEDIT_CURRENT_LINE - Строка, на которой находится курсор
$GEDIT_CURRENT_LINE_NUMBER - Номер строки, на которой находится курсор
$GEDIT_CURRENT_DOCUMENT_URI - URI документа
$GEDIT_CURRENT_DOCUMENT_NAME - Имя документа (файла)
$GEDIT_CURRENT_DOCUMENT_SCHEME - Тип документа (file/ftp/ssh)
$GEDIT_CURRENT_DOCUMENT_PATH - Полный путь к файлу (для локальных)
$GEDIT_CURRENT_DOCUMENT_DIR - Каталог текущего файла
$GEDIT_CURRENT_DOCUMENT_TYPE - Тип содержимого документа
$GEDIT_CURRENT_DOCUMENTS_URI - Список URI открытых документов
$GEDIT_CURRENT_DOCUMENTS_PATH - Список путей открытых документов
Вам и Gedit в руки! Кстати, не забудьте установить плагины:
sudo apt-get install gedit-plugins
2010-09-09
2010-07-30
Автоматический backup базы MSSQL
Дано: некая база данных на сервере MSSQL 2005 Express.
Нужно: производить резервное копирование БД одним кликом или даже вообще без клика, автоматически.
Насколько я знаю, в полной версии (не Express) есть готовые инструменты для этого, и очень неплохие. Но она платная. Поэтому будем обходиться тем, что есть. И у нас получится.
Итак, резервное копирование, как и многое другое, может выполняться путем запроса T-SQL. Как узнать, как выглядит такой запрос? Можно, конечно погуглить, и вгрызаться в документацию, но есть способ проще. Кто не знал - сейчас покажу.
Запускаем SQL Server Management Studio Express. Выбираем свою базу и...
Все, теперь у нас есть sql-файл с готовым сценарием, делающим backup. Назовем его, к примеру, mssql_backup.sql, и положим на диск D.
Теперь осталось его запустить извне. Для этого есть консольная утилита sqlcmd, которая входит в состав сервера (респект парням из MS!). Пользоваться так:
Создаем bat-файл с этой командой, запускаем, наблюдаем процесс. Красота!
Осталось пара моментов.
1) Как сделать, чтобы это происходило по расписанию? Cron тут нету, есть планировщик заданий, но в моем XP он не пожелал сохранять задание в расписании, ругался на отсутствие прав... Погуглив, я узнал, что это баг и чинить его, видимо, уже не будут.
Поэтому, не заморачиваясь, кинул скрипт в автозапуск. Комп включается ежедневно, так что бэкап каждое утро меня вполне устраивает.
2) Как сделать, чтобы файл резервной копии не перезаписывался каждый раз? Хотелось бы, чтобы имя файла говорило мне, от какого числа эта копия.
Что ж, невозможного нет: правим сохраненный ранее сценарий:
Теперь файлы будут выглядеть как main_2010-07-30_09.14.19.bak, что нам и требовалось. Можно дописать в bat-файл команду для их копирования куда-нибудь еще, например в сеть. Для надежности.
Ясное дело, что ни о каких наворотах или вопросах безопасности тут речи нет. Я просто показал пример, как это можно сделать.
Нужно: производить резервное копирование БД одним кликом или даже вообще без клика, автоматически.
Насколько я знаю, в полной версии (не Express) есть готовые инструменты для этого, и очень неплохие. Но она платная. Поэтому будем обходиться тем, что есть. И у нас получится.
Итак, резервное копирование, как и многое другое, может выполняться путем запроса T-SQL. Как узнать, как выглядит такой запрос? Можно, конечно погуглить, и вгрызаться в документацию, но есть способ проще. Кто не знал - сейчас покажу.
Запускаем SQL Server Management Studio Express. Выбираем свою базу и...
Все, теперь у нас есть sql-файл с готовым сценарием, делающим backup. Назовем его, к примеру, mssql_backup.sql, и положим на диск D.
Теперь осталось его запустить извне. Для этого есть консольная утилита sqlcmd, которая входит в состав сервера (респект парням из MS!). Пользоваться так:
sqlcmd -S .\SQLEXPRESS -i "d:\mssql_backup.sql"
где -S .\SQLEXPRESS - указание на имя сервера, по умолчанию оно такое.Создаем bat-файл с этой командой, запускаем, наблюдаем процесс. Красота!
Осталось пара моментов.
1) Как сделать, чтобы это происходило по расписанию? Cron тут нету, есть планировщик заданий, но в моем XP он не пожелал сохранять задание в расписании, ругался на отсутствие прав... Погуглив, я узнал, что это баг и чинить его, видимо, уже не будут.
Поэтому, не заморачиваясь, кинул скрипт в автозапуск. Комп включается ежедневно, так что бэкап каждое утро меня вполне устраивает.
2) Как сделать, чтобы файл резервной копии не перезаписывался каждый раз? Хотелось бы, чтобы имя файла говорило мне, от какого числа эта копия.
Что ж, невозможного нет: правим сохраненный ранее сценарий:
DECLARE @filedate VARCHAR(20)
SET @filedate=REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),20),':','.'),' ','_')
DECLARE @file_path VARCHAR(256)
SET @file_path='D:\MSSQL_DataBases\main_'+@filedate+'.bak'
BACKUP DATABASE [main] TO DISK = @file_path WITH NOFORMAT, INIT, NAME = N'main-Полная База данных Резервное копирование', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Теперь файлы будут выглядеть как main_2010-07-30_09.14.19.bak, что нам и требовалось. Можно дописать в bat-файл команду для их копирования куда-нибудь еще, например в сеть. Для надежности.
Ясное дело, что ни о каких наворотах или вопросах безопасности тут речи нет. Я просто показал пример, как это можно сделать.
2010-07-12
Управление сервисами Google из командной строки
Случайно узнал, что есть и такое. Так что запишу себе на заметку и вам на радость! По-моему, очень интересно, особенно для автоматизации-скриптизации своего компьютерного хозяйства.
Проект GoogleCL
Проект GoogleCL
2010-07-01
Чистим MKV-файлы от ненужных треков
Имеем: кучу файлов MKV (типа file-01.mkv, file-02.mkv ... file-24.mkv), в каждом из которых множество треков (видео, аудио, субтитры).
Нужно: оставить в них только одну видео- и одну звуковую дорожку.
Для работы с MKV нам понадобится одна утилита: mkvtoolnix
Чтобы посмотреть, какие треки есть в файле, сделаем так:
Получаем довольно полную картину состава файла. Но нам нужна только часть, поэтому отфильтруем ненужное:
Запоминаем номера нужных треков и их содержимое. Например, мне нужны только первый и третий трек. Берем их из исходного файла и создаем новый, содержащий только эти два трека:
Ну а теперь, для пробы создадим копии первых пяти файлов, но только с нужными нам 1 и 3 треками:
Все получилось? Тогда можно и остальные обработать.
P.S. На всякий случай, если вы хотите вытащить оттуда субтитры в отдельный файл, то никто вам не мешает. К примеру, так:
mkvextract tracks file-01.mkv -c UTF-8 4:file-01.ass
Нужно: оставить в них только одну видео- и одну звуковую дорожку.
Для работы с MKV нам понадобится одна утилита: mkvtoolnix
sudo apt-get install mkvtoolnix
Чтобы посмотреть, какие треки есть в файле, сделаем так:
mkvinfo file-01.mkv
Получаем довольно полную картину состава файла. Но нам нужна только часть, поэтому отфильтруем ненужное:
mkvinfo file-01.mkv | grep -Gi 'A track\|track number\|track type\|codec id\|Language'
| + A track
| + Track number: 1
| + Track type: video
| + Codec ID: V_MPEG4/ISO/AVC
| + Language: und
| + A track
| + Track number: 2
| + Track type: audio
| + Codec ID: A_AAC
| + Language: rus
| + A track
| + Track number: 3
| + Track type: audio
| + Codec ID: A_AAC
| + Language: jpn
| + A track
| + Track number: 4
| + Track type: subtitles
| + Codec ID: S_TEXT/ASS
| + Language: rus
Запоминаем номера нужных треков и их содержимое. Например, мне нужны только первый и третий трек. Берем их из исходного файла и создаем новый, содержащий только эти два трека:
mkvmerge file-01.mkv --vtracks 1 --atracks 3 -o file-01_.mkv
Если в файле только один видеотрек (как обычно и бывает), то достаточно и этого:mkvmerge file-01.mkv -a 3 -o file-01_.mkv
Если субтитры тоже нужно включить, тоmkvmerge file-01.mkv -a 3 --stracks 4 -o file-01_.mkv
Ну а теперь, для пробы создадим копии первых пяти файлов, но только с нужными нам 1 и 3 треками:
for i in *{01..05}.mkv; do mkvmerge "$i" -a 3 -o "${i%.mkv}_.mkv"; done
Все получилось? Тогда можно и остальные обработать.
P.S. На всякий случай, если вы хотите вытащить оттуда субтитры в отдельный файл, то никто вам не мешает. К примеру, так:
mkvextract tracks file-01.mkv -c UTF-8 4:file-01.ass
2010-06-28
Видео для android
Устройства на базе Google Android воспроизводят видео определенного формата (mp4). Чтобы сжать кино для просмотра можно использовать ffmpeg, собранный с кодеком x264.
К примеру, такой скрипт в арсенале андроидовода может прижиться. Назовем его android.sh, сделаем исполняемым и положим в какую-нибудь папку, проходящую по данным PATH.
P.S. Буквально вчера было обновление mVideoPlayer, в котором добавилась поддержка субтитров SSA и ASS. Теперь стало еще легче.
К примеру, такой скрипт в арсенале андроидовода может прижиться. Назовем его android.sh, сделаем исполняемым и положим в какую-нибудь папку, проходящую по данным PATH.
Теперь сжатие файла выполняется командой:
android.sh FileName
или, если нужно выбрать звуковую дорожку
android.sh FileName 1
Пока что мне не попадалось видео, которые бы конвертировались криво. Ура ffmpeg-у.
А как быть с субтитрами?
Единственный плейер, который умеет играть видео с субтитрами (из тех, что мне известны) - mVideoPlayer (даже умеет их сдвигать на указанное кол-во миллисекунд в обе стороны). Единственный тип субтитров, которые он кушает - SRT. Соответственно, в кодировке UTF-8.
Значит, нужно конвертировать субтитры из других форматов. Специальные программы есть в репозитариях, но уже на третьем файле линуксоид подумает: а нельзя ли как-то это автоматизировать? Я искал что-нибудь консольное, и не нашел.
Пришлось, как всегда, брать python в руки. Пока что соорудил конвертировщик ASS в SRT, понадобится другой формат переводить - думаю, и с ним проблем не будет. На выходе отдает файл в исходной кодировке. Вот что получилось на скорую руку (создайте файл подобный предыдущему, например subconv.py)
Теперь файл конвертирую так:
subconv.py -f FileSub.ass
и создается FileSub.srt в той-же папке.
Для конвертирования пачки использую цикл:
for i in *.ass; do subconv.py -f "$i"; done
P.S. Буквально вчера было обновление mVideoPlayer, в котором добавилась поддержка субтитров SSA и ASS. Теперь стало еще легче.
Подписаться на:
Сообщения (Atom)
