воскресенье, 30 ноября 2008 г.

Снова хвастаюсь:)

По просьбе просящих, выкладываю фотографии еще одного подарка:), сделаного моей любимой.






суббота, 29 ноября 2008 г.

Подарок

На мой день рождения, Viktor сделал мне замечатедбный подарок....., и вот я им хвастаюсь:)



Наверно моей фантазии бы не хватило:)
СПАСИБО!

пятница, 28 ноября 2008 г.

История одного актера

Прислал сегодня один знакомый:)

Одному безработному актеру звонит друг и говорит:
- Слушай, тут халтурка подвернулась, я сразу о тебе подумал.
Актер:
- Конечно, какой разговор, - типа, по гроб жизни благодарен, совсем на
мели. - А что за роль?
- Да понимаешь, не очень большая. Одна строчка.
- Одна строчка? Нет проблем, - типа, ну совсем бабок не осталось, ничем
не брезгует. - А какая?
- "Чу! Я слышу пушек гром."
- "Чу, я слышу пушек гром?" Годится! Куда идти?
- В среду подойдешь в Малый, спросишь режиссера такого-то.
- Заметано.
В среду актер подходит в Малый, находит режиссера, тот: скажите строчку, актер с пафосом произносит:
- Чу! Я слышу пушек гром!
- Отлично, - говорит режиссер. - Роль ваша. Приходите в субботу к 7
вечера на спектакль.
- Понял! - отвечает радостный актер.
Ясное дело, от такого удачного поврота судьбы актер запивает по черному.
Приходит в себя в субботу где-то в 6:30 и сломя голову бросается в
театр, всю дорогу повторяя "Чу! Я слышу пушек гром".
У театра его останавливает швейцар: ты, мол, куда без билета?
- Я "Чу! Я слышу пушек гром", - объясняет актер.
- А! Ты "Чу! Я слышу пушек гром", - успокаивается швейцар, - ну проходи.
Актер - за кулисы. Его, ясное дело, не пускают.
- Я "Чу! Я слышу пушек гром!", - кричит актер.
- Ты "Чу! Я слышу пушек гром"? Опаздываешь! Давай срочно в гримерную! –
кричат ему в ответ.
Он - в гримерную. Гримерша:
- Товарищ, вы кто?
- Я "Чу! Я слышу пушек гром."
- Вы "Чу! Я слышу пушек гром"? Что же вы опаздываете?! Садитесь вот тут,
сейчас я вас быстренько.
Актер, уже в гриме и в мыле, подбегает к сцене. Его перехватывет
режиссер.
- Ты "Чу! Я слышу пушек гром"?
- Я "Чу! Я слышу пушек гром"!
- Чуть не опоздал! Давай, твой выход!
Актер выходит на сцену, и за спиной у него раздается оглушительный
взрыв. Актер вздрагивает и орет:
- ДА ВЫ ЧТО ТАМ, СОВСЕМ ОХ#ЕЛИ ЧТОЛИ??!!!

Автор: неизвестен

вторник, 21 октября 2008 г.

RSS для torrents.ru

torrents.ru это огромный трекер, и RSS лента там ну никак не помешает. А официальные источники не торопятся ее создавать. Поэтому нашлись хорошие ребята и сделали ее сами:

http://xpoft.ru/torrents.ru/generator/

Очень удобно, выбираете те форумы за которыми хотите следить и генерируете RSS ссылку.

Еще раз спасибо создателям:), я пользуюсь, очень удобно.

П.С. от себя скажу что на форуме сообщения добавляются очень часто, а вот в Вашем ридере, лента будет обновляться порциями, по 3-4 раза в день)

понедельник, 13 октября 2008 г.

CodeIgniter - работа с шаблонами

По просьбе Виктора, напишу как он работает с шаблонами.
А происходит єто очень и очень просто.

