Pull to refresh
203
0
Александр Гранин @graninas

Автор книг об архитектуре и дизайне ПО в ФП

Send message

Блеск и нищета Читинского Афина-Софт

Reading time4 min
Views714
«Система «Контур-Экстерн» гарантирует стабильную защищенную передачу электронной отчетности организаций и предпринимателей через Интернет в контролирующие органы России» (с официального сайта).

СКБ «Контур» со своей разработкой «Контур-Экстерн» — один из лидеров российского рынка по шифрованию данных и отчетности, передаваемых между различными государственными и частными компаниями. Этим продуктом пользуются уже давно. И эти много лет, пока продукт существует, «Контур-Экстерн» бережет от посягательств важные, секретные и опасные данные своих клиентов. И они стоят на страже, защищаясь от злоумышленников уникальными методиками и системами шифрования, продвигая через небольшие фирмы это детище. Так, одной из «небольших фирм» в Забайкальском крае выступает «Афина-Софт», подключающая к себе продукты СКБ «Контур». Конечно, как младшая сестра своего большого брата, она предоставляет все средства защиты и все гарантии безопасности, и клиенты могут спать спокойно. Они в надежных руках.

А на самом деле? Феерический бардак. Других слов не подобрать к тому, что творится в Афина-Софт, — по крайней мере, в той части, которая имеет дело с Забайкальским краем, с Читой. Представьте ситуацию: в бухгалтерии вдруг ломается Контур-Экстерн, ни с того, ни с сего. А потом начинается интересное.

Читать дальше →
Total votes 37: ↑28 and ↓9+19
Comments53

Текстовый анализатор: распознавание авторства (окончание)

Reading time7 min
Views2.7K
Эта статья об алгоритме распознавания авторства, реализованном в проекте «Текстовый анализатор». В окончании статьи мы рассмотрим, как собираются частотные характеристики, и в общих чертах познакомимся с нейросистемой Хэмминга. (Начало и продолжение).

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])


Читать дальше →
Total votes 44: ↑37 and ↓7+30
Comments18

Текстовый анализатор: распознавание авторства (продолжение)

Reading time15 min
Views2.2K
Эта статья об алгоритме распознавания авторства, реализованном в проекте «Текстовый анализатор». В продолжении статьи мы рассмотрим конечный автомат для разбиения текста на уровни. (Начало и окончание).

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])


Читать дальше →
Total votes 45: ↑41 and ↓4+37
Comments2

Текстовый анализатор: распознавание авторства (начало)

Reading time10 min
Views10K

Добрый день, уважаемые хабражители. Я давно хотел опубликовать под GPL-лицензией свой «Текстовый анализатор» ([1]). Наконец, дошли руки. «Текстовый анализатор» — это исследовательский проект, который я разрабатывал три года на 3, 4 и 5-м курсах университета. Главная цель была: создать алгоритм распознавания авторства текста, используя нейросети Хэмминга или Хопфилда. Идея была такова: эти нейросистемы распознают образы, а к задаче распознавания образов можно свести задачу выявления авторства. Для этого необходимо по каждому тексту собрать статистику, и чем больше разных критериев, тем лучше: частотный анализ букв, анализ длин слов/предложений/абзацев, частотный анализ двухбуквенных сочетаний, и так далее. Нейросистема могла бы выявить, характеристики каких текстов наиболее сходны. Работы было — вал. Много кода, хитрые алгоритмы, ООП, паттерны проектирования. Помимо основной задачи я так же реализовал ещё одно ноу-хау: «Карту благозвучия». По задумке, такая карта должна показывать все плохо и хорошо звучащие места, выделяя их цветом. Критерии оценки благозвучия должны задаваться каким-то универсальным образом, например, правилами. Для этой цели я даже разработал специальный графический язык, RRL (Resounding Rules Language). Работы было — вал. Много кода, хитрые алгоритмы, ООП, паттерны проектирования. В итоге получилась большая и сложная программа, правда, с неприглядным интерфейсом. С этим проектом я даже выиграл в конкурсе дипломных работ, получил 1 и 3 места на университетских конференциях, а так же 2 место на международной научно-практической.

Прошло более двух лет, и я с трудом вспоминаю, как оно работает. Давайте вместе попробуем разобраться, что там под катом капотом алгоритма, который распознаёт авторство. Ну а карту благозвучия оставим на следующую статью.

(У статьи есть продолжение и окончание.)

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])

Читать дальше →
Total votes 54: ↑49 and ↓5+44
Comments5

Обзор ORM для Qt

Reading time16 min
Views17K

Введение



Добрый день, уважаемые коллеги-программисты!

Вот уже год в мире Qt происходят очень интересные события. Здесь вам и недавний выпуск версии 4.7, и концепция QML, и значительная интеграция библиотеки в мобильные платформы. В Qt водятся самые правильные тролли; мне нравится то, что они делают, и куда развивается эта библиотека. Готов даже поспорить, что она – лучшая в своем классе, но те, кто пишут на Qt, и так это знают.

Есть кое-что ещё, изменившееся за годовой период. Для Qt стали появляться ORM-библиотеки, одна за другой, как грибы. Свято место пусто не бывает? Спрос есть, вот вам и предложение. О том, что происходит в мире Qt ORM, читайте в этой статье. Я постараюсь дать максимум информации по использованию и механизмам, применяемым в обозреваемых библиотеках; но ни одна из них не может быть освящена полностью по причине, что любая ORM – весьма сложный комплекс из программистских решений.

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

Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments21

Google Wave. Идеи для будущего

Reading time8 min
Views3K
Введение


Это улучшенная версия статьи.

Не секрет, что Волна привлекала общественное внимание (1, 2, 3 и т.д.) еще будучи в глубоком тестировании.

Теперь Wave открыт, — и каждый может поймать волну или почитать обзоры. Не прошел мимо и я. При первом же знакомстве сервис вскружил мне голову своей концепцией, и я замечтался. Эта статья — мое восприятие Wave'а, а так же список улучшений, касающийся в основном функционала конкретной волны, конкретного блипа. Это то, чего мне не хватает для полного счастья. Думаю, есть весьма интересные предложения, прямо вытекающие из концепции Google Wave, при реализации которых универсальность Волны только бы возросла. Некоторые предложения зависят от других.

«Что такое Google Wave?»


Представьте, что перед вами — окно чата. Вы видите историю переписки: ваши сообщения — на голубом фоне, чужие — на желтом. Вы сейчас пишете ответ на последнюю реплику собеседника. Вы уже написали несколько первых слов, как вдруг замечаете, что с репликой что-то неладное: она стала, буквально, буквально изменяться! Часть букв стерлась, как если бы кто-то жал Backspace, и ну давай набираться новые слова на желтом фоне! А через пару секунд в историю сообщений вклинилась еще одна строчка с зеленым фоном, и на ней тоже начали появляться слова и предложения! На ваших глазах вся переписка вдруг зажила своей жизнью. Тот, кто редактировал самую нижнюю реплику, отвечал на слова того, кто редактировал самую верхнюю. И два непонятных субъекта посередине переписки спорили между собой и обращались к вам за советом. Вы набрались храбрости и вклинились в спор, просто поставив курсор редактирования в нужное вам место.

Читать дальше →
Total votes 22: ↑12 and ↓10+2
Comments6

Записки программиста: ООП, And и Or

Reading time15 min
Views4.9K

Философия ООП



Инкапсуляция, наследование, полиморфизм… Методы, члены класса, разграничение приватности, абстракция… Как часто я вижу статьи на тему ООП и как часто не вижу самого ООП в этих статьях. Не вижу настоящего, живого объектно-ориентированного программирования. Авторы владеют терминологией, могут привести тысячу определений пресловутого ООП, вспомнят пару классических примеров с простеньким наследованием, везде напихают утверждений, что инкапсуляция — это хорошо…

