Home
Artificial Intelligence Review [entries|archive|friends|userinfo]
vadim_kataev

[ website | Technopedia ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Включаем освещение [Июл. 16, 2008|02:30 pm]
[Tags|, ]

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

Выключаем освещение:
Электроны перестают колебаться взад-вперёд, но продолжают сильное хаотичное движение. Лампа не светит, т.к. тепловой энергии движения зарядов не достаточно.
ссылка13 комментариев|Оставить комментарий

Virtex на 45nm [Май. 13, 2008|01:03 pm]
[Tags|]

Xilinx обещает к концу года появление Virtex на 45nm. Надеюсь, это приведёт к большей доступности 65nm Virtex-5 и 90nm Virtex-4.
ссылкаОставить комментарий

Искусственные фрукты и овощи [Май. 4, 2008|01:20 am]
[Tags|, ]

Развитие химии, микробиологии и продолжающийся рост цен на продовольствие создают благоприятные условия для работ над созданием искусственных продуктов питания. Некоторые пищевые лаборатории Швейцарии и Германии уже вплотную приблизились к рентабельным технологиям и прогнозируемый в дальнейшем рост цен на всё съедобное позволяет говорить о том, что искусственные овощи будут доступны рядовым потребителям уже в ближайшие годы.

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

Искусственные продукты изготавливают из обычного пищевого материала, такого как вода, углеводы, протеины и жиры. Ресурсами могут быть например пшеница, рис, различные травы, листья, цветы, желатин, фруктоза, и различные пищевые отходы. Так что не путать с генномодифицированными продуктами. Ресурсы подвергаются специальной переработке, смешиванию и формированию продуктов с требуемой внутренней структурой, с необходимыми формой, цветом и вкусом. Вот одно из описаний

Будем надеяться что проблема рентабельности технологии будет решена в самое ближайшее время, по крайней мере биржевая коньюктура протеино-содержащих продуктов последнего времени даёт на это все основания. А сейчас как нельзя более подходящее время для придумывания и патентования этих продуктов и их названий.
ссылка3 комментария|Оставить комментарий

Мысленный эксперимент [Дек. 9, 2007|01:57 am]
[Tags|, ]

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

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

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

Эффект от работы такой машины достигается за счёт скорости работы машины. Например, одна любая операция с базовыми символами требует всего лишь нескольких наносекунд. За счёт того, что машина за секунду обрабатывает миллиарды примитивных инструкций, она может перерабатывать огромные количества символов в секунду. Таким образом, машина позволяет получать модели систем, ведущих себя для глаз человека одновременно.

Что бы понять смысл технологии, требуется спуститься ещё ниже. А именно, внимательно посмотреть на устройство машины. Машина представляет собой соединения и переключатели, каждый находящийся либо в положении ВКЛ либо в ВЫКЛ. Каждый переключатель имеет однако ещё один вход, который и управляет положением переключателя. Таким образом, состояние одного соединения может управлять состоянием другого соединения. В любой момент времени такая машина выглядит как миллионы включенных или выключенных соединений и переключателей.

Комбинируя включенные и выключенные соединения, можно закодировать информацию, назвав такую комбинацию символом. Последовательность символов может кодировать большее число состояний. Можно создать такие соединения, которые позволят управлять потоками символов уже и на основе самих символов. Такие основные символы мы назовём инструкциями.

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

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

На вышеописанное можно посмотреть и с другой стороны. Получается, что программа для такой машины содержит не потоки символов и управляющих символами символов, а скорее потоки машин (их номера) с самыми разнообразными свойствами. Такие машины, появляясь и сменяясь во времени миллионы раз в секунду, способны дать большую эффективность и скорость работы моделируемых систем для человека. Вместо того, что бы управлять направлением потоков символов в разные функциональные части машины, мы просто меням сами машины либо их части.
ссылка12 комментариев|Оставить комментарий

Hard disk cache [Ноя. 6, 2007|11:33 pm]
[Tags|, ]

Интересно, почему до сих пор все жёсткие диски имеют такой относительно маленький размер кэш-памяти (8 или 16Мб)?
ссылка9 комментариев|Оставить комментарий

Пыль [Окт. 30, 2007|12:48 am]
[Tags|]

Умная пыль это такая "рассыпуха" из пылинок, где каждая пылинка есть полноценный автономный агент, имеющий сенсоры и эффекторы для коммуникации с другими агентами и системами.

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

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

Так же, отсутствие способности к движению пока мешает эффективно распоряжаться энергией. Наличие способности двигаться позволяло бы пылинкам находить источники энергии, например можно регулировать угол батареи к солнцу.
ссылка2 комментария|Оставить комментарий

Параллельное программирование [Мар. 16, 2007|11:51 am]
[Tags|, ]

22 апреля Intel готовит нам очередной праздник снижением цен на многоядерные процессоры и анонсом новых процессоров. Совершенно очевидно, что в ближайшие несколько лет многоядерность будет лишь расти. Весьма возможно, что вскоре на обычных настольных компьютерах будут стоять процессоры, имеющие 80 и более ядер. В связи с тем, что рост производительности программ становится напрямую связан с утилизацией процессорных ядер, жизненно необходимо уметь делать дизайн с учётом параллельных процессов.

Самый высокий выигрыш от использования многоядерных процессоров сейчас имеют как правило пользователи открытых программ и операционных систем, научные работники и инженеры. Скорость например рендеринга с использованием ray-tracing или radiosity на четырёх-ядерном процессоре по сравнению с двух-ядерным, практически удваивается. То же самое касается и симуляции физики, обработки цифровых сигналов, м распознавания образов.

Существует множество подходов к дизайну программ с учётом параллельной архитектуры.

Самый простой и продуктивный метод - это позволить ядру операционной системы самому распределять потоки исполнения по ядрам процессора во времени. Для этого важно в дизайне сложных систем использовать несколько взаимодействующих процессов(что проще) или потоков(что сложнее).

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

Для второго примера рассмотрим дизайн простого 3D мира:
* рендерер читает текущее расположение объектов и отображает их на экране
* аудио-система воспроизводит звукм относительно текущей ситуации в мире, ориентации и месторасположения пользователя в мире
* отдельным процессом идёт просчёт физики мира, взаимодействия объектов
* ещё один процесс отвечает за ввод информации от пользователя (речь, манипуляторы, видео)
Взаимодействие процессов происходит каким-либо известным методом, например через TCP.

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

В целом, решений существует множество и выбор всегда зависит от конкретной ситуации.
ссылка1 комментарий|Оставить комментарий

Преобразование Фурье [Авг. 28, 2006|11:11 am]
[Tags|, ]

Преобразование Фурье (F) является одной из самых часто востребованных функций при обработке почти любых данных, затрагивающих физическую реальность. Смысл преобразования заключается в том, что поставляя на его вход значения какой либо функции y от времени t, на выходе мы получаем функцию F от частоты w. Таким образом, F позволяет получать спектральную картину и исследовать периодические сигналы. Например F функции cos(t) максимальна на частоте 1, а функции cos(t*2) на частоте 2.

Логично предположить, что для получения частот "на которых колеблются" значения функции от времени, необходимо учесть некоторый временной интервал значений функции y и исследуемую частоту w. Для этого можно воспользоваться следующим методом: сложить вместе все значения функции y от t0 до tn с учётом частоты w для каждой w из интервала интересующих нас частот w0...wn:
isqrt2pi = 1 / sqrt(2 * pi)
for w in interval_w:
  F = 0+0j
  for t in interval_t:
    F += y(t) *  e**(-j*w*t)
  print 'Значение на частоте', w, 'равно ', abs(F * isqrt_2pi)

Как известно, любая периодическая функция представима в форме Эйлера:
(Амплитуда + Фаза * sqrt(-1)) * e^(sqrt(-1) * Частота * t)
Таким образом, значение F для каждой частоты w равно сумме синусоид с амплитудами y(t), каждая на частоте w. Число F - комплексное, поэтому нас интересует его магнитуда, которая и даёт в конце цикла искомое значение частоты.

Данный метод самый неэффективный и показан лишь для понимания принципа работы преобразования.
ссылка5 комментариев|Оставить комментарий

Построение фрактального Множества Мандельброта [Авг. 22, 2006|02:54 am]
[Tags|, ]

Построение визуальной картины множества Мандельброта практически мало отлично от построения поля наклонов, задаваемого дифференциальным уравнением первого порядка или же от построения любого другого 2D векторного поля. Любой построенный фрактал является обычным векторным полем. Вместо нахождения наклона касательной к каждой точке плоскости, мы делаем итерации в каждой точке поверхности до тех пор, пока не убедимся, что магнитуда комплексного числа Z (значение текущей точки) не превышает некоторый порог. Одновременно мы считаем итерации, и прибавляем к Z свою координату в виде комплексного числа c на каждом шаге итерации. Число итераций в точке есть некоторая величина присущая точке ("цвет"|"скорость"|"сила"|etc.) в точке. Точка получает свой цвет в зависимости от количества произведённых итераций - аналогия с построением наклона касательной к каждой точке поля наклонов. Вот как компактно и понятно выглядит код программы на Питоне:
def iteration(c):
  (i, z, mag) = (0, 0, 0)
  while abs(z)<2.0 and i<max_iteration:
    z = z**2 + c
    i+=1
  return i

def draw_field(scr):
  j = 0 + 1j
  for scr_x in range(SCREEN_WIDTH):
    for scr_y in range(SCREEN_HEIGHT):
      x = (scr_x - CENTER_X) * scale
      y = (scr_y - CENTER_Y) * scale
      c = x + y*j
      iter_value = iteration(c)
      col = set_color(iter_value)

Сравните его с предыдущим кодом построения векторного поля.

Изюминка практического применения фрактальных множеств в будущих 3D системах реального времени - получение сложных картин "на лету". Газовые турбуленции, языки пламени и любые другие красивые эффекты. Причём как и в случае с векторным полем, можно получать картину с любой желаемой апроксимацией. Более того, практическая "красота" множества Мандельброта состоит в том, что мы оперируем только со сложением и с умножением. Можно создать простой Asic дизайн (например на Verilog) и реализовать представленный алгоритм "железом". Поэтому, например графические карты могли бы брать на себя задачу работы с фрактальной геометрией.
ссылка3 комментария|Оставить комментарий

Ещё раз про принципы нейронной сети [Июн. 16, 2006|03:42 pm]
[Tags|, ]

Распознованием считается отображение(сопоставление) входной информации системы к одному из множества известных системе классов. Распознование одномерного вектора есть простое сравнение входного значения со значениями известного множества.

Самый простой и практичный метод определения "близости" значения заключается в определении дистанции между входным значением и каждым из значений класса. Самая короктая дистанция тогда будет обозначать самое близкое значение. Красота метода заключается в том, что мы можем оперировать с векторами любой размерности. Классическая евклидова дистанция в многомерных пространствах есть квадратный корень из скалярного произведения двух векторов. Поэтому, например для распознования n-мерного вектора мы используем тот же подход что и для скажем двух-мерного:
lambda dist(A, B): sqrt(DotProduct(A,B))
где
A=[a1,a2,a3,...,an]
B=[b1,b2,b3,...,bn]

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

Нейронная сеть мозга млекопитающих работает именно на этом принципе. Каждый нейрон является машиной преобразования, исполняя задачу приведения вектора измерения n к одномерному состоянию, что позволяет компактно хранить информацию о внешней среде, легко и быстро сравнивать входные векторы с известными (веса нейрона). Более того, известные вектора сами по себе становятся известными со временем, таким образом делая нейронную сеть очень проспосабливаемой системой, годной для работы в любой среде, где наличествует хоть какой то порядок во времени (например объекты).
ссылка3 комментария|Оставить комментарий

Mobile Computing [Май. 29, 2006|12:49 am]
[Tags|, ]

Сразу оговорюсь, что я не являюсь экспертом по микроэлектронике. Так что всё что ниже я буду писать, прошу рассматривать через призму критицизма, ну а комментарии как всегда приветствуются.

Поговорить хотелось бы про мини-, микро- и прочего сорта маленькие вычислительные блоки, годные для практического использования во многих областях. Мой интерес вызван некоторыми потребностями в мобильном компьютинге, впрочем довольно специфическом, что бы упоминать об этом в этом скорее общем обзоре-мнении.

Итак, начнём )
ссылка17 комментариев|Оставить комментарий