1) Мы создаем нужный нас HTML код и сохраняем его в папке views (отображения).
2) Как уже описывалось ранее это полностью объектно ориентированный фреймворк. Следовательно, в нужном месте нашего класса мы просто напросто подключаем наш HTML файл следующим образом

$this->load->view("otobragenie",$data)

Где otobragenie название Вашего файла.
А $data - ассоциативный массив.
Для примера:

$data['alex']="123";
$data['test']="1234";

Который в Вашем шаблоне будет доступный в виде

$alex и $test

Что очень хорошо, фреймворк дает полную свободу, т.е. на странице с HTML кодом можно свободно использовать PHP.

Если Вы предпочитаете использовать теги принятые в шаблонизаторах (например { и } ) то в CodeIgniter существует свой класс Template Parser

среда, 1 октября 2008 г.

Фреймворк CodeIgniter

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

Цитата:

CodeIgniter обладает рядом значительных плюсов перед другими веб-фреймворками, например:

  • используется модель MVC (Модель-Отображение-Контроллер), хорошо зарекомендовавшая себя при разработке приложений самой разной направленности;
  • поддерживается множество баз данных (MySQL, PostgreSQL, MSSQL, SQLite, Oracle);
  • отлично написанная документация с примерами позволит быстро освоить фреймворк;
  • CodeIgniter очень быстр в работе. Его считают эталоном скорости генерации страниц;

Начав изучать мне очень понравилась сама структура Фреймворка.

Для примера:

1) Строка адреса записывается в виде:
http://127.0.0.1/admin/admin_pages/test/id/id1/string
Где admin_pages - название класса, совпадающее с названием файла
test - любая функция в єтом классе
id/id1/string - параметры, которые принимает указанная ранее функция.

Вобщем очень удобно и понятно.

2) Отделение HTML кода от ПХП.
3) И что очень мне понравилось, что он не привязывает программиста к свои правилам, а наоборот дает полную свободу.

Русский сайт:
http://www.code-igniter.ru/

четверг, 25 сентября 2008 г.

Google Maps API - введение

Решил изучить немного Google Maps API. Ну и задокументировать чтобы потом мог легко вспомнить. Авось и не только мне пригодится.

Google Maps API позволяет использовать карты Google для Ваших сайтов. Имеется конечно и официальная документация (пока что вся на Английском).

http://code.google.com/intl/ru/apis/maps/documentation/

Начнемс…
Сначала необходимо зарегистрировать свой сайт и получить ключ. Это можно сделать тут:

http://code.google.com/apis/maps/signup.html

По окончании регистрации Вам выдадут ключик. И тут же будет пример кода использования карты.



Как можно легко догадаться, этот ключик используется при подключении библиотеки, вот так:


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;
key=ABQIAAAAqYpqANy2ZhPGgzZQGir01BTif9xST6-
EmBWoJN14Z8KLoR80XBTf_F2pFIKVTQmZq4YaGqQz66pNAg"
type="text/javascript"></script>




А вот код самой просто странички



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIA"
type="text/javascript"></script>

<script type="text/javascript">

//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
}
}

//]]>
</script>
</head>

<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
</body>
</html>



А в теге body необходимо размещение обьекта с id=’map’

Теперь немного о функциях управления картой.

1) map.setCenter(new GLatLng(37.4419, -122.1419), 13);
Функция задает центр карты. Т.е. при открытии страницы с картой, она будет отцентрована по заданным координатам (необходимые координаты можно получить зайдя на maps.google.com и найдя нужное место).

2) setMapType() – задает отображаемый тип карты, которых на данный момент существует 3 штуки

a. Спутник - map.setMapType(G_NORMAL_MAP);
b. Нормальная - map.setMapType(G_SATELLITE_MAP);
c. Смешанная - map.setMapType(G_HYBRID_MAP);

3) Также можно добавить элементы управления картой

map.addControl(new GSmallMapControl()); - зумирование, и стрелочки перемещения.
map.addControl(new GLargeMapControl()); - аналогично предыдущему, но отображается и шкала зумирования
map.addControl(new GSmallZoomControl()); - отображается исключительно кнопки «+» и «-»
map.addControl(new GMapTypeControl()); - кнопки переключения между режимами карты
map.addControl(new GOverviewMapControl()); - отображение миникарты в правом нижнем углу

4) Ну и самое интересное это размещение меток на карте.

var marker = new GMarker(new GLatLng(37.4419, -122.1419));
map.addOverlay(marker);

И подписи к ним:

var html="Тут что-то расположено";
marker.openInfoWindowHtml(html);


5) map.panTo(new GLatLng(37.4569, -122.1569)) – автоматическое передвижение карты. Т.е. можно поставить прерывание например функцией window.setTimeout, и потом переместить карту в какую-либо точку.

6) Данный пример реагирует на перемещение карты и отображает новые координаты центра:

map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GEvent.addListener(map, "moveend", function() {
var center = map.getCenter();
document.getElementById("message").innerHTML = center.toString();
});


7) Вывод окна сообщения без установки метки.

map.openInfoWindow(map.getCenter(), document.createTextNode
("Привет!"));

8) А данный код рисует произвольную ломанную через 5 точек

var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var points = [];
for (var i = 0; i < 5; i++) {
points.push(new GLatLng(southWest.lat() + latSpan *
Math.random(), southWest.lng() + lngSpan * Math.random()));
}
points.sort(function(p1, p2) {
return p1.lng() - p2.lng();
});
map.addOverlay(new GPolyline(points));





9) Перехват щелчков по карте. При перехвате события «click» (щелчок) мы получаем два параметра:
• щелкнут маркер;
• координаты щелчка.
Если щелкнут не маркер (а карта), то первый параметр равен нулю.

В листинге 1 пользователь щелкает по карте и по координатам щелчка появляется маркер. Когда пользователь щелкает по маркеру, маркер удаляется.

Листинг 1.

var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GEvent.addListener(map, "click", function(marker, point) {
if (marker) {
map.removeOverlay(marker);
} else {
map.addOverlay(new GMarker(point));
}
});

10) Вывод инфоокон над маркерами. В следующем коде мы перехватываем клик и показываем окно над маркером. Здесь используются замыкания JavaScript для создания контента инфоокна для каждого маркера.

// Создаем маркер с номером point, заданным и текстом label


function createMarker(point, number) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml("Marker #" + number + "");
});
return marker;
}
// Размещаем 10 маркеров по случайным координатам
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() — southWest.lng();
var latSpan = northEast.lat() — southWest.lat();
for (var i = 0; i < 10; i++) {
var point = new GLatLng(southWest.lat() + latSpan *
Math.random(), southWest.lng() + lngSpan * Math.random());
map.addOverlay(createMarker(point, i + 1));
}





11) Информационные окна с закладками. Вторая версия Google Maps API дает нам классы openInfoWindowTabs() и GinfoWindowTab, поддерживающие закладки, которым можно присваивать отдельные имена. Пример в листинге 2 показывает простое окно с закладками над маркером.

Листинг 2.
 
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// Содержимое инфоокна
var infoTabs = [
new GInfoWindowTab("Закладка #1", "Содержимое закладки #1"),
new GInfoWindowTab(" Закладка #2", "Содержимое закладки #2")
];
// Размещает маркер в центре окна автоматически.
var marker = new GMarker(map.getCenter());
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowTabsHtml(infoTabs);
});
map.addOverlay(marker);
marker.openInfoWindowTabsHtml(infoTabs);

12) Создание пользовательских пиктограмм. Пример в листинге 3 показывает мини-маркеры. Создавая новую пиктограмму, мы должны определить изображение переднего плана, теневое изображение и его координаты.


var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// Создание пиктограммы для "маленького" маркера
var icon = new GIcon();
icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
icon.iconSize = new GSize(12, 20);
icon.shadowSize = new GSize(22, 20);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
// "Разбрасываем" 10 маркеров по случайным координатам
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() — southWest.lng();
var latSpan = northEast.lat() — southWest.lat();
for (var i = 0; i < 10; i++) {
var point = new GLatLng(southWest.lat() + latSpan *
Math.random(), southWest.lng() + lngSpan * Math.random());
map.addOverlay(new GMarker(point, icon));
}




13) Перемещаемые маркеры.
Маркеры — интерактивные объекты, которые (если это необходимо) могут перемещаться пользователем посредством мыши. В приведенном примере мы перемещаем маркер по карте, это сделано благодаря нескольким перехватываемым простым событиям. Перемещаемый маркер поддерживает четыре события:
• щелчок (click);
• начало перетаскивания (dragstart);
• перетаскивание (drag);
• отпускание (dragend).
По умолчанию маркеры доступны только для кликов и недоступны для «таскания», но эта возможность очень просто реализуется добавлением дополнительного параметра. У перемещаемых маркеров есть также параметр «бодрость» (bouncy). Если он выставлен как true (по умолчанию), то при подхватывании и отпускании маркер весело подпрыгивает. Если вам не нравится такое «безрассудное» поведение маркера — просто выставьте bouncy=false при создании маркера, и он будет приземляться изящно (см. листинг).


var map = new GMap2(document.getElementById("map"));
var center = new GLatLng(37.4419, -122.1419);
map.setCenter(center, 13);
var marker = new GMarker(center, {draggable: true});
GEvent.addListener(marker, "dragstart", function() {map.closeInfoWindow();});
GEvent.addListener(marker, "dragend", function() {marker.openInfoWindowHtml("Веселый, бодрый маркер");});
map.addOverlay(marker);

14) Использование XML и асинхронного HTTP на картах. Пожалуй, одна из самых интересных возможностей Google Maps API. Пример в листинге загружает с сервера указанный XML-файл с координатами и размещает по ним маркеры.

Содержимое data.xml:





Листинг.
var map = new GMap2(document.getElementById(«map»));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
GDownloadUrl(«data.xml», function(data, responseCode) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName(«marker»);
for (var i = 0; i < point =" new" id="10869" href="http://code.google.com/intl/ru/apis/maps/documentation/">http://code.google.com/intl/ru/apis/maps/documentation/

Номер:)

Отдыхал летом на море и зафотал такой номер.
Думаю большинство меня поймет.

1е четыре цифры наверное номер релиза:)

воскресенье, 21 сентября 2008 г.

Интересная книженция

Зашел на днях в книжный магазин, просто так, без всякой цели... Сам не думал что выйду оттуда с новой покупкой.
И очень этой самой покупкой доволен. Правда читая (или скорее листая) главы про функции или как объявлять переменные не очень добавит знаний, но все же даже в таких главах находится чтото новое:). Вобщем всем советую.

Вот эту самую книжку я купил:



Тим Конверс, Джойс Парк, Кларк Морган
PHP 5 and MySQL Bible
Tim Converse, Joyce Park, Clark Morgan
книга "PHP 5 и MySQL. Библия пользователя. PHP5"



В книге приведены исчерпывающие сведения по созданию динамических Web-узлов на основе программных средств, предоставляемых бесплатно в общее пользование (языка PHP, сервера Apache и СУБД MySQL), а также показано, как обеспечить бесперебойную эксплуатацию таких узлов под управлением операционной системы Windows или Linux. Многочисленные сценарии и готовые программы, представленные в книге, подробно описаны, тщательно прокомментированы и составляют основу практически значимых приложений. Книга дополняет оперативную документацию, содержит все необходимые справочные данные и рассчитана на широкий круг читателей.

Оглавление
Предисловие 30
ЧАСТЬ I. ОСНОВЫ ЯЗЫКА PHP 39
Глава 1. Преимущества системы PHP и СУБД MySQL 41
Глава 2. Создание серверных сценариев для Web 63
Глава 3. Подготовка к работе с системой PHP 79
Глава 4. Включение кода PHP в код HTML 103
Глава 5. Синтаксические конструкции и переменные 111
Глава 6. Средства управления и функции 141
Глава 7. Передача информации между страницами 183
Глава 8. Строки 203
Глава 9. Массивы и функции для работы с массивами 227
Глава 10. Обработка числовых данных 261
Глава 11. Основные секреты отладки кода PHP 279
ЧАСТЬ II. PHP И MYSQL 307
Глава 12. Выбор базы данных для PHP 309
Глава 13. Основные сведения о языке SQL 327
Глава 14. Администрирование базы данных MySQL 345
Глава 15. Функции PHP для работы с СУБД MySQL 371
Глава 16. Отображение результатов запросов в таблицах 391
Глава 17. Создание форм на основе запросов 407
Глава 18. Эффективность PHP и MySQL 431
Глава 19. Нарушения в работе совместно используемых средств PHP и MySQL 449
ЧАСТЬ III. РАСШИРЕННЫЕ СРЕДСТВА И МЕТОДЫ 465
Глава 20. Средства объектно-ориентированного программирования языка PHP 467
Глава 21. Расширенные функции для работы с массивами 515
Глава 22. Функции для работы со строками и регулярными выражениями 529
Глава 23. Функции для работы с файловой системой и системные функции 551
Глава 24. Сеансы, cookie-файлы и протокол HTTP 573
Глава 25. Типы и преобразования типов 603
Глава 26. Усовершенствованные способы использования функций 613
Глава 27. Выполнение математических расчетов 625
Глава 28. Репозитарий PEAR 643
Глава 29. Защита данных 657
Глава 30. Конфигурация 685
Глава 31. Исключительные ситуации и обработка ошибок 705
Глава 32. Отладка 719
Глава 33. Стиль 737
ЧАСТЬ IV. ВЗАИМОДЕЙСТВИЕ PHP С ДРУГИМИ СИСТЕМАМИ 765
Глава 34. СУБД PostgreSQL 767
Глава 35. СУБД Oracle 785
Глава 36. Функции PEAR для работы с базами данных 817
Глава 37. Электронная почта 831
Глава 38. Языки PHP и JavaScript 855
Глава 39. Языки PHP и Java 871
Глава 40. Языки PHP и XML 885
Глава 41. Web-службы 915
Глава 42. Графика 937
ЧАСТЬ V. УЧЕБНЫЕ ПРОЕКТЫ 963
Глава 43. Web-журналы 965
Глава 44. Аутентификация пользователей 983
Глава 45. Система рейтинговых оценок 1021
Глава 46. Несложная игра 1037
Глава 47. Преобразование статических HTML-узлов 1079
Глава 48. Визуализация данных с помощью диаграмм Венна 1111
Приложение А. Краткие сведения о языке PHP для программистов, работающих на языке C 1135
Приложение Б. Краткие сведения о языке PHP для программистов, работающих на языке Perl 1141
Приложение В. Краткие сведения о языке PHP для программистов, использующих язык HTML 1149
Приложение Г. Информационные ресурсы PHP 1161
Предметный указатель 1176

суббота, 20 сентября 2008 г.

Приятные воспоминания

Сегодня шел, слушал плеер и нахлынули воспоминания.
Был этим летом в Германии. Вокруг вне не наше, немецкое. Как люди, так и музыка.
Помню поехали на экскурсию, по прошествии 3х недель пребывания там. И я включил в плеере эту песню (см ниже), и на меня навалилось...., настолько поднялось настроение.., я готов был слушать эту песню еще раз и еще раз...., и я понял насколько дома все таки лучше. Музыка в тот момент стала частичкой дома.