среда, 31 октября 2007 г.

Будем терпимы к ксеноморфам...

А вот если бы был короткоствол...

Леминги у Гоблина полюбили эту присказку...

секреты успехов семейной жизни

Город Кеннесо (штат Джорджия) был избран в 2007 журналом Family Life в числе 10 самых лучших городов в США для проживания семей.

1 мая 1982 года горсовет Кеннесо принял закон об обязательном владении жителей огнестрельным оружием, обязывающий каждую семью владеть огнестрельным оружием и боеприпасами к нему.

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

http://en.wikipedia.org/wiki/Kennesaw,_Georgia

О детях

В перерывах между крестовыми походами и религиозными распрями с римским папой император Священной Римской империи Фридрих II провёл эксперимент над новорожденными детьми.

«Контрольную группу» младенцев забрали у матерей и передали нянькам, которым было приказано осуществлять лишь самый общий и необходимый уход за ними — кормить, купать, но не брать на руки и не разговаривать с детьми. Фридрих хотел знать, на каком языке заговорят младенцы, которые никогда не слышали звуков человеческой речи и не засыпали под колыбельные.

Все дети умерли. Ни один из них не дожил до 4 лет.

ЗЫ: может и легенда...

Ваша страна еще не взяла кредит?

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

В 1982 году, в связи с очередным падением мировых цен на нефть, Мексика была вынуждена обратиться к международным и национальным финансовым организациям за дополнительными кредитами, и сумма ее внешней задолженности составила $86,8 миллиарда.

С тех пор по конец 2004 года страна выплатила $624,3 миллиарда, но продолжает числиться в должниках.

Как подчеркивается в докладе Всемирного банка, выплаты процентов по внешнему долгу и его обслуживание тяжелым финансовым бременем ложится не только на Мексику, но и на другие латиноамериканские страны.

Бразилия девятикратно выплатила свой долг 1982 года, Аргентина в 8,5 раз перекрыла своими выплатами начальную сумму долга, Венесуэла - в 6,2 раза. В общей сложности Латинская Америка выплатила по внешней задолженности с 1982 по 2005 годы $2 триллиона 49 миллиардов 366 миллионов.

http://www.rian.ru/economy/finance/20070227/61343614.html

Debugger Tips, Tricks and Tools - objectID

В программах на C++ в процессе отладки возможно просматривать обьект по адресу в памяти который он занимает. Т.е. добавить в watch адрес. Далее, если мы его передаем куда-то глубоко (по имени переменной уже смотреть нельзя) все равно можно смотреть по адресу.
В C# оказывается тоже это есть.
Create an Object ID to keep track of an object while debugging

в этом блоге еще несколько типсов и триксов.

xUnit на замену nUnit

Announcing xUnit.net

Creating Generic Types in PowerShell - 8-]

Мысли вслух...интересно какой еще shell позволяет создавать generic обьекты. Впрочем как и просто оперировать обьектами...
Ссылка - Creating Generic Types in PowerShell

Closures in VB.....почему не в C#?

Closures in VB: Part 1. Там еще часть 2 есть и т.д. вплоть до пятой.
Вопрос...и почему этого нет в C#? Принципиальная возможность должна быть!

Баловство с С# 3.0

Смысла именно в этом нет, поскольку то же самое можно через Linq. Но сам факт того что это можно сделать приятен.

namespace alogrithm

{

    public static class collections

    {

        public delegate void WithFunctor<S>(S elem);

        public delegate bool Predicate<S>(S elem);

 

        public static IEnumerable<S> find_if<S>(this IEnumerable<S> list, Predicate<S> predicate)

        {

            foreach (S elem in list)

                if(predicate(elem))

                    yield return elem;

        }

        public static void with<S>(this IEnumerable<S> source, WithFunctor<S> action)

        {

            foreach (S elem in source)

                action(elem);

        }

    }

    class Testing

    {

        static public void test()

        {

 

            int[] numbers = new int[] { 1, 2, 3, 4, 5 };

            numbers.find_if( (x) => { return x > 3 ? true : false; }).with( (x) => { System.Console.WriteLine(x); });

        }

    }

}



ЗЫ: но так все равно лучше...

            var numberGroups =

                from n in numbers

                group n by n % 5 into g

                select new { Remainder = g.Key, Numbers = g };

воскресенье, 28 октября 2007 г.

