Час із різних часових поясів з допомогою GNU date

Сьогодні о 2-й годині дня за Новим Йорком NASA розпочнуть трансляцію, присвячену польоту астероїда 2012 DA14 біля нашої планети. На сайті NASA подано час «2 p.m. EST». Як дізнатись, яка це буде година в тому місці планети, де перебуваєте ви?

У кожній системі GNU/Linux (а також инших системах, якщо додатково заінсталювати) є команда date. Якщо просто відкрити термінал і запустити її, вона видасть вам поточну дату, день тижня, час і часовий пояс. Але це далеко не все, що вона вміє робити.

Продовжити читання «Час із різних часових поясів з допомогою GNU date»

Git annex: розподілене зберігання великих файлів

Хочу познайомити вас із дивовижним знаряддям на ім’я git-annex. Зацитую український Вікіпідручник програми:

«Уявімо, що у вас є переносний компутор з невеликим вінчестером. Також у вас є стаціонарний компутор, на який і з якого ви можете пересувати через мережу файли. Ви працюєте, і в певний момент вам бракне місця на переносному компуторі — й ви пересуваєте частину файлів на стаціонарний. А ще частину — на зовнішній вінчестер. І ви опиняєтесь в становищі, коли ваші дані розпорошені між трьома різними пристроями.

Чи не чудово було б, якби в кожен такий момент ви могли продовжувати бачити перелік усіх ваших файлів, а також мали можливість легко отримати будь-який з них, не шукаючи перед тим півдня, на якому пристрої ви його розмістили? І якщо вам треба «розчистити» місце для отримання інших файлів, бути певними, що ви не вилучите файли, яких більше ніде немає? І ще: якщо ви змінюєте, переміщуєте чи перейменовуєте файли на одному з ваших пристроїв, щоб ці самі зміни автоматично відтворювались і на решті ваших пристроїв, на які ви скопіювали свої файли? Ви, мабуть, довго мріяли про таку можливість, чи не так?»

Git-annex забезпечує вам такі можливості. Огляд та приклади використання програми можна прочитати у Вікіпідручнику (який можна також редагувати й доповнювати), тому дублювати їх тут немає сенсу. Скажу тільки, що якщо система керування версіями git є дуже вдалим інструментом для роботи з кодом програм та текстовими документами, то git-annex (який, як ви, мабуть, здогадались, працює на основі git) — настільки ж вдалим знаряддям для синхронізації та розподіленого зберігання великих об’ємів даних між різними присторями. Git-annex, на відміну від простого git, не зберігає повної історії кожного файлу, завдяки чому добре пасує до зберігання великих бінарних файлів, як то звукові чи відео-записи. Крім того, програма дає можливість мати в репозиторії тільки частину повного набору його файлів, а решту зберігати в инших репозиторіях-клонах.

Тобто зберігання самих даних відділене від зберігання структури тек та історії дій. При тім, git-annex дбає, щоб кожен файл зберігався хоча б в одному з репозиторіїв-клонів. Таким чином ваші дані є упорядкованими незалежно від того, на скількох пристроях вони зберігаються.

Якщо вас зацікавила програма, її Вікіпідручник допоможе ознайомитись із нею глибше.

Чому слід використовувати ogg (vorbis) замість mp3

В тому, щоб попрощатись з mp3, є дві потреби, одна етична, друга — практична.

Почнемо з другої.

Один пан зробив гарний експеримент: він закодував звуковий файл різними форматами на кількох щаблях якости так, щоб на кожному зі щаблів отримати найбільш подібні розміри файлу в різних форматах. Ми підемо трохи далі й спробуємо з допомогою програми Audacity порівняти результати, які він отримав для mp3 та ogg. Критерієм слугуватиме аналіз звукових частот, наявних у файлі. Для цього ми скористаємось функцією «Побудувати графік спектру». Хоча такий аналіз показує далеко не все, він може бути гарною підказкою, якщо ви хочете перевірити, наскільки сильно змінився ваш файл після збереження з тим чи иншим параметром стиснення (майте на увазі: після закодування Audacity продовжує працювати з нестисненим оригіналом, тому для порівняння якости ви мусите окремо відкрити ваш закодований файл).

Продовжити читання «Чому слід використовувати ogg (vorbis) замість mp3»

git та українські назви файлів

