четверг, 29 марта 2007 г.

JavaServer Faces


Я ненавижу JavaServer Faces(JSF) и ASP.NET как технологию для Web-программирования. Соответственно, все продукты порожденные данной технологией(Sun Java ServerFaces Reference Implementation, Apache MyFaces, Shale) тоже отстой. Возможно какой-нибудь внутренний ресурс предприятия и можно на этом сделать(и то надо сперва очень хорошо подумать), но публичный web-сайт на этом писать просто нельзя. Причины тому следующие:



  1. Использует Java ServerPages тэги для создания дизайна. Это нехорошо. Дизайн должен создаваться дизайнером, а дизайнер должен знать HTML, XHTML, CSS. Используя JSF он должен изучить набор других тэгов. Кроме того, в стандартном наборе компонент имеются компоненты без внутренних данных, дублирующие стандартные тэги HTML. Зачем это надо было делать не совсем понятно.

  2. Компоненты имеют внутреннее состояния. Т.е. у компонента имеются некоторые данные(например, значение в ячейках таблицы). Поскольку при выполнении пользователем различных действий над компонентом(например, отсортировать значения в выбранной колонке таблицы), состояние компонента меняется, то по рекомендациям HTTP-протокола надо отсылать POST-запросы на сервер. Возможности использовать GET просто нет. Соответственно, пользователь, например, не сможет добавить себе в закладки страницу с таблицей, отсортированной по определенному столбцу. Ему придется каждый раз сортировать ее.

  3. По своей природе Web-технологии очень гибкая штука и сужение его до некоторых стандартных GUI-подобных компонент слишком ограничивает возможности всех разработчиков сайта, в первую очередь дизайнеров.



В принципе для быстрого создания какого-нибудь стандартного внутреннего ресурса компании JSF подойдет. Однако было бы намного лучше, если бы Sun сделала что-то наподобие Ruby on Rails, а не содрала(во многом) ASP.NET.

вторник, 27 марта 2007 г.

Дипломы, аттестаты, курсовые работы...

Интересная работа в области искусственного интеллекта - генератор Computer Science работ. Некоторые работы даже хотели взять на конференции :)

четверг, 15 марта 2007 г.

Что такое computing? или Кто я?

Часто всё, что относится к компьютерам(программирование, поддержка пользователей, разработка цифровых устройств, изучение методологий программирования) называют информационными технологиями. Однако в научных кругах данный термин не охватывает всё, что связано с компьютерами. На то есть другой термин — computing. Исследованием того, что же такое computing занялась сама ACM и опубликовала Computing Curricula.
Этот документ представляет собой основу, в которую возможно добавление новых отраслей computing'а.

Собственно, почему стоит посмотреть/почитать Computing Curricula.
Проще начать со студентов, обучение которых подходит к концу. Они понимают(наверное :)), что они изучили и насколько хорошо, поэтому могут узнать как себя назвать и кем лучше всего работать(программистом, project manager'ом, администратором, аналитиком). Для студентов, которые только начинают свое обучение в области computing, все немного сложнее из-за порочного круга. С одной стороны, им полезно знать, что следует изучать в первую очередь, чтобы


  • разрабатывать новые процессоры(Computer Engineering)

  • создавать новые алгоритмы и способы использования компьютера(Computer Science)

  • управлять разработкой больших программных систем(Software Engineering)
  • устанавливать, конфигурировать и поддерживать в рабочем состоянии все software-добро предприятия(Information Technology)

  • заниматься еще чем-то связанным с информационными системами перприятия(Information Systems)


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

  1. сразу взяться за что-то одно и изучать то, что нужно

  2. изучить все, а потом узнать в чем разбираешься лучше всего

BBC World's Most Powerful: Steve Jobs vs. Bill Gates

Кто же самый могущественный в мире computing?


Выиграл Билл Гейтс(Bill Gates), содравший Mac и купивший QDOS.

В тему: о великом противостоянии Apple vs. Microsoft снят художественный фильм Pirates of Silicon Valley (1999)

Как работает Google

Официальная публикация по Google File System, распределенной файловой системе Google, позволяющей надежно хранить и обрабатывать информацию на куче компьютеров, учитывая что эти самые компьютеры дешевые и ненадежные. Вобщем, основа Google, на которой строится все остальное.
А здесь можно найти видеозапись лекции Джефа Дина(Jeff Dean) о Google File System и Google BigTable (распределенная база для хранения структурированных данных). На сайте Университета Вашингтона есть те же видео:



Поскольку и Google File System и Google BigTable являются закрытыми, то нашлись добровольцы и попытались(и пытаются) сделать то же самое, но открытое. Появился проект Apache Lucene, в рамках которого разрабатывается поисковый движок, основанный на технологиях Google.
Особенно интересен аналог Google File System - Apache Lucene Hadoop.

Может ли мыслить физическая символьная система? История в картинках

Здесь находятся картинки по интересному вопросу искусственного интеллекта.
Алан Тьюринг в 1950 предположил, что машины могут мыслить так как это делают люди. Позже была высказана гипотеза о физической символьной система Ньюэлом (Newell) и Саймоном (Simon). Согласно данной гипотезе мозг все что нас окружает отображается в мозг в виде некоторых символов. Мышление по данной гипотезе представляет собой процесс вывода из этих символов других по некоторым правилам. В принципе то же самое мог бы делать и компьютер. Учитывая, что мозг оперирует "дискретными понятиями", проблема заключается в подборе правил.

О названии

Сложно придумать название, которое было бы не занято на blogspot, поэтому пришлось забыть про собственные названия и воспользоваться генератором названий Web 2.0 Company Name Generator