function color_brightness(red, green, blue) {
return 0.299 * red + 0.587 * green + 0.114 * blue;
}
function color_is_good(bg_red, bg_green, bg_blue,
fg_red, fg_green, fg_blue) {
var brightness_diff = Math.abs(
color_brightness(bg_red, bg_green, bg_blue) -
color_brightness(fg_red, fg_green, fg_blue));
var color_dirr =
Math.abs(bg_red - fg_red) +
Math.abs(bg_green - fg_green) +
Math.abs(bg_blue - fg_blue);
return (brightness_diff > 0.490 && color_dirr > 1.961);
}
Мнения, высказанные здесь, отражают мои личные взгляды. И мнения и взгляды со временем могут меняться.
понедельник, 19 июля 2010 г.
О сочетаниях цветов
Код на jscript для проверки сочетания цветов на ``читабельность'':
четверг, 1 июля 2010 г.
Задача на "правильную" запись
Дано множество:-\not{O})
и определена функция:
\quad|\quad{h\in{H}}\wedge{i\in{h}}\}\rightarrow\mathbb{R})
Определим следующее множество:
\geq\pi(j,h_2)\})
Для того, чтобы на этом множестве выполнялось следующее условие:

необходимо и достаточно, чтобы
\geq\pi(j,h_2))
Предполагается, что если эти утверждения переписать "правильно", то можно увидеть что-то!
и определена функция:
Определим следующее множество:
Для того, чтобы на этом множестве выполнялось следующее условие:
необходимо и достаточно, чтобы
Предполагается, что если эти утверждения переписать "правильно", то можно увидеть что-то!
пятница, 18 июня 2010 г.
Установка vim в ubuntu
После установки следующих пакетов у меня заработал vim в ubuntu:
vim vim-scripts vim-doc vim-latexsuite vim-gui-common vim-gnome
vim vim-scripts vim-doc vim-latexsuite vim-gui-common vim-gnome
Классификация нестандартных ситуаций
1. Является ли ситуация допустимой?
Обнаружение недопустимой ситуации, в понимании автора, говорит об ошибках целостности программы или данных. Как правило такие ошибки означают нарушение интерфейса между отдельными частями программы, реже -- об аппаратных проблемах.
Пример, в нормальных условиях следующее предположение верно:
assert( 2+2 == 4 );
Другой пример, если подпрограмма, считающая для любой квадратной матрицы обратную, получит на вход сингулярную матрицу, такая ситуация будет нестандартной, но вполне ожидаемой (допустимой).
2. Возможен ли преодолеть нестандартную ситуацию?
Для некоторых нестандартных ситуаций возможен возврат к нормальной работе программы. Одна и та же нестандартная ситуация может быть как преодолимой, так и непреодолимой на разных уровнях абстракции.
Пример. При работе с контроллером гибких дисков через BIOS существует правило: если операция ввода/вывода завершилась с ошибкой, то прежде чем сообщать об ошибке, нужно сделать ещё две попытки выполнить эту же операцию. Если ошибка будет однократной, то её можно считать преодолимой. Если эта же ошибка повторится много раз, то на уровне конкретного вызова BIOS она непреодолима.
Ещё пример, если на уровне операций с файлами программа обнаружила непреодолимую ошибку, то на другом уровне программа может отключить функцию работы с файлами и продолжить работу.
Если нестандартная ситуация преодолима, то её обработчик должен восстанавливать нормальную работу программы. Если ситуация непреодолима, то, как правило, обработчик должен вернуть программу к состоянию предшествующему последней операции (переведшей к ошибке) и передаёт обработку состояния следующему уровню абстракции.
Обнаружение недопустимой ситуации, в понимании автора, говорит об ошибках целостности программы или данных. Как правило такие ошибки означают нарушение интерфейса между отдельными частями программы, реже -- об аппаратных проблемах.
Пример, в нормальных условиях следующее предположение верно:
assert( 2+2 == 4 );
Другой пример, если подпрограмма, считающая для любой квадратной матрицы обратную, получит на вход сингулярную матрицу, такая ситуация будет нестандартной, но вполне ожидаемой (допустимой).
2. Возможен ли преодолеть нестандартную ситуацию?
Для некоторых нестандартных ситуаций возможен возврат к нормальной работе программы. Одна и та же нестандартная ситуация может быть как преодолимой, так и непреодолимой на разных уровнях абстракции.
Пример. При работе с контроллером гибких дисков через BIOS существует правило: если операция ввода/вывода завершилась с ошибкой, то прежде чем сообщать об ошибке, нужно сделать ещё две попытки выполнить эту же операцию. Если ошибка будет однократной, то её можно считать преодолимой. Если эта же ошибка повторится много раз, то на уровне конкретного вызова BIOS она непреодолима.
Ещё пример, если на уровне операций с файлами программа обнаружила непреодолимую ошибку, то на другом уровне программа может отключить функцию работы с файлами и продолжить работу.
Если нестандартная ситуация преодолима, то её обработчик должен восстанавливать нормальную работу программы. Если ситуация непреодолима, то, как правило, обработчик должен вернуть программу к состоянию предшествующему последней операции (переведшей к ошибке) и передаёт обработку состояния следующему уровню абстракции.
четверг, 26 ноября 2009 г.
Manpages для системных вызовов
Потребовалась документация для системных вызовов в linux. Вспомнил, что встречал подходящую коллекцию man-страниц. Соответствующий пакет: manpages-dev
среда, 25 ноября 2009 г.
Отключение русскоязычного интерфейса в git-gui
Сложности в отображении текста для Linux не в новинку. Видимо чтобы в приложении корректно отображался, например, русский язык, нужно учесть множество моментов. И тот или иной момент всегда упускают.
Так оказалось, что в ubuntu 9.10 имеются проблемы с отображением русских букв в интерфейсе git-gui. Поскольку для меня английский язык является техническим, и соответственно англоязычный интерфейс во многих случаях оказывается более удобным, то выбор пути решения оказался очевиден -- отключить русскоязычный интерфейс.
Самым простым способом сделать это, оказалось удалить файл:
Буду благодарен, если кто-нибудь подскажет более верный путь.
UPD: Для gitk изменения аналогичные.
Так оказалось, что в ubuntu 9.10 имеются проблемы с отображением русских букв в интерфейсе git-gui. Поскольку для меня английский язык является техническим, и соответственно англоязычный интерфейс во многих случаях оказывается более удобным, то выбор пути решения оказался очевиден -- отключить русскоязычный интерфейс.
Самым простым способом сделать это, оказалось удалить файл:
/usr/share/git-gui/lib/msgs/ru.msg
Буду благодарен, если кто-нибудь подскажет более верный путь.
UPD: Для gitk изменения аналогичные.
пятница, 20 ноября 2009 г.
Покорение GnuPlot
Возникла задача изобразить график с информацией о работе транспортного протокола. Вначале я хотел воспользоваться привычным AdvanceGrapher'ом, но у него обнаружилось ограничение на размер исходных данных. Поэтому пришлось искать альтернативу.
Потратив некоторое время на поиски и изучение, я пришёл к следующему скрипту для GnuPlot который делает почти то, что мне нужно:
Потратив некоторое время на поиски и изучение, я пришёл к следующему скрипту для GnuPlot который делает почти то, что мне нужно:
set sample 1000
set output "output.svg"
set terminal svg size 800,600 font "Helvetica, 10"
set xtics axis 5 scale 0.5
set ytics axis 10 scale 0.5
set mxtics 2
set mytics 2
set key below nobox vertical
set border 3
plot \
"bw.txt" using ($1):($2 / 1024) \
title 'bandwidth (KB)' \
with lines \
lc rgbcolor 'dark-green', \
"mw.txt" using ($1):($2 / 1024) \
title 'max_window (KB)' \
with lines \
lc rgbcolor 'dark-blue', \
"rto.txt" using ($1):($2 * 10) \
title 'rtt_timout (0.1s)' \
with lines \
lc rgbcolor 'red', \
"tout.txt" using ($1):(110) \
title 'timeouts' \
with impulses \
lc rgbcolor 'light-gray'
Подписаться на:
Сообщения (Atom)