15 февраля 2010 г.

Цитаты

Очередной блок цитат. Для отвлечения от программирования.

Каждый слышит лишь то, что понимает (с) Иоганн Вольфганг Гете

Кому хватает корки черного хлеба, не понять тех, кому не хватает черной икры к батону с маслом. (с) Геннадий Воловой

Не огорчаюсь, если люди меня не понимают, - огорчаюсь, если я не понимаю людей. (с) Конфуций

Непонимание делает из друзей врагов. (с) Лион Фейхтвангер

Несчастье людей заключается не только в том, что они не понимают счастья - еще они не понимают друг друга. (c) Авессалом Подводный

Нет ничего мудреного в том, чтобы быть общепонятным, если при этом отказываешься от всякого основательного понимания. (c) Иммануил Кант

Она не понимала его, как бесхитростные ходики, вероятно, не понимают хронометра. (c) Эмиль Кроткий.

Понимание - начало согласия. (c) Бенедикт Спиноза

SmartGwt + Django = REST

Этот пост будет просто рассуждением. Точнее даже, рассказом о личных выводах. Так вот, в прошлом я связывал django и gwt с помощью json-rpc. Это полезная вещь в целом, но очень трудоемкая для комплексного подхода к приложениям на SmartGWT, в котором уже есть класс DataSource, и более удобный вариант RestDataSource. В нем уже заложены такие возможности, как передача данных в форматах XML, JSON через HTTP, гибкая поддержка REST идеологии (GET, PUT, POST и DELETE), поддерживает пагинацию, поиск, сортировку и другое. Что это значит? Первое, используя REST - создается некая стандартизация запросов (собственно идеология REST), в отличии от JSON-RPC. Создавая REST поддержку на сервере, мы одновременно создаем API нашего сайта. Второе, нам не надо для каждого UI элемента прописывать свою функцию получения данных, создается один источник данных REST, который можно использовать повторно, также менять источники данных для элементов UI на лету. Все это очень здорово и практично.
Но json-rpc не стоит выкидывать на свалку. Некоторые вещи в которых не нужен громоздкий DataSource, я думаю, нужно делать с помощью него, например, нажатие на кнопку для голосования или какие-то атомарные операции.
Рассказывать как связать django-piston и RestDataSource не буду. Скажу лишь, что сделать это можно, и довольно просто.

3 февраля 2010 г.

Распознавание текста в .NET

Понадобилось тут по работе внедрить систему распознавания текста с изображения. Так как программа совсем небольшая, да и как такого полноценного распознавания (вроде FineReader) не требовалось, а требовалось лишь результат распознавания текста сохранить в базу, как индекс для последующего полнотекстового поиска по изображениям, то я старался найти бесплатное простое решение. И оно нашлось - Puma.NET.
Что такое Puma.NET?
Puma.NET представляет собой оболочку для библиотеки распознавания Cognitive Technologies CuneiFrom, которая позволяет легко включать функций распознавания в любом NET Framework 2.0 (или выше) приложении. API предоставляется через ряд простых классов. Высокая производительность и точность результатов распознавания может быть достигнута с помощью пары строчек кода.

Возможности распознавания:
1. Технология Omni Font - распознавание практически всех печатных шрифтов
2. Поддержка 27 языков (английский, немецкий, хорватский, польский, датский, португальский, голландский, цифры, чешский, французский, румынский, венгерский, болгарский, словенский, латышском, литовском, эстонском, турецкий, русский, шведский, испанский, итальянский, русский/английский, украинский, сербский)
3. Проверка орфографии и автоматическая корректировка
4. Обнаружение форматирования шрифта (размер, курсив, жирность, подчеркивание)
5. Фрагментация и сохранение структуры документа: параграфы, пробелы, изображения, таблицы и т.д.
6. Улучшенное распознавание искаженных и пестрых изображений, специальные режимы для документов с матричных принтеров и факсов
7. Входные форматы изображений: BMP, GIF, EXIG, JPG, PNG и TIFF
8. Выходные форматы: txt, RTF, HTML


Что приятно, разработчик наш соотечественник.

Удаленное сопровождение 1С Бухгалтерия, 1С Торговля. Регламентированная отчетность Симферополь

Нацисты и националисты

Вы не задумывались о том, почему понятия нацизма и национализма жестко скрутили воедино в современной России? Да настолько, что журналисты сами не разбираются в их разнице. Я каждый раз задумываюсь, видя очередную статью в СМИ, и думаю, что это сделано преднамеренно (какими силами, вопрос третий).
По ссылке мы видим заголовок: "Ответственность за взрыв в Петербурге взяли на себя националисты". Далее читаем текст:
Ответственность за взрыв на Октябрьской железной дороге в Санкт-Петербурге взяла на себя некая группировка "NS-WP Невоград". Об этом пишет "Фонтанка.ру" со ссылкой на сообщения, появившиеся в блогах. Отмечается, что таким образом национал-социалисты решили отметить языческий праздник "Громница".

Помилуйте, товарищи журналисты, но национал-социализм - это "нем. Nationalsozialismus, сокращённо нацизм", а далеко не национализм:
В своей основе национализм проповедует верность и преданность своей нации, политическую независимость и работу на благо собственного народа, объединение национального самосознания для практической защиты условий жизни нации, её территории проживания, экономических ресурсов и духовных ценностей.

Тем более, что:
В академической среде отождествление национализма с его крайними формами считается ошибочным.

То есть интеллигенция считает, что националист никогда не подменяет понятие национализма и крайнего национализма (кто придумал этот термин, если есть нацизм и фашизм?). Да, говорят, что политика+крайний национализм=нацизм, но политика — "всеохватывающий феномен общественной жизни, пронизывающий все её формы и включающий в себя все формы социальной активности людей, все виды деятельности по их организации и руководству в рамках процессов производства.", так чем же выражение нацисткой позиции отличается от выражения позиции крайнего национализма? Ничем! Кто-то явно смешивает понятия национализма и нацизма, преследуя определенные цели. Задумайтесь об этом, когда будете отслеживать новости в наших СМИ.