Когда Path.Combine не работает

Метод Path.Combine, предназначенный для облегчения жизни разработчика, в действительности, содержит подводный камень, не позволяющий его использовать так бездумно, как хотелось бы.  Нелогичность (логичность от Microsoft) замечена не только мною и заключается в том, что если второй путь является абсолютным, то возвращается только второй путь.

Например:

Path.Combine("dir1", @"dir2");

В Microsoft серьезно думают, что разработчик ожидает  получить dir2. Логичной  была  бы  проверка настоящего абсолютного пути(c именем диска c:dir2) , а не просто наличие слеша(Path.DirectorySeparatorChar) в начале.

Следующий вызов Path.Combine возвращает полную бессмыслицу «dir1.dir2»

String path = Path.Combine("dir1", @".dir2");

Мораль проста — помнить об этой особенности и писать свой костыльный Path.Combine.

Китайских заключённых заставляют играть в WoW

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

Согласно показаниям бывшего узника трудового лагеря Цзиси на северо-востоке Китая, в их поселении занимались фармингом около 300 заключённых. «Добыча золота» («gold farming») — зарабатывание денег в онлайн-играх с помощью монотонного повторения однообразных действия. Торговля виртуальными вещами может приносить большой доход, так как миллионы игроков вкладывают реальные деньги в игру, чтобы ускорить развитие виртуального персонажа. Компьютеры никогда не  простаивали. Если заключённый за смену не выполнял установленную норму, то подвергался физическому наказанию. «Мы продолжали играть до тех пор, пока могли хоть что-то видеть и различать», — говорит он.

via guardian.co.uk

Первый Международный Фестиваль старинных паровых и современных судов

28 и 29 мая в честь Дня Города в Санкт-Петербурге состоялся Первый международный фестиваль старинных паровых и современных судов. В акватории Невы торжественным парадом прибыли исторические суда стран Балтии.

3 000 000 $ за лучший алгоритм

4 мая 2011 года крупнейшая здравоохранительная организация штата Калифорния «Heritage Provider Network» сообщила о проведении конкурса на лучший алгоритм прогнозирования, благодаря которому станет возможным сократить расходы на здравоохранение.

Конкурс стартовал ещё 4 апреля 2011 года  и будет длиться почти 2 года — до 3 апреля 2013 года.

Главный приз конкурса —  полцарства 3 000 000 $, получит тот, кто разработает алгоритм, позволяющий предсказать с наибольшей достоверностью на основе данных за предыдущие годы, сколько дней в этом году пациенты проведут в больнице.

В качестве исходных данных предоставляются анонимные выборки аналогичных данных за минувшие 3 года.

Конкурс проходит в три этапа. На каждом этапе выбирается 2 победителя, каждый из которых получает гарантированный приз от 20 до 60 тыс. долларов США в соответствии с условиями акции. Победители каждого этапа будут оглашены на конференциях O’Reilly’s Strata Conference, которые пройдут в Нью-Йорке, а затем в Санта-Клара (Калифорния).

Дэдлайн первого этапа — 31 августа 2011 года.

В качестве оценки и сравнения результатов участников применяется метрика, описанная в правилах конкурса.

Правила конкурса и другую полезную информацию можно узнать на официальном сайте. Чтобы принять участие, достаточно просто зарегистрироваться, введя свой e-mail, и подтвердить согласие с правилами, после чего для скачивания будут доступны исходные данные в виде .csv файлов и спецификация к ним.

На первый взгляд, задание очень напоминает нашу лабораторную работу под деревьям решений в курсе системного моделирования. С помощью некоего индусского кода на VBA, нужно было выявить закономерности в данных о заболеваниях работников химического завода.
Задача интересная, надо будет изучить это поподробнее…

Подсветка синтаксиса MatLab в WordPress

Для подсветки синтаксиса исходного кода на сайте WordPress я остановился на плагине SyntaxHighlighter Plus . Однако, в нем нет поддержки синтаксиса Matlab, хотя бы подсветки комментариев. Но что нам стоит дом построить — сейчас  возьмем и добавим.

При просмотре папки плагина  (wp-contentpluginssyntaxhighlighter-plus) видим, что реализация подсветки для конкретного языка программирования находится в файлах c именами типа shBrushPerl.js (для Perl).

Берем за основу синтаксис Delphi, более всего похожий на Matlab. Копируем файл shBrushDelphi.js под именем  shBrushMatlab.js.

