27 января 2009

Visual Paradigm

Неплохой инструмент для рисования UML диаграмм, схем БД, моделирования процессов.
Имеется бесплатная Community Edition версия для некоммерческого использования.

http://www.visual-paradigm.com/

рубрики: Soft | Комментарии (283)

28 декабря 2008

Ubuntu 8.10 на VMWare за 30 минут

Столкнулся с необходимостью поднять на домашнем сервере виртуальную машинку под управлением Linux.

Простой поиск по http://www.torrents.ru сразу же принес результаты...

1) Скачиваем дистриб VMWare Server 2.0:

http://torrents.ru/forum/viewtopic.php?t=1321787

2) Скачиваем образ виртуальной машины с установленой и настроеной системой:

http://torrents.ru/forum/viewtopic.php?t=1351795

3) Пока качается виртуалкаUbuntu - устанавливаем VMWare сервер

4) Распаковываем образ виртуалки (около 8Гб)

5) Запускаем машинку! :)

ubuntu_small.JPG

Весь процесс включая скачивание и установку через Remote Desktop занял у меня не более 30 минут.

Читать полностью »

рубрики: Soft | Комментарии (246)

21 августа 2008

Zend Studio 6. Горячие клавиши.

При переходе от Zend Studio 5 к Zend Studio 6 многие разработчики сталкиваются с проблемой несоответствия сочетаний горячих клавиш для выполнения тех или иных действий. Это обусловлено тем, что Zend Studio использует комбинации клавиш принятые в среде Eclipse.

Но, немногие из тех, кто прежде с Eclipse дела не имел знают, что существует возможность в процессе работы выводить на экран подсказку по возможным сочетаниям: Ctrl + Shft + L

Читать полностью »

рубрики: Web Dev. | Комментарии (327)

29 мая 2008

PHP4: Подмена $this в конструкторе

Предположим, у нас есть несколько классов, одинаковых по интерфейсу, но с различной реализацией методов (например это может быть классы для работы с БД для разных типов СУБД).
/path/default/class.php - класс CClassDefault
/path/other/class.php - класс CClassOther

Интересный прием для написания общего класса обертки - подмена $this:

class CClass
{
	function CClass( $aParams, $sType='default' )
	{
		require_once( '/path/' . $sType . '/CClass.php');
		$sClassName = 'CClass' . ucfirst( $sType );
		$this = new $sClassName( $aParams );
	}
}// end class CClass

Теперь мы можем вызывать классы вот так:

$oNewClass = new CClass( $aParams, 'default' ); // реально это будет объект CClassDefault
$oNewClass = new CClass( $aParams, 'other' ); // реально это будет объект CClassOther

рубрики: PHP, Программирование | Комментарии (309)

20 мая 2008

Запрет кэширования AJAX запросов

Поганец IE любит кэшировать результат выполнения AJAX запросов. Для того чтобы этого избежать, помогает вставка следующих строчек на стороне бэкенда:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

рубрики: PHP | Комментарии (276)

16 мая 2008

Удобный профилировщик PHP скриптов

Недавнее нововведение на работе натолкнуло на мысль создать для своих проектов удобный профилировщик скриптов и SQL запросов. Чтобы не нарушать никаких копирайтов заведомо стал делать код с нуля.

Смысл профилировщика в том, чтобы, путем отметки контрольных точек в коде, подсчитать насколько долго выполняется участок кода между контрольными точками. Для профилирования скорости выполнения запросов контрольные точки ставятся до и после запроса.

Создал два файла:
autostart.php и autofinish.php

подключил в php.ini:

auto_prepend_file = "/путь до файла/autostart.php"
auto_append_file =
"/путь до файла/autofinish.php"

Очень удобные, надо заметить, для таких случаев опции.

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

В файле autofinish.php идет установка концевой контрольной точки и вывод результата.

Функции отрабатывают только в том случае, если внутри проекта выставляется константа PROJECT_DEBUG_MODE = true

Читать полностью »

рубрики: PHP, Программирование | Комментарии (315)

24 апреля 2008

РИТ-2008: как это было, часть 2

Второй день был несколько слабее первого.

Очень неудачно сдвинулось расписание некоторых секций на 20 минут, из-за чего стало невозможным вовремя перемещаться между докладами из секции в секцию.
Итоги конкурса Хакфест "Стартап за 24 часа" прошли на удивление смазанно и неинформативно.

Порадовал "Стартап линч" - стартапперы лицом к лицу с инвесторами.

Так же весьма неплох был доклад Ольги Самагиной "Постановка задач на разработку веб-систем".

Полный зал собрал доклад Игоря Ашманова о кризисах в компании. Очень интересно рассказывает. На пятёрку :)

Ну и Agile. Все так же интересно и полезно. Последнему докладчику секции Agile Russia пришлось затянуть выступление минут на 20 чтобы ответить на многочисленные вопросы.

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

рубрики: Web Dev., Поездки | Комментарии (508)

18 апреля 2008

РИТ-2008: как это было, часть 1

Вот и закончилась конференция.

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

Немножко о докладах, на которых мне довелось присутствовать...

Читать полностью »

рубрики: Web Dev., Поездки | Комментарии (78)

3 апреля 2008

Bitrix — the best

bitrix

рубрики: Bitrix, Юмор | Комментарии (35)

31 марта 2008

Оптимизация, раз так её.

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

// Совмещенный запрос
$sQL = "SELECT
 			DISTINCT(DATE_FORMAT(orders.date, '%Y-%m')) AS cdate,
 			order_items.id
FROM
 			order_items,
 			orders,
 			catalog,
 			catalog_group
WHERE
 			orders.id = order_items.order_id			AND
 			catalog.catalog_id = order_items.catalog_id	AND
 			catalog_group.group_id = catalog.group_id	AND
 			order_items.apayed = 0						AND
 			orders.STATUS = '2'							AND
 			( (	order_items.auid = 0 					AND
 				сatalog_items.auid = 1 ) 				OR
 				order_items.auid = 1 )";

$oCDateListAll = $oDB->Execute( $sQL );	// Время выполнения ~7 секунд

Скрипт, где данный запрос выполнялся в цикле с 500 элементами, работал более часа.

Читать полностью »

рубрики: MySQL | Комментарии (270)

  • Кнопки

  • Каталог блогов Blogdir.ru
  • каталог блогов
  • Каталог блогов