Search
Write a publication
Pull to refresh
48
0

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

Send message

Линейный алгоритм поиска в отсортированной таблице

Reading time1 min
Views2.4K
Когда есть необходимость отыскать что-либо в отсортированной последовательности данных, на ум сразу же приходит бинарный поиск, работающий за логарифмическое время. Но иногда даже проверенные временем решения оказываются аутсайдерами, уступая место «молодёжи».
Пусть у нас есть таблица NxM, элементы в которой отсортированы по строкам и по столбцам, например, такая:

image
Нужно уметь максимально быстро находить нужный элемент в данной таблице.
Читать дальше →

Сортировка неструктурированного потока данных

Reading time1 min
Views1.1K
В прошлой статье Я писал как мы на YPAG.RU сортируем компании по разделам с помощью нейронной сети.
Многие просили описать алгоритм. Я опишу универсальный подход для сортировки данных.

1. Нужно проанализировать добавленный текст и определить в нем ключевые слова. Есть много алгоритмов для определения ключевых слов, Я использовал законы Зипфа, кстати по этой теме мне пришлось писать дипломный проект.

2. После определению ключевых слов нужно сделать релевантный поиск по этим ключевым словам по базе уже структурированных документов.

3. Отбираются 20 самых релевантных документов и строится по ним рейтинг разделов. После этого отбираются самые популярные разделы из этой выборки. Этот порог настраивается сугубо индивидуально, у нас стоит порог – больше 5.

4 У нас на YPAG.RU еще назначается позиция документа в разделе. Позиция вычисляется следующим образом: определяются позиции найденных документов раздела и вычисляется средняя позиция. Если компания интересует посетителей – позиция постепенно растет.

Таким образом можно эффективно структурировать данные. Погрешность составляет 3-5%.
Основные проблемы возникают, если текст ни точно сформулирован. Например: оптовые закупки. Ни понятно что, как.

C#: Этюды, часть 6

Reading time1 min
Views484
Со времени последнего этюда прошло очень много времени, но я надеюсь, что хабраюзеры не успели утратить интерес к C#.

В этот раз задачка довольно простая, но новичкам в шарпе она может оказаться полезной. Есть следующий код:
Читать дальше →

Высокоуровневая абстракция в программировании. Наш друг и враг

Reading time8 min
Views1.6K
Большая часть прогресса, который мы наблюдаем за окном, это результат человеческой лени. Лень было красить забор кисточкой, изобрели валик. Лень было красить валиком, изобрели пульверизатор. Ну Вы поняли. Какое это все имеет отношение к программированию? Самое непосредственное!

Друг


Первые программисты манипулировали такими понятиями как «0» и «1» и это было долго и непонятно. Человеческая лень предложила при помощи ноликов и единичек написать программу преобразующую MOV, ADD, JMP в новые нолики и единички, понятные процессору.
Читать дальше →

ГОСТовские рамки для OpenOffice

Reading time1 min
Views34K
Во время сессии хочу поделиться с сообществом рамками, выполненными по ГОСТ и адаптированными для OpenOffice.org.

У нас в Нижегородском РадиоТехническом Колледже для подготовки курсовых и дипломных работ студенты используют OpenOffice. Благодаря этому мы и имеем документы в «правильном» формате.

Скачать ГОСТовские рамки для OpenOffice можно на сайте НРТК.

Eucalyptus – «облако» своими руками

Reading time5 min
Views4.6K
Существующие технологии «облачных вычислений» позволяют не только использовать публичные сервисы, на подобии Amazon, но и самостоятельно разворачивать «облачные» инфраструктуры, как на базе предприятий, так и в домашних условиях. Существуют свободно распространяемые системы для таких частных облаков. Эти системы доступны каждому, но их установка может стать непростой задачей. Опыту установки одной из наиболее известных таких систем и посвящена данная статья.

Eucalyptus — это разработка сотрудников University of California, Santa Barbara, распространяемая по лицензии GPL v3. Архитектурно Eucalyptus состоит из нескольких основных элементов:
  • Cloud Controller – контроллер «облака», принимает запросы от пользователей на создание виртуальных машин;
  • Walrus – хранилище пользовательских данных и образов виртуальных машин;
  • Cluster Controller – контролер кластера, распределяет задачи по запуску виртуальных машин между узлами;
  • Node Controller – контролер узла, управляет жизненным циклом виртуальных машин.


image

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

Футурология интернет

Reading time3 min
Views458
Наверное, существуют разные критерии, по которым можно выделять этапы эволюции сети интернет. Например, по характеру участия пользователей в производстве контента (что использовалось в идеологии Web 2.0). Здесь же хочу промоделировать развитие сети по критерию (логической) связности её совокупного контента, т.е. в какой мере он являет собой связное целое. Мне кажется, такой подход позволяет лучше понимать закономерности развития, в том числе изменение характера пользовательского участия.
Читать дальше →

Трансформация образов (Морфинг проектов)

