NewVision WEB-development Team Blog

Archive for Январь, 2010

Doctrine_Query::whereIn c пустым массивом в качестве параметра

Если в update присутствует условие whereIn с пустым массивом в качестве параметра, то оно не учитывается при запросе.
Например, функция активации пользователей:
public function activateUsers(array $user_ids)
{
  Doctrine_Query::create()
    ->update("User u")
    ->set("u.is_active", 1)
    ->whereIn("u.id" , $user_ids)
    ->execute();
}
Если вызвать эту функцию с пустым массивом $user_ids, то проапдейтятся все записи из таблицы пользоватей (т.е. им проставиться is_active [...]

Подготовка данных для сериализации Doctrine Form

Doctrine forms – дополнительная прослойка в symfony form фреймверке для работы с doctrine ORM. Она позволяет легко создавать формы для редактирования объектов базы данных.
Ниже схематически представлена простейшая форма, отвечающая за редактирование объекта, в данном случае – профайла пользователя.

CodeSwarm – визуализация коммитов репозитория

Codeswarm – Organic software visualization of project repositories. Эта утилитка позволяет визуализировать историю комитов репозитория. Поддерживает репозитории следующих типов: svn, cvs. Судя по логу, последняя активность над проектом была в сентябре 2009 года, так что не уверен что поддержка других репозиториев будет в скором времени реализована.

Заметки из книги – Экстремальное программирование

Экстремальное программирование. Кент Бек
Не стоит тратить деньги на асфальтирование дороги, по которой вы все равно не будете ездить, так как вам придется свернуть на ближайшем повороте.
Мы сможем успешно решить стоящую перед нами проблему, если сформулируем стиль, который направлен на прославление каждой из согласующегося набора ценностей, которые служат как человеческим, так и коммерческим требованиям: коммуникация, простота, [...]

А у нас есть море! А у Вас?

Воспоминания о лете

Заметки из статьи – Проектирования больше нет?

«Проектирования больше нет?» Мартин Фаулер (May 2004)
Пожалуй, наиболее противоречивой идеей в XP является отказ от предварительного проектирования в пользу более эволюционного подхода – эволюционного проектирования.
Дизайн системы существует для того, чтобы дать возможность оперативно вносить в систему любые изменения (Кент Бек)
Для предварительного проектирования проблемой номер один является: изменяющиеся требования.

Заметки из книг и статей – индекс информации

Во время чтения статьи или книги, частенько  для себя выделяешь ключевые предложения, которые наиболее ярко отражают в себе суть информации. Если записывать эти предложения, то по прошествии времени можно их прочитать и восстановить в памяти основные идеи. Подобные заметки являются аналогом индекса в базе данных, по которому можно быстро найти необходимую информацию.
Чтение хорошей книги настраивает [...]

Один тест – одно поведение

Недавно в команде обсуждали вопрос вылавливания во время code review длинных (>150 строк) тестовых методов, которые к тому же тестируют сразу несколько возможных поведений функционала (видимо потому и длинные;)). На просьбы рефакторинга подобных тестов можно услышать ответ:

если разносить тест на более мелкие, тогда придется для каждого теста подготавливать тестовые данные, и время тестов увеличится
а сейчас [...]