• Эффективная сегментация изображений на графах
    +1
    Возвращаю (залил на habrastorage) =)
  • Статья Ади Шамира ID-Based
    –2
    Ничто не мешает. Проще всего представить как-то так:

    Допустим, есть у нас сотовый оператор (у него мега-секретно хранится Master-key), когда он выдает всем своим пользователям симки, он подписывает закрытый ключ. Все. Дальше я имея такую симку, могу писать на любой номер этого оператора и «открытым» ключем абонента будет, допустим, его номер телефона (никаких PKI, сертификатов PGP, «доверия»). Имея закрытый ключ, выданный этим же оператором, получатель прочтет, что я ему написал.

    Другой УЦ спокойно сгенерирует закрытый ключ по номеру телефона, но другой (не совпададут), и он не сможет прочесть, что ему написали. Если УЦ. Разные. Серьезный минус всей системы, что потеря Master-key у УЦ — компрометация всей системы, потеря своего закрытого ключа — менять симку (один открытый ключ — один закрытый)
  • Статья Ади Шамира ID-Based
    +4
    Если с темой знаком не был, мало бы чего понял.

    Дополню:
    Решения по ID-based encryption были предложены еще в 2001 году: 1. Решение с использованием квадратичных вычетов (не знаком)
    2. И тогда же Боне-Франклин придумали использовать билинейные спаривания не для криптоанализа (взлома), но и для шифрования. Они использовали Вейль-спаривание, чуть позже в Стэнфорде (и Китае) стало модно использовать Тэйт-спаривания. В последствии оказалось, что кроме ID-based шифрования, с их помощью можно делать шифрование со стойкостью 1024 бита, с использованием ключей 196 бит. Но для этого нужно — «доступно» рассказать об эллиптических кривых, биллинейных спариваниях и только потом о самом устройстве схемы на пальцах… =) Не сложно, но долго.
  • Oracle RAC. Общее описание / Часть 2
    0
    Спасибо =)
  • Технологии виртуализации в менеджменте
    +1
    Лично прошу прощения, если рассказ о формате участия в бизнес-симуляторах на примере GMC получился не совсем «гладким» и легкодоступным. Если тема окажется интересной, мы могли бы поделиться своим опытом с Хабром более предметно, в зависимости от возникших вопросов: оставляйте их в комментариях, если их будет много, то отталкиваясь от них постараемся написать в нужном (заданном Вами) формате новую статью.

    Если Хабру будет интересно, то постараемся пригласить одного из участников команды-финалистов (в ми GMC прошлого и нынешнего года на этот ресурс. У нас после участия остались только положительные эмоции, понимание механизмов из которых происходит оценка стоимости и перспективности компании и (если можно так выразиться) «опыт».

    По поводу данной статьи — мы хотели «заинтересовать на участие в подобных мероприятиях», возможно нам это пока не удалось «в лучшем виде». «По сравнению с писательством игра на скачках — солидный, надежный бизнес.» (Отто фон Бисмарк)
  • Make3D из одной фотографии, часть 1
    +1
    Спасибо за замечание.
    Сделал изображения «кликабельными», с переходом на imageshack.

    Но, к сожалению, большую часть картинок я позаимствовал у авторов из статей, представляющих публикации в pdf формате. По этой причине у некоторых иллюстраций нет более «качественного» аналога.
  • Make3D из одной фотографии, часть 2
    0
    Меня этот вопрос тоже волнует =)
    Настораживает то, что еще в прошлом году (ориентировочно в декабре) авторы публикации были в Stanford University, теперь же (в 2010) в Cornell University, и публикаций новых у них нет (полгода уже как прошло). Не думаю, что они забросят проект, которым занимаются вот уже на протяжении 4 с лишним лет…

    Видимо скоро увидим новый иностранный сервис или plug-in в Photoshop/3DMax =)
    Поживем увидим. Зато как увидим, хоть будем иметь представление о том, что там внутри =)
  • Make3D из одной фотографии, часть 1
    0
    Небольшое пожелание: оставляйте, пожалуйста, критику, замечания и комментарии во второй части статьи, если это напрямую не относится к первой части.
  • Базы данных. Конфликты параллельного доступа (Часть 1 — поиск проблемы)
    +1
    References:
    Мартин Фаулер «Архитектура корпоративных программных приложений» (ozon)
    Глава 16. Типовые решения для обработки задач автономного параллелизма
    — Оптимистическая автономная блокировка (Optimistic Offline Lock)
    — Пессимистическая автономная блокировка (Pessimistic Offline Lock)
    — Блокировка с низкой степенью детализации (Coarse-Grained Lock)
    — Неявная блокировка (Implicit Lock)
  • Пополнение на Яндекс.Картах
    +1
    Спасибо! =)

    Эх… а со Спутника во Владивостоке не видно ни строящегося моста через всю бухту Золотой рог, ни моста на остров Русский. И «Зеленый угол» еще весь в автомобилях. Как в старые добрые времена (года 2 назад).
  • Эффективная сегментация изображений на графах
    0
    Спасибо. Исправил.
  • Эффективная сегментация изображений на графах
    0
    Большое спасибо!

    Признаться честно, я не знал о таких подходах вычисления «разницы цвета». Обязательно ознакомлюсь. А в данной реализации (статье) авторы сделали упор на эффективность вычислений, потому и воспользовались формулами попроще.
  • Эффективная сегментация изображений на графах
    0
    That's right! =)
  • Эффективная сегментация изображений на графах
    +7
    1. В статье уже 2009 (августа) года «An Efficient Parallel Algorithm for Graph-Based Image Segmentation» (статья) Karlsruhe University (Germany), дан вариант распараллеливания этого алгоритма, для более эффективного выполнения вычислений. Кому-то делать эффективный Computer Vision? Why not?
    2. Благодаря тому, что алгоритм позиционируется как очень эффективный, почему бы не реализовать его на какой-нибудь мобильной платформе (КПК): тыцкнул в фото-фокусе на памятник, и камера сама навелась на памятник на весь экран или (если будет выполняться шустро на КПК) на какой-нибудь двигающийся объект – и он, оставаясь «выделенным» в квадратик, продолжает быть «отфотканным», пока не исчезнет за горизонт. Why not?
    3. Так как сегментация (во всех алгоритмах) зависит от параметров, почему бы не научить алгоритм подстраиваться под загруженное изображение – допустим нейронной сетью. Загружена фотография автомобиля днем – выставляем для метода одни параметры, загружен ландшафт – другие, апартаменты – третьи. Это тоже сложная задача. И это сейчас стараются делать «за бугром». Наши студенты не хуже!!! Why not?
    4. Wanna be a «bad guy»? Цифро-буквенные каптчи все еще достаточно распространенны. Можно взять цветную «зашумленную» каптчу, пройтись по ней размытием Гаусса, чтобы убрать мелкие пиксели, полосочки, потом сегментацией выделить все буквы. Применить на «толстых» буквах скелетонизацию (skeletonization: построение topological skeleton), убрать фильтрами артефакты и получить что-то примерно похожее на рукописный ввод. Далее – либо своей обученной нейронной сетью распознать буковки, или воспользоваться чем-то похожим на FineReader. Нам кажется, что так «можно грабить корованы…» (мем). Why not?
  • Эффективная сегментация изображений на графах
    0
    Варианты, которые первыми «пришли в голову»:
  • Эффективная сегментация изображений на графах
    +1
    Большущее СПАСИБО!!! =)) Очень приятно! =))
  • Эффективная сегментация изображений на графах
    +4
    Извинюсь… еле запостил статью в таком объеме. Чуть больше и Хабр «ни в какую». Потому и сократил статью. Пришлось урезать: практическое применение (кому интересно — сами найдут) и код.
    Зато авторский source code прилагается: тут. Он очень сильно коррелирует с тем, что изложено в статье. Разобраться с ним — пару часов удовольствия. =)
  • Эффективная сегментация изображений на графах
    +4
    Ни пуха, ни пера! =)
  • Facedetection for fun
    0
    На Хабре уже проскакивали статьи по данной тематике:
    1. Face Detection на джаве — это просто!
    2. В поисках НЛО. Детект объектов на изображении

    А основное ядро, вероятно, построенно на основе метода «Viola — Jones» (2001, pdf), он в OpenCV реализован.
  • Безопасность при межпроектном взаимодействии
    0
    Извиняюсь… (не дописал)

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

    Спасибо.
  • Безопасность при межпроектном взаимодействии
    0
    Хорошая статья. Последовательно и грамотно изложено, а объем информации
    (В рамках курса по изучению «Криптографии» в университете, все вышеописанное изучается около года).

    Более подробно и так же не менее интересно описано в книге Венбо Мао Современная криптография. Теория и практика, с кратким введением в эллиптические кривые (ГОСТ Р 34.11-94) и прочее… Только там читать побольше =)

    Дмитрий, у Вас вверху статьи написано:

    Защита (или отсутствие защиты) от различных типов атак демонстрируется на примере протоколов популярных сегодня систем: Assist, Cyberplat, WebMoney, ChronoPay, Robokassa и PayPal (платёжные системы), а также OpenID, OpenAuth, OAuth (децентрализованная аутентификация).
  • Sandcastle: генерация документации с диаграммами классов
    +1
    В документации к Drawbridge автор явно написал: «Class diagrams need to be exported as Jpeg images before the Drawbridge component can integrate the diagrams with the documentation.» Пока самостоятельно выдергивать jpg, видимо, Drawbridge не приучен.

    На этот счет на stackoverflow есть неплохая заметка, которая ведет на блог msdn. =)
  • Вращение объектов в 3D
    0
    Вот еще пример подобного «3d»: 3DBazar.
    10 минутный manual как делается такая моделька… придется повозиться =)
  • Oracle RAC. Общее описание / Часть 2
    0
    Спасибо! =) Польщен.
    Знали бы Вы, что со мной творилось когда я дописывал вторую часть… =)
  • Oracle RAC. Общее описание / Часть 2
    +1
    К сожалению, мне пока не довелось поработать с Teradata.
    Впрочем, если как-нибудь представится возможность поработать с этой системой — с меня статья =)

    Спасибо Вам за подсказку!
  • Игры в OLTP
    0
    Большое Вам спасибо за развернутый комментарий!

    С удовольствием над этим подумаем. =)
    С момента написания статьи многие вещи в построении Transport level OLTP уже пересмотрели.

    Все вышеизложенное в статье с самого начала не претендовало на production решение, так и, выясняя по ходу дела больше подробностей про внутрености такого подхода (тем более модуля), понятно насколько все далеко от идеала!

    Будем изучать дальше.

    Так же любопытно попробовать обезопаситься от «отваливания» Oracle через ихнюю же технологию TAF (Transparent Application Failover), чтобы при «смерти» одного узла (почти) мгновенно он переназначил Virtual IP другому и тот ответил, что все плохо. TCP timeout будет незначительным. Только для таких экспериментов наверное нужно будет поднять среду Oracle RAC. =)

    А идея про Connection pool звучит очень заманчиво!
  • Программирование как спорт
    0
    Согласен. =)

    Только я имел ввиду несколько иное. Мы когда в числе 3-х человек на первых курсах захотели «подтянуться» в олимпиадном программировании, собирались после пар и определили порядка 10 различных типовых задач: всевозможные извращенные сортировки, переборы, динамика, графы, вычислительная геометрия, деревья, (длинная) арифметика,… Их разделили между собой примерно поровну. Чтобы все в команде зналось наизусть.

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

    Интересно, как Вам удавалось работать в команде.
    Если вдруг пока свежи воспоминания, у Вас получится интересный рассказ о командной работе. =)
  • Программирование как спорт
    0
    Не обязательно именно про ACM ICPC. Мне просто любопытно, каким образом выглядело участие в ACM в других командах изнутри. Имхо — это чуть ли не самый важный опыт таких олимпиад. =) Мне лично до сих пор пригождается.
    Если вдруг мысли сами сформируются в интересный рассказик касательно этой стороны олимпиадного программирования — с удовольствием бы почитал. Просто мое пожелание. =)

    Спасибо Вам за отзывчивость! =)
  • Программирование как спорт
    +3
    Поддерживаю автора в его начинаниях!
    Сам несколько лет «играл» в ACM ICPC. Если будет возможность осветить, лично меня, теперь больше всего интересует правильная стратегия подготовки команды к олимпиаде, аспекты командной игры, как распределили роли к выступлениям и обменивали знаниями при подготовке. Если это не NDA, с удовольствием про это бы почитал. =)
  • Игры в OLTP
    +1
    Подобных «а если...» очень много, но ведь с чего-то нужно начинать. Статья затевалась ради того, чтобы услышать конструктивную критику. В открытом доступе, т.к. промежуточные результаты вполне могут оказаться полезными тем, кто не близко знаком с nginx, lighttpd. Уже немало поднималось вопросов, что бы выбрать и как реализовать (модуль, fastcgi) highload?

    Спасибо за Ваш профессиональный и конструктивный подход.
  • Игры в OLTP
    0
    вам придется расковыривать OCI и переносить из нее точку синхроноизации в epoll_wait в nginx. Да, я верю что это возможно, но есть подозрение что придется этот OCI переделать.
    Расковырять OCI не получится, Oracle не раскрывает исходники. Если альтернативных вариантов не будет, то «допилить» попробуем nginx, благо код очень осмысленный и отлично читается. За наводку на epoll_wait спасибо!

    И плохо что вы не написали что это только прототип. И в жизни это использовать нельзя.
    Эта мысль подается и в заголовке, и в тексте. Все вышенаписаное — лишь эксперимент.
    Претендовать на best practices по nginx даже и в мыслях не было.
  • Игры в OLTP
    0
    Непосредственно в данных примерах модуль тоже блокируется синхронными вызовами к БД.

    Асинхронные вызовы на OCI мы планируем использовать в дальнейших опытах.
  • Игры в OLTP
    0
    Большое Вам спасибо за советы!
    Признаюсь действительно был не прав в некоторых местах:

    1. Тут действительно лучше подошло бы лучше вроде:

    1.  select count(*) into l_cnt
    2.     from dual
    3.   where exists ( select NULL
    4.                     from emp
    5.                   where sal > 4000 );
    * This source code was highlighted with Source Code Highlighter.
    или
    1. begin
    2.  select id
    3.   from emp
    4.   where sal>4000 and rownum <= 1
    5. exception
    6.   when no_data_found then
    7.      raise_application_error(-20010, 'Not found');
    8. end;
    * This source code was highlighted with Source Code Highlighter.
    Tom Kyte так же советует вариант через for.

    2. Неявные курсоры конечно лучше, но я ими воспользовался, чтобы одновременно залочить строчки FOR UPDATE, посмотреть есть ли в них данные (чтобы сообщить об этом клиенту) и по ним же обновиться. Так делают (ниже в комментах). Конструкция:
    1. select id
    2.  into l_var
    3.  from anytable
    4. where id = 123
    5.   for update;
    * This source code was highlighted with Source Code Highlighter.
    не скомпилируется.

    3. Пачками не коммитили, чтобы БД нагрузить и фиксировать все выполненые транзакции (вдруг БД упадет)

    4. Excetion действительно лучше. My fault. Какая-то привычка из С++ сыграла, там иногда пытаются избегать exception т.к. они занижают производительность и их применять стараются только в случае явных ошибок программ.
  • Игры в OLTP
    0
    Для примера в UPD привели по-настоящему страшный код на OCI. Тут мы и сами боимся… =)
    В окончательном варианте, конечно, спрячем во wrapper.
  • Игры в OLTP
    0
    updated
  • Игры в OLTP
    0
    Масштабируемость осложняется за счет совместной компиляции модулей с nginx'ом. А обновления сервера происходят достаточно часто =)
    Попробуем засунуть Business layer в динамическую библиотеку. При усложнении транзакций, как написано в конце статьи, будем использовать неблокирующие запросы к БД, чтобы не тормозить цикл мультиплексора.
  • Игры в OLTP
    0
    Спасибо за ценный совет!
    Обязательно поэксперементируем… руки чешутся. =)
  • Алгоритмы на графах — Часть 1: Поиск в глубину и проблема взаимоблокировок
    0
    Да. Согласен, что быстродействие и прожорливость по памяти ощутимо улучшается. =)

    Позволю себе подправить Вашу опечатку, чтоб других не смущало: не «очередь», а «стэк» (рекурсия создает стэк вызовов функций).
    Если там будет очередь, то получится BFS (поиск в ширину). =)
  • Алгоритмы на графах — Часть 1: Поиск в глубину и проблема взаимоблокировок
    +1
    Алгоритм поиска в глубину является вспомогательным в других более практических алгоритмах: тут. Думаю, потом эти алгоритмы появятся в след. статьях, с указанием практического применения.

    И так просто вспомнилось, когда мне нужно было C# загрузить файлы по некоторой маске (*.pdf) в БД из некоторой директории (в которой есть поддиректории), то я незадумываясь писал рекурсивную процедуру обхода директорий. Порядок в котором они обходились — и есть Поиск в глубину. В первую попавшуюся до упора, чуть назад в следующую… и.т.д.
  • Изучение ASP.NET+ADO.NET+Silverlight
    0
    Для новичков еще бы книжку про ajax от Эспозито добавить к необходимому минимуму.
    Ведь наверняка UpdatePanel'и будут использоваться, или даже AjaxControlToolkit.

    Я сам так же начинал: Matthew MacDonald, Mario Szpuszta, а потом уже Dino Esposito
    P.S. у MacDonald сейчас есть книжка посвежее (2008), но пока только видимо на английском