Удаляем элементы из массива

Задача - есть некоторый примитивный массив, к примеру вот такой.
float *array;
int size;
задача - удалить из него отрицательные элементы. скорость и память имеет значение...
подзадачи - тоже самое но с условием что size достаточно большой а количество отрицательных элементов достаточно маленькое. а главное скорость имеет значение...

Читерить с STL низя.

Идеальный FAR

Новость о переходе Фара в opensource и поддержке unicode подталкивает меня к тому чтобы сформулировать свои требования к идеальному Far. (пишем Far подразумеваем "файловый менеджер". Ибо других нет.)
1. Консоль. Мне нужен файловый менеджер которые является "надстройкой" над консолью. Т.е. консоль сама по себе должна быть частью этого файлового менеджера. В Far это есть. То как это реализованно в TC для меня абсолютно недостаточно и в принципе является stopper-ом для использования TC вместо FAR.
2. Встроенные просмотр файлов. Есть.
3. Возможность просмотра файлов "родным" просмотрщиком (точнее настраиваемым). Частично есть. Например есть для картинок, видео, музыки, некоторых файлов баз данных и т.д. Но в то же время нет для .doc или .rtf или html или более правильная для xml.
4. Встроенная возможность редактировать файлы. Расширяемая. Есть в Фаре, меня практически устраивает. Хорошо бы еще уметь подключать интерпретаторы, т.е. легко и просто превратить в простейшее IDE
5. Удобная работа с архивами. Архив как папка...Есть.
6. Гуи интерфейс. Что бы не говорили апологеты тестового вывода графический вывод гораздо выразительние. Например - возможность показывать иконки файлов. Закладки (нормальные). И т.д. Как все это совместить с п.1 (консолью) другой вопрос.
7. Поддержка командного интерпретатора. Если по простому - bash. Для Windows существует PowerShell, хочется его поддержку. Плагин для Far есть, но...хочется с автодополнениями и т.д. Вообщем возможно отдельный класс плагинов для этого выделить.
8. Поддержка Unicode.

суббота, 27 октября 2007 г.

И еще задачка

Дан направленный граф, вершины которого - люди, а ребра - кто кого знает. Знаменитость - это человек, которого знают все, но который не знает никого.

Найти алгоритм, который по графу, представленному как матрица смежности n на n, найдет знаменитость, если таковая существует, за время O(n).

Кто обидел С++?

Кто тут обижает нашего как я его называю королька?(с)

This is C++ FQA Lite. C++ is a general-purpose programming language, not necessarily suitable for your special purpose. FQA stands for "frequently questioned answers". This FQA is called "lite" because it questions the answers found in C++ FAQ Lite.


Ссылка
В целом согласен.

Задачка

Вот тут взял.
Дан список из n чисел, из которых строго больше n/2 - одно и то же число. Найти это число, используя минимальные ресурсы.
Из комментариев мало что понял..
Мое решение:
Берем первый элемент. Проходим дальше по списку до первого несовпадения. Выбрасываем. Возвращаемся назад если есть куда либо идем вперед если назад некуда. Повторяем...То что не выбросилось в итоге и есть результирующий элемент. Но нашел в ответах и лучше... по крайней мере красивее.
А просто завести M счётчиков, где M разрядность числа. Затем для каждого числа в массиве если на битовой позиции K стоит 1, то увеличить К-й счётчик, иначе уменьшить.

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

Far Manager открывает исходный код

ок не просто Far а Far 1.80 который обещает быть Unicode и при этом еще очень сырой...но тем не менее.

пятница, 26 октября 2007 г.

Wide Finder challenge

Wide Finder challenge
В 2х словах:
The Wide Finder challenge is to write a program that:

1. Scans logfiles for hits on blog articles
2. which are counted and
3. sorted with the
4. top 10 most popular being printed to stdout. It should also
5. be about as elegant and concise as Tim’s Ruby version and
6. its performance should scale with additional CPU cores.


Собственно я впервые задумался о влиянии x-core архитектур ядра на современный стиль разработки.

Почему я отношусь с недоверием к функциональным языкам.

Вот реализация функции quicjsort в Haskell
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