Войны агентов [Фев. 1, 2006|11:27 pm]
[Tags|]



Войны агентов

Искусство интернет-войны





If you know yourself as well as your enemy,
you will come out of one hundred battles
with one hundred victories.


Sun Tzu “The Art of War”



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

Боту, в отличие от вируса, что бы реализовывать свои цели, не обязательно присутствовать на компьютере жертвы. Далее )
ссылка6 комментариев|Оставить комментарий

Векторное поле [Янв. 30, 2006|07:01 pm]
[Tags|, ]

Часто возникает необходимость иметь модели векторных полей в самых разнообразных задачах. Например, в 3D играх с их помощью можно легко и быстро эмулировать силовые поля, т.е. процессы притяжения/отталкивания заряженных тел, процессы гравитации. Так же метод используется для построения сложных турбулентных состояний флюидов или газов (например эффект тумана или испарений поверхности, изменяющих поле видения).

Рассмотрим простейший 2D пример, который легко расширяется на пространства больших измерений. Построим модель вращения частиц вокруг общего центра поля. Для этого определим производную в каждой точке поля в форме y'=f(x,y). Пусть y'=f(x,y)=(-x/y), что соответсвует ротационному полю вокруг центра координат.

Алгоритм построения картины векторного поля выглядит так:
  for x in range(-W/2, W/2, STEP_X):
    for y in range(-H/2, H/2, STEP_Y):

      slope = get_slope(float(x), float(y))

      dx = math.cos(slope) * SCALE
      dy = math.sin(slope) * SCALE

      scr_x = CENTER_X + x
      scr_y = CENTER_Y + y

      pygame.draw.line(scr, color, (scr_x-dx/2.0, scr_y-dy/2.0), (scr_x+dx/2.0, scr_y+dy/2.0))


где функция slope возвращает арктангенс от значения производной, т.е. от угла наклона касательной.
def get_slope(x, y):
  if y == 0:
    y = 1.0/10**5
  result = math.atan(-x/y)

Затем переход от радиан в 2D систему координат производим с помощью умножения единичного вектора (1,0) на 2D матрицу ротации, или, с учётом того что у нашего единичного вектора y=0, для перехода в координаты берём синус и косинус угла slope.

Получаем вот такую вот картинку:


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

Саморепликация программ [Янв. 16, 2006|02:34 am]
[Tags|, ]




Саморепликация есть такой процесс, когда система создаёт свою копию. Самые популярные самореплицирующиеся программы мы видим на примере компьютерных вирусов. Существует интересная головоломка под названием "Придумывание куинов". Quine есть особый род программ, которые выводят своё содержимое при полном отсутствии ввода. То есть куину запрещается использовать чтение своего кода из файла, получение информации от другого процесса и т.д. Таким образом, в теле куина должна присутсвовать и быть организована текстовая информация таким образом, что бы output полностью точно повторял тело куина.

Например, на языке программирования BASIC куин выглядит так:
10 LIST

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

Вот например куин на языке программирования Ruby:
puts <<2*2,2
puts <<2*2,2
2

Вот пример куина на языке Python:
a='a=%s;print a%%`a`';print a%`a`

А вот на мой взгляд изящный пример на языке C:
#define T(a) main(){printf(a,#a);}
T("#define T(a) main(){printf(a,#a);}\nT(%s)\n")

Попробуйте придумать и вы куин на каком нибудь языке.

ссылка11 комментариев|Оставить комментарий

Распознование речи [Янв. 1, 2006|06:54 pm]
[Tags|]

Для качественного распознования речи используется следующий механизм обработки информации:

0) Дигитальный сигнал с микрофона читается со звуковой карты.
1) Сэмплинг сигнала.
-------- до сюда справляются драйвера, например alsa
2) Построение фреймов (длина 30ms, интервал 10ms, т.о. с 70% оверлэппингом)
3) Windowing (Hamming, Hanning, rectangular)
-------- здесь возможна трансляция по tcp, что желательно для модульности
4) Построение спектральной картины. Требует преобразования Фурье в реальном времени.
5) Feature extraction.
6) Параметрическая репрезентация. Голос, фон.
-------- отсюда начинается работа с голосовыми периодами
7) Subword recognition
8) Лингвистический анализ, построение фраз
ссылка17 комментариев|Оставить комментарий

Генетический код [Дек. 7, 2005|08:34 pm]
[Tags|, ]




Генетический код



Пытаясь систематизировать знания по биологии, полученные ещё в старших классах школы, я порылся в интернете, почитал немецко-английскую википедию(в русской как всегда - пусто) и порылся в энциклопедиях. Интерес возник внезапно, в основном же благодаря только что прочитанной "Chaos, von Bruno Eckhardt" и в настоящее время читаемой "Singularity is near, by Ray Kurzweil".

Особый интерес вызывают у меня статистические результаты обработки содержимого молекул DNA, кстати самых длинных из всех известных молекул. Итак, систематизация позволила ответить самому себе на некоторые вопросы, чем и решил поделиться с Вами, мои уважаемые френды, дабы возможная критика исправила неточности или заблуждения.


1) Почему именно base-4 система ?
Как известно, далее... )

2)Как такая система как человек может быть закодирована лишь небольшим набором информации?
Давайте посчитаем. Молекула DNA человека содержит около 3 миллиардов базовых пар. Это значит что далее... )

3)Почему природа создала жизнь?
Ответ на этот вопрос находится в ответе на следующие вопросы:далее... )


4)Какова вероятность, что жизнь существует не только на Земле?
Я считаю, что в природу заложены такие правила, что при перешагивании через некоторый порог сложности и разнообразия далее... )
ссылка30 комментариев|Оставить комментарий

Агент Адвокат [Окт. 1, 2005|08:15 pm]
[Tags|, ]

Никогда не думал что Право так тесно связано с Философией (и даже Математикой!).
Однако, благодаря значительной чёткости и однозначности написанных законов,
я вижу возможность создания агента "Адвоката", "Судьи" или "Обвинителя".
Для адвокатов такой бот был бы очень полезен.

Кстати, а какие инструменты для автоматизации своей работы используют профессиональные адвокаты до сих пор?

Большая часть работы юриста состоит в бегании по текстам и применении простых правил препозиционной логики.
Сам бог велел автоматизировать их труд :)
ссылка9 комментариев|Оставить комментарий

Самые полезные расширения браузера Firefox [Июл. 9, 2005|10:30 am]
[Tags|, ]




На сегодняшний день нет ни одного другого браузера, позволяющего столько возможностей для пользователя, как браузер Firefox. Не даром его очень часто используют и в научных кругах для разработки самых инновационных технологий обработки веб-информации в областях Human-Computer Interface, Machine Learning, Semantic Nets.

Очень полезная функция браузера Firefox - возможность разрабатывать и добавлять расширения функциональности браузера всем желающим. Некоторые расширения являются настолько полезными и инновационными, что новая инсталляция браузера неявно подразумевает и последуюшую инсталляцию всех полезных расширений.

Давайте посмотрим, какие возможности предлагают нам самые популярные расширения браузера Firefox:читать )
ссылка76 комментариев|Оставить комментарий

FPGA на motherboards [Июн. 2, 2005|01:19 am]
[Tags|]

Идею высказывал уже достаточно давно.
Мне думается, что многие прикладные задачи можно бы было вынести на full-hardware, значительно подняв производительность ПК (Я занимался однажды реализацией шахмат на FPGA, точнее решением SAT проблемы в контексте шахматного алгоритма). Сейчас наблюдается значительный прогресс в этой области, и думаю, идея неплохая садить чипсет сразу на материнскую плату. Чипы в последнее время быстро дешевеют. Производители игрушек и ОС сразу бы подхватили такой подарок. Что уж говорить о скедьюлере Линукса :)
ссылка12 комментариев|Оставить комментарий

Коллективный интеллект в Internet [Май. 30, 2005|05:43 pm]
[Tags|]

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

Рассмотрим например пока трудно разрешимые проблемы искусственного интеллекта, такие как "понятный человеку" близкий литературный перевод текстов. При большом количестве друзей есть высокая вероятность, что найдётся тот, кто поможет перевести текст, обладая для этого свободным временем и необходимыми знаниями. Блоги могут так же быть и экспертными системами, причём время на решение вашей проблемы, равно как и качество результата, зависят опять же от количества и разнообразия ваших друзей. Конечно, наивно надеяться на то, что кто то будет делать за вас вашу работу, но небольшие советы иногда могут очень сильно помочь.

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

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

Делитесь знаниями с другими, пишите больше статей в Wikipedia. Не есть ли это прямая помощь нуждающимся в знаниях вместо сетований на упадок в образовании? Википедия делает то, что ещё несколько лет назад было невозможно - знания систематизируются и шлифуются тысячами авторов так, что ни одна лекция или учебник по эффективности и доступности скоро не смогут сравниться с Wikipedia. От каждого из нас зависит будущее всего человечества. Всего несколько слов иногда способны изменить мировозрение многих многих тысяч людей.
ссылка73 комментария|Оставить комментарий

Домашний каталог.Организация данных. Создание правильной иерархии директориев. [Янв. 28, 2005|10:54 pm]
[Tags|]


Как хранить данные в домашнем каталоге?



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

Какие же принципы желательно соблюдать при создании иерархии директориев? Рассмотрим подробнее.

Скажем в /etc/fstab наш новый раздел связан с каталогом /home/user/store и пока что пуст.
Итак, после этого создаём в нашем хранилище структуру каталогов. И тут возникает первая проблема: какие названия дать каталогам первого уровня относительно /home/user/store и сколько вообще этих каталогов необходимо? Что бы ответить на этот вопрос правильно, нужно ответить на такой вопрос:
"А какую информацию и для кого/чего должны нести названия директориев?"

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

Прежде всего, используйте малый регистр английского алфавита [a-z] для названия каждого из каталогов. Это предотвратит потенциально возможные проблемы совместимости и эргономики в будущем. Название каждого директория должно быть одним коротким словом, чётко характеризующим главное свойство содержащейся в директории информации. Первые буквы названий вложенных директорий должны различаться, так как мы орентируемся в основном на удобство нашей работы с консолью и нам важно что бы автодополнение по Tab срабатывало с первого нажатия. Количество вложенных директорий не должно превышать 6-7 и только предпоследние директории в иерархии могут иметь произвольное количество листовых директорий. Количество вложений не должно превышать 5-6 относительно /home/user/store. Вот приведён возможный расклад первых 3х уровней вложения:

├───dynamic
│   ├───audio
│   │   ├───book
│   │   └───music
│   └───video
│       ├───clip
│       ├───docu
│       ├───film
│       ├───lecture
│       ├───serial
│       └───trailer
├───run
│   ├───native
│   │   ├───app
│   │   ├───game
│   │   └───script
│   └───other
│       └───game
└───static
    ├───doc
    │   ├───art
    │   └───tech
    └───pic
        ├───art
        ├───foto
        ├───map
        └───tech

Всегда осторожно переименовывайте файлы что бы не потерять важную семантическую информацию. Например переименование файла Ed.Wood.1994.DVDRip.DivX-MDX.avi к виду Ed.Wood.avi может привести к сложностям при поиске например вами или агентом подходящих субтитров или ещё какой нибудь связанной с прошлым названием информации в сети интернет.
ссылка20 комментариев|Оставить комментарий

Компьютерное Зрение. Computer Vision [Янв. 21, 2005|08:03 pm]
[Tags|]



Качественные решения в этой области стали появляться относительно
недавно. Сейчас начинается своеобразный "индустриальный бум" 
связанный не в последнюю очередь с механизмами компьютерного
восприятия, в том числе и искусственного зрения.



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



Что представляет собой понятие Компьютерное Зрение? Это способность
программ анализировать реальный мир на основе получения информации о
нём (чаще в реальном времени) в форме световых градаций. Говоря проще -
это автоматический анализ изображения поступающего с видеокамер.
Программы анализируют физическую среду и делают например прогнозы
развития окружающей среды во времени, принимают решения по изменению
окружающей среды что бы достичь определённых целей.
Read more... )
ссылка2 комментария|Оставить комментарий

navigation
[ viewing | most recent entries ]

Реклама