Три заветных слова

6 мая, 2012 | Нет комментариев

PHP, добавляем новый метод в уже существующий объект

2 мая, 2012 | Нет комментариев

Допустим у нас есть объект — курсор из субд. Но мы хотим расширить его, для возвращения объектов. Добавить метод next_object(), который будет использовать метод getNext()

Проблема:
Мы не можем заставить модель возвращать объекты другого типа.

Решение 1: сделать итератор на этот курсор(который тоже является итератором). Сделать много магии для методов и свойств и получить новый итератор с нужным нам свойством.

Решение 2: Для PHP 5.4.0, использовать анонимные функции. О нём я и расскажу:
Внутри мапера, в методе findWhere($where) сделаем добавление анонимной функции в курсор, с передачей колбека и самого курсора

	/**
	 * @return MongoCursor
	 */
	public function findWhere($where)
	{
		$collection=$this->collection->find($where);
		$callback=$this;
 
		$collection->next_object=function() use ($collection, $callback)
		{
			$data=$collection->getNext();
			$obj=$callback->create_object($data);
			return ($obj);
		};
		return ($collection);
	}

Теперь, по идее можно обращаться к $collection->next_object() и получать объект, созданный мапером. Но к сожалению это не работает, т.к. PHP попробует выполнить user_func_array и не найдёт метод. Для этого присваиваем свойство переменной, значение которого является анонимной функцией и выполняем, через $func():

	public function findOneWhere($where)
	{
		$collection=$this->findWhere($where);
		$func=$collection->next_object;
		return ($func());
	}

Кривенько, но работает.

О друзьях

1 мая, 2012 | 1 Комментарий. Закомментить!!!

Студенты в ИТ. Как не потерять 5 лет своей жизни.

1 мая, 2012 | 2 Комментариев Откомментить в дискуссии

Антон Черноусов «Студенты в ИТ. Как не потерять 5 лет своей жизни» (http://blog.golodnyj.ru/2012/04/blog-post_1697.html).

Дисклеймер: Структура образования такова, что профильных дисциплин будет 10-20% от всех. Из этих 20% полезным будет хорошо, если 50%. Это реальность детка. Впрочем это порождает лулзы о «широкопрофильности» образования.

Что интересного в книге:
Даются практические советы: как подготовить рабочее место, какой софт юзать(ноут + evernote + dropbox + гуглосервисы. Ещё бы добавил virtualbox(виртуализируем операционки) + FeedDemon(читаем rss из гуглридера)).
Общее о таймменеджменте, мотивации и целеустремлёности. Сложная часть для меня, т.к. кроме канбан доски(мелкие цели без сроков) ничего не прижилось.
О моде и стадном рефлексе.
О пользе знаний (не путать с обучением в вузе)
О командной работе и пользе профессиональных контактов.
О сверхурочной работе и следствиях.

Прочитать было интересно, особенно после постоянного чтения фаулеров и банды четырёх и уж как 7 лет оконченного вуза. =)

Let’s talk about foo =)

27 апреля, 2012 | Нет комментариев

Экзамен MSSQL server 2008 database development (70-433)

26 апреля, 2012 | 3 Комментариев Откомментить в дискуссии

С первой попытки не сдал =(

Личное мнение:
Экзамен сложный. Вопросы в основном длинные и требуют много времени, чтобы «въехать в окружение»

Из лулзов:
Вопросы, которые размерами больше экрана по высоте, ответы ещё один отдельный экран. Всё на английском, так что легко утерять нить вопроса =)

Из практического:
Нужно учитывать, что вопросы по MSSQL 2008R2, он немного иной.

Ну и в TODO:
Разобраться с XML. Его много.
Хитровыежнутые запросы из 2008 и 2008R2
Много триггеров и процедур/функций

В случае фейла можно пересдавать через 24 часа, если ещё один фейл, то уже через 2 недели

Ну и результат(Кликабельно) =)

Видео с кодефест 2012

24 апреля, 2012 | Нет комментариев
CodeFest IAD

Ребус. Что зашифровано на картинке?

19 апреля, 2012 | 3 Комментариев Откомментить в дискуссии

Подсказка:

1. Это имеет отношение к проектированию программного обеспечения =)

2.

=)

19 апреля, 2012 | Нет комментариев

Вся мощь Российской модернизации за пол минуты =)

18 апреля, 2012 | Нет комментариев

© 2010 - 2025 Ядоблог. Ничего не защищено.
Powered by Лаборатория Яда. Написать Яду