Архив за Декабрь, 2007

Создание пустого объекта в Doctrine

Пятница, Декабрь 21st, 2007

Наверняка многие сталкивались с тем, что если создать пустой объект (у которого нет ни одного свойства с default-ным значением)

<?php 

$user = new User();

$user->save();

?>

то он просто не сохраняется в базу. Лично мне приходилось обходить это искусственным введением поля с дефолтным значением в объект.

Но можно это делать проще:

<?php

$user = new User();
$user->state(‘TDIRTY’);
$user->save();

$user->id; // 1

?>

«By default Doctrine doesn’t execute when save() is being called on an unmodified record. There might be situations where you want to force-insert the record even if it has not been modified. This can be achieved by assigning the state of the record to Doctrine_Record::STATE_TDIRTY.»

Как создать schema.yml для Doctrine по существующей базе

Понедельник, Декабрь 17th, 2007

1. Pull changes from db to schema.*ml (Symfony 1.0+ produce by default schema.yml):
 # symfony propel-build-schema

2. Convert schema.yml to schema.xml (Doctrine expecting schema.xml):
 # symfony propel-convert-yml-schema

3. Import schema to Doctrine:
 # symfony doctrine-import

 file schema.yml appears in config/doctrine

4. Build model:
 # symfony doctrine-build-model

 class files appear in lib/model/doctrine

5. Flush cache:
 # symfony cc

Источник: http://www.symfony-project.org/forum/index.php/m/33806/?srch=doctrine+build+yml+schema+database#msg_33806

Оптимизация ExtJS

Воскресенье, Декабрь 16th, 2007

Если вы используете в своих проектах фреймворк ExtJS, то наверное заметили, что, несмотря на все преимущества и мощность, библиотека все же обладает достаточно большим размером, что сказывается на производительности приложений. Да и даже в минимальной версии нам нужно подгружать несколько файлов (в основном, два JS файла и два стилевых, не считая изображений), а это секунды времени ожидания, для медленных же соединений вообще проблема, часто такая система будет намного медленнее чем даже обычный сайт без AJAX-а.Конечно, в правильно спроектированном приложении страниц, где подключаются все библиотеки, не так и много, и самым верным подходом является применение прелоадера (ну, например, выводить экран загрузки и активировать страницу только когда все загрузится). Но есть еще несколько путей, чтобы сэкономить самое ценно — время пользователя (и повысить скорость работы приложения).

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

Smalltalk — терра инкогнита

Суббота, Декабрь 15th, 2007

Читая книжки по ОПП, паттерны, рефакторинг, гибкие методики и тому подобные, часто в качестве примеров упоминается такой язык как Smalltalk. Раньше видя его название, я сам смутно понимал о чем идет речь (ООП-эшные примеры на нем были конечно большей частью интуитивно понятны), но язык был мне не ведом.

Но вот настало время знакомства и с ним поближе. Нет, я не устроился в умную западную контору которая занимается научными исследованиями или разработкой летных симуляторов (не игр), и не сошел с ума )) Просто мне стало очень интересно что ж за зверь такой, этот легендарный SmallTalk? Свербит профессиональный интерес, понимаете? ;)

Из рускоязычных ресурсов сразу наткнулся на http://www.smalltalk.ru, один из наиболее видимых ресурсов в рунете на эту тему, есть еще http://ru.smalltalk.wikia.com/ (SmallTalk по русски). Еще есть интересный материал В.Э. Карпова http://uiits.miem.edu.ru/Karpov/Pages/OOP/OopSmalltalk.htm (учебное пособие), в котором собраны основные моменты касательно того — что же ЭТО такое.

Ладно, ссылки — ссылками, но вот моя собственные впечатления и выдержки после первого ознакомления:

Начнем с того, что парадигма языка многое переворачивает в голове. Даже если вы и знакомы с какими-то не мейнстримовыми языками, то думаю вас многое в Смолтоке заставит удивиться.

Вот несколько базовых фактов:

1. В языке существует всего 3 оператора.

2. Программирование в среде не требует этапа компиляции, после описания объекта-он уже создал в памяти и живет своей жизнью.

3. Все объекты из которых построена сама среда SmallTalk доступны для использования ровно в том же объеме как и ваши собственные. Т.е. вы можете легко использовать все что уже написано для среды в своей собственно разработке.

4. Программы на smalltalk выполняются на виртуальной машине.

продолжение следует…

ps: это была первая часть

Российский сексуальный чат-бот способен пройти тест Тьюринга?

Четверг, Декабрь 13th, 2007

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

В CyberLover реализованы технологии искусственного интеллекта, позволяющие убедительно имитировать поведение пользователя сайта знакомств, используя различные сценарии – от легкого романтического флирта до агрессивного сексуального поведения. Как сообщается на сайте CyberLover, программа может знакомиться, обмениваться фотографиями и контактной информацией, предлагать виртуальный секс и даже «разводить на деньги».

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

Предупреждение специалистов PC Tools об опасности CyberLover еще раз напоминает об угрозах, которые несет человечеству искусственный интеллект в руках недобросовестных людей.

Источник: http://rnd.cnews.ru/liberal_arts/news/line/index_science.shtml?2007/12/10/278681

Пример реализации Comet-техники на PHP

Четверг, Декабрь 13th, 2007

Переводить не стал, все достаточно понятно: http://www.zeitoun.net/index.php?2007/06/22/46-how-to-implement-comet-with-php

Рассмотрено 2 случая, в первом используется скрытый iframe, второй (небольшой чат)  основан на классическом AJAX-е, не возвращающем запрос.

Кто не в теме, про Comet см. предыдущий пост.

Comet — событийно-ориентированная технология для WEB-приложений

Среда, Декабрь 12th, 2007

Заглядываем в будущее — Comet (не лимонный!)

Comet — архитектура WEB-приложений в которой web-сервер посылает данные клиентской программе (например web-браузеру) асинхронно, без необходимости «клиенту» запрашивать их. Это позволяет создавать событийно-ориентированные веб-приложения, обеспечивающие взаимодействие в реальном времени невозможные в существующих браузерах. Хотя термин Comet появился в 2006 году, идея на несколько лет старше, и называлась по разному, включая: server push, HTTP push, HTTP streaming, Pushlets, Reverse Ajax (встречаются и другие названия).

Comet-приложения используют долго-живущие HTTP-соединения между «клиентом» и сервером, которые сервер может обрабатывать «лениво» (lazily), отправляя новые данные клиенту когда они становятся доступны. Этим и отличается от оригинальной модели web-а, в которой браузер получает в ответе веб-страницу целиком на каждый запрос «клиента», а так же от AJAX-модели, в которой браузер запрашивает кусок данных для обновления текущей страницы. Эффек схожий в приложения использующих AJAX с запросами на сервер для получения новой информации, но производительность и скорость реакции на изменения увеличивается, вместе с тем нагрузка на сервер падает.

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

Перевел только основное (суть) , более подробно с Comet можно ознакомиться на сайте википеди: http://en.wikipedia.org/wiki/Comet_%28programming%29

Вот и попался, мистер Гаррет Джесси Джеймс ;)

Среда, Декабрь 12th, 2007

С одной стороны — недавно узнал кто ввел в массы понятие AJAX — Джесси Джеймс Гаррет, с другой — недавно познакомился с нотацией Гаррета, которую как вы думаете кто придумал? … нет, не Пушкин. Гаррет! тот же самый Джесси Джеймс. Так к чему это я все… а к тому что иногда приятно когда разрозненные кирпичики складываются в единую картину и все встаёт по своим полочкам. В общем, окружили мы его с обоих флангов )))

ладно, работать надо

пардон

Как раньше жили — жесть…

Воскресенье, Декабрь 9th, 2007

Декрет Саратовского Губернского Совета Народных Комиссаров

Декрет Саратовского Губернского Совета Народных Комиссаров об отмене частного владения женщинами Законный бракъ, имевшш место до последняго времени, несомненно являлся продуктомъ того социального неравенства, которое должно быть с корнемъ вырвано въ Советской Республике. До сихъ поръ законные браки служили серьезнымъ оружемъ въ рукахъ буржуазии в борьбе ея с пролетаратомъ, благодаря только имъ все лучгшя экземпляры прекраснаго пола были собственностью буржуевъ империалистов и такою собственностью не могло не быть нарушено правильное продолжен1е человеческаго рода. Поэтому Саратовскш Губернски Советь Народныхъ Комис-саровъ съ одобрешя Исполнительного комитета Губернскаго Совета Рабочихъ, Солдатскихъ и Крестьянскихъ Депутатовъ постановилъ:

  • § 1. Съ 1 января 1918 года отменяется право постояннаго владения женщинами, достигшими 17 л. и до 30 л.
    Примечание: Возрастъ женщинъ определяется метрическими выписями, паспортомъ, а въ случае отсутствия этихъ документовъ квартальными комитетами или старостами и по наружному виду и свидетельскими показашями.
  • §2. Действие настоящего декрета не распространяется на замужнихъ женщинъ, имеющихъ пятерыхъ или более детей. (далее…)

с баша

Четверг, Декабрь 6th, 2007

<Kamichu> Человеческий геном состоит из 3 120 000 000 комплементарных пар, и половина из этого находится в сперматозоиде — 1 560 000 000.
<Kamichu> Каждая пара или аденин-тиминовая, или гуанин-цитозиновая, а также они могут быть направлены в одном из двух направлений, так что есть 4 возможных значения, или 2 бита.
<Kamichu> В статьях что я читал количество сперматозоидов, выделяющихся при эякуляции человека, изменялось от 50 до 500 миллионов. Я буду использовать число 200 000 000 для расчетов.
<Kamichu> Мужской оргазм в среднем длится 5 секунд.
<Kamichu> Суммируя все вышесказанное, мы получаем 1.560*10^9 * 2.000*10^8 * 2 бита, то есть 78 000 терабайт данных.
<Kamichu> Я не знаю с какой скоростью грузовики из Одессы возили диски, но когда я кончаю, я передаю информацию со скоростью 15 600 тб/сек.