Home
A Day In The Life
of Soloviewoff

Advertisement


Soloviewoff
Date: 2009-08-17 22:55
Subject: Рабочее
Security: Public
Tags:computers

Мне одному кажется, что XML Schema делали мизантропы? На редкость неинтуитивная вещь - каждый раз как в первый раз.

Вроде нашел разумную альтернативу - Relax NG. Выглядит гораздо более привлекательно на первый и второй взгляды:

<element name="book" xmlns="http://relaxng.org/ns/structure/1.0">
   <oneOrMore>
      <element name="page">
         <text/>
      </element>
   </oneOrMore>
</element>
Компактная не-XML форма представления совсем нравится - весьма похоже на EBNF:
start = element book { page+ }
page = element page { text }
Очень элегантно, если сравнивать с *.xsd вакханалией. И libxml поддерживает (правда, только XML формат, не компактный). Может, подводные камни есть?

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2009-04-26 22:25
Subject: Горячие клавиши
Security: Public
Tags:computers

Ненавижу Mozilla Thunderbird... В общем-то неплохая программа, но повесить на CTRL-Q функцию Quit могли только полные отморозки. Подсказка: в Microsoft Outlook (и Outlook Express, я подозреваю) эта комбинация значит "Mark Message As Read"...

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2009-02-24 23:27
Subject: О мета-рекурсивности
Security: Public
Tags:computers

По сравнению с CVS, Subversion сделал большой шаг вперед, добавив возможность добавлять к каждому файлу/каталогу некоторые метаданные - properties (RTFM propget/propput/propedit/proplist). Использование их широко донельзя: от отслеживания владельца определенной части продуктового кода до написания автоматизированных тулов типа svnmerge, которые используют properties для хранения своей вспомогательной информации.

Забавно то, что во время использования сегодня svnmerge я в некотором сценарии получил ошибку о конфликте при изменении property, используемого данным тулом. Пошел читать интернет, нашел описание этой проблемы, и там помимо всего прочего было такое высказывание:

-        ### FIXME: Unfortunately, we're getting a conflict for the
-        ### merge info property in the following svnmerge invocation
-        ### due to Subversion's (reasonable) lack of property value
-        ### merging (which isn't possible without knowing a property's
-        ### MIME type)
-
         # Attempt a merge of changes from test-branch to
-        # testYYY-branch.
-        self.svnmerge("merge -r 16 -S ../test-branch") 
...
Забавно следующее: т.е получается содержимое properties можно было бы мерджить автоматически, если бы можно было бы описать, что данное property имеет текстовый mime type. Т.е. свойства свойств... Но тогда те свойства svnmerge-у пришлось бы тоже уметь мерджить... И т.д...

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

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-10-31 23:53
Subject: C/C++: function-like macros
Security: Public
Tags:computers

Макросы - зло. Но иногда все-таки хочется. )

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-07-26 00:49
Subject: DLL не для всех
Security: Public
Tags:computers

Сегодня в процессе решения одной из проблем на работе обнаружили замечательный и весьма полезный способ загрузки динамических библиотек в Windows - LoadLibraryEx с флагом LOAD_WITH_ALTERED_SEARCH_PATH. Замечательность заключается в том, что динамический загрузчик будет все косвенные зависимости искать сначала в той директории, откуда загружается сама DLL и это распространяется по цепочке. Очевидно, что имеет смысл это только, когда точно известно, откуда загружается библиотека. Важно это в случае, когда в один процесс загружается много плагинов, которые могут иметь весьма нехилые зависимости и пишутся разными людьми.

Соответственно, если у вас есть плагины - грузите их с этим флагом! Потомки спасибо скажут.

Ага, и теперь понятно, какой механизм использует Dynamic-Link Library Redirection - тот же самый. Просто наличие файла *.exe.local ведет к тому, что сама Windows загружает исполняемый файл с описываемым флагом.

А в Unix такое и не снилось. RPATH, конечно, свои преимущества имеет, но иметь несколько экземпляров одной и той же библиотеки в одном процессе в Unix вообще и в Linux в частности опасно для здоровья. ADDED: Например, у меня до сих пор нет понимания, как на Linux несколько продуктов с native реализацией могут заплагиниться в Eclipse без наступания друг другу на различные части тела.

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-07-20 20:22
Subject: Программирование - странности реализации
Security: Public
Tags:computers

Любое сообщение, исходящее пользователю от программы должно быть понятным и объяснять пользователю, что произошло и что делать дальше. Совершенно неэтично оставлять пользователя наедине с вопросами типа "Какой протокол вы хотите использовать - HTTP или HTTPS?", да еще и с вариантами ответа OK и  Cancel - попробуй разберить, что произойдет в каждом случае. Такую программу хочется сразу убить и никогда ен пользоваться ей вновь.

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

Я всегда считал, что у Microsoft с этим более или менее нормально. Однако сегодня меня удивил Excel, выдав при копировании листа вот такой диалог:



Логического объяснения такому ограничению, как мне кажется, нет. Ну почему, если копировать ячейки индивидуально, то они могут быть любой длины, а если весь лист - то не более 255 символов?? Не то, что бы мне это так важно, просто сразу буйно разыгрывается фантазия, отчего могут возникнуть такие ограничения в принципе... Кто-то использовал "BYTE len;" в процедуре полного копирования листа?

Ни разу ни юзер френдли...

6 Comments | Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-07-09 23:41
Subject: Снова Суздаль
Security: Public
Tags:computers

И все-таки я на всю жизнь запомню, что Суздаль был образован в 1024 году...

Люди, не имеющие отношения к программированию, не поймут...

2 Comments | Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-07-06 15:47
Subject: Python Fun
Security: Public
Tags:computers

Наверное, информация не нова, но все же:

C:\>python
ActivePython 2.5.1.1 (ActiveState Software Inc.) based on
Python 2.5.1 (r251:54863, May  1 2007, 17:47:05) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import braces
  File "", line 1
SyntaxError: not a chance
И еще:
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Под многим из этого готов подписаться...

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-07-06 00:34
Subject: Subversion 1.5.0 - первые впечатления
Security: Public
Tags:computers

Наднесь зарелизился Subversion версии 1.5.0. Событие интересное, так как список нового весьма интересен. Сам толком еще не перешел, но пройдусь по новому галопом - отчасти и для того, чтобы осознать интересность события для себя. Хочу читать дальше )

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-06-28 18:22
Subject: Про Firefox, IE и Favorites
Security: Public
Tags:computers

Некоторым людям нравится, как в Firefox сделаны Bookmarks - дескать, удобная организация, поиск, сортировка и т.д.

По мне - уродство полное. Лично я считаю помещать все букмарки в один файл bookmarks.xml идиотским дизайн-решением. Почему? Да потому, что это делает крайне сложной (а главное - неоправданно сложной) синхронизацию закладок между несколькими компьютерами. Я, например, пользуюсь уже несколько лет для Windows машин программой vuBrief, которая умеет делать двухстороннюю синхронизацию между двумя и более компьютерами (ага, именно двухстороннюю - метаданные о состоянии обоих участников репликации хранятся отдельно - rsync с его жалким --delete мощно курит в стороне). Репликация замечательно работает для файлов - но, разумеется, засинхронизировать и смерджить два файла bookmark.xml проблематично, не зная их структуры.

Так что я был крайне счастлив, когда обнаружил add-on, который позволяет использовать старые добрые Favorites в Firefox. Использую и радуюсь.

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

P.S. Обобщая наблюдение - если какие-то данные могут быть выражены на уровне метаданных файловой системы (структура файлов и директорий), они должны быть выражены именно так. Другие примеры из этой области - плагины в Eclipse сделаны правильно (добавил новый плагин копированием в каталог plugins - и он подцепился), а в Visual Studio - через жопу (требуется регистрировать их в реестре). Правда, слышал, что в какой-то из будущих Студий обещают сделать по уму.

4 Comments | Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-06-24 01:15
Subject: MediaWiki и GraphViz
Security: Public
Tags:computers

