Необходимо оценить умение программиста

S
На сайте с 26.04.2006
Offline
86
5000

Необходимо оценить умение программиста выполнившего сскрипты приведенные ниже.

Рассматриваю данного человека как потенциального сотрудника. Представленные скрипты это примеры его работ.

Парсер данных из Яндекса

<?php
$globalerror = '';
@ini_set('max_execution_time', 360);

function timer($shift = false)
{
static $first = 0;
static $last;

$now = preg_replace('#^0(.*) (.*)$#', '$2$1', microtime());
if (!$first) $first = $now;
$res = $shift ? $now - $last : $now - $first;
$last = $now;
return $res;
}

function noindex($url)
{
global $globalerror;
$url = preg_replace("/http:\/\//i","",trim($url));
$url = preg_replace("/www./i","",$url);
$url = preg_replace("/\/$/","",$url);
$url = htmlspecialchars($url);
$lurl = 'www.'.$url;

// XML запрос
$request = '<?xml version="1.0" encoding="utf-8"?>
<request>
<query>url="'.$url.'" | url="'.$lurl.'"</query>
</request>';

// POST заголовок
$request_header = '
POST /xmlsearch/ HTTP/1.0
Host: xmlsearch.yandex.ru
Content-Type: text/plain
Content-length: '.strlen($request).'

';

$request = $request_header.$request;

//устанавливаем соединение
$fp = @fsockopen('xmlsearch.yandex.ru',80,$errno,$errstr,30);
if ($fp)
{
//отправляем запрос
fwrite($fp,$request);
//получаем ответ
$xml_respose = '';
while(!feof($fp)){
$xml_respose.= fgets($fp,512);
}
fclose($fp);
}
else
{
$globalerror = "Open socket error";
return;
}

$xml_respose=substr($xml_respose,strpos($xml_respose,'<?xml'));

$globalerror= (preg_match('|<error>([^<]+)</error>|',$xml_respose,$matches)) ? $matches[1] : '';
$result = (preg_match('|<error code="(\d+)">([^<]+)</error>|', $xml_respose, $matches)) ? $matches[2] : 0;

return ($globalerror) ? $globalerror : $result;
}

timer();
$urls = (isset($_POST['urls'])) ? $_POST['urls'] : '';
$badurls = '';

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Yandex XML</title>
</head>
<body>
<h2>Yandex XML URLs</h2>
<form method="post" action="xml.php">
<textarea id="urls" name="urls" rows="15" cols="80"><?=$urls?></textarea>
<br><input type="submit" value="Проверить URL">
</form>

<?php

if ($urls)
{
$list = split("\n", trim($urls));
foreach ($list as $url)
{
$es = noindex($url = strip_tags(trim($url)));
if ($globalerror) break;
if (!$es)
echo "<b style=\"color:green;\">ok: </b>$url<br>\n";
else
{
echo "<b style=\"color:red;\">n/a: </b>$url - <span style=\"color:blue;\">$es</span><br>\n";
$badurls .= $url."\n";
}
}
if ($globalerror) echo "<b style=\"color:red;\">$globalerror</b><br>";
if ($badurls) echo 'Не в индексе:<br><textarea rows="15" cols="80">'.$badurls.'</textarea>';
echo "\n".'<br>Проверка завершена за ' . timer() . ' сек. Проверено ' . count($list) . ' url';
}
?>
</body>
</html>

Парсер рецептов

<?php
// сайт, слэш в конце обязателен
$site='http://vinegret.info/';
$start_num=17877;
$other_num=400;
set_time_limit(0);
error_reporting(0);
$file_out=fopen(getcwd()."/parsed.sql","w");
$file_bad=fopen(getcwd()."/parsed_bad.sql","w");

