Ну почему же? Это все опять же диктуется спросом. Идея с внедрением RFID-а в визитки очень толковая. При массовом пиаре и применении данной технологии цены могут здорово упасть.
BTW, в случае с той же кредиткой, программировать чипы можно прямо на стадии производства, то есть при выпуске кредиток. А большего и не надо. Ну разве что сменить номер телефона, если вдруг поменялся. Но обычно эти визитки все равно будут уже на руках :)
С книгами, имхо, пример очень удачный. Как раз с другом думали в эту сторону. Надо будет попробовать. Вот только цена тэгов еще довольно высока, хотя если дело пойдет то я думаю и цены снизятся до, например, 15 баксов за 100 штук.
P.S: А еще, некоторое время назад, слышал про маразм вида: «для обеспечения безопасного доступа вводится несимметричная система шифрования» (вроде бы нормально) НО! При регистрации, ключ либо генерят на месте, либо даешь свой, НО закрытый ключ тоже надо предоставить: D Якобы для возможности экстренного открытия информации при утере ключа. Ппц, одним словом.
Зная местные реалии, могу сказать так: для того чтобы самим при необходимости подобрать пароль :) «А зачем подбирать, если можно сменить из админки?», спросите вы. А низачем. Местные одмины и не такое творят. А может требование большого брата ^^ Хотя у других банков не лучше, поверьте.
Ну я бы еще посоветовал книгу Д. Рутковской (да, той самой): «Нейронные сети, генетические алгоритмы и нечеткие системы». Можно почитать хотя бы ради ГА, но и про сами сети написано неплохо.
Я полагаю что речь идет о данных, изначально удобных для восприятия этим софтом. Капчу хоть и можно отнести сюда, но мне кажется что это как бы мета уровень информации. То есть, софт искал бы закономерности в последовательностях пикселей, но никак не тог что они из себя представляют. Для этого и проводятся настройки майнинг систем. Да зачем далеко ходить — мы сами читать умеем отнюдь не с рождения. Несмотря на всю мощь мозга, неграмотный человек сможет лишь найти графически похожие элементы. Взять те же иероглифы к примеру…
Я бы в список пункта 2 добавил еще: «Несоблюдение стиля при написании программ» :) Я имею в виду, как несоблюдения стиля вообще, так и забитие на фирменный стандарт по стилю (правила именования переменных, отступов, расстановки скобок).
Если встречаешь такой код, то читать его бывает совершенно невозможно…
К сожалению, сейчас под рукой нету фотоаппарата. Попробовал снять соткой — качество совсем паршивое получается. Когда будет чем снять — обязательно выложу :)
В сборе или по частям? =) У друга ноут на базе 75го пня, даже работает :) Он работал местным промоутером в Intel, рассказывал про эту штуку, так ему не поверили :) Говорят, не было таких процов %)
Совместная сборка наших и еще кого-то. На базе 286го проца. Это был один из первых подобных компьютеров в Алма-ате :) А год тогда был какой то 9х. После динозавров ЕС1840/41 он казался машиной с другой планеты =) Надо сказать, черный корпус и нестандартный дизайн намного опередили свое время. Проработал лет 8, а потом в нем сгорела какая-то микросхема на мамке. И винт на нем был аж 40Мб %) А цветная графика казалась чем-то заоблачным. Помню, как часами гоняли в Dune2 %)
Эх, найти бы такой сейчас… Но зато, до сих пор валяется клава от него =)
Потому что определение класса закрыто и переопределению не подлежит. Иногда хочется добавить поля данных «на лету» (в CL это, кстати, тоже возможно), но гораздо чаще — те или иные методы.
В своем языке я применил (или придумал?) механизм расширений, который позволяет добавлять (и переопределять) методы внешних классов, без наследования. Несмотря на нападки ортодоксов, могу отметить, что использование расширений (по крайней мере в нашем проекте) очень удобно и здорово облегчает жизнь.
В качестве банального примера:
extend int {
public const function times(block b) {
for (var n = 0; n < this; n++)
b(n);
}
}
export function main() {
3.times() { |i| puts(i as string); };
}
Если кто не понял: в рамках текущего модуля мы расширяем класс класс int, объявленный в стандартной библиотеке, методом times() который выполняет некоторый код N раз. Далее этот метод вызывается у экземпляра класса, в данном случае числовой константы 3.
P. S.: Наиболее эффективен этот подход при работе со сторонними модулями.
Как правило, существует некоторый интерфейс модуля, методы которого оперируют с объектами — инстанциями классов объявляемых в рамках этого стороннего модуля. Соответственно, изменять их напрямую мы не имеем возможности. Иногда бывает потребность дополнить такие классы своими методами для удобства обработки или взаимодействия. Проблема заключается в том, что в традиционных языках (С++), для этого потребовалось бы писать классы обертки, реализующие нужные методы и далее оборачивать весь интерфейс так, чтобы он работал с обертками. Естественно, это не относится к полностью динамическим языкам, где это можно сделать.
В случае К++, достаточно расширить класс своими методами и можно тут же применять их, что называется, на практике :)
Какой, нафиг, dolby на 2х динамиках? Тем более на лаптопной звуковухе и хреновых наушниках Такого качества звука и эффекта присутствия мне не дала ни одна система из тех что я имел возможность оценить.
Я бы еще отметил различия в строении ушей. Смысл в том, что звук от источника приходит в уши немного по разному, с некоторым запаздыванием одного относительно другого. Это учитывается мозгом и на основании этой информации, мы определяем положение источника «вверху-внизу» и вроде как еще «спереди-сзади». А «лево-право» определяется обычным образом, засчет стерео.
Видимо эти товарищи эмулируют запаздывание чтобы создать соответствующий эффект.
BTW, в случае с той же кредиткой, программировать чипы можно прямо на стадии производства, то есть при выпуске кредиток. А большего и не надо. Ну разве что сменить номер телефона, если вдруг поменялся. Но обычно эти визитки все равно будут уже на руках :)
Если встречаешь такой код, то читать его бывает совершенно невозможно…
Совместная сборка наших и еще кого-то. На базе 286го проца. Это был один из первых подобных компьютеров в Алма-ате :) А год тогда был какой то 9х. После динозавров ЕС1840/41 он казался машиной с другой планеты =) Надо сказать, черный корпус и нестандартный дизайн намного опередили свое время. Проработал лет 8, а потом в нем сгорела какая-то микросхема на мамке. И винт на нем был аж 40Мб %) А цветная графика казалась чем-то заоблачным. Помню, как часами гоняли в Dune2 %)
Эх, найти бы такой сейчас… Но зато, до сих пор валяется клава от него =)
В своем языке я применил (или придумал?) механизм расширений, который позволяет добавлять (и переопределять) методы внешних классов, без наследования. Несмотря на нападки ортодоксов, могу отметить, что использование расширений (по крайней мере в нашем проекте) очень удобно и здорово облегчает жизнь.
В качестве банального примера:
Если кто не понял: в рамках текущего модуля мы расширяем класс класс int, объявленный в стандартной библиотеке, методом times() который выполняет некоторый код N раз. Далее этот метод вызывается у экземпляра класса, в данном случае числовой константы 3.
P. S.: Наиболее эффективен этот подход при работе со сторонними модулями.
Как правило, существует некоторый интерфейс модуля, методы которого оперируют с объектами — инстанциями классов объявляемых в рамках этого стороннего модуля. Соответственно, изменять их напрямую мы не имеем возможности. Иногда бывает потребность дополнить такие классы своими методами для удобства обработки или взаимодействия. Проблема заключается в том, что в традиционных языках (С++), для этого потребовалось бы писать классы обертки, реализующие нужные методы и далее оборачивать весь интерфейс так, чтобы он работал с обертками. Естественно, это не относится к полностью динамическим языкам, где это можно сделать.
В случае К++, достаточно расширить класс своими методами и можно тут же применять их, что называется, на практике :)
P. P. S.: Интересно мнение товарища khim :)
Видимо эти товарищи эмулируют запаздывание чтобы создать соответствующий эффект.