Reading time6 min
Views763
Разные бывают образы и разные трансформации. Гугл, например, по запросу «трансформация визуальных образов» выдал в топе «трансформация женских образов на страницах советских журналов». А я-то хотел лишь узнать, имеет ли название какое-нибудь специальное эта, знаете, известная фенька с трансформацией визуальных образов, когда имеется, например, портрет чей-нибудь и из него быстренько получается совсем другой портрет. Вот я сейчас примерно о том же, но применительно к интернет-проектам: как из одного проекта путем минимальных трансформаций получить другой. Зачем это нужно? – допустим, у вас имеется задумка проекта и вы хотите посмотреть, как изменить его успешно существующие ближайшие аналоги, чтобы получился этот проект. Понять, находятся ли эти изменения в русле естественной эволюции этих аналогов (в том числе в контексте общих тенденций развития интернет) и если да, то насколько долгий период могла бы занять такая эволюция. Эти вопросы важны для вас и ваших потенциальных инвесторов, потому что существует соображение, высказанное Антоном Носиком (возможно, оно общеизвестно, просто я впервые услышал это от Антона): если ваш проект находится в русле активности какого-либо крупного игрока, то нужно оценить и взвесить, стоит ли затевать свой отдельный стартап или же лучше предложить себя и свои идеи этому игроку.
Читать дальше →

Какие будут справочные системы в будущем?

Reading time2 min
Views698
Я являюсь создателем бизнес-справочника YPAG.RU, хотел бы осветить данную отрасль, рассказать недостатки и преимущества их, в какую сторону они будут развиваться.
Ни для кого, ни секрет, что классические бумажные бизнес справочники ушли в историю, с ними было трудно работать, сложно находить нужную информацию, они были громоздкие. На смену им пришли электронные справочники такие как КОМПАСС и Интернет справочники. Основной недостаток этих справочников доступ к актуальным данным. Любая большая справочная система требует постоянно проверку актуальности данных. Для это нужно иметь большой штат работников, регулярно обзванивать все компании, запрашивать корректные данные. Это очень дорогое удовольствие, бизнес справочных систем не имеет высокой рентабельности, по этому данные практические всех справочных систем имеют около 30% устаревшей информации.
Читать дальше →

Извлечение фактов

Reading time3 min
Views13K
Задача извлечения информации из текста сама по себе не нова: в этом направлении проделано довольно много работы как со стороны крупных компаний aka Яndex и Google, так и со стороны независимых разработчиков. Однако, говорить о том, что данная задача окончательно решена, увы, не приходится. В этой статье я хочу немного упорядочить свои знания по данному вопросу, поверхностно разобрав наработки, с которыми мне недавно пришлось столкнуться.
Читать дальше →

Почему C++ не подходит для написания графических пользовательских интерфейсов

Reading time5 min
Views20K

Я люблю C++, но...



Сразу оговорюсь, что C++ мой любимый язык, я на нем пишу практически «с детства» и отрицать его важность, как лучшего одного из лучших языков для написания программ для любых целей, не буду. Тем более не вижу смысла начинать очередной холивар или меряться «указками». Это статья — лишь описание неудачного опыта работы с языком, объясняющая некоторые его аспекты, знание которых поможет другим программистам в будущем.

Однажды я столкнулся с развивающейся библиотекой GUI класса. С точки зрения C++, а точнее его классов, экземпляров и иерархий, этот язык представляется невероятно близким к концепции управления GUI, в частности таким элементам, как виджеты, окна классов и подокна. OO модели C++ и оконной системы тем не менее разные. C++ был задуман как «статический» язык с охватом лексем, статической проверкой типов и иерархий определенных во время компиляции. Окна и их объекты с другой стороны, по своей природе динамичны, они обычно живут за рамкам отдельной процедуры или блока, с помощью которой были созданы; иерархии виджетов в значительной степени определены расположением, видимостью и потоками событий. Основы графического пользовательского интерфейса, такие как динамические и геометрические иерархии окон и управления, протекания событий, не поддерживаются непосредственно синтаксисом С++ либо его семантикой. Таким образом, эти функции должны быть воспроизведены в коде C++ GUI. Это приводит к дублированию графического инструментария, или функциональности оконного менеджера, код «раздувается», мы вынуждены отказываться от многих «сильных» особенностей C++ (например, проверки типов во время компиляции). В статье приведено несколько простых примеров C++ / GUI «не стыковок».
Читать дальше →

В парламенте Новой Зеландии идёт подготовка к тому, чтобы покончить с патентами на программное обеспечение

Reading time1 min
Views3K
Судя по блогосфере и новостям ([1], [2], [3], [4] и др.), кое до кого наконец начала доходить негативная роль патентов на программное обеспечение. Кратко процитирую официальные комментарии к законопроекту, разработанному одним из государственных комитетов:

— Программное обеспечение должно быть исключено из числа продуктов, которые могут быть запатентованы. Патенты тормозят инновационные разработки и останавливают конкуренцию среди разработчиков ПО в зародыше. Мы решили изменить сложившуюся ситуацию.

(Конец цитаты.)

Как хорошо, Господи.

ВКонтактеID, можно короче — vk.lc

