20 Апрель 2009

Eclipse и удаленные проекты (sftp)

eclipse.png В веб-разработке часть бывает, что проект (PHP в моем случае) находится не у вас на жестком диске, а на удаленном веб-сервере. Например, несколько человек работают над проектом, у каждого своя рабочая копия кода, в своей директории на веб-сервере. Многие разработчики используют Eclipse и заинтересованы в том, чтоб работать в нем и над удаленными проектами. Я пробовал найти SFTP-плагин, но все те несколько, что я ставил — работать неудовлетворительно. Есть другой отличный способ в Linux — подмаунтить sftp директорию с помощью Fuse, а в Eclipse добавить новый проект.

Команды буду писать для Ubuntu (для Fedora то же самое, только вместо aptitude — yum 😉 )

Ставим пакет sshfs:
$ sudo aptitude install sshfs

Добавляем пользователя в группу fuse (если ее нет после установки fuse, то создайте — sudo groupadd fuse):
$ sudo adduser yourusername fuse

Создайте директорию, в которую вы будете маунтить удаленные файлы (например /mnt/remote):
$ cd /mnt
$ sudo mkdir remote

Не забудьте сделать эту директорию доступной для вашего пользователя:
$ sudo chown yourusername /mnt/remote

Теперь вы можете подмаунтить удаленные файлы (не под root, а под своим пользователем):
$ sshfs remoteusername@remoteserver:/path/on/remote/server /mnt/remote

введите свой пароль (к удаленному серверу)

После завершения работы не забудьте размаунтить:
fusermount -u /mnt/remote

В Eclipse создайте новый PHP-проект и укажите, что его файлы находятся в /mnt/remote. Теперь вы можете работать над проектом, как над локальным.

рубрики: PHP, Разработка, Софт | 6 комментариев

7 Январь 2009

PHP — проверка файла на наличие / существование

Порой мы отображаем на сайтах контент с других ресурсов: картинки или фавиконы. Некоторе браузеры просто оставят пустое место (Firefox), другие же отобразят уродский прямоугольник, явно указывая, что чего-то не хватает (IE). Как же можно средствами PHP проверить существование файла.

Есть функция file_exists(), но она хороша только для файлов в пределах нашей файловой системы, а с удаленным сервером не пройдет.

Есть вариант открывать файл на чтение и в случие ошибки констатировать факт, что файла не существует:

< ?
// файл, который мы проверяем
$url = "http://url.to/favicon.ico";

// пробуем открыть файл для чтения
if (@fopen($url, "r")) {
    echo "Файл существует";
} else {
    echo "Файл не найден";
}
?>

Однако такой прием занимает достаточно много времени.

Есть вариант еще лучше — использовать функцию get_headers():
Читать полностью »

рубрики: PHP, Разработка | 7 комментариев

11 Декабрь 2008

Пагинация на PHP

Частенько приходится разбивать контент на сайтах постранично и выводить «менюшку» со списком номеров страниц, плюс ссылочки для перехода на предыдущую, следующую, первую и последнюю страницы.

С этим можно справиться таким кодом:

< ?php
$itemscount=123; // количество элементов (статей)
$itemsperpage=10; // кол-во эл-в на странице
if (isset($_REQUEST&#91;'page'&#93;))
    { $cpage=$_REQUEST&#91;'page'&#93;; }
    else { $cpage=1; }
// если странца не задана, то будем на 1й
$pagescount=ceil($itemscount/$itemsperpage); //кол-во страниц
if ($cpage>1) {
    // первая
    echo '<a href="?page=1">< <</a> ';
    // предыдущая
    echo '</a><a href="?page='.($cpage-1).'">< </a> ';
}
if ($stpage>1) echo '... ';
for ($i=$stpage;$i< =$endpage;$i++) {
	if ($i==$cpage) { echo '<strong>'.$i.' '; }
	else { echo '</a><a href="?page='.$i.'">'.$i.'</a> '; }
}
if ($endpage< $pagescount) echo '... ';
if ($cpage<$pagescount) {
    // след.
    echo '<a href="?page='.($cpage+1).'">> ';
    // последняя
    echo '<a href="?page='.$pagescount.'">>></a> ';
}
?>

Такой код хорош, если у вас страничек 5, но вот если их количество значительное, то намного приятнее будет смотреться что-что вроде:

< < < ... 10 11 12 13 14 15 16 … > >>

Сейчас мы его «сбацаем»
Читать полностью »

рубрики: PHP, Разработка | 7 комментариев

21 Ноябрь 2008

Два 2-х ноября

Писал цикл по дням в PHP. Есть переменные $f и $t, в которых начало и конец временного отрезка в SQL формате. У меня заданы начало: 2008-10-28 и конец 2008-11-10.
есть цикл, в котором к timestamp текущей даты прибавляет количество секунд в сутках:

$cur=$f; // цикл по $cur. вначале в ней $f
preg_match("/([0-9]{4})-([0-1]{1}[0-9]{1})-([0-3]{1}[0-9]{1})/",$cur,$matches); // разбиваем строку с датой
$curts=mktime(0,0,0,$matches[2],$matches[3],$matches[1]);  // получаем timestamp для начальной даты в 00:00:00
while ($cur<=$t) {
    echo "cur:".$cur."|t:".$t." (".$curts.")<br />"; // выводим текущую дату в цикле и конечную, timestamp текщей даты
    $curts+=24*60*60; // увеличиваем на сутки timestamp 
    $cur=date("Y-m-d",$curts);    

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

Потом догадался, тчо это от того, что 2-го ноября в штатах переводили часы, то есть через 24 часа от 00:00:00 2-го ноября было не 00:00:00 3-го, а 23:00:00 все того же второго ноября.

Фикс заключается в том, тчоб взять начальный timestamp посередине дня

$curts=mktime(12,0,0,$matches[2],$matches[3],$matches[1]);  // получаем timestamp для начальной даты в 12:00:00

Будьте бдительны, коллеги! 🙂

рубрики: PHP | 3 комментария

19 Июнь 2008

SVN — быстрый старт (how-to руководство)

Недавно я решил наконец-то начать использовать систему контроля версиями и выбрал (Subversion). Он изначально был установлен на моем Linux Fedora, но вы можете и сами легко установить его на своей системе Fedora используя команду yum install subversion или найти RPM subversion.

Теперь хочу поделиться с вами небольшим мануалом по быстрой настройке, и не буду рассказывать, что же такое SVN и как он работает, будем считать, что вы знакомы в теории с ним и хотите наконец-то быстро попробовать его в работе. Объяснять буду на примере.
У меня есть PHP проект в /var/www/html/docs/haibuy. У Apache есть Virtualhost haibuy. Мой IP в локальной сети 192.168.1.7.
Читать полностью »

рубрики: PHP, Разработка | 14 комментариев

16 Май 2008

Круговая диаграма на PHP с использованием GD

Часто данные приходится отображать в наглядном для пользователя виде, а именно с помощью диаграм. Одним из видов диаграм является круговая, где за каждый элемент отвечает свой сектор.
Напишем функцию, которая стоит такую диаграму используя библиотеку GD для PHP. В качестве входных параметров ассоциативный массив $ar ($ar[‘имя’]=данные;) и $title для заголовка диаграмы.
Читать полностью »

рубрики: PHP | 5 комментариев

15 Май 2008

Простой whois на PHP

PHP дает нам возможность запускать команды операционной системы, используя например функцию exec(). Попробуем ее, написав простой whois сервис. Whois — это *nix комманда, которая показывает информацию о домене. Также мы можем проверить, свободен домен или нет. Удостовертесь, что ваш провайер включил exec(). Обычно эта функция запрещена ( находится в параметре disable_functions в php.ini). Также попробуйте, работает ли whois нормально на вашем сервере. Я пробовал скрипт на Apache 2, PHP 5, Linux Fedora 8 и все было ОК.

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

рубрики: PHP | 7 комментариев

14 Май 2008

Скрипт проверки баланса в SAPE

Вашему вниманию представляется простой скрипт проверки состояния вашего счета в SAPE. Скрипт на PHP с использованием curl. Сценарий логинится в системе и «выдирает со страницы» небольшой блок слева с информацией о доходе, расходах, балансе.

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

рубрики: PHP | 11 комментариев

  • Календарь

  • Март 2024
    Пн Вт Ср Чт Пт Сб Вс
    « Ноя    
     123
    45678910
    11121314151617
    18192021222324
    25262728293031