Красота - на работе на проектной MediaWiki, которую используем для документации и обсуждений, завели GraphViz плагин. Теперь не надо мучиться, выдумывая уникальное имя для файла с картинкой, да и вообще не надо ничего аттачить. 99% процентов потребностей что-то нарисовать сводятся к рисованию диаграмм, графов, деревьев, диаграмм состояний и т.п. - в общем, всего того, для чего GraphViz предназначен. Ну а если картинки можно хранить в виде текста, то надо их так и хранить. Хотя бы для того, чтобы диффить можно было.

Само описание плагина здесь.

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-06-24 01:04
Subject: История одного падения
Security: Public
Tags:computers

Сразу хочется сказать, что в данной заметке не будет ничего такого, о чем вы могли бы подумать, прочитав название поста. Обратите внимание на таг... Да, да - речь пойдет о программировании. Буду читать дальше )

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-06-09 23:32
Subject: Отступы в Python
Security: Public
Tags:computers

О, оказывается нашелся-таки нормальный человек, который понимает, что отступы в Python как часть синтаксиса - мина замедленного действия для больших продуктов. Читаем здесь - Python Indentation Considered Boneheaded. Сам лично уже несколько раз попадался на этом - копи-паст из другого скрипта с другими настройками табуляции, неосторожное форматирование - и вуаля. В сочетании с динамической типизацией получаем головную боль за 2 часа перед релизом.

Спасибо, нет. Для скриптов - пожалуйста. А для продакшна - на фик, на фик...

1 Comment | Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-05-19 12:54
Subject: Интервью с Дэвидом Кирком - Chief Scientist of NVidia
Security: Public
Tags:computers

Здесь - http://www.bit-tech.net/hardware/2008/04/30/david-kirk-interview - интересное интервью с Дэвидом Кирком. Это главный исследователь компании NVidia - человек, который понимает в GPU и тенденциях современных вычислительных мощностей очень много. Вот некоторые цитаты, которые я для себя отметил как интересные:

"If you look at any kind of computational problem that has a lot of parallelism and a lot of data, the GPU is an architecture that is better suited than that. It's possible that you could make the CPUs more GPU-like, but then you run the risk of them being less good at what they're good at now – that's one of the challenges ahead [for the CPU guys]."

Will the CPU ever replace the GPU, or vice versa? David was very short in his answer – offering a simple "No."

"It's this paradox where there are two regimes – there's a little and a lot [of cores]. There isn't really a place for sort-of-a-lot. Important numbers are one and 12,000 – I believe that 16, for example, is not an important number. If you merge the CPU and GPU, you end up in a place I like to call no man's land – that's exactly where the number 16 is on my scale," Kirk explained.

On adding double FP precision to new NVidia cards: for those unaware of what double precision can be used for, it allows you to increase the range of magnitudes that can be represented by the data. "Consumers don't need double precision," he said. "It's mainly going to be used in the HPC space to improve computational speed.

"I'm not going to get into all of the details especially for Larrabee, but they're [Intel] missing some pretty important pieces about how a GPU works. Without being too negative, we see Larrabee as the GPU that a CPU designer would build, not the GPU you'd build if you were a GPU designer."

"There are no numbers [for Larrabee] yet – there's only slideware. The way that slideware works is that everything is perfect." "…for slideware, it will look perfectly good but I foresee problems in real applications.""

"They [AMD] have to do four things to survive. The first thing they have to do to compete with Intel is the process technology – they have to build the new fabs. The second thing is the next-generation CPU technology. The third one is the next generation GPU technology—we're going to invest one billion dollars in here this year and they need to invest on the same level to keep up with us. And then the fourth thing is they say the future is going to be this integrated CPU/GPU thing called Fusion, which there's no evidence to suggest this is true but they just said it. They believe it and they're now doing it." "So they have to do these 4 multi-billion dollar projects, they're currently losing 0.5 dollars per quarter and they owe 8 billion dollars. Their market cap is about 3 billion, so it's hard to see where the future is in that picture. Really speaking, they're going to have to pull not one, but several rabbits out of the hat."