Reading time1 min
Views855
Пока на множестве сайтов не повилась просто кнопочка с логотипом «ВойтиВКонтакте», ВКонтактеID помогает и упрощает вход и регистрацию клиентов (через стандартный протокол OpenID). Теперь у сервиса появился короткий и запоминающийся алиас, чтобы набирать чего-либо надо было ещё меньше.
На всех сайтах поддерживающих OpenID 2.0 достаточно ввести адрес vk.lc и вы будете аутентифицированы с помощью вашего аккаунта ВКонтакте через официальный Open API (т.е. никаких паролей налево не утекает).
На сайтах поддерживающих только OpenID 1.x, надо вводить адрес vk.lc/idXXXXXX, где XXXXXX ваш идентификатор ВКонтакте.
P.S. Это всего-лишь краткие алиасы — основной адрес VKontakteID.ru

Вариант синхронной импульсной нейронной сети с обратными связями

Reading time6 min
Views12K

Предупреждение


Предупреждаю, рассуждения на данный момент чисто теоретические. Но уж очень красивая теория получается. Или я схожу с ума. Интересно ваше мнение о моих рассуждениях — стоит ли затевать практическую реализацию?
Скажу честно, причина по которой родились все дальнейшие рассуждения в том, что мне не удалась одна моя дурная затея — научить нейронную сеть самостоятельно играть в тетрис. Обучать сеть с учителем нереально долго, т.к. учитель — это я, да и однозначно правильных вариантов движения фигурок в тетрисе нет. Был применён генетический алгоритм обучения сети. Максимум чему обучилась моя популяция за сутки виртуального процесса эволюции и естественного отбора — раскладывать падающие фигурки в три столбика (на самом деле она ещё научилась поворачивать фигурки так, чтоб они были скорее «горизонтальны», чем «вертикальны», но вот научиться делать поворот фигурок так чтоб линии убирались — оказалось не по силам).
Читать дальше →

В защиту Джобса (и, отчасти, флеша)

Reading time8 min
Views894
Данный топик является ответом хабраюзеру Malinnikov, автору топика Стив Джобс о флеш-технологии. Прикладная риторика, на который я написал достаточно емкий ответ. Вопрос, который был мне задан, звучит как:

Вы считаете, что причины запрета флеша на айфоне технические.

Как вы тогда объясните, что Apple запретила и нативные приложения, созданные во флеше, но не требующие флеш-плеера?

За свой ответ на оригинальный топик я получил немало плюсов в карму и несколько просьб от хабраюзеров писать ответы в виде отдельных топиков. Так как ответ на вопрос получился еще более объемным, я решил последовать совету и оформить его в виде отдельного поста (добавлю стандартное «пост первый, просьба не пинать если что не так»).

И так, что же не так с нативными приложениями, сделанными с помощью CS5? Под хабракатом попробую объяснить чуть подробнее.

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

Боевым дронам приказано убивать всех подозрительных

Reading time1 min
Views2.6K
Армия США и ЦРУ расширили сферу использования беспилотных летательных аппаратов (дронов) в Пакистане.



Если раньше спецслужбы использовали их только для точечных ударов по известным террористам, то отныне дроны смогут атаковать всех подозрительных лиц, даже если их имена не известны (это могут быть инструкторы, рядовые боевики, любые подозрительные лица с оружием в руках), а также прочие объекты по расширенному списку (тренировочные лагеря, места отдыха и т.д.).

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

Коллекция раритетных и не очень ноутбуков

Reading time3 min
Views16K
Не знаю, с чего уж пошло мое увлечение старыми ноутбуками, но размер нынешней небольшой коллекции позволяет немного похвастаться ею. Что-то отдавали друзья, что-то менял на еду и пиво, что-то даже покупал порадовать себя любимого. Большинство ноутов из моей коллекции живы-здоровы, всего один мертв окончательно, и под еще один не могу найти корзину для жесткого диска.
image

Начнем нашу экскурсию в прошлое?
(осторожно — траффик)
Читать дальше →

Amiga 1200, максимальный апгрейд

Reading time8 min
Views23K
Расскажу о компьютере Amiga 1200, а так же о том как ее можно почти максимально проапгрейдить.

Amiga 1200 — это бюджетный компьютер из семейства Amiga, выпускался с 1992 года.
Данная амига имеет чипсет AGA, это последнее поколение Амиг выпущенное Commodore перед банкротством.



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

Какой язык учить?

Reading time1 min
Views2.5K
Хочешь программировать на выразительном и мощном языке: Python
Нужно по-быстрому веб-сайт: PHP
Желаешь в тусовку зовущих себя «рок-звездами» программирования: Ruby
Реально нужно научиться программировать: C
Ищешь просветления: Scheme
Уйти в хандру: SQL
Потерять одну хромосому: Microsoft Visual Basic
Для получения постоянной, заурядной, но хорошо оплачиваемой работы по созданию финансовых приложений в офисной загородке под лампами дневного света: Java
Тоже самое, но с аббревиатурами и списком сертификатов в своей подписи: C#
Получить волшебное ощущение детского изумления, которое сложно отличить от мании величия: Objective C

оригинал (en)

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity