software simian's typewritings

правильные имена полей для формы оплаты кредиткой

comments: 0

с удивлением обнаружил RFC 3106, которая среди прочего предлагает унифицировать имена полей в формах, в которые мы вводим данные кредитных карт. Нечто похожее существует в спеке openid: поле для идентификатора в ней просят всегда называть "openid_identifier". А здесь имена типа "Ecom_Payment_Card_Number".

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

интересно, как всё-таки нужно знакомиться со стандартами, чтобы не упускать такие интересные вещи? Неужели просто читать все RFC подряд, начиная с самых свежих?

двуязычная русско-английская проверка правописания в ubuntu

comments: 0

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

  1. удалить aspell, myspell, ispell со словарями (но не библиотеками, от которых могут зависеть многие другие программы) — что-то из этого может ставиться по умолчанию, и загромождать список словарей
  2. поставить libhunspell
  3. скачать «Орфографический словарь для myspell-hunspell: английский+русский (с ё)»
  4. переименовать словарь в enru.zip и положить его в $HOME/.opera/dictionaries
  5. перезапустить оперу, в многострочном поле ввода в контекстном меню выбрать Dictionaries → «English-Русский (с ё)»
  6. создать папку $HOME/.config/enchant/myspell, в которую распаковать словарь (в новой убунте ещё и переименовать из enru.* в используемую локаль, например, en_US.*)
  7. перезапустить пиджин (и гажим)

если подробнее, то разных спеллчекеров в линуксе уже штук восемь. Кто-то справедливо решил, что так жить нельзя, и сделал для них общую обёртку Enchant. Именно её использует GtkSpell, которой пользуются Pidgin и Gajim. Но Pidgin ещё не умеет выбирать словарь по умолчанию, поэтому должен остаться только один словарь — двуязычный. Именно поэтому удаляются aspell, ispell и myspell (и другие установленные спеллчекеры) вместе со своими словарями. libhunspell, наверное, нужен для того, чтобы Enchant мог прочитать формат этого словаря.

история самого словаря тоже довольно любопытная : ) Началось всё с Александра Лебедева. Его словарь был использован в качестве основы для словаря OpenOffice. А уже из него был изготовлен двуязычный (бинарный?) словарь.

а раньше склеивать словари приходилось вручную

квоты на количество данных в localStorage

, comments: 0

сейчас большинство браузеров уже поддерживают localStorage, и можно довольно смело его использовать для хранения данных на клиенте. Но каков размер этого хранилища? Спецификация говорит про «случайно выбранное ограничение в 5 мегабайт». Но не всё так просто.

большинство приложений будет хранить не байты, а символы. Абсолютное большинство символов даже в utf-8 занимает два байта. Некоторые реализации используют utf-16, которая использует два байта даже для ascii-символов.

каждый производитель браузеров принял своё решение. Chrome ограничивает размер базы именно пятью мегабайтами. Firefox позволяет хранить около 5 миллионов символов. Explorer — чуть меньше 5 миллионов. И только Opera уже сейчас при достижении предела просто предлагает пользователю выделить побольше места для приложения — вплоть до всего диска!

скорее всего, эти ограничения будут меняться со временем. Чтобы в любой момент можно было легко проверить актуальные ограничения, я сделал тест квоты на количество данных в localStorage.

javascript ide

, , comments: 6

недавно вышла IDE WebStorm специально для веб-разработчиков. Я скачал её на попробовать, впечатлился, и даже подумал купить её. Но как же обойтись без небольшого исследования перед приобретением важного рабочего инструмента? : )

последний раз я сравнивал IDE пару лет назад, и не нашёл ничего достаточно хорошего. Все они приблизительно одинаково не подходили под мои требования. В итоге я остановился на Komodo Edit, который хотя бы тормозит меньше, чем остальные. Но порой за два года многое меняется. Итак, вот мои претенденты.

Eclipse — классная среда. В ней очень умно и удобно сделано почти всё. Собственно, именно её я использовал, когда работал преимущественно не с js. Однако поддержка яваскрипта в ней всегда хромала. Под эклипс есть несколько плагинов, поддерживающих яваскрипт, и все они почти блокнотного уровня. JSEclipse выкуплен и убит Адобом. Spket ничем особенным себя не проявляет. WebTools, хотя и сменил версию с 1.5 на 3, по-прежнему примитивен.

Aptana я пущу отдельным абзацем, хотя это тоже перелицованный эклипс. Хвалят её, конечно, и даже тормозить она перестала (странно было: эклипс не тормозит, а аптана еле шевелится). Но в плане яваскрипта ушла недалеко.

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

Visual Studio я не рассматривал по понятным причинам ; )

в чём же обломались все перечисленные IDE? В примитиве. Go to definition работает, только если функция определена в этом же файле. Это смешно для любого хоть сколько-то крупного проекта. Даже Komodo иногда справлялся с этой задачей.

в общем, пока что я попробую остановиться на WebStorm, благо демка у него на 45 дней.

да, на всякий случай скажу, что между набором простых утилит и gui я выбираю gui

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

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

кстати, мой любимчик — highlight selected. Поставил курсор на слово, и оно подсветилось во всём тексте. Для этого нужно нажать ноль клавиш.

удобная работа с классами

, , comments: 2

в спеке html5 есть удобный интерфейс classList для работы с классами (и другими подобными строками из разделённых пробелами слов). Естественно, он базируется на том, что яваскрипт-библиотеки давно уже сделали удобным и привычным, поэтому переходник сделать очень легко в качестве развлечения на пять минут:

Element.addMethods({
  getClassList: function(element) {
    element = $(element);
    return element.classList || (element.classList = {
      has:    attach('has'),
      add:    attach('add'),
      remove: attach('remove'),
      toggle: attach('toggle')
    });
    function attach(name) {
      return element[name + 'ClassName'].bind(element);
    }
  }
});

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

  item:   function(index){ return element.classNames()[index]; },
  length: function(){ return element.classNames().length; },

в целом, конечно, это очень похоже на переходник к не менее удобному dataset, который я делал пару лет назад.