Читать дальше →
Total votes 102: ↑59 and ↓43+16
Comments175

Выхлоп: Революционное устройство

Reading time8 min
Views704
Несколько слов для тебя, уважаемый %username%, прежде чем ты решишь зайти под хабракат. Я понимаю, что за такое могу получить по полной, но мне так хотелось помечтать… Прошу быть снисходительным. Рассказ без картинок, — и за это тоже извини. Я стараюсь рисовать словами… Но могут быть ошибки; я буду тебе благодарен, если ты мне о них сообщишь.

А самое главное, уважаемый хабраюзер, отнесись к этому с легкостью. И тогда ты, возможно, получишь удовольствие от чтения. То, что под катом — не стеб и не критика. Это идеи того, что можно было бы сделать для улучшения жизни. Сегодняшний ажиотаж — лишь повод, чтобы поговорить об этом.

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

…И вот гаснет свет. Шорох в зале стихает, и на сцену выходит он…
Читать дальше →
Total votes 42: ↑18 and ↓24-6
Comments24

QST: QsT SQL Tools, инструментарий для Qt

Reading time11 min
Views1.3K
UPD
Данный блог появился благодаря advix. Этот человек дал инвайт за пост в песочнице, за что я ему искренне благодарен.

Добрый день, уважаемое хабрасообщество!
Хочу представить на ваш суд крохотную библиотеку под Qt, написанную, чтобы упростить программирование приложений баз данных. Используя ее, сделал одну базу данных на заказ, и хотя это была всего лишь курсовая работа, она помогла мне отточить и продумать многие моменты. Сейчас пишу другую базу данных, уже настоящую, для серьезной организации. Понемногу вношу в библиотеку новые возможности. Глядишь, когда-нибудь что-то хорошее получится.

Преамбула

Начиная с лета 2009 года, я активно изучаю Qt. И знаете, по-настоящему счастлив программировать в этой среде. Она решила все мои главные проблемы. Например, я не умел строить интерфейс программы, особенно меня раздражало, что каждый контрол в том же Builder нужно выравнивать, перетаскивать, подгонять размеры и положение. С Qt об этом можно забыть, – и заниматься исключительно эстетикой без всякой рутины. Кроме того, мне нравится STL за ее хитрый подход (хотя еще ее не знаю толком), и в Qt она есть, равно как и собственные контейнеры, – используй с удовольствием. И еще «Кьют» – очень продуманная библиотека, вся такая ООП-шная и технологичная. А я очень чту и уважаю ООП, равно как и паттерны проектирования…
В конце лета получаю заказ на базу данных. Вопрос, на чем писать, не стоит. Конечно, Qt! Практика поможет изучить то, что еще скрыто. Начинаю работать над приложением. Вроде бы формочки красивые получаются, код удобно писать, все есть… И должен бы радоваться, да вот получается лапша из SQL-С++ кода. Ошибкоопасная, в сопровождении трудная, на вид – убожество… Как потом людям в глаза смотреть и называть себя программистом?
Так родился проектик. Да, маленький проект, призванный ото всего этого безобразия избавить. Благо, тропинка проторена, и для всех языков программирования, для всех платформ уже есть подобные вещи. Ну и ладно, что есть. Хочу свою, тем более, под Qt ничего толкового не нашел.

QST: QsT SQL Tools

Это инструментарий, а лучше сказать – библиотека, а еще лучше сказать – набор классов, который избавляет программиста от «SQL-лапши» в коде. Естественно, с помощью генерации запросов, но не простой, а через специальные DFD-описатели, что дает много-много полезных плюшек. Как-то: обращаемся к полям таблицы БД по именам, извлекаем любые данные, имеем разные DFD-описатели под разные запросы, работаем с моделями-представлениями, инкапсулируем все это в классы-хэндлеры, а те еще много чего умеют, поелику отнаследованы от AbstractModelHanlder…
Но – по порядку.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments11
2

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity