Netbeans хороший IDE, и почти всем устраивает (за исключением того, что под linux в редакторе сглаживание шрифтов не дотягивает до стандартных редакторов на gtk, например gedit, но это терпимо). Но при работе в CodeIgniter не нравилось то, что не работало автодополнение для моделей и библиотек. А так как в большинстве работаю в нем, то надо было что-то делать.
читать далее »

HTML 5 Canvas – круговая диаграмма

12/17/2011, автор admin, категории Web-разработка


Думаю мало кому нравиться искать, скачивать тяжелые готовые js библиотеки для того чтобы нарисовать небольшую диаграмму… Вот и мне этот вариант не особо понравился. Так и родилась тема этого поста.

Итак чтоб нарисовать вот такую диаграмму нам потребуется совсем немного знаний и пол часа свободного времени. Использовать будем элемент html 5 canvas и библиотеку которая поможет нашему скрипту работать в недобраузерах IE – http://explorercanvas.googlecode.com/svn/trunk/excanvas.js

Разместим на странице элемент canvas.

<canvas  id="chart" width="200" height="200"></canvas>

Cкрипт который нарисует в данном элементе диаграмму тоже очень простой читать далее »

Видимо постраничная загрузка выходит из моды и все хотят загрузку по мере прокрутки страницы. Ну что ж, приступим =)

Допустим уже есть функция php, которая выдает нам данные постранично.

function get_objects($page=0)

Но одно но, помимо объектов нам нужно возвращать и номер след. страницы.
Поэтому будем возвращать данные в json.

echo json_encode(array("objs"=>тут_все_объекты, "next_page"=>след_страница))

Нужно ее вызывать аяксом. Воспользуемся функцией ajax в jquery.

function ajax_get_objects(page){
	//url по котрому доступен get_objects и передаем ему page
	var url = "/?get_objects/"+page;
	$.ajax({
		type: "POST",
		url: url,
		dataType: "json",
		success: function (data){
			//тут выводим сами данные как вам нравится. Допустим все данные в элемент c id = "all_page"
			$("#all_page").html(data.objs);
			slide_func_next_page = data.next_page;
			slide_func_last_page = data.page;
		}
	})
}

читать далее »

Генерация pdf из html

02/14/2011, автор admin, категории Web-разработка

Для чего это нужно?
Ну например для генерации pdf отчетов в интернет магазине, или для выдачи электронных билетов на концерты. Вобщем то с помощью этой утилиты можно создать офлайн версию маленького сайта в формате pdf.
Моя задача была связана с электронными билетами, поэтому поискал уже готовые решения для генерации pdf из html. Первое что я нашел был модуль «HTML2PDF» – отличное название, следовательно и работать должно соответственно)
Скачал (на оффициальном сайте html2pdf) читать далее »

Для отправки сообщений с сайта на стену в facebook можно использовать кнопку share.

<a onclick="return fbs_click()" rel="nofollow" href="http://www.facebook.com/share.php?u=[URL]" target="_blank"&gt;Share on Facebook</a>;

<script type="text/javascript">
	function fbs_click() {u='[URL]';t='';window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}
</script>

[URL] – путь на страницу, с которой будут собираться данные для сообщения.
На этой странице в между тегами должны быть данные для fb:

<meta property="og:title" content="заголовок" />
<meta property="og:description" content="описание" />
<meta property="og:image" content="изображение url" />
<meta property="og:audio" content="аудио url (только *.mp3)"/>
<meta property="og:video" content="видео url (только *.flv)" />

читать далее »

Очень давно не писали ничего, вроде накопилось у нас несколько интересных тем. Сегодня расскажу о сервисе позволяющем определять название города по ip пользователя зашедшего к вам. Сервис предоставляют http://ipgeobase.ru и помоему они отлично справляются.
Писать самому функции для работы с сервисом очень не хотелось поэтому откопал где то этот код: ipgeo
подключается он очень просто

if(empty($_COOKIE['city']) || $_COOKIE['city']=="undefined") {
$IP= ($_SERVER['REMOTE_ADDR']);
if(!empty($IP)) {
  $ipList = new IPGeo($IP); //подключаем класс IPGeo
  $city= $ipList->ip($IP); // определяем город по ip
  $_COOKIE['city']=$city;
} else {
$city=$_COOKIE['city'];
}

Если город еще не был определен то определяем и записываем его в куки, иначе просто смотрим какое название города уже лежит в куках. Вобщем определение города по ip пишется не более чем пять минут, остальное уже дело техники.
Можно создать базу нужных городов на сайте и сверяться с ними по названию, и например показывать товары только по городу который выбрал пользователь. Для этого и используется в большинстве случаев определение города по ip

Теги:  

Оптимизация кода js. Таймеры.

07/22/2010, автор dimaz, категории Web-разработка

Просматривая написанный код всегда можно найти место, где можно его оптимизировать. Нашел у себя код на js, который выполнял поиск по базе.
Код был примерно таким.

<input onkeyup="search()" id="search">

Как видно функция срабатывает при отпускании клавиши. Что не совсем правильно, т.к. например если ввели 5 символов в поле, то в базу пойдет 5 запросов, а достаточен всего лишь 1, который выполнится с задержкой после ввода. Это можно устроить, путем введения таймера.

В ява скрипт есть функции для работы с ними.
var timeout_id = window.setTimeout(func|code, delay); — создает единичный таймер, при срабатывании которого происходит вызов определенной функции после указанной задержки (в миллисекундах).
var interval_id = window.setInterval(func|code, delay); — похож на предыдущий setTimeout, но вызывает функцию постоянно (каждый раз с заданной задержкой), пока не будет отменен.
clearInterval(timeout_id);, clearTimeout(interval_id); — принимают в качестве параметр ID таймера.
читать далее »

Стал замечать что все больше и больше сайтов делают с использованием стилизованных селектов, чекбоксов и других различных кнопочек. Почему бы и нет? Если есть множество библиотек позволяющих это сделать без особого труда, даже верстальщику, который совсем немного разбирается в javascript.
Конечно здорово, что во всех браузерах вне зависимости от выбранной темы показываются одинаковые кнопки в цвет и стиль сайта, но разработчик который первый раз столкнулся с такими селектами будет приятно удивлен. Оказывается обработчики событий jquery привязанные к этим кнопкам не сработают, то есть не сработает не

change()

не

live('change',function() {})

Что делать?
Я не нашел лучшего решения как скачать полную версию плагина для замены селектов и не прописал в его код нужных мне событий. Тут можете скачать jquery.selects.js. А может кто то знает решение получше?

Многие удаленные сервера разрешают доступ к своим данным по ssh. К тому же этот протокол безопаснее чем ftp.
Конечно для работы по ssh можно использовать одну из множества программ доступных в linux, но этот путь не для линуксоида) Тем более многие вещи на мой взгляд через консоль делать легче, быстрее а главное удобнее. Например делать дамп бд или копировать кучу данных с одного сервера на другой. Значит эти команды просто необходимо знать web-программисту. Итак несколько полезных команд при работе с удаленным сервером по ssh:
1) Копирование данных с сервераscp user_name@mysite.ru:/путь/к/файлу/от/корня/file /путь/к/файлу/от/корня/file2) Копирование данных на серверscp /путь/к/файлу/от/корня/file user_name@mysite.ru:/путь/к/файлу/от/корня/file Иногда бывают файлы слишком большого размера(например дамп базы данных на 300 метров) его проще засунуть в архив, а потом скачать (или закачать в архиве, а потом разархивировать) поэтому еще пара команд читать далее »

Если у вас есть сайт с возможностью регистрации пользователей, и нужно выводить статус пользователя, то самый простой способ:
1) записывать в базу данных идентификатор пользователя и время последнего входа на страницу.
2) через определенный интервал времени сравнивать время последнего онлайна с текущим временем и удалять тех, кто не был на странице определенный промежуток времени.

Для этого создадим отдельную таблицу. Допустим назовем ее user_online. Колонки user_id типа int и колонка date типа datetime.
Напишем функцию, которая должна срабатывать, при входе пользователя на страницу. читать далее »