Привязка JS-кода и имен языков находится в файле syntaxhighlighter.php, начиная со строки «$this->aliases = apply_filters( ‘agsyntaxhighlighter_aliases’, array». Таким образом, мы можем легко подключить новый файл, добавив строку:

‘MatLab’  => array(‘matlab’),

Простого копирования файла с новым именем недостаточно, в JS-файле есть привязки к имени языка, нужно заменить все вхождения Delphi на Matlab внутри файла shBrushMatlab.js

Теперь можно использовать подсветку синтаксиса Matlab  коде статьи, записывая текст программы внутри тегов «». Остается только добавить нужные правила: отредактировать список ключевых слов, написать регулярное выражение для экзотического стиля комментариев в Matlab(после символа %).

Регулярное выражение будет следующим: %.*$

Список ключевых слов, куда я добавил несколько базовых функций Matlab, не претендует на полноту. Тем не менее, итоговый java-script код можно увидеть здесь.

Небольшая демонстрация


s = 'string literal';% подсветка строк
x = zeros(1, 4);%подсветка основных функций Matlab
z = [1 2 ; 3 4];

for i=1:length(x)
if x(i)==0
x(i) = x(i)+1;%комментарий 4%4
end
end

return 0;

function y =  myfunc(x)

y = sin(x)+5;

Работающая технология идентификации языка речи

Чешская компания Phonexia, занимающаяся  речевыми технологиями, предоставляет доступ к демонстрационным версиям программ. Например, технология идентификации языка говорящего по звуковому файлу.  Такие решения могут быть полезны при анализе больших объемов речевой информации, в call-центрах, мониторинге СМИ. После регистрации на указанный e-mail высылается ключ, по которому можно пользоваться демо-программой в течение месяца с запуском только при наличии интернета.

По умолчанию программа настроена на обработку списка файлов. Но можно настроить обработку всего каталога (например, по умолчанию process/input). Нажатие на виртуальный выключатель  запускает обработку всех файлов для анализа языка.

Само собой, что язык в демо-файлах распознается на 100%. Готовой базы для тестирования распознавания языков нет, поэтому о реальных результатах качества распознавания говорить сложно.

Выбор темы диссертации

Тема диссертации аспиранта-балбеса, введенная на замену по настоянию научного руководителя: «Транспортировка галоидных систем, состоящих из двух частей водорода и одной части кислорода, в сосуде с перфорированным днищем» (Первоначальное название: «Перенос воды в решете»).

Комментарий с форума:

«Кстати, если на форуме есть люди «остепененные», особенно физики, то они подтвердят, что работа с таким названием тянет не просто на «кандидатскую», но и на «докторскую».
Как бы не выглядела смешно тема, но она имеет ГРОМАДНОЕ значение для «народного хозяйства».
Начать с того, что перетаскивать «воду в решете» действительно можно, ведь даже обычное ведро на атомарном уровне, есть решето многослойное. И даже в обычном решете можно перетаскивать воду, все зависит от материала решета и размера решетки.
Кроме того, работа на данную тему дает ответ на вопросы смачиваемости тел, поверхностного натяжения, нагрузки на сетчатую площадь находящуюся над жидкостью. Вопросы мембран и фильтров.
Да вообще вопрос «воды в решете», как это не смешно, очень многогранен.

А как вам понравиться тема типа «нанорешетки и их взаимодействие с чистыми жидкостями, растворами и коллоидами». Уже звучит значительно солиднее и сразу чувствуется, что есть перспектива. А на много-ли эта тема отличается от «перенос воды в решете»???»

Превращаем картинку в звук

Попробуем заняться довольно бессмысленным занятием, а именно получением звука с определенной  спектрограммой. Вдруг ряды любителей  ЭГФ сократятся, не в обиду фанатам фильма «Белый шум» 🙂
Итак,  начнем с моделирования на Matlab. Хотим алгоритм, позволяющий переводить звук в картинку-спектрограмму и обратно. Логично будет начать с вычисления спектрограммы, по которой будет вычисляться изображение.

Читать далее Превращаем картинку в звук

2ГИС — бесплатный электронный справочник с картой города

С одного прекрасного момента после появления удобных Yandex-карт я перестал пользоваться TopPlan, который в своем развитии давно застыл. Тем не менее, иногда хочется  иметь оффлайн-карту со справочником организаций.

Оказывается, есть бесплатное решение для просмотра карт в оффлайне по 80 городам России. Имя ему 2ГИС.

Карты поначалу довольно тяжелы для восприятия, не достаточно проработаны цветовые схемы, например, не выделены станции метро. Но все можно простить, разглядывая на трехмерный  Санкт-Петербург,  хотя бы в таком довольно простом виде. Это позволяет гораздо нагляднее ориентироваться по карте. Когда-нибудь, может быть дождемся и для  Петербурга панорам уровня трехмерных карт Nokia. Но даже просто возможность посмотреть примерную высоту зданий — уже приятно.

В сухом остатке 2ГИС  практически полностью выполняет основную работу TopPlan — поиск организаций и определение маршрутов общественного транспорта.