Category Archives: Web

Обо всём, что связано с WEB технологиями и мной

SCP, SFTP, FTPS и PHP

По напридумывают аббревиатур: SCP, SFTP, FTPS. Соединят пару из них в одну программу. Нарисуют общий вид, как при работе с FTP. А у простых смертных потом непонятки. А ведь не всем дано найти и разобраться сразу что из них что, и через что, и кто поддерживает. Наверняка людей запутывает участие в них аббревиатуры FTP и отсутствие строго стандарта к названиям. Все привыкли к тому, что FTP это FTP, стандарт, который все знают, старый и добрый.
А ведь не так всё легко с этими SFTP, FTPS. С SCP легче – сразу видно из названия что с FTP как бы мало связан. SCP у нас Secure Copy и ничего больше. Всего лишь копирование файлов через SSH. Но стоит начать разбираться с аббревиатурами SFTP, FTPS – как наткнёмся на несколько понятий, как: SSH File Transfer Protocol, FTP session over SSH, Simple File Transfer Protocol, а так-же FTP+SSL/TLS. Так что, узнать что имеет ввиду заказчик/администратор под красивой фразой: У нас установлен SFTP – SSH File Transfer Protocol или Simple File Transfer Protocol – угадать сложно. А если он ошибся и имел ввиду FTP session over SSH или FTP+SSL/TLS?
А из всей этой красоты PHP у нас поддерживает простой FTP, FTP+SSL/TLS, и возможно, ещё работал бы FTP session over SSH – последнего сам не проверял – подтвердить или опровергнуть немогу.
А ведь так легко ошибиться и сказать: Да, мы сможем, а потом, понять что ошибся, но уже будет поздно. Я понимаю, что хорошему аминистратору, на сервере поднять FTP – раз плюнуть, но хороший администратор – стоит хороших денег, да и после такой грубой ошибки можно выглядрть делитантом.
Всё это классно расписано в ВикиПедие. Но можем и повторить:
Чаще всего под аббревиатурой SFTP подразумевяют: SSH File Transfer Protocol – передачу файлов посредством SSH исползуя многие возможности SHELLа.
Под аббревиатурой SFTP подразумевяют: FTP с использованием SSL/TLS
Simple File Transfer Protocol – старый, и считается раритетом.

WordPress – адаптация к нуждам

Так как иногда приходиться пользоваться WordPressом, и ставить на него совсем не стандартные шаблоны, но так, что бы работало. Это часто требовало разных адаптаций стандартных функций WordPressа под шаблон или написание своих.
В первые раза два я делал такую грубую ошибку, как: залазил в ядро, менял что хотел. Потом выхадила новая версия и я себя проклинал. Сидел выдерал, искал, переносил, правил.
И только потом мне стрельнуло в голову использовать для хранения plug-inы WordPressа. Почему не шаблоны? Где-нибудь в начале, в каком-нибудь подгружаемом файле? Очень прото – шаблонов использующих эти функции может быть много и их могут время от времени менять – а таскать это всё по шаблонам каждый раз – здоровья не хватит. А вынос в отдельный общедоступный файл – это уже плугин.

Python, PHP и HTTP запросы

Припёрло тут такое дело: Наш всеми любимый google решил сделать свой новый сервис, Google Sitemaps. Этот сервис по идее хорош – у кого сайт плохо индексируется – тот мог составить список ссылок и это дело подлечить. Но где гарантия, что конкуренты, сделаф фиктивный акаунт вас не попытаются опустить? Интерестно, куда это дело продвиниться?
Естественно – ну надо же это дело опробывать. Тем более они предлагали взять готовый, ими же написанный скрипт на Python, который, как олазалось, проходил по сайту через файловую систему, и собирал все пути до файлов, которые находил, и вы ему разрешали взять. Такой путь подходит только если для статичных сайтов, как у моего тестя. Да и то – там сайт весь на PHP и mod_rewrite хитрый. А большие сайты, которые никогда не думали о том, что такая фишка будет, Google Sitemap сгенерить не могут. Тем более не на каждом сервере Python есть.
Появилась нужда, этот процесс сборки урлов автоматизировать. Ну не садиь же китайцев/студентов это дело делать.
Первая мысль – взять PHP, найти старый, мною писаный индексатор сайтов на cURL, где каждую страницу доставали за 2 обращения к серверу (вначале HEADER, потом, если наш формат – BODY). Что меня особо не вставило. Потому я решил обратиться к более современным языкам и интерпретаторам. Выбор пал на Python.
Continue reading →

Код, стиль и PHP

Вот ненавижу я PHP код, когда он отформатирован типа:

if ([condition]) 
{
	<statement>
		<statement>
<statement>
}
else
{
<statement>
	<statement>
		<statement>
}

И обьяснить немогу, почему. Но читать немогу совсем.
Зато такой:

if ([condition])  {

	<statement>
	<statement>
	<statement>

} else {

	<statement>
	<statement>
	<statement>

}

читаю без проблем.

XML-RPC и стандарт ISO 8601

Так как по работе очень нужно было знать, как ведёт и что умеет WordPress с XML-RPC – мы начали шелестеть по всем ресурсам, что находил наш любимый Google. И наткнулся я на спек по XML-RPC – где ясным англицким языком сказано было, какой должен быть формат даты по стандарту ISO 8601. Но так как давеча я это дело изучал в Google SiteMaps я был приятно удивлен разницей (картинка в 52K)… Оказывается стандарт не для всех одинаковый… И вот теперь угадай, мне простому программисту, надо всё таки использовать настоящий ISO 8601 или тот, что утвердил XML-RPC?

Книги о PHP и register_globals = off

Как известно, о PHP писали, пишут и будут писать: книги, примеры, статьи, заметки, презентации и многое другое. Естественно всё это читается, рекомендуется, качается, разбирается – народ учиться – народу хочется быть крутыми Webmasterами – сторить порталы, блоги, WAP-чаты (последнее по моему вообще извращение).
Многие из новичков начинают с вопроса – какую бы книгу почитать? Естественно им рекомендуют что-то вроде: PHP & MySQL Website Development, или что-то в этом жанре. И мало кто берёт в голову что новички, пропустили нужные главы мануала об изменениях в PHP с тех пор, как были выпущены многие книги, наступит на теже грабли: register_globals = off.
Так вот, просьба, тыкайте новичков носом в первые главы мануала, а именно в I, II, III, IV, V и потом только давайте ему читать книги, статьи, презентации, но при условии что он уже знаком с основами TCP/IP, HTTP, HTML, CSS, знает что такое стандарты и где их искать.

Генерация паролей

Очень часто приходиться генерировать пароли, и казолось бы что тут сложного? Написал себе функцию и генерируй на здоровье. Для генерации обычно берут цифры от 0 до 9 и латинцкие символы от A до Z. И редко кто задумывается о том что в некоторых шрифтах, с некоторой слепотой 0 от O или o никак не отличить. Или 1 от l. Так сидеть, и мучаются пользователи, гадая какой это символ. Поэтому моя функция генерации пароля использует слегка обработанный набор символов для генерации, так что бы похожих символов небыло.

Собственно сам код:

function gen_passwd ( $len) {
    $res = '';
    $useChars = '23456789ABCDEFGHKMNPQRSTUVWXYZabcdefghkmnpqrstuvwxyz';
    $useChars .= $useChars;
    for ($i = 0; $i < $len; $i++ ) {
       $res .= $useChars[mt_rand ( 0, strlen ( $useChars)-1)];
    }
    return $res;
}