"I think rasterisation will definitely be around in ten years time. So will scanline rendering and so will ray tracing for certain kinds of visual effects. But if you look at Pixar's movies as an example – they all use ray tracing, but the only movie that they extensively use ray tracing in is Cars."

…Kirk believes that AMD's days are numbered.

"What Intel does well is not just building good CPUs, it's the fact that they're a vertically integrated manufacturing company – Intel's in the business of turning sand into money."

…surely Larrabee is an indication that Intel feels that massive threading is the future. "I think massive threading is the future, but that doesn't mean they're going to build a competitive GPU," he responded. "What I think about Larrabee is that Intel is struggling with falling ASPs in their market because many people are starting to realise that the CPU is adequate for most things they want to do. Intel looks around and they say 'ok, there's some billion dollars over there, those ought to be mine!'" said David while laughing. "There's no logic to it other than that 'it's my money over there and I want it'.

"They're [Intel] the world's leading designers and manufacturers of CPUs – how hard could it be to build a GPU? I mean, come on, how hard could it be? That crummy little company down the road builds them – we could build them in our sleep. Come on, how hard could it be?" asked David in a rather rhetorical fashion. Of course, he knew that I couldn't answer that question because I'm not a GPU designer. "Well, neither are they," he perked. "And that's why they can't answer it either."

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2008-05-18 21:04
Subject: Процесс познания
Security: Public
Tags:computers

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

Следствие 1: технологии и языки, где компиляция не нужна или она быстра, имеют очень доступный и низкий порог вхождения. Например, Python. Открыл себе интерпретатор, попробовал то, попробовал се, вышел. Соответственно, наоборот, если на каждое опробование идеи надо больше 30 секунд, это начинает раздражать.

Следствие 2: опыт в "медленных" технологиях стоит дороже, (думая о C++) eсли они не вымрут...

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2007-11-04 20:52
Subject: Deepest Sender
Security: Public
Tags:computers

Поставил к Firefox плугин Deepest Sender - клиент для ЖЖ. Нажимаешь CTRL-\ и начинаешь писать в журнал. Пока не пойму, полезно или нет...

Post A Comment | Add to Memories | Tell a Friend | Link



Soloviewoff
Date: 2007-10-14 20:12
Subject: Thunderbird: впечатления
Security: Public
Tags:computers

С недавнего времени начал пользоваться почтовым клиентом Thunderbird. Для тех, кто не знает - это того же поля ягода, что и браузер Firefox. Пользуюсь я Thunderbird-ом практически исключительно для чтения Newsgroups. Ранее у меня для этого был настроен Outlook Express с Fidolook расширением, но после недавней переустановки Windows как-то захотелось чего-то нового.

Пока все устраивает и нравится. Большое количество расширений позволяет получить как минимум все то, что мне нужно. А как максимум - гораздо больше, чем мне нужно, и гораздо больше, чем было в Fidolook. Кое-что из того, что было установлено сразу:

  • Любимая тема Noia 2.0 eXtreme. Привык к ней в Firefox, хочу и в Thunderbird
  • Russian spell dictionary. Непонятно, правда, зачем он мне нужен - пишу практически всегда на английском из-за специфики переписки. Патриотизм, наверное...
  • Quote Colors extension. Раскрашивает цитирование в разные цвета. Оч-ч-ч-ень удобно. Один недостаток - принимает plain diff патчи за цитаты. Ну и правильно - не фиг context/unified диффы не использовать...
Еще на просторах интернета нашел подсказку, как отключить раздражающую меня "особенность" Thunderbird: сброс Threading сообщений при изменении сортировки:
Go to Tools->Options->Advanced->General, and click on "Config Editor". In the Config Editor, search for the preference mailnews.thread_pane_column_unthreads. Double-click on it, which should change the value to false.

О дальнейшем развитии событий буду рассказывать по мере развития событий.

Post A Comment | Add to Memories | Tell a Friend | Link



my journal
September 2009