Я в интернете

РСС    Джейсон-фид

Есть автоматические трансляции в Тумблер и Же-же. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

Позднее Ctrl + ↑

Ссылки на картинки в комментариях

В e2 вики-синтаксис ((двойных скобок)) используется и для вставки ссылок, и для вставки картинок. Это решение было позаимствовано из WackoWiki. Для определения того, что пользователь имел в виду, используется «искусственный интеллект».

Например, если написать ((http://yandex.ru/ Яндекс!)), то поставится ссылка, а если ((super-image.jpg Некий альт)) — картинка.

Комментаторы иногда пытаются поставить ссылку на изображения: Вот ((http://example.com/screenshot.gif скриншот))!, а потом получают просто: «Вот !» и пишут в следующем комментарии, что ссылка не вставилась.

Ссылка не вставилась потому, что искусственный интеллект считает, что это картинка. А картинка не вставилась потому, что у комментаторов нет права вставлять картинки.

Сейчас я выпустил маленькое обновленьице, которое делает искусственный интеллект более умным. Отныне картинкой считается только локальная картинка, лежащая в папке /data/files, то есть в случае ((super-image.jpg Некий альт)) будет вставлена картинка, а в случае ((http://example.com/screenshot.gif Другой альт))! — ссылка.

Это логично и удобно. Почему раньше было по-другому — чёрт его знает.

Ну и, всегда, когда искусственный интеллект делает не то, что хотите вы, можно пользоваться однозначными синтаксисами ((img img-URL alt)), ((link link-URL text)) и даже ((imglink link-URL img-URL alt)) (картинка-ссылка).

Надеюсь, комментаторам станет проще жить.

Ужасный кернинг МТС

Когда МТС сменили стиль, все сразу заметили, что название в правом квадрате расположено криво — левее, чем надо:

Логотип МТС с официального сайта

Логотип МТС с официального сайта

Теперь по городу развесили их баннеры, рекламирующие тариф «Red», в которых используется удивительный кернинг:

Кернинг в новых баннерах МТС

Расстояние между пятёркой и нулём больше, чем между нулём и «коп.»

Они не умеют нажимать Alt+влево в фотошопе, или «кривость во всём» является элементом нового фирменного стиля?

Кстати, сокращения «руб.» и «коп.» допустимо употреблять только «в изданиях для малоподготовленного читателя», к которым баннер с рекламой нового тарифа, отношения, полагаю, не имеет. Если уж сокращать, то надо писать «50 к.». А лучше всего было написать «50 копеек».

Выбор региона на сайте «Билайна»

При всей замечательности и удобности сайта «Билайна», там есть как минимум один непростительный интерфейсный косяк. На некоторых страницах тебе предлагают выбрать твой регион:

Выбор региона

Почему я должен думать, между какими буквами расположена буква «Ч»? Выдайте все регионы одним списком! Или, ещё лучше, научитесь угадывать — как-то ведь это делает Яндекс.

А ведь интерфейс им делали крутые люди. Как же так?

Проигрыватель: Beta

Если вы ещё не скачали и не установили себе Foobar 2000, самое время сделать это. Скачать его можно прямо на главной странице официального сайта.

На данный момент там висит версия 0.9.4.1, именно она нам и нужна. Совместимость компонентов, входящих в мою «сборку», с другими версиями не то, что не гарантируется, а вообще не волнует меня совершенно.

Слово «сборка» я взял в кавычки, потому, что это не сборка в привычном смысле, когда люди закидывают в zip-архив все компоненты, которые им удалось найти, и думают, что это очень круто. Я доверяю вам, дорогие читатели, найти себе нужный мусор самим. Вот я себе, например, поставил foo_alarm — позволяет начать проигрывание в определённое время. Он, конечно, в «сборку» не входит. Кому надо — сами поставят себе такой же.

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

  • программа Foobar 2000, которая, собственно, является стержнем для компонентов, и которая умеет играть музыку и работать с плейлистами;
  • компонент foo_ui_gfx, который позволяет написать интерфейс полностью самому на языке программирования Lua;
  • скрипт birman.lua, который и реализует весь тот сказочный интерфейс, который я придумал.

Также в комплект входит набор из 5 скинов и компонент foo_notaskbar, который убирает кнопку Фубара с Панели задач.

Поскольку сегодня у нас бета, то в качестве дистрибутива я выкладываю урезанную версию, не включающую сам Фубар (именно поэтому я и предложил вам в самом начале скачать его). Теперь ((/tools/music-player/music-player.zip
скачайте дистрибутив беты)) (231 КБ).

Дистрибутив — это zip-архив, внутри которого лежит две папки. Обе их нужно закинуть в папку установленного Фубара (предположительно в C:\Program Files\foobar2000). Папка components там есть и так, но нужно просто, чтобы файлы из моей components попали в вашу. Там как раз лежат foo_ui_gfx.dll и foo_notaskbar.dll. Папка birman-interface содержит скрипт birman.lua и пять картинок в формате BMP. Это скины. Посмотрев на эти, вы, возможно, догадаетесь, как легко делать свои. А если не догадаетесь, то к финальному релизу я это, скорее всего, опишу.

После установки Фубара вам надо будет зайти в его Preferences и там, где Display, в качестве интерфейса выбрать gfx_window. После этого Фубар придётся перезапустить. По Ctrl+P (или по правой кнопке к трей-иконке, Preferences) вы можете снова попасть в Preferences. В ветке gfx_window находятся настройки интерфейса. Там можно выбрать скин и разные другие параметры. Нажимайте Reload, чтобы изменения как-то проявились. Не забудьте также назначить себе удобные горячие клавиши в ветке Keyboard Shortcuts.

Наслаждайтесь (если что-то этому мешает, пишите в комментарии).

Update: Дописал про то, что после изменения настроек gfx_window нужно нажимать Reload.

Помогите людям

В сегодняшнем «Линче» Лебедев как нельзя лучше указал на вопиющую бессмысленность заставки на сайте. Около ссылки «Пропустить заставку» на присланном скриншоте он подписал:

Помогите людям — пропустите заставку за них.

Очень, очень хорошо.

Проигрыватель: отображение информации

Для своего фантастического проигрывателя я в порядке развлечения нарисовал несколько скинов.

Пять скинов

Каждый скин по-своему раскрашивает и сам плейер, и окно плейлиста:

Плейлист

Плейлист — отдельное окно, однако при перетаскивании оно «примагничивается» к окну плейера и к краям экрана. По правой кнопке в любой части рамки окна вываливается системное меню Фубара, где можно добавить файлы в плейлист. В отличие от винамповского, оно не состоит из ста тысяч пунктов.

Формат отображения в строчках плейлиста описывается на Tagz в настройках Фубара.

В самом плейере есть два поля, в которых можно что-либо отображать — левое и правое. В левом по умолчанию отображается Исполнитель — Трек, а в правом — вся информация о времени. В настройках моего интерфейса можно, также используя Tagz, переопределить содержимое этих двух полей.

Содержимое окна плейера

Правое поле также используется для отображения «временной» информации. Например, когда вы крутите колесо мышки, там появляется строчка «Volume: 83%». Когда перестаёте — она через какое-то время исчезает. Через какое именно — можно настроить, но интерфейса для этого нет, так как это нафиг не нужно. В исходнике это называется temp_display_delay = 1500.

В режиме паузы плейер мигает обоими полями. Зачем мигать во время паузы? Кассетники мигали потому, что в режиме паузы плёнка неравномерно растягивалась, что было для неё не полезно. Нужно было как-то привлечь внимание пользователя к тому, что пауза — функция для кратковременного использования, и оставлять кассетник в таком положении не надо. На CD-проигрывателях смысла в этом стало несколько меньше. От вращения диск не изнашивается. Однако напомнить человеку, что он там крутится, всё же, не повредит. Может быть, диск крутится зря уже вторую неделю, остановите его. На компьютере смысл, кажется, и вовсе исчез. С точки зрения всей механики компьютера вообще ничего не меняется в режиме паузы. Однако есть всё-таки три момента:

  • есть некая привычка, что в режиме паузы оно должно мигать, это почему-то кажется естественным, несмотря на то, что все объективные причины, по которым это придумывалось, более не играют роли.
  • паузу я обычно нажимаю когда отвлекаюсь на что-то, чему музыка мешает, например, на телефонный звонок; мигание напомнит мне, что музыку надо включить обратно;
  • когда файл на паузе, он открыт; его нельзя переименовать, перетащить или удалить;

Поэтому, решил я, пусть будет. Но если вы решили иначе, к вашим услугам строчки: paused_blink = true и paused_blink_delay = 750.

Если в режиме паузы вы зацепились за бегунок, и начали его тащить куда-то в поисках некоторой секунды (Cue Search), то мигание на это время прекращается, чтобы вы могли смотреть на поле с секундами.

Выложу уже буквально совсем очень скоро. Осталось только заставить жесты работать и в плейлисте тоже и ещё несколько мелких багов исправить.

Проигрыватель: управление мышью

 5 мин

Создавать под каждое действие кнопку на плейере — места жалко. Да и эффективность такого управления близка к нулю. Вместо этого мы воспользуемся тем, что на мышке есть много кнопок, колесо, да её ещё и двигать можно.

В Винаме использование этого многообразия возможностей находится в зачаточном состоянии. Там можно менять громкость, вращая колёсико, а если колёсико нажать и вращать, то это работает как перемотка. Последнее, кстати, спасает от дурацкого зацеплятельного поведения бегунка, из-за которого невозможно сдвинуться на чуть-чуть назад или вперёд. Даблклик переключает винамп из маленького режима в большой. По правой кнопке дают контекстное меню. Левой кнопкой можно перемещать окно или изменять его размеры, если зацепить за правый край. Кажется, это всё.

Начнём с изменения размеров окна. Поскольку предполагается размещение окна в правом углу заголовка развёрнутого окна, то вряд ли кто-то захочет изменять его размеры, двигая туда-сюда правый край окна. Правый край раз и навсегда упирается так, чтобы оставалось место под кнопки управления окном. А вот размер мы будем менять за левый край:

Изменение размеров окна

Теперь займёмся колёсиком. Для начала, конечно, сделаем, чтобы с его помощью можно было как в Винампе менять громкость, однако шаг сделаем настраиваемым. Далее, держать колесо нажатым и при этом вращать — довольно трудно: периодически отпускаешь его, и иногда получается, что, не желая того, меняешь громкость. Сначала я повесил туда выбор трека. Чаще всего не нужно прыгать сразу на 7 треков вперёд, а нужно только либо просто на предыдущий, либо просто на следующий. А прокрутить нажатое колесо на 1 шаг совсем не трудно. Однако в таком варианте я несколько раз сбился, потому, что уже привык в Винампе к тому, что это перемотка. В результате остановился на таком варианте:

Выбор действия при нажатии и вращении колеса

Каждый сможет выбрать то, то ему удобнее. Обратите внимание, что для перемотки настраивается скорость. Можно выбрать настройку громкости, и тогда шаг тоже настраивается, причём, независимо от шага в случае вращения ненажатого колеса — это позволяет сделать, например, чтобы при нажатом колесе громкость менялась более стремительно.

Опера нам подарила гениальную комбинацию: вращение скроллинга при нажатой правой кпонке. Этой находкой мы воспользуемся для нормальной организации перемотки. Нажал правую кнопку — и крути колесо сколько душе угодно в любую сторону. Естественно, скорость перемотки сделаем настраиваемой.

Cделаем настраиваемым и даблклик:

Выбор действия по даблклику

Мне удобнее всего вешать на даблклик плей/паузу, но если вы повесите что-то другое, у вас по-прежнему есть выбор того, как именно сделать плей/паузу:

Выбор способа приостановки/продолжения воспроизведения

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

Ладно, как же нам перейти на предыдущий или следующий трек, если на нажатие-и-поворот колеса мы повесили какое-то другое действие? Очевидно, здесь мы воспользуемся жестами. (Вы не пользуетесь жестами в Опере? Тогда мы идём к вам!) Жест влево — предыдущий трек, жест вправо — следующий трек. Легко, логично, и, главное, не требует прицеливания к чему бы то ни было.

Кстати, если на вашей мыши есть кнопки Back и Forward по бокам, то вот вам ещё один способ — они работают как Prev/Next без дополнительных ухищрений.

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

Кое-какие тонкие настройки, связанные с мышью, можно также найти в исходнике интерфейса, в самых первых строчках:

  • snap_gap = 10 — за сколько пикселей до края экрана плейер будет к нему пытаться прилипнуть;
  • gesture_insensitivity = 10 — на сколько пикселей можно сдвинуть мышь с нажатой правой кнопкой, чтобы это не считалось жестом;
  • playlist_scroll_step = 1 — на сколько позиций будет скроллиться плейлист за один шаг поворота колеса;
  • o_gestures = true — жесты здесь можно вообще отключить, если они вам не нужны или, например, если вы пользуетесь каким-нибудь полномасштабным жестикулятором (вроде StrokeIt) и хотите настроить их в нём.

Подведём итоги:

Управление мышью

Пять минут привыкания — и более непонятно, как без этого жить.

В следующей заметке — про отображение, скины и плейлист.

Проигрыватель: Sneak Peek

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

В Windows есть место, которое всегда пропадает понапрасну. Можно ругать Microsoft за это, а можно воспользоваться этим промахом для своих целей. Это, конечно, правый угол заголовка окна, развёрнутого на весь экран.

Место, которое мы займём
Масштаб 1:2

Обратите внимание, у окна довольно длинный заголовок, и это разрешение 1024×768. А я вот, например, работаю в 1920×1440. То есть, места дополна.

В Винампе использовался убогий шрифт, где все буквы были заглавными, а кириллицы не было вообще. Мы будем использовать шрифт, который в Windows выбран для использования в заголовках окон. В моём случае это Segoe UI, 9, Bold.

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

Как выглядит проигрыватель

Масштаб 2:3

Бегунок для «прокрутки» трека прижат к верхнему краю плейера, поэтому имеет виртуально бесконечную высоту, а значит, в него не надо целиться. Длина полоски бегунка равняется длине плейера. В винампе бегунок был чуть больше, однако он находился в середине окна, из-за чего я постоянно промахивался по нему. Кстати, он бессмысленно тратил место.

Ещё одна мелочь: в Винампе, помимо того, что можно было ткнуть на полоску бегунка, чтобы сразу прыгнуть в нужное место, за бегунок можно было ещё и «зацепиться», чтобы перетащить его куда-то и бросить. В реальной жизни вторая фича только мешала. Тыкаешь куда-то, потом тыкаешь на 5 пикселей левее, — ничего не происходит, а ты хотел сместиться на чуточку назад. А всё потому, что Винамп думает, что ты зацепился за бегунок, просто за другую его точку. У меня эта проблема отсутствует, так как Фубар не позволяет зацепиться за бегунок; бегунок просто следует за мышкой, когда левая кнопка нажата, оказываясь своим центром точно под курсором.

Прыгание по треку — единственная вещь, которую мышью делать удобнее, чем клавиатурой. Именно поэтому единственный элемент управления на плейере — бегунок. И всё же, мышью можно не только прыгать по треку. Можно делать и всё остальное. Но об управлении мышью — в следующей заметке.

О прослушивании музыки на компьютере

 4 мин

Расскажу немного о том, как я организовываю и слушаю музыку.

Вся музыка лежит в папке F:\Music. Вообще, я не делю музыку по стилям, поскольку это деление было бы крайне непредсказуемым. Сортировка исполнителей по алфавиту меня вполне устраивает (слова «The», «A» и «DJ» в названиях исполнителей перенесены в конец). Название папки имеет вид Исполнитель — Альбом (Год), либо Исполнитель (unsorted), если в папке лежит просто свалка треков.

Выглядит это так:

Beat Hackers (unsorted)
Beatles, The — 1 (2000)
Beautiful Things Project, The — Anita Love 12’’ (2006)

Сборники всё-таки приходится делить по стилям, поскольку их названия обычно я не помню и они всё равно ни о чём не говорят. И в случае со сбониками стиль, как правило, всё-таки имеет некоторый смысл. Соответственно, сборники лежат в подпапках типа F:\Music\(Psytrance) например. Название папки со сборником имеет вид (Compilation) Лейбл — Название (Год). Если на сборнике есть какой-то выдающийся трек, то на него делается ещё один hard link в папке Исполнитель (unsorted), поэтому помнить, на каком именно сборнике лежал этот выдающийся трек, не надо.

Процедура прослушивания музыки не является настолько торжественной, чтобы я готовился к ней, специально составляя плейлист. Составление плейлиста может быть полезно, если ты хочешь включить что-то и уйти лечь на диван, книжку почитать. Но я так не делаю, я тут сижу.

Понятие «плейлист» я признаю лишь в том смысле, что я могу: а) закинуть в плейер альбом целиком; б) выбрать, какой трек будет играть после того, как доиграет текущий (enqueue). Плейлист как интерфейсный элемент мне не нужен ни для чего (кроме, пожалуй, ставшего возможным в Фубаре массового изменения тегов). А от словосочетаний типа «список плейлистов» или «альбом-лист» или «медиабиблиотека» меня вообще тошнит. Вот Проводник, выбирай что хочешь и запускай. Внятный шрифт, всё чёрным по белому, комбинации клавиш стандартные — красота. Зачем изобретать велосипед, да ещё такой громоздкий? На этот вопрос ни один из пользователей всей этой шелухи внятного ответа мне не дал.

Больше всего меня поражает вопрос: «А как без плейлиста, неужели ты после каждого трека идёшь заново в Проводник и выбираешь следующий». Звучит так, как будто «пойти в Проводник» — это что-то вроде «переплыть Атлантику на катамаране». Ребята, мне не надо ходить в проводник, вот он открыт, вот он в альт-табе, а вот он я — сижу за комьютером, никуда не убегал, и вот я нажимаю на файл — и он играет. Если вы так чем-то заняты, что вам даже некогда трек поставить, то какого чёрта вы вообще сотрясаете воздух музыкой? Выключите её. По-моему, процедура составления плейлиста требует намного больше времени, чем все добавления-файлов-по-одному вместе взятые, а главное, её эффективность близка к нулю: откуда я могу знать сейчас, что я захочу слушать через 15 минут?

От самого плейера мне нужна лишь полная управляемость с клавиатуры и отображение информации о текущем играющем треке на видном месте. Моя раскладка клавиатуры — следующая:

  1. Pause (Break) = Play/Pause (удивительно, как мало людей додумались до этого, а ведь эта кнопка вообще ничем не занята и находится в очень удобном месте, чтобы нажать на неё в любой момент).
  2. Email, WWW = Prev, Next (и «левые» кнопки могут на что-то сгодиться!).
  3. Alt+Win+стрелки = громкость и перемотка.
  4. Alt+Win+ZXCVB = Prev, Play, Play/Pause, Stop, Next (повторяет стандартный порядок кнопок Винампа).
  5. Alt+Win+T = копировать название текущего трека в буфер обмена.

Что касается отображения информации, то в винампе меня просто фантастически раздражало то, что нужно выбирать, хочешь ли ты видеть время с начала трека или до его конца. Я, чёрт возьми, хочу видеть и то и другое, а вот кнопки Play, Stop, Pause, Shuffle, Repeat, изменения, простите, цвета, выбора типа спектрума — совершенно не хочу. Зачем вы тратите мои пиксели понапрасну?

Свой интерфейс я строил именно из этих соображений: ни одного пикселя не может быть потрачено зря.

Впрочем, иногда бывает удобно всё-таки управлять плейером при помощи мыши — ну мало ли, левой рукой ты ковыряешь, скажем, в носу, и именно в этот момент решил включить следующий трек, а правая рука — на мыши. Поэтому возможность управления мышью я всё-таки сделал. Да, ну и конечно же бегунок для навигации по треку я тоже сделал, потому, что это то, чем действительно удобнее управлять с помощью мыши, чем с помощью клавиатуры. А плейлист находится в отдельном от плейера окне и включается раз в году, если вдруг понадобился.

Ранее Ctrl + ↓