Вопрос геймерам. Подбираете ли вы IRL монетки, валяющиеся под ногами?

Вопрос геймерам. Подбираете ли вы IRL монетки, валяющиеся под ногами?

вторник, 15 февраля 2011 г.

Чисто программерское

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

Вот пара примеров.

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

И ещё. Не далее, как вчера, столкнулся с задачей пройтись по некоей таблице на базе MSSQL c целью поиска и замены фрагментов текста в поле типа ntext. Поле длинное и в nvarchar его не сконвертировать, и функция replace тоже не работает. А из SQL-процедуры выходить не хочется. Что делать? Есть команда readtext. Но она только выдаёт текст клиенту (если работать с консоли - выводит на консоль). Сохранить текст в переменную и проверить его нельзя. И тут-то помогает большая вариативность T-SQL! Нужно всего вызывать readtext внутри ещё одной процедуры, а результат этой подпроцедуры вставлять во временную таблицу, где его можно посмотреть и проверить.

3 комментария:

  1. Мне нравится твой блог! Зафоловил

    ОтветитьУдалить
  2. а чем не устраивает описанный тут подход?
    http://blogs.x2line.com/al/archive/2008/05/03/3417.aspx

    ОтветитьУдалить
  3. Не устраивает тем, что вхождений в одной строке может быть несколько. Если бы в patindex, подобно charindex был третий аргумент - с какой позиции искать - так изощряться не пришлось бы.

    ОтветитьУдалить