March 29, 2009

 

CurTime Pek, Sing, Nsk

Beijing: http://www.timeanddate.com/worldclock/city.html?n=33
(same as PEK) Sing: http://www.timeanddate.com/worldclock/city.html?n=236
Nsk: http://www.timeanddate.com/worldclock/clockchange.html?n=375

March 12, 2009

 

Google answered why they grasp at 3rd party cookies

We actually have confirmation why Google needs to destroy our privacy by making those who use their services online enabling 3rd party cookies: yesterday they announced that they are "...making ads more interesting":
...we can make online advertising even more relevant and useful by using additional information about the websites people visit.
- so, combining this fact with grasp at and only at the 3rd party cookies when using their services (even blogger logging in now require it) one can understand that this is a public announced total recording of the browsing and interests of internet users.

Labels: , , , ,

 

windows look&feel for linux

Recently I've done some changes to my sandbox ubuntu installation (running in virtualbox) for it to look and feel like windows. This is a composition of themes and a custom changes. In case of someone needs same, later I will write some kind of manual - seems it can make life simple for windows to linux movers. Here's a screenshot:

Labels: , , , , , , ,

March 9, 2009

 

Поиск ошибок в программе

Все слышали выражение "проще переписать заново, чем исправить". Это придумали те, кто не может исправлять ошибки в программах. В чем же заключается исправление ошибки в сложном и незнакомом коде?
Я не буду рассматривать все пути (которых разумеется бесконечность, возможно, правда, счетная), а расскажу один из путей на основе своего опыта недавнего исправления ошибки. Это не будет ссылкой на формальную верефикацию программ, которая в чистом виде слишком дорога для применения по причине необходимости полной формализации системного окружения.
Первый этап - локализация ошибки. Зачастую, при сложных алгоритмах и/или при неграмотной архитектуре это самый трудоемкий этап. Что такое локализация? Это значит найти, какой код работает не так, как надо. Логичен вопрос: а как надо? Поэтому надо осознать, как должен был по задумке работать алгоритм. Это самая сложная часть, если не приходится разбираться в незнакомом и недокументированном куске программы. В этом случае приходится рисовать диаграммы и декомпозицией от большего к меньшему находить смысл всех условий и вызовов. Результатом для алгоритма будет блок-схема в терминах смысла действий (для невычислительных алгоритмов желательно описание на естественном языке, что на первой итерации упрощает анализ хода выполнения; если ошибка не будет найдена, скорее всего придется анализировать все блоки алгоритма более формально, см ниже.)
Поскольку мы рассматриваем случай, что не тот, кто написал, ищет ошибку, то можно предположить, что код работал некоторое время, а значит, появился набор данных, на котором он перестал работать так, как надо ("контрпример").
Для локализации можно сравнивать работу кода с рабочим примером по сравнению с контрпримером. Рабочий пример должен иметь минимальное отличие (неформально; чтобы ход работы алгоритма отличался минимально) от контрпримера для того, чтобы найти локализовать ошибку как можно более точно. Иногда можно локализовать ошибку просто сравнивая, какие куски кода срабатывают в каких ситуациях (ошибка в условном переходе или ошибка в самом коде).
Анализ хода выполнения выглядит так: достаточно нарисовать ход выполнения для рабочего и контрпримера в терминах построенной ранее блок-схемы (желательно на естественном языке) и сравнить полученные описания. Разница ходов выполнения и будет локализовывать с определенной детализацией ошибку.
В случае, если в обоих вариантах выполняется один и тот же код, значит ошибка носит "вычислительный характер". В этом случае анализ должен носить более формальный характер. Для этого можно разбивать алгоритм на блоки (функции) и проверять такие характеристики, как область определения и область значений каждого блока; граничные значения и поведение на них, устойчивость и другие. Для локализации ошибки нужно иметь означивания переменных для каждого стыка выделенных блоков, сравнить их с найденными значениями и это может локализовать блок (для которого уже можно повторить процедуру).
Исправление ошибки, в особенности в модуле, от которого зависят другие модули, всегда является отдельной непростой задачей, поскольку требуется обеспечить работоспособность этих модулей. Проблема обостряется, когда нет возможности легко (читай: дешево) внести изменения в зависящие модули. Но об этом позже.

Labels: , , ,

March 7, 2009

 

Mobile books

This is a small observation about mobile books.
Seems that the the not all geeks who has PDA use the advnced ebook readers or file formats (such as fb2 or pdf) - they use most simple and natural format for books: TXT :-) Maybe this is not common, but this is very natural and simple.
PS This is a single observation that does not pretend to be a representative or to emphasize a trend.

Labels: , , ,

March 5, 2009

 

Privacy: Google and 3rd party cookies

Discovered several days ago that in order to use GMail Google requires that the 3rd party cookies is enabled in browser! As often said, it hurts the online provacy, but why does google require this? The answer is very simple: to track you by its adsense/doubleclick engines! They can track your path in web only if you enable the 3rd party cookies.
What to do to save your privacy?
1) Use different browsers for web browsing and working in GMail (i.e. Opera for browsing/Firefox for GMail)
2) Use "Enable 3rd party Cookies" setting for all these sites: gmail.com, google.com, google.*/, *.google.*. (You can do this in Opera AFAIK). The default setting for Cookies should be "Accept cookies only from site I visit" (=no 3rd party cookies).
Take care!
PS Do you believe in "Don't be evil" anymore?

Labels: , , , ,

This page is powered by Blogger. Isn't yours?