Короче вот, наваял (хабраавторы, сделайте какой-нибудь вменяемый способ постить код). Данная функция использует только одну регулярку (и то, только в случае, если есть '/../'). Она также корректно обрабатывает все варианты URI (в отлиичие от вышеопубликованного кода):
Ракурс может быть таким, что танк будет видно очень даже хорошо. Например, может получится так, что под определённым углом на фоне скалы танк будет "показывать" лазурь неба.
Фото - фейк. На одном сайте так и написано, что танк так бы мог выглядеть.
Все ссылки на "одного солдата, пожелавшего остаться не названным". При одной камере и одном проекторе это может работать в слуачае наличия одного противника в строго оговорённом месте :)
Тогда данный скрипт отрабатывает не в соответствии с поставленной задачей.
Скрипт по умолчанию полагает, что ссылки бывают только протокола http. Также, он полагает, что если URL не абсолютный, и первый символ - не '/', то значит это - домен.
С такой же наивностью может работать и предложенный мной вариант. Работать будет быстрее, а главное, код будет яснее.
Вообще-то parse_url работает правильно. Т.к. ваш пример некорректен. Особенно, если смотреть первый вариант - его можено поменять на "page.pl/path" и в итоге получим не то, что надо. Стоит добавить к примерам http:// и всё будет ок. Для того, чтобы определить - наличествует ли протокол, хватит одной регулярки. А если учетывать только http (как в функции), то вообще можно обойтись без регулярок.
parse_url может заменить большую часть кода данной функции. Остальную часть заменит realpath.
Применительно к данной ситуации энто зависит от реализации. И потом, машинке легче выполнить один запрос к БД, и сообщить, что новых сообщений нет (или два, отдав новые комменты), чем рендерить всю страницу по F5.
Вот сейчас на одном своём проекте применил такой приём: используется простая форма, но просто поменял местами названия полей email и name. В итоге, все боты в качестве имени суют email, что легко проверяется на стороне сервера.
Хотя, конечно, этот метод не спасает от направленного бота, но пока таковых замечено не было.
Консоль нужна в первую очередь не для типовых задач, для которых имеются более удобные GUI средства (которые уже, кстати, выше в комментариях были упомянуты), а для задач, которые не являются типовыми, и, соответственно, найти утилиту под такую задачу не получится, а писать никто не станет, т.к. задача одно-двух разовая. Консоль рулит также для написания заданий, исполняемых по крону.
И вот при отсутствии консоли решение таких задач на самом деле превращается в головную боль.
Так что, ИМХО, пример из статьи в этом плане не совсем удачный. Разве что как демонстрация возможностей консоли.
А вы не задумывались о том, что возможно покупаются не столько акции, сколько, например, какая-то информация? БД в 300 миллионов реальных email адресов (причём, местами с паролями) - это уже немало, и кого-то может реально заинтересовать, но вряд ли это является предметом торга.
Другое дело связи между этими адресами, история развития сервиса, законы успешного развития столь крупных проектов - эта информация может стоить очень и очень дорого.
Возможно, ребята из facebook получили какую-то очень интересную статистическую информацию, которую и продают таким гигантам, как Microsoft.
relative/path
/root/path
?arguments&change&only
#anchor_change_only
user:pass@host/path
http://host
function uri2url($link, $base) {
if (!strpos($base, '://')) {
$base = 'http://' . $base;
}
$base = parse_url($base);
unset($base['fragment']);
if (!strpos($link, '://') and strpos($link, '@')) {
$link = $base['scheme'] . '://' . $link;
}
$link = parse_url($link);
if (isset($link['host'])) {
if ($link['host']!=$base['host']) {
return false;
}
unset($base['path'], $base['query']);
} elseif (isset($link['path']) and $link['path'][0] != '/') {
if($base['path'][strlen($base['path'])-1]=='/') {
$link['path'] = $base['path'] . $link['path'];
} else {
$path = pathinfo($base['path']);
$link['path'] = $path['dirname'] . '/' . $link['path'];
}
}
if (isset($link['path']) or isset($link['query'])) {
unset($base['query']);
}
extract($link + $base);
str_replace('/./', '/', $path);
while (strpos($path, '/../') !== false) {
$path = preg_replace('~(/[^/]+)?/\.\./~', '/', $path);
}
return $scheme . '://'
. (isset($user) ? $user . (isset($pass) ? ':' . $pass : '') . '@' : '')
. $host . $path
. (isset($query) ? '?' . $query : '')
. (isset($fragment) ? '#' . $fragment : '');
}
Весьма сомнительная затея...
Все ссылки на "одного солдата, пожелавшего остаться не названным". При одной камере и одном проекторе это может работать в слуачае наличия одного противника в строго оговорённом месте :)
под "этим" подразумевается первый фрагмент до / в $base. Равно как и обработка $link весьма неоднозначна.
Скрипт по умолчанию полагает, что ссылки бывают только протокола http. Также, он полагает, что если URL не абсолютный, и первый символ - не '/', то значит это - домен.
С такой же наивностью может работать и предложенный мной вариант. Работать будет быстрее, а главное, код будет яснее.
parse_url может заменить большую часть кода данной функции. Остальную часть заменит realpath.
Столько регулярных выражений и мусора, что просто жуть.
Там 5 swf файлов и 60 джипегов + несколько файлов с данными. В офлайне вроде бы всё прекрасно работает.
Достать можно из кэша браузера или можно поставить проксик.
Правда там по менюшкам есть ещё возможность прочитать про каждую сцену подробнее, и посмотреть видеоролики из Tin Man к каждой сцене.
И даже не важно, исполнятся ваши прогнозы или нет, спасибо за позитив.
...хотя всё же хотелось бы верить, что так оно всё и есть...
Хотя, конечно, этот метод не спасает от направленного бота, но пока таковых замечено не было.
И вот при отсутствии консоли решение таких задач на самом деле превращается в головную боль.
Так что, ИМХО, пример из статьи в этом плане не совсем удачный. Разве что как демонстрация возможностей консоли.
Другое дело связи между этими адресами, история развития сервиса, законы успешного развития столь крупных проектов - эта информация может стоить очень и очень дорого.
Возможно, ребята из facebook получили какую-то очень интересную статистическую информацию, которую и продают таким гигантам, как Microsoft.
Вот такое ИМХО.
А то ваша через неделю станет неактуальной.