За чистый и ясный код!

Статьи на тему программирования под веб, используя PHP, MySQL, Jquery и многое другое
Просмотр категории - Песочница

Расширения браузера Google Chrome для веб-программиста

Январь10

VS

FireFox-vs-Google-Chrome Каждый день в своей работе (создание сайтов любой сложности) я использую для разработки два основных браузера FireFox (больше) и Goolge Chrome (меньше), но в последнее время, наверное благодаря телефону с ОС Андроид, я начал больше присматриваться к Хрому. И дабы чувствовать себя «как рыба в воде» хотелось чтобы те расширения которые я использую в FireFox-е хотелось бы использовать и тут.
На удивление почти все мои расширения есть в магазине Хрома. И так что же я использую:

FireBug Lite

FireBug LiteНаверное один и самых ценных инструментов для разработки. Хром конечно содержит по-дефолту свою панель разработчика, но от привычек надо отказываться постепенно. Поживем увидим. Скачать расширение можно по тут

Edit This Cookie

Edit This CookieРасширение для работы с куками (cookie), позволяет как добравлять, так и изменять существующие куки на сайте. Закачать расширение можно тут

ColorZilla

ColorZillaОчень часто необходимо узнать цвет пипеткой или перевести RGB в HEX и наоборот, для этих целей это прекрасное расширение.
Закачать расширение можно тут

HTTP Headers

HTTP HeadersПросмотре заголовков страницы. Единственное я не нашел расширение аля Liveheaders, оно мне нравилось тем, что показывало абсолютно все заголовки которые происходили во время загрузки страницы. Если кто-то может поделиться так расширением для Хрома, буду рад увидеть это в комментариях.
Закачать расширение можно тут

JSONView

JSONViewОчень наглядно показывает содержания JSON ответа. Рекомендую для отладки приложений.
Закачать расширение можно тут

MeasureIt

MeasureItКуда без линейки при верстке!
Закачать расширение можно тут

PerfectPixel by WellDoneCode

PerfectPixel by WellDoneCodeВот это злое расширение, когда оно попадает в руки заказчику и он начинает все проверять…, но и очень полезное разработчику, сразу видно где «халтурка».
Закачать расширение можно тут

Web Developer

Web DeveloperНабор различных примочек для включения/отключения и показ скрытых элементов. Жаль что здесь на работает валидация локальной страницы — очень помогало в ФФ, а также не работает линейка, изменение размера экрана и тд, в общем поставил чтобы было, вдруг починят.
Закачать расширение можно тут

Редактирование и отправка скриншотов

Редактирование и отправка скриншотовПолезный инструмент, позволяет сделать скрин или ВСЕГО сайта, а не только видимого окна или сделать часть, также подредактировать скрин и получить короткую ссылку для отправки кому-то. Полезно при пояснении где именно что-то не так или куда именно надо нажать.
Закачать расширение можно тут

Удаленный рабочий стол Chrome

Удаленный рабочий стол ChromeК разработки сайтов отношения не имеет, но очень помогает что-то показать «криворуким пользователям», включаем у себя хром с расширением и клиент. Клиент запускает расширение у себя, дает вас код, вы запускаете у себя и вводите код, дальше на вашем экране появляется экран «криворукого юзера» и вы можете показать что да как надо делать.
Закачать расширение можно тут

Попрошу юзеров, которые прочтут статью и есть возможность поделится чем-то новым оставить об этом комментарий!

Скачивайте гугл хром!

Статья просмотренна 696299 раз, зашло посетителей 75719

Работа с realtime индексами (RT) в поисковом движке Sphinx

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

Кто не знает что такое Sphinx

Сфинк — это бесплатный полнотекстовый поисковый движок. С быстрой индексацией документов, стоп-словами, умеет интегрироваться с самыми известными БД Mysql, MsSql, Oracle и тд, также имеет АПИ с популярными языками программирования PHP, Perl, Java и тд. Также имеет поддержку SQL синтаксиса. Более подробнее тут.

Версии поисковика

На сегодня последняя версия 2.0.1, не смотрите что она бета, на этом проекте беты очень стабильны.

Также есть версия 1.10, из неё родилась версия выше, а эту отправили в утиль архив.

К стабильной версии относится 0.9.9

Я к сожалению не знаток всех этих версий в полной мере, и не могу что-то особо сильно утверждать, поэтому дам сугубо поверхностную оценку различий версий.

Начиная с версии 1.10 появились relatime индексы. Это индексы которые изменяются «на лету», т.е. не нужно делать промежуточные индексы и через какое-то время сливать их с главным индексом.

Во всех версия появилась возможность создавать таблицу в MySQL 5.x с движком SPHINX (Sphinx storage engine), т.е. появилась возможность обращаться к данным поискового индекса через SQL запросы к БД MySQl, более подробно тут

Также во всех версиях доступен API.

Более подробно обращайтесь к разным блогам, документации поисково движка.

Какие бывают индексы

Есть обычный индекс с ним неотъемлемо связан дельта индекс, который затем сливается с индексом (merge).
Чем мне этот тип индекса не понравился. Например, у вас есть БД с огромным кол-во записей (новостная система) и каждый день добавляется по 500-1000 новостей, вот тут необходимо производить множество операций, создавать описание главного индекса, также создавать описание вспомогательного индекса, который будет потом добавлять в главный индекс, т.е. небольшое кол-во данных которые пришли за указанное вами время. Затем необходимо запускать процедуру объединения дельта индекса и главного индекса. Получается ситуация, что добавили новость в БД, а она появится в поисковом индексе только когда произойдет объединение индексов, время конечно задаёт программер, но все таки это какой-то промежуток + плюс куча операций.

С версии 1.10 появились «realtime» (RT) индексы, они работают только с SphinxQL, т.е. заполнение данных в индекс, удаление, изменение происходит по средству SQL запросов (очень хорошо описано тут). Самая ВАЖНАЯ особенность этого типа индекса, то что данные попадают в тот же момент, когда они попадают в БД (вам нужно просто создать два запроса, один в БД, а другой в индекс Сфинкса). Этот индекс мне очень понравился и я его с успехом применил в одном проекте. Вот как с ним работать я бы и хотел поведать в этой статье.

Работа с RealTime Index

Лучше всего показывать на реальном примере, дабы сразу видеть результаты.

Создаем БД MySQL и в ней таблицу новостей

CREATE TABLE news (
	id INT(11) NOT NULL AUTO_INCREMENT,
	date TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
	title VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	descr VARCHAR(2000) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	keywords VARCHAR(200) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	text VARCHAR(16000) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
	`show` TINYINT(1) NOT NULL DEFAULT '0',
	PRIMARY KEY (id)
)
COMMENT='Новости'
COLLATE='utf8_unicode_ci'
ENGINE=MyISAM
AUTO_INCREMENT=1;

Далее создадим конфиг для поисковика для индекса новостей.

index rt_news
{
	type 					= rt
	path 					= f:/sphinx/data/rt_news
	rt_field				= title
	rt_attr_timestamp		= date
	rt_field				= descr
	rt_field				= keywords
	rt_field				= text
	rt_attr_uint			= view

	rt_attr_string			= title
	rt_attr_string			= descr
	rt_attr_string			= keywords
	rt_attr_string			= text

	docinfo					= extern
	morphology				= stem_enru
	min_word_len			= 1
	html_strip				= 1
	charset_type			= utf-8
	enable_star				= 1
	rt_mem_limit			= 256M
}

searchd
{
	listen			= 127.0.0.1:9306:mysql41
	log				= f:/sphinx/searchd.log
	query_log		= f:/sphinx/query.log
	pid_file		= f:/sphinx/searchd.pid
	read_timeout	= 5
	max_children	= 30
	max_matches		= 1000
	workers			= threads # for RT to work
}

В конфиге есть две обязательные секциии index нужна для описания индекса и searchd тут описываются настройки самого демона (службы) поисковика.

Разберем.

После названия секции index идет название индекса (произвольное [a-zA-Z0-9_] возможно есть еще знаки, но думаю этого достаточно для описания), далее идет описание самого индекса, указывается тип индекса, путь где будет хранится индекс, лучше пусть путь будет на латинице, т.к. используется кодировка UTF-8 и под виндой русское название будет в кракозябрах. Далее идет описание полей и их тип подробнее о различных типах тут, далее идут управляющие команды индексом, какую морфологию использовать, сколько памяти отводить, какая кодировка и тд, есть еще куча настроек, но она специфична и зависит уже от поставленных задач, обращайтесь к документации.

В секции searchd описываются команды для поисковика, какой порт слушать для обращения к MySQL, где хранятся разные лог-файлы и прочее.

Имея конфиг запустим поисковик, буду показывать все в командной строки для наглядности

F:\sphinx\bin>searchd.exe --config f:\Sphinx\sphinx.conf
Sphinx 2.0.1-beta (r2792)
Copyright (c) 2001-2011, Andrew Aksyonoff
Copyright (c) 2008-2011, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file 'f:\Sphinx\sphinx.conf'...
listening on 127.0.0.1:9306
precaching index 'rt_news'
precached 1 indexes in 0.011 sec

Служба запущена и показывает что слушает Mysql на порту 9306 и создан один индекс с названием rt_news.

Добавление данных в БД и индекс

Пришло время заполнить БД и индекс данными. Подключаемя к поисковику через mysql на порту 9306

F:\Zend\MySQL 5.1.52\bin>mysql -P9306
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 2.0.1-beta (r2792)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Запишем просто одну запись в БД (в примере только запрос, как его исполнять решать вам) и одну запись в поисковый индекс.

# В БД
INSERT INTO `news` (`id`, `date`, `title`, `descr`, `keywords`, `text`, `show`) VALUES (1, '2011-09-17 12:02:49', 'Название новости', 'Описание новости', 'Ключевые слова', 'Текст новости ', 1);
# В поисковый индекс
F:\Zend\MySQL 5.1.52\bin>mysql -P9306
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 2.0.1-beta (r2792)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> INSERT INTO `rt_news` (`id`, `date`, `title`, `descr`, `keywords`, `text`, `view`) VALUES (1, '1316250169', 'Название новости', 'Описание новости', 'Ключевые слова', 'Текст новости ', 1);
Query OK, 1 row affected (0.03 sec)

mysql>

Обратите внимание, что вставлять в индекс надо с указанием primary key, по умолчанию это поле id, также необходимо указывать название индекса куда вставляются данные.

Теперь в БД и индексе есть данные, можно с ними работать.

Извлечение данных из индекса

mysql> SELECT * FROM rt_news WHERE view=1\G;
*************************** 1. row ***************************
      id: 1
  weight: 1
    view: 1
    date: 1316250169
   title: Название новости
   descr: Описание новости
keywords: Ключевые слова
    text: Текст новости
1 row in set (0.00 sec)
# Параметр \G позволяет вывести данные вертикально

Изменение данных в БД и индексе

# Для БД
UPDATE `news` SET `title`='Name of news' WHERE  `id`=1 LIMIT 1;

 

# Для индекса
mysql> REPLACE INTO `rt_news` (`id`, `date`, `title`, `descr`, `keywords`, `text`, `view`) VALUES (1, '1316250169', 'Name of news', 'Описание новости'
, 'Ключевые слова', 'Текст новости ', 1);
Query OK, 1 row affected (0.03 sec)

# просмотр изменений для индекса
mysql> SELECT * FROM rt_news WHERE view=1\G;
*************************** 1. row ***************************
      id: 1
  weight: 1
    view: 1
    date: 1316250169
   title: Name of news
   descr: Описание новости
keywords: Ключевые слова
    text: Текст новости
1 row in set (0.00 sec)

Удаление данных из БД и индекса

# Для БД
DELETE FROM `news` WHERE  `id`=1 LIMIT 1;

 

# Для индекса
mysql> DELETE FROM `rt_news` WHERE  id=1;
Query OK, 0 rows affected (0.00 sec)

# просмотр данных из индекса
mysql> SELECT * FROM rt_news WHERE view=1\G;
Empty set (0.01 sec)

Заключение

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

Слышал мнение, что RT индексы сильно медленно работаю по сравнению с обычными индексами, но данная статья это опровергает.

Будут вопросы задавайте.

ЗЫ Еще один момент, все запросы которые относятся к БД я делал через обращение к mysql через порт 3306 (дефолтный), а запросы которые относятся к индексу через порт 9306, который указан в конфиге.

Статья просмотренна 723423 раз, зашло посетителей 75526

Спуск в Харьковские катакомбы

Август12

В компании в которой я работаю создается проект посвященный разным организациям нашего города и не только. И вот в рамках знакомства с организацией «Дети Подземелья» мы попросили провести небольшую экскурсию по «Харьковским катакомбам». Hазвать Харьковские катакомбы, катакомбами конечно трудно… это просто старые подвалы, какие-то лазы, но было интересно.

И так нас собралось 6 желающих для совершения «погружения» под землю. Мы встретились с Андреем Ковалевым, президентом этой организации на улице Рымарская 23.

Как нам рассказали, это старое здание постройки 19 века, и в то время под землей построили большой подвал для хранения угля и прочего провианта, сейчас часть этого подвала завалена обрушением стен и потолка, другие вполне сохранившиеся.
В 2006 году под землю провалился автобус с музыкантами, подробнее можно почитать тут.

Внутри вообще очень много мусора, за 200 лет истории туда много нанесло земли, простых бытовых отходов (бутылки, фантики и тд), а при строительстве это были неплохие сооружения 1.80м высотой и столько же по ширине, видны были последствия прокладки электричества, наверное во время войны, сейчас остались только изоляторы.

В общем первый спуск мне понравился.

Освещения у меня было только с фонарика мобильного, поэтому фотки получили не очень:

Вид на Харьковску Филармонию

Вид на Харьковскую Филармонию

Вход катакомбы

Вход катакомбы

Вид с улицы в сами катакомбы, дырка использовалась для засыпания угля

Вид с улицы в сами катакомбы, дырка использовалась для засыпания угля

Главный зал. Тут есть колонная поддерживающая свод и соверменные канализации.

Главный зал. Тут есть колонная поддерживающая свод и соверменные канализации.

Это мы на перекрестке коридоов, осещаем рассказчика всеми фанарями.

Это мы на перекрестке коридоров, освещаем рассказчика всеми фанарями.

Высота земли над нами 3 метра, и даже тут есть корни и улитки! А там ведь тьма!

Высота земли над нами 3 метра, и даже тут есть корни и улитки! А там ведь тьма!

Улитка, местный житель

Улитка, местный житель

Вид на дырку для угля с катакомб

Вид на дырку для угля с катакомб

PS Вот еще коллега помогла найти статью Привидений в харьковских подземельях нет
PSS вот еще нашел

Статья просмотренна 694818 раз, зашло посетителей 65414

Новый хостинг. Новая флешка в подарок!

Февраль28

сама флешка-подарокЭта статья не несёт в себе рекламный характер, цель её просто радость)).

Дело было в начале 2011 года, у меня закончился контракт с одним из хостеров, на котором я имел довольно старый пакет с пространством всего в 250 MB и устаревшими версиями ПО. Анализ конкурентов показал мне новый хостинг с быстрым каналом, с неограниченными кол-вами БД, поддоменов и тд. И я нашел, характеристики мне понравились, я взял тариф ПАКЕТ «Максимум» и в этот момент на этом и других тарифных планах была акция. Я выполнил условия акции (оплата хостинга на год). И начал ждать когда ко мне придет долгожданный подарок.

Прошел месяц, флешки нет. Пишу письмо к менеджерам с указанием всех данных, копией счета-фактуры, ответили сказали, что всем выигравшим в акции отправили письма с просьбой заехать в офис и забрать подарок. Но я то не в Киеве, а в Харькове. Попросили подождать. Первое письмо было 10.02.2011.

17.02.2011 Пишу повторное письмо, отвечают, говорят что почтой заказным письмом выслали на указанный мною адрес. Жду.

конверт с флешкой28.02.2011 Приходит с почты извещение. Иду на почту и наконец получаю обещанная флешка в подарок. Приятно.

Единственно мне непонятно почему за свой подарок я должен бороться?! А если бы я не был настойчивым, подарок так бы и не пришел. Отсюда мораль — всегда боритесь за свою жизнь, если даже обещают халяву.

Максим.

ЗЫ Извиняюсь за качество фоток, фоткал на телефон

Статья просмотренна 87558 раз, зашло посетителей 14739

Попробуем работу с Блогун

Июнь11

БлогунВсем привет!
Вчера я почитал, что есть Блогун.

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

Вторым условием, надо написать статью об одном из известных мировых брендов. Спрашивается, а нафик? Ну Zend я думаю есть мировой бренд, статьи на эту тематику у меня есть.

Вроде справился — в путь!

Статья просмотренна 48701 раз, зашло посетителей 11133

  

Облако тегов

cli csv dump events form Kohana locale models MySQL mysqldump orm PHP tools trigger validate газ газовый счетчик итоги кеширование переменные

Облако тегов плагина WP Cumulus для WordPress требует для просмотра Flash Player 9 или выше.

Я на твиттере!

  • у твиттера тоже бывают перерывы...

Календарь

Март 2024
Пн Вт Ср Чт Пт Сб Вс
« Июл    
 123
45678910
11121314151617
18192021222324
25262728293031

Сейчас на сайте