Якщо git status показує українські назви файлів як «"\320\277\321..."», спробуйте запустити комадну git config --global core.quotepath off. (Запозичено з http://stackoverflow.com/a/5855213/1142039).

Зберігання паролів у Emacs

Ми реєструємось на безлічі інтернетних ресурсів, і бажано на кожному із них використовувати пароль, який ви більше ніде не використовуєте. Тут ми опишемо як можна організувати зручну й незалежну від вебної переглядалки базу з паролями в простому текстовому файлі, зашифрованому через GPG, і зручно користуватись нею в текстовому редакторі GNU Emacs.

Для цього треба:

  1. Мати або створити власну пару ключів GPG;
  2. Налаштувати зберігання записів з допомогою функції forms-mode;
  3. Організувати собі функції-помічники, які б дозволили легко здійснювати пошук у базі і додавати до неї записи.

Це ми й спробуємо зробити.

Продовжити читання «Зберігання паролів у Emacs»

Blender: озеро

Хтось (Jonathan Esquivel) зробив дуже гарний, при тому не задовгий (12хв) швидкоплин (timelapse) створення озера у Blender:

Джерело: blendernation.com

ffmpeg: стрибки у входовому файлі

Якщо ви, так само як і я чи цей користувач, скориставшись параметром -ss у ffmpeg, довго чекаєте, поки програма стрибне у потрібне місце, або при тому отримуєте від неї помилки (чи навіть, як у мене, вона в певний момент перелазить через оперативку й помирає), поставте -ss перед -i.

Помилка-індикатор:

Buffering several frames is not supported. Please
consume all available frames before adding a new one.

LilyPond: Нотоносець без ліній

У LilyPond є можливість друкувати ноти на невидимому нотному стані. Таке може стати в пригоді, наприклад, в навчальному процесі чи алеаторичній музиці. Ось як це робиться:

\override Staff.StaffSymbol #'transparent = ##t

Цю команду слід додати прямо перед нотами. Якщо ж Вам потрібно щоб невидимими стали й тактові риски, можете скористатись додатково ще такою командою:

\override Staff.BarLine #'transparent = ##t

Щоб відключити показ номерів тактів, слід додати блок

\layout {
  \context {
	\Score
	\remove "Bar_number_engraver"
  }
}

поза будь-якими блоками \score, або у якомусь із них, якщо потрібно це застосувати лише до одного розділу твору.

Більше про приховання окремих об’єктів читайте тут (англ.).

Узгодження множини з числом (PHP)

Недавно треба було зробити на PHP зворотній лічильник днів до події. В таких випадках виникає потреба узгодити число днів, що залишились, з іменником «день».

В сучасній українській мові є три способи узгодження з множиною:

  • для всіх чисел, що закінчуються на 1, за винятком 11, маємо іменник в однині («день»)
  • для тих, що закінчуються на 2, 3, 4, за винятком 12, 13, 14, маємо множину в назиному відмінку («дні»)
  • для решти — множина в родовому відмінку («днів»)

Окрім того, в мові існувала ще двоїна, але тут ми її обійдемо. Словом, ось код:

switch ($daysleft % 10) { // Це не я придумав
case 1:
	if ($daysleft != 11) {
		$output .= ' день';
		break;
	}
case 2:
case 3:
case 4:
	if (($daysleft < 10) || ($daysleft > 20)) {
		$output .= ' дні';
		break;
	}
default:
	$output .= ' днів';
}

Спільні права на файли (для *nix)

Нерідко виникає становище, коли одним компутором користується кілька людей. При тому значна частина даних у них також може бути спільною, як то, наприклад, фотоархів. У Unix-подібних системах, зазвичай, при створенні файл отримує схему прав доступу, яка дозволяє запис лише власнику файлу. Це стосується і тек.

Якщо ж більшість Ваших даних є спільними, можливо, Вам буде зручніше, щоб створювані Вами файли (й теки) були одразу доступні до запису й иншими користувачами з групи, до якої Ви належите.

УВАГА: Існує зручна альтернатива до описаного тут способу. Дивіться перші два відгуки.

Для цього потрібно подбати про кілька речей:

  • аби усі «користувачі-друзі» належали до спільної групи у системі;
  • щоб усі спільні файли належали цій групі;
  • щоб файли при створенні одразу були з доступом для запису групою

Отож, спробуємо це організувати.

Продовжити читання «Спільні права на файли (для *nix)»