// начало
$file=file_get_contents($site.'online.php');
preg_match_all('/(?="><a\shref=\"online.php\?src=).*?(?=">)/i',$file,$matches);
foreach ($matches[0] as $item) {
$base_cat=str_replace('"><a href="','',$item);
// главная категория
$file_main_cat=file_get_contents($site.$base_cat);
preg_match_all('/(?=d><a\sclass=\'the_link\'\shref=\'online.php\?src=).*?(?=\'>)/i',$file_main_cat,$matches);
foreach ($matches[0] as $item) {
$main_cat=str_replace("d><a class='the_link' href='",'',$item);
// категория
$file_cat=file_get_contents($site.$main_cat);
preg_match_all('/(?=d><a\sclass=\'the_link\'\shref=\'online.php\?src=).*?(?=\'>)/i',$file_cat,$matches);
foreach ($matches[0] as $item) {
$cat=str_replace("d><a class='the_link' href='",'',$item);
// подкатегория
$file_subcat=file_get_contents($site.$cat);
// ссылки на рецепты
preg_match_all('/(?=d><a\sclass=\'the_link\'\shref=\'online.php\?src=).*?(?=\'>)/i',$file_subcat,$matches);
foreach ($matches[0] as $item) {
$recept=str_replace("d><a class='the_link' href='",'',$item);
// рецепт
$file_descript=file_get_contents($site.$recept);
// название
preg_match_all('/(?=vrn">).*?(?=<)/i',$file_descript,$matches);
$title=str_replace('vrn">','',$matches[0][0]);
// ингредиенты
preg_match_all('/(?=vpb">).*?(?=<)/i',$file_descript,$matches);
$ingredient=str_replace('vpb">','',$matches[0][0]);
$ingredient="\n - ".str_replace(', ',' <br> - ',$ingredient);
// приготовление
preg_match_all('/(?=vrp">).*?(?=<)/i',$file_descript,$matches);
$howto=str_replace('vrp">','',$matches[0][0]);
$howto=str_replace(' ','',$howto);
//echo "$title<br>$ingredient<br>$howto<hr><br>";
if ($title=='') fwrite($file_bad,"$site$base_cat\n$site$main_cat\n$site$cat\n$site$recept\n\n");
else fwrite($file_out,"INSERT INTO `cook_all` VALUES ('$start_num','$other_num','$title','$ingredient','$howto');\n");
$start_num++;
}
}
}
}
echo 'Готово';
fclose($file_out);
fclose($file_bad);
?>

Файл менеджер с распаковкой RAR архивов

<?
$base_folder='folder';
if (isset($k) && $k==="y") {
if (!isset($upload)) echo '
<form action=rar.php?k=y method=post enctype="multipart/form-data">
<h4>Архив</h4><input type=file name=ufile size=30>
<input type=submit name=upload value=Загрузить>
</form><br><br>';
else {
$ext=substr($ufile_name,strlen($ufile_name)-4,4);
$papka=getcwd().'/'.$base_folder.'/';
if ($ext===".rar" || $ext===".RAR") {
copy($ufile,$papka.basename($ufile_name));
passthru(getcwd().'/rar -inul x '.$papka.basename($ufile_name).' '.$papka);
echo "архив загружен на сайт и распакован";
unlink($papka.basename($ufile_name));
}
else echo "это не rar архив";
}
if (!isset($remove)) echo '
<form action=rar.php?k=y method=post>
<h4>Удалить папку</h4><input type=text name=papka size=30>
<input type=submit name=remove value=Удалить>
</form>';
else if (isset($papka)) {
$dir=getcwd().'/'.$base_folder.'/'.$papka;
passthru('rm -R '.$dir);
echo "папка $papka удалена";
}
}
else header("Location: http://ya.ru/");
?>
R.Major
На сайте с 23.03.2008
Offline
25
#1

// сайт, слэш в конце обязателен

Дальше не захотелось смотреть :D

Нет, все же посмотрел, нормальный код.

Пишу на PHP (+JS) (/ru/forum/507055)
S
На сайте с 26.04.2006
Offline
86
#2

Это комментарий наверно для заказчика, а не для программиста :)

SJ
На сайте с 16.03.2008
Offline
78
#3
Strom:
Необходимо оценить умение программиста выполнившего следующие скрипты
Парсер данных из Яндекса
http://radiomaster.biz/xml.txt

Отлично. Все красиво, обработчики ошибок где надо...

Парсер рецептов
http://radiomaster.biz/parser.txt

А тут уже нифига обработчиков этих и нет...

Немного странно даже.

Файл менеджер с распаковкой RAR архивов
http://radiomaster.biz/rar.txt

Посмотреть не удалось.

Рассматриваю данного человека как потенциального сотрудника. Представленные скрипты это примеры его работ.

Если это его работы (всяко бывает ;) ) - то вы берете на работу толкового программиста.

Любимый хостинг (http://beget.ru?id=2902) How can we grow old when the soundtrack of our lives is rock-n-roll?
S
На сайте с 26.04.2006
Offline
86
#4

Человек занимается PHP года два, не знаю много это или мало, боюсь попасть.

http://radiomaster.biz/rar.txt - проверил работает, файл не большой, собственно вот он

<?

$base_folder='folder';
if (isset($k) && $k==="y") {
if (!isset($upload)) echo '
<form action=rar.php?k=y method=post enctype="multipart/form-data">
<h4>Архив</h4><input type=file name=ufile size=30>
<input type=submit name=upload value=Загрузить>
</form><br><br>';
else {
$ext=substr($ufile_name,strlen($ufile_name)-4,4);
$papka=getcwd().'/'.$base_folder.'/';
if ($ext===".rar" || $ext===".RAR") {
copy($ufile,$papka.basename($ufile_name));
passthru(getcwd().'/rar -inul x '.$papka.basename($ufile_name).' '.$papka);
echo "архив загружен на сайт и распакован";
unlink($papka.basename($ufile_name));
}
else echo "это не rar архив";
}
if (!isset($remove)) echo '
<form action=rar.php?k=y method=post>
<h4>Удалить папку</h4><input type=text name=papka size=30>
<input type=submit name=remove value=Удалить>
</form>';
else if (isset($papka)) {
$dir=getcwd().'/'.$base_folder.'/'.$papka;
passthru('rm -R '.$dir);
echo "папка $papka удалена";
}
}
else header("Location: http://ya.ru/");
?>
sergv
На сайте с 13.04.2006
Offline
441
#5

Пытаюсь зайти по ссылкам...

При запросе файла с данного сайта произошла ошибка:
Для данного сайта нарушено соотношение зарубежного и российского трафика.
Пожалуйста, попробуйте завтра.

title Отдача контента в зарубежные сети приостановлена

Вроде в России живу и с русских айпи заходить пытаюсь

https://REGHOME.ru - регистрация и продление доменов от 169₽ в российских и международных зонах по честным ценам без звездочек. (R01, WebNames, UK2). Принимаем Ю-Money, Visa, MasterCard, Мир
SJ
На сайте с 16.03.2008
Offline
78
#6
Strom:
rar.txt - проверил работает, файл не большой, собственно вот он

Если возьмете человека на работу, расскажите ему, что HTML аттрибуты (а в XML - и подавно) все-таки не мешало бы брать в кавычки (form method="post"). :D

Kolyaj
На сайте с 28.03.2006
Offline
69
#7

В разных примерах разный стиль кодирования. Или их писали разные люди, или один человек, но в разное время.

seregarulez
На сайте с 20.09.2007
Offline
32
#8
sokol_jack:
Если возьмете человека на работу, расскажите ему, что HTML аттрибуты (а в XML - и подавно) все-таки не мешало бы брать в кавычки (form method="post").

вообще-то для echo кавычки в хтмл коде могут помешать...я тоже все время убираю их из хтмл кода

Kolyaj
На сайте с 28.03.2006
Offline
69
#9
seregarulez:
вообще-то для echo кавычки в хтмл коде могут помешать...я тоже все время убираю их из хтмл кода

Чем, интересно, кавычки могут помешать echo?

М
На сайте с 08.02.2006
Offline
59
#10
В разных примерах разный стиль кодирования

+1 Ощущение, что все 3 примера написаны разными людьми

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий