Позднее Ctrl + ↑

Будущее e2 и УТФ-8

Я очень хочу, чтобы e2 перешёл уже, наконец, на УТФ-8 (сейчас он использует Виндоус-1251). При этом я в какой-то степени ощущаю себя разработчиком Виндоуса: мне нужно не просто сделать продукт, который был бы хорош сам по себе; мне нужно построить его на имеющейся довольно большой базе кода, научить автообновляться с предыдущей версии и заставить работать на имеющихся инсталляциях.

Идеально было бы сделать так, чтобы очередной e2 просто во время обновления сконвертировал всю базу и всё остальное в УТФ-8 так, чтобы никто не заметил, но зато начали работать любые символы.

К сожалению, я довольно плохо разбираюсь во взаимоотношениях MySQL’я с кодировками, а более всего меня бесит сам факт существования таких взаимоотношений: казалось бы, ну ты же база данных, вот и храни байты и вообще не думай о том, что на планете существуют кодировки, а если мне нужно будет регистронезависимый поиск или ещё что-нибудь такое, я тебе во время запроса напишу, как относиться к этим байтам.

Но почему-то всё очень сложно.

Есть идея пока оставить конвертацию старых данных и хотя бы просто написать движок, который при инсталляциях с нуля работал бы на УТФ-8. Можно даже не делать автообновления, а разрешить только восстановление из бекапа, в ходе которого уже писать всё в базу таким, как нужно. Но что делать с кодом? Если его сконвертить в УТФ-8 (что, конечно, очень просто), то уже после этого он, думаю, может сломаться из-за использования однобайтных функций работы со строками. Как можно безболезненно перейти на многобайтные функции? Существуют ли многобайтные версии всех однобайтных функций? Насколько это всё надёжно работает?

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

Раскладка 2.0: гравис-тильда на Маке

На Маке раскладка 2.0 будет основана на стандартном для Пи-си расположении знаков препинания, потому, что эпловское совершенно неудобоваримо. Однако даже стандартная для Леопарда раскладка Russian — PC по загадочным причинам оставляет на кнопке, находящейся слева от единицы (по-русски там „ё“), стандартные для Мака знак параграфа и плюс-минус (если с Шифтом). Мне, ясное дело, привычнее, чтобы на ней были гравис и тильда, которые на Маке живут на кнопке между Шифтом и Z.

Собственно, я не знаю, какое решение будет правильным: оставить на Маке параграф на своём месте, а тильду на своём или всё-таки добиться полного единообразия раскладок? Все остальные кнопки раскладка Russian — PC расставляет верно.

Кстати, в раскладке таки будут стрелки и ещё бесконечность на восьмёрке.

Новая фотка!

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

Раз уж такое дело: поиск в колонке слева стал аккуратнее и переехал повыше (типа, «смотрите, ребята: поиск!»). А на лупу если кликнуть, то курсор прыгнет в поле ввода и выделит весь текст, как в Фотошопе. Впрочем, всё это не отменяет хренового качества самого поиска.

Ещё перед списком тегов под заметками теперь не написано «Теги:». Ну и вообще как-то всё стало почище-поаккуратнее.

Номер машины

Сфотографировано ещё прошлым летом, сейчас нашёл, перенося фотографии на новый компьютер:

Раскладка 2.0: согласование

А если так? Все будут довольны?

Раскладка 2.0: согласование

Красное — новое или изменённое. На жёлтом фоне — комбинирующиеся акценты.

Ещё цитаты из Коломнина

Вот ещё пара цитат из книги Коломнина. Про набор знаков препинания:

Нѣкоторые типографы отдѣляютъ знаки — вопросительный (?), восклицательный (!), двоеточiе и точку съ запятой — двухъ-пунктовою шпацiею, а точки и запятыя не отдѣляютъ. Нѣтъ никакихъ основанiй слѣдовать такого рода набору знаковъ препинанiя.

Про наборщиков-неучей:

Отсюда ясно: насколько важно для наборщика образованiе. Изъ недоучки, едва умѣющаго разбирать грамоту, затрудняющагося надъ каждым мало-мальски «мудреным» (для него) словомъ, незнакомаго съ правилами правописанiя, никогда не выйдетъ хорошаго работника. Такой наборщикъ — сущая мука для корректоровъ, заработокъ-же его — ничтожный и невѣрный, такъ какъ плохая работа влечетъ за собою нерѣдко удаленiе изъ типографiи.

Как починить мышь на Маке

Если кто не знает, в чём проблема с мышью на Маке (например, не читал мою давнюю заметку про три беды МакОСа), то суть её состоит в том, что кривая ускорения у Эплов слишком кривая. Когда мышь по столу двигаешь медленно, по экрану она ползёт совсем как черепаха, но стоит её начать двигать хоть чуть-чуть быстрее — и ты уже на другом конце экрана. См. также mac mouse acceleration на Гугле.

Кстати, чем больше монитор, тем сильнее ощущается проблема.

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

  • поставить программу MouseFix (iMouseFix), USBOverdrive или SteerMouse и всё будет хорошо (все они лишь изменяют коэффициенты в эпловской кривой, сохраняя её дебильную форму; последние две ещё и требуют перезапуска системы, и выглядят как говно);
  • поправить какой-то .plist (то же самое, там только коэффициент);
  • поставить фирменные драйверы от мыши: они могут разрешать более тонкую настройку (логитековский Контроль-центр не является драйвером, а просто даёт навешивать всякие фичи на боковые кнопки, что можно намного удобнее делать и встроенными средствами);
  • купить микрософтовскую мышь: её драйверы сами управляют перемещением указателя в обход системы и делают его правильным (покупать мышь ради решения сугубо софтверной проблемы — явный левак);
  • просто использовать микрософтовские драйверы: они заработают с любой мышкой (с моей не заработали, точнее, не повлияли на её поведение);
  • выкинуть мышь, перейти на планшет (это интересно в принципе, но не решает обозначенной проблемы);

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

Кривая ускорения мыши в Виндоусе

В итоге я бросил поиски решения «в один клик» и стал копать глубже. Поисковый запрос edit mouse acceleration curve привёл меня к чудесной программе ControllerMate, которая умеет делать с любыми устройствами ввода и вывода такие вещи, что закачаешься. Например, я в порядке эксперимента заставил её всякий раз, когда я нажимаю на правую кнопку мыши, мигать трижды лампочкой Капс-лока на клавиатуре. Но нам она нужна для другого: в ней есть редактор кривой ускорения мыши:

Редактируем кривую ускорения в Контроллермейте

Бледно-голубыми нарисованы системные кривые с разными коэффициентами — только здесь я глазами увидел, насколько же они бесчеловечны. Чтобы повторить кривую Микрософта потребовалось две минуты, на подбор удобных коэффициентов (с нажатыми Command/Option можно масштабировать всю кривую целиком по одной из осей) — ещё три.

И после этого наступило счастье.

После трёх дней ощущения себя на этом компьютере в гостях я, наконец-то, дома.

Делаем Опере нормальную иконку

В Виндоусе иконка Оперы не напрягала, а вот на Маке она смотрится жутко:

Жуткая иконка Оперы на Маке

Её нужно поменять. Удивительно, но многие пользователи Маков даже не знают, что приложения, которые с расширением .app — это не файлы, а папки, а уже внутри них лежат исполняемые файлы приложений наряду с кучей всякого барахла. Чтобы открыть .app-папку (вместо запуска соответствующего приложения) у неё по правой кнопке есть пункт Show Package Contents.

Иконка Оперы находится в файле /Applications/Opera.app/opera.icns; этот файл нужно заменить хорошим. Пять секунд работы, и всё становится прекрасно:

Клёвая иконка Оперы на Маке)

Промываем мозги Айтюнсу

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

В качестве источника информации о музыке Айтюнс использует только теги в МП3-файлах, игнорируя название последних. У меня оказалось довольно много альбомов, в тегах которых номеров песен нет — Айтюнс располагал песни в каком-то левом порядке. После добавления нескольких альбомов я задолбался прописывать вручную номера треков.

tell application "iTunes"
  if selection is not {} then
    set heap to a reference to selection
    repeat with song in heap
      set filename to location of song as text
      -- убиваем .mp3 в конце названия файла:  
      set AppleScript's text item delimiters to "."
      set filename to first text item of filename
      -- убиваем путь (он через двоеточия там) в начале названия файла:  
      set AppleScript's text item delimiters to ":"
      set filename to last text item of filename
      -- надеемся, что первое «слово» в названии файла — это номер трека
      set track number of song to first word of filename
    end repeat
  end if
end tell

Эплскрипт — смешной язык «программирования», пытающийся быть просто английским языком, который позволяет общаться с любыми приложениями на любую интересную тебе тему. Это мой первый (и единственный) скрипт на этом языке. Заработал спустя около получаса с того момента, как мне пришло в голову, что, возможно, мою проблему удастся решить именно с его помощью. На написание самого скрипта ушло несколько минут.

Теперь если при добавлении альбома оказалось, что у него нет номеров треков, то я просто выделяю все треки, запускаю этот скрипт, и номера проставляются.

Хороший компьютер.

Ранее Ctrl + ↓