Коротко, красиво, и главное сразу видно что она сработает.
Вот реализация (одна из) функции quicksort на языке С:
void qsort(int a[], int lo, int hi) {
{
int h, l, p, t;

if (lo < hi) {
l = lo;
h = hi;
p = a[hi];

do {
while ((l < h) && (a[l] <= p))
l = l+1;
while ((h > l) && (a[h] >= p))
h = h-1;
if (l < h) {
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l < h);

t = a[l];
a[l] = a[hi];
a[hi] = t;

qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}


Длинно, непонятно, и только для массива целых чисел, для других типов придется писать свою или обобщать эту. Кстати, вот императивная реализация того же на Haskell. Еще более некрасиво...

Очевидно что на Haskell получилось лучше, правда? Не совсем...
По коду на С видно (ок, мне видно) что дополнительной памяти в процессе сортировки не выделяется хотя стек растет. Впрочем этого(роста стека) можно было бы и избежать (частично).

Можно ли сказать это про реализацию на Haskell?

Далее...как ни странно но реализаций алгоритма quicksort может быть больше одной... Например реализуя руками этот алгоритм я привык брать в качестве "опорного" элемента элемент из серидины массива. Ну да это мелочь...А вот что более существенно:

Неправильный qsort() в Solaris


Выжимка - оказывается, quicksort() в Solaris работает очень медленно, если в сортируемом массиве много одинаковых подряд идущих значений.

Вот по ссылке для других OS (смотреть только на общую "тенденцию", эксперемент был не на скорость).


Операционная системахорошаяплохаяразница
FreeBSD 4.31.61.20.8
Linux RedHat 6.23.53.00.9
Windows NT 4.0 SP52126.0
Solaris 7, x863.065.022.0
Solaris 8, x862.662.024.0


В обоих случаях на Solaris "плохая" программа выполняется существенно медленнее.
Оказывается, из-за этого под Solaris'ом очень медленно работают запросы PostgreSQL с сортировкой.

Кстати на NT та же проблема. Как сейчас не знаю, не проверял.

Выводы - иногда на алгоритмы накладываются дополнительные требования (основное - чтобы алгоритм работал). Как правило это требования по скорости, по памяти, по использованию каких-либо других ресурсов, по сложности. Используя С для реализации алгоритма quicksort я на эти вопросы ответить могу. Используя Haskell - нет.

Жонглирование за пределами...

Видео с финала какого-то конкурса жонглеров. Потрясающе. Мысленно сделал шарики светящимися. Одел жонглера в черное и приглушил свет...вообще смотрелось бы убийственно. Ссылка на видео с жонглером Криссом Блиссом.

вторник, 23 октября 2007 г.

GoogleMaps+wikitravel

навигация по wikitravel используя GoogleMaps...
Или по другому...навигация по GoogleMap с выдачей результатов из wikitravel

Onlive Music Player

На сервере все - и музыка, и плейлисты.
Монетаризация трафика - продажа песен/альбомов, реклама.
Отличие от существующих - хранить музыку online.

четверг, 18 октября 2007 г.

Маленький C# компилятор, Tiddy Wiki, горячие клавиши при написании сообщений.

Snippet Compiler - пишем небольшой кусок кода, запускаем...нет необходимости запускать студию и создавать проект если хочется быстро что-то проверить.
TiddyWiki- весь вики на одной странице, код для редактирования там же. Жаль не работает в Opera.
Оказывается Ctrl+Shift при написании сообщения переключает в режим preview. Что очень неудобно когда на этой же комбинации смена раскладки клавиатуры). Пришлось поменять. Раскладку.
Ну и сюда же -Reflector. Просмотр, анализ,декомпиляция и т.д. .NET assemblies.
CopySource As HTML - аддон к студии, название говорит само за себя.

вот как-то так оно обычно с проектами и происходит

NUnit

NUnit - автоматическое тестирование C# приложений.

Идеи приложения для FaceBook

интересно уже есть или нет.
1. Гараж. Все о твоем автомобиле, ну и прочее на автотематику.
2. "Задай вопрос другу".

Сравнение инструментария Google и Microsoft

Jack Palevich,отработавший 10 лет в Microsoft-e и недавно перешедший в работать в Google сравнивает инструментарий (а также поставляемый хард) этих компаний. Впечатлили экраны в Гуугле, впечатляет рабочее место в Микрософте.

среда, 17 октября 2007 г.

Client Side Load Balancing for Web 2.0 Applications

Client Side Load Balancing for Web 2.0 Applications
И в целом сайт интересный.

Микроформаты

Слово которое когда-то сам "переизобрел". Которое когда-то было на слуху и в зачаточном состоянии.
Микроформаты

Планирование путешествий в онлайн - социальная сеть

dopplr. пока в стадии разработки.

What is Dopplr?

Dopplr is an online service for frequent travellers. It lets you share your future travel plans with a group of trusted fellow travellers that you have chosen. It also reminds you of friends and colleagues who live in the cities you’re planning to visit. You can use the service with your personal computer and mobile phone.

Онлайновый MindMap

mindmeister

вторник, 16 октября 2007 г.

Текстовые редакторы с интегрированным вводом математических выражений

Publicon - производитель Wolfram Research, авторы Mathematica.
SciWriter - интересные заявленые фичи.
Ну и до кучи OpenOffice.org Math.
Ну я главное я понял что я и сам бы использовал TeX
Ссылки на ресурсы с различными математическими символами:
http://en.wikipedia.org/wiki/Help:Formula - тут же написаны их сокращения в TeX
Wikipedia:Mathematical symbols
Table of mathematical symbols

Design and Implementation of a Win32 Text Editor

Ссылка
Заметки по поводу создания "простейшего" редактора текста под windows.
Поэтапно описываются шаги по созданию редактора, с учетом обработки мишки и клавиатуры, margins и т.д.
Рассматриваются вопросы загрузки больших файлов, unicode, uniscribe (right-to-left typing, ect.) и т.д. и т.д.

Lua+C++, ссылки, будут полезны

User Data Example - показывает как сохранять структуры в userdata;
User Data With Pointer Example - работа со структурами, выделенными (созданными) в С++ коде.
Binding With Metatable And Closures - тоже самое но и использованием closures.

Про краш при открытии lua.io - здесь

понедельник, 15 октября 2007 г.

Dead Fantasy 1

Dead Fantasy 1
Кавайно...

Еще о теме "гравикола"

Да и по многим аналогичным вопросам. Я сейчас проявлю махровую наивность...я не понимаю почему нельзя подать в суд и выиграть дело.
Мое непонимание скорее всего основано не только на том что законы России я не знаю (я и своей строны не знаю). Но и на том что механику отечественных судов я тоже не знаю...

И еще по теме - в свете подобного можно опять поговорить о тупой Америке в которой засуживают компании за абсолютную ерунду типа "не сказано что в микроволновке нельзя сушить кошек". То бишь перегиб в другую сторону.

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

Также - в комментариях описывают различные схемы продажи подобного гравикала. В основном сводится к "точечному маркетингу" с подачей рекламы прямо на дом и к "рекомендациям" "семейных докторов". Так вот - понятно что полностью избавится от гравикаловцев не удастся. Но свести вред от них к минимуму а усилия по продвижению гравикала к максимуму можно.

Это кстати затрагивает еще один из подвидов комментаторов с убогой логикой. Основной посыл - если нечто "А" полностью забороть никак не получится то и парится не стоит.

Наблюдатель за наблюдаемыми за наблюдаемыми...Гравикол 21

История - тут.
Обсуждение там же либо тут (avva отметился).
Мои 5к. - почему то больше всего бесят люди выражающие позицию "почему вы так обеспокоены этим вопросом когда в Америке негров линчуют (радиостанция "Б" беспринципно рекламирует препарат "В" и т.д.).
Т.е. общая схема - Есть некоторое "А". Внимание блогерских масс "почему-то" на этом "А" сосредоточилось. Получился некий флешмобик, плюс люди пытаются реально что-то с этим "А" сделать, кто-то пытается понять причины, кто-то еще чего...
И отдельная категория людей вопрошающая "почему "А" если есть "Б" такое же или хуже". Причем в контексте это звучит так - "раз вы "Б" не занимаетесь заниматься "А" вам тоже не стоит".
Бесит.

Безопастность в Висте по сравнению с...


Vista Security Report Raises More Doubts Than It Relieves
Как я понимаю основные сомнения вызывает правдоподобность результатов.
Замечание - интересно было бы перераспределить график в график "соотношение найденных уязвимостей к исправленным в процентном соотношение". И сразу станет ясно что "территория зла" исправила всего лишь 50% уязвимостей, в то время как Линукс!!....не скажу сколько точно, считать лень, но явно намного больше. И тогда все встанет на свои места...Ну а то что в абсолютных числах количество неисправленных уязвимостей у Линукса намного больше уже никого не будет волновать.

Apachie vs IIS


Ссылка
По данным октябрьского отчета компании NetCraft доля Apache среди web среверов продолжает стремительно падать. За месяц число сайтов работающих под управлением Apache сократилось на 2.03%, доля IIS возросла на 1.6%, число хостов обслуживаемых программным обеспечением Google возросло на 0.65%.

Рост IIS и Google главным образом обусловлен увеличением числа хостов в сервисах MySpace, Microsoft Live.com и Google Blogger (число сайтов в каждом сервисе увеличилось примерно на миллион) .

пятница, 12 октября 2007 г.

windowless ui

Переизобретая SilverLight - 1
Требования к скриптовому языку:
если исходный xml описан в виде

<canvas >
<block id="block1" >
....
</block >
</canvas >


то в используемом скриптовом языке хочется иметь возможность написать что-то примерно

block3.OnMouseLeave =
{
block1.visible=false
}
и в другом месте
block3.OnMouseEnter =
{
block1.visible=true
block2.style.border.left.width = 1px
}

Вот с чем у меня всегда ассоциировался эпловый think different

"Куда движется математика"

Интересная статья о математике. Вывод - современные доказательства настолько сложны что порой занимают много томов и разобраться в них способны буквально несколько человек в мире. Остальным нужно принимать доказательства на веру. Также испльзуются "автоматические" доказательства с помощью компьютеров, статус этих доказательств вызывает сомнения но результатами продолжают пользоваться. Доказательства простых высказываний могут иметь невероятную длину. Для некоторых математических построений (пр. - арифметикой Пеано)нет строгого доказательства их внутренней непротиворечивости. Теорема Гёделя о неполноте. Подход к построениям где во главу ставится полезность при дальнейших выводах. Все это способно изменить статус математики как абсолютно точной науки.
Интересный факт - формулировки теоремы Эйлера раз за разом оказывались неточными а то и вовсе неправильными. Но поскольку сама по себе теорема верна (а еще думаю физики 20го века сказали бы что она красива а следовательно верна) раз за разом все это удавалось устранить. Ну и т.д.

четверг, 11 октября 2007 г.

новости науки - ссылка

http://elementy.ru/blogs/

Неизбежность классового расслоения общества обоснована математически

Наткнулся на достаточно старою (2005г.) новость - Неизбежность классового расслоения общества обоснована математически

передеру:

В своей работе Бен-Наим и Реднер использовали упрощенную версию модели социального разнообразия Бонабо (Bonabeau), в которой каждому индивидууму присваивается индекс «социальной приспособленности» (fitness). Этот индекс рассчитывается по двум показателям — конкурентоспособности (competition) и вероятности победы в конкурентной борьбе (winning probability).

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

В качестве начальных условий выбрано предположение о том, что (1) в первой итерации все члены общества имеют нулевой уровень конкурентоспособности и (2) в случае встречи двух индивидуумов с равным уровнем конкурентоспособности побеждает только один

Компьютерное моделирование показало, что изначально однородное бесклассовое общество, члены которого живут по этим правилам, в определенный момент демонстрирует фазовый переход к иерархическому, разделенному на классы. Любопытно, что возникший в определенный момент «низший» класс неизбежно погружается в состояние беспросветной нищеты, в то время как члены среднего класса демонстрируют весьма энергичную вертикальную подвижность с тенденцией к постоянному повышению своего статуса. То есть в полном соответствии с известным изречением классика, «богатые становятся богаче, а бедные — беднее», и ничего тут не попишешь. Коммунизм бывает только в сказках.


ни в коем случае не хочу сказать что я тут хоть что-то понимаю...но:
снижение "конкурентноспособности" (что бы под этом не понималось) не должно быть обязательном в модели. Равно как и не рассмотрены столкновения 1 vs N. И в целом мыслей в голове на эту тему достаточно, интересно будет поискать дополнительную информацию.

занимательная физика.

вода+крахмал+колебания=
http://www.youtube.com/watch?v=vCHPo3EA7oE

четверг, 4 октября 2007 г.

Исходники .NET Framework будут открыты

System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows). Исходники всего этого можно будет посмотреть в недалеком будующем.
Ссылки: Scott Gu, Shawn Burke