Search
Write a publication
Pull to refresh
-2
1.8

Пользователь

Send message

Пользовательские литералы в C++11

Reading time5 min
Views42K
Более полугода прошло с момента принятия стандарта C++11. В сети можно найти много материалов посвященных новому стандарту, однако большинство из них касаются самых простых возможностей, самых сладких. Я говорю о лямбда-функциях, системе автоматического выведения типов, новых спецификаторах, умных указателях и т.д. Да, это действительно интересные вещи и, можно смело сказать, они одни из самых полезных и часто используемых. Но на них свет клином не сошелся, и новенький C++11 предлагает нам не только их.

Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
Читать дальше →

Восстановление изображений при помощи нейросетей

Reading time3 min
Views35K

Как-то друг попросил помочь с дипломной работой и дал ссылку на статью, в которой говориться о восстановлении изображения с помощью самоорганизующихся карт Кохонена. Почитав статью, я вначале решил, что это бред какой-то, и что нейросеть к восстановлению никаким боком не стыкуется. Но, я чуток ошибался, оказалось, что этот метод весьма увлекательный, и когда я его таки сделал, не мог набаловаться.
Читать дальше →

КЛАДР умер, да здравствует ФИАС?

Reading time1 min
Views85K
Уважаемые коллеги, которые сталкивались с классификатором адресов Российской Федерации КЛАДР знают, насколько это странная база (в первую очередь своей структурой), а также большим количеством неточностей в самих данных.

В 2011 году за дело взялась ФНС, которая начала разрабатывать новую единую базу Федеральной информационной адресной системы (ФИАС) для того, что бы покончить с адресным бардаком, царящим среди различных ведомств.
Читать дальше →

Шустрый 128-битный LFSR (MMX required)

Reading time4 min
Views18K
Случайные числа — темная лошадка обеспечения механизмов безопасности в цифровой среде. Незаслуженно оставаясь в тени криптографических примитивов, они в то же время являются ключевым элементом для генерации сессионных ключей, применяются в численных методах Монте-Карло, в имитационном моделировании и даже для проверки теорий формирования циклонов!

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



Вариантов реализации генератора псевдослучайных чисел достаточно много: Yarrow, использующий традиционные криптопримитивы, такие как AES-256, SHA-1, MD5; интерфейс CryptoAPI от Microsoft; экзотичные Chaos и PRAND и другие.

Но цель этой заметки иная. Здесь я хочу рассмотреть особенность практической реализации одного весьма популярного генератора псевдослучайных чисел, широко используемого к примеру в Unix среде в псевдоустройстве /dev/random, а также в электронике и при создании потоковых шифров. Речь пойдёт об LFSR (Linear Feedback Shift Register).

Дело в том, что есть мнение, будто в случае использования плотных многочленов, состояния регистра LFSR очень медленно просчитываются. Но как мне видится, зачастую проблема не в самом алгоритме (хотя и он конечно не идеал), а в его реализации.
Читать дальше →

Разработка парсера PHP средствами ANTLR

Reading time5 min
Views6.3K
В качестве хобби последние несколько месяцев я разрабатываю парсер языка PHP с помощью ANTLR. Сам проект для меня скорее просто Just for fun, но в ходе его реализации у меня, разумеется, возникали сложности. Тут сказывается как особенность языка PHP с полным отсутствием спецификаций, так и ограничения алгоритмов LL(k).

В этой статье я бы хотел поделиться техническими решениями и некоторыми хитростями в реализации парсера и процедуры его тестирования. Данная статья будет полезна тем, кто хочет подробнее разобраться в использовании средства ANTLR v2.
Читать дальше →

Ответы генерального директора ABBYY Сергея Андреева на вопросы читателей Хабра. Часть 1

Reading time11 min
Views37K
image
Уважаемые читатели и писатели Хабра!

Хочу сказать спасибо всем участникам этого обсуждения за их искреннее желание сделать нашу страну лучше. Это видно во всех вопросах, заданных здесь, даже если они порой звучат жёстко и предубеждённо. Я посчитал важным ответить на вопросы, потому что ABBYY слишком давно не рассказывала о том, чем мы занимаемся, и как мы это делаем. А отсутствие информации порождает много нелепых догадок. Итак, время отвечать на вопросы.

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

Начну с того, что компании ABBYY уже 21 год. Все это время мы делаем интересные продукты и технологии, известные во всём мире. Сейчас это продукты распознавания печатного и рукописного текста и словари. В будущем – это продукты, основанные на компьютерной лингвистике. Наши интересы не лежат в области потребления. Наши руководители и акционеры не ездят на роскошных автомобилях, не покупают яхт, вертолетов и дворцов, у нас нет дач на Рублевке. Нам интересно делать новые удивительные продукты, а не ходить по магазинам.
Читать дальше →

SQL.js: движок SQLite переведён на JavaScript посредством Emscripten

Reading time1 min
Views19K
Alon Zakai (создатель Emscripten) продолжает действовать: на сей раз он выпустил скрипт SQL.js итог перевода библиотеки SQLite на JavaScript при помощи его собственного средства Emscripten. Демонстрационная страница показывает скрипт в деле, и если вы взглянете на исходники, то увидите, каким простым Закай устроил использование этого средства, им скомпилированного:

var db = SQL.open();
var data = db.exec(command);

Читать дальше →

Условия if...else

Reading time3 min
Views5K
image
Доброго времени суток Хабралюди!

Сегодня для меня великий день.
В вопросах я писал о краткой справке для новичков и профессионалов, думалось мне что я сейчас быстро окунусь в язык, сделаю всем добро и пойду дальше изучать свой Perl.
Но как всегда всё пошло не так...
Читать дальше →

Что нужно от форм?

Reading time5 min
Views8.7K

В жизни каждого разработчика наступает такой момент, когда ему нужно сделать форму. Вроде бы чего тут сложного — бери, бросай. А нет, форма то, она как живая. У неё есть своё настроение, свои привычки. Выбрал пол — “Ж”, она преобразилась, стала чуть другой, любопытной, спрашивает замужем ли, любимые духи, обувь с каблуком, или без? Но ты же мужик! И тут выбираешь пол “М”, и, как бы, вопросы должны быть другие — холост, любимый сорт пива, любимый спорт. Конечно, можно понаделать кучу формочек для каждого чиха, если “М”, то одна, если “Ж”, то другая. Но такой метод обернется катастрофой на этапе поддержки, да и вообще не в духе красивого кода. Поэтому форма должна быть умной. Очень умной. Она должна знать кто её трогает, чего он хочет, его потаённые желания. Например: есть форма ввода адреса в пять полей
  • страна
  • область
  • город
  • улица
  • метро

Выбираю я город, и почему бы форме не додумать область и страну? Или выбрал Владимирскую область, зачем мне в списке городов “Москва”? Поле “метро” для Владимирской области тоже не актуально, а когда выбран город Струнино, так вообще издевательство. Занимаясь разработкой клиентской части в корпоративных WEB приложениях вот уже 5 лет я таки познал, как сделать форму умной. Надеюсь, мой опыт будет полезен и вам.
Читать основы разработки форм в ERP системах

Общаемся с SIM-картой на низком уровне

Reading time5 min
Views50K

f: не могу представить, как крусач может работать) Наши курсачи обычно пыляться где-то на полках
m: Вот у меня есть плата. К ней нужно подрубить сим-карту, и эта плата должна прочитать смс оттуда)
m: плата покупная, а вот программируем ее мы)
f: а нельзя смс с телефона прочитать?

— из жизни, орфография сохранена





Ну а если вам все-таки интересно узнать больше о сим-картах, протоколах передачи и их файловой структуре, прошу под кат. Ну и куда же без кода…

Читать дальше...

Решение задачи «Яндекс интернет математика — 2011». Определение визуальной схожести изображений

Reading time12 min
Views21K
В апреле-мае 2011 года компания Яндекс проводила очередной тур конкурса Яндекс интернет математика. Тема тура: «Определение визуальной схожести изображений».
Я публиковал новость про объявление победителей и обещал в скором времени описать решение поставленной задачи нашей командой — LookLikeIt, которая заняла 12-е место в финальном рейтинге.

И вот, не совсем скорое время наступило!
Читать дальше →

Быстрое сжатие изображений по алгоритму JPEG на CUDA

Reading time13 min
Views20K
Краткое содержание: Создан быстрый кодер FVJPEG для сжатия изображений по алгоритму JPEG на видеокартах NVIDIA. Значительное ускорение получено при распараллеливании алгоритма, его реализации и оптимизации с помощью технологии CUDA. По скорости сжатия кодер FVJPEG превосходит все существующие в настоящее время программные и аппаратные решения для компрессии изображений по алгоритму Baseline JPEG.
Читать дальше →

Еще раз про skiplist…

Reading time6 min
Views36K

… или как я получил «Аленку» за консольное приложение


Существует довольно распространённое мнение, что выполнение различных тестовых заданий помогает очень быстро поднять свой профессиональный уровень. Я и сам люблю иногда откопать какое-нить мудреное тестовое и порешать его, чтобы быть постоянно в тонусе, как говорится. Как-то я выполнял конкурсное задание на стажировку в одну компанию, задачка показалась мне забавной и интересной, вот её краткий текст:

Представьте, что ваш коллега-нытик пришел рассказать о своей непростой задаче — ему нужно не просто упорядочить по возрастанию набор целых чисел, а выдать все элементы упорядоченного набора с L-го по R-й включительно!
Вы заявили, что это элементарная задача и, чтобы написать решение на языке C#, вам нужно десять минут. Ну, или час. Или два. Или шоколадка «Алёнка»

Предполагается, что в наборе допускаются дубликаты, и количество элементов будет не больше, чем 10^6.

К оценке решения есть несколько комментариев:

Ваш код будут оценивать и тестировать три программиста:
  • Билл будет запускать ваше решение на тестах размером не больше 10Кб.
  • В тестах Стивена количество запросов будет не больше 10^5, при этом количество запросов на добавление будет не больше 100.
  • В тестах Марка количество запросов будет не больше 10^5.
Решение может быть очень интересным, поэтому я посчитал нужным его описать.
Читать дальше →

Делаем HTML5/Flash игры на Java

Reading time3 min
Views14K

PlayN и «Как Rovio Angry Birds на HTML5 писала»


На прошедшей конференции Google IO в Сан Франциско была представлена библиотека PlayN. Сессия называлась — Kick-ass Game Programming. И эта технология действительно заманчиво выглядит. Только представить, что пишешь игру на одном языке на любой ОС и используя любимые IDE, а на выходе получаешь игру под HTML5/Android/Native/Flash(!). PlayN свободный и с открытым исходным кодом, а еще на нем была сделана Angry Birds (HTML5).
Читать дальше →

Unreal engine 3 портирован на flash

Reading time1 min
Views6.9K
image

Посмотреть альфа-демку можно на unrealengine.com, весит она метров 50, полноэкранного режима пока нет.

Помимо molehill, во всю используется alchemy2, поэтому требуется flash player 11.2, который можно скачать в adobe labs.

Drag'n'drop файлов во Flex, используя HTML5 File API

Reading time6 min
Views3.1K
Добрый день! Недавно для одного веб-приложения на Flex'e потребовалось сделать drag'n'drop загрузку фотографий. Flash не позволяет напрямую это реализовать, хотя в приложениях AIR такая фунциональность присутствует. Для решения задачи потребовалось применить HTML5 File API.
Читать дальше →

Анализируем проприетарное приложение на OpenCL, написанное с использованием AMD APP SDK

Reading time8 min
Views4.2K
Рассмотрим следующую ситуацию: есть приложение, которое использует AMD GPU для своих вычислений. Как правило, на GPU выносятся самые ресурсоемкие операции. Поэтому если приложение работает быстрее своих конкурентов, то может возникнуть желание узнать, какой же алгоритм реализован в этой программе. Но что делать, если программа является проприетарной и распространяется по лицензии, запрещающей reverse engineering и дизассемблирование?

Чтобы не нарушать лицензии, можно воспользоваться одной маленькой хитростью, оставленной разработчиками AMD APP SDK. Однако чтобы эта хитрость сработала, необходимо выполнение еще одного условия (помимо использования разработчиками приложения указанного SDK): приложение должно использовать OpenCL для вычислений на GPU.

Читать дальше →

Идентификация javascript зловреда

Reading time3 min
Views3.2K
На одном сайте на поддержке в js был обнаружен странный код, точнее было понятно что это зловред: аваст выдал предупреждение, а консоль показала что есть соединение с несколькими левыми сайтами.

Как вредоносный код попал на сайт не так важно, предполагаемая дыра уже закрыта, но, прежде чем окончательно удалять код, я решил посмотреть что же он такого делает.
Читать дальше →

Секундомер на CSS3 без картинок, скриптов и SMS

Reading time5 min
Views18K
CSS3 timer
Привет, Хабраюзер!
Я даже не знаю что хуже, что код для этого секундомера занимает ~ 1100 строк, или то что он работает только в половине браузеров.
Но если же тебе интересно как это работает, прошу под кат.
Читать дальше →

Алгоритмическая ошибка привела к аварии самолёта

Reading time3 min
Views18K
Недавно, 19 декабря 2011г, Австралийское бюро по безопасности на транспорте выпустило отчёт об авиационном происшествии с самолётом А-330 (б/н VH-QPA) авиакомпании Qantas, которое произошло 7 октября 2008г.

image
(фотография Stefan Roesh planepictures.net)

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

Information

Rating
1,989-th
Registered
Activity