Уязвимость связки php + nginx

Summary

Announced: 2010-05-20
Credits: 80sec
Affects: сайты на ngnix+php с возможностью загрузки файлов

(далее...)

Pe (a) rl

Сегодня поступило предложение с кафедры пойти на испытательный срок в одну небезызвестную компанию в качестве Perl программиста. Если учесть, что на нашем потоке его никто в глаза не видел и у нас несколько не «программистская» специальность, а больше железная — странно было услышать это от него. Но, чем черт не шутит. Начальные требования — знание MySQL (а желательно Oracle), Perl (базовый синтаксис) и желание обучаться. Пораскинул я мозгами и решил попробовать. Сейчас сижу и осваиваю тот самый базовый синтаксис, что необходим для работы.

P.S. Хочу все таки попробовать перегнать все записи (и комментарии) в самописный движок. Думаю он будет сделан с помощью Codeigniter. Осталось только за него взяться.

DevConf

Иногда я жалею, что живу не в Москве или не в Питере.
Вот как, например, в тех ситуациях, когда в Москве происходит DevConf (особенно заинтересовала PhpConf ()). С удовольствием бы посетил, но тратить такое количество денег пока не готов... :(

CodeIgniter — Вступление

Я решил тоже начать писать об этом безусловно отличном фреймворке на PHP, т.к. вот уже 2 месяца мой проект разрабатывается именно на нем. Мой выбор пал на этот фреймворк из-за его скорости, удобства применения, множественной документации (как на русском, созданной поклонниками этого фреймворка, так и официальной, английской). Итак — этот пост начало моим постам посвященным этому фреймворку.

Не работают уведомления на почту

Пока ещё не разобрался в чем проблема может быть. Может быть просто по дефолту выключена функция mail () в php, т.к. я сильно не копался в конфигах. У кого какие есть соображения?

P.S. Сегодня в первый раз сидел за рулем собственного авто. Выезд в город. Пока документы оформляли, пока то, пока се. Короче затянулось это все хозяйство. Но теперь я уже почти на колесах (т.к. эту машину забираю я, а родители, надеюсь, в ближайшем будущем купят себе новую). Отдал часть денег за машину родителям (на новую), но когда будет — хз.

Переезд сервера

Итак, все мои домены (основные и мои личные) переезжают на выделенный сервер в германии, к кейвебу. В связи с чем в ближайшем будущем (примерно 3-4 дня) возможны проблемы с плагинами, может что-нибудь подглючивать — значит я все ещё настраиваю сервер. В прочем apache, php, mysql и несколько твиков для защиты от кулхацкеров я уже поставил. Осталось допинать апач, чтобы еррор лог был поменьше.

Так что если кто-то заметит какие-то баги в работе сайта (в частности этого) — сообщайте — буду только рад =]

И ещё — какие плагины к пхп подключить бы в первую очередь? Перечислите, кому не сложно =]

P.S. В скором времени я закрываю свой блог на лиру и отключаю кросспостинг туда. Не вижу смысла держать 10 блогов.

Lici → официальная версия 0.4

Наконец-то мы дождались — вышел новый плагин кросспостинга для LiveInternet.ru, который называется Lici. Точнее вышла его новая версия — 0.4. Разработка длилась очень долго только потому, что и мне было лень и у других не было времени. Но на позапрошлой неделе я решил, что пора взяться за дело и... читайте описание то, что теперь плагин умеет (далее...)

Google Charts — строим графики зависимостей

Как я уже говорил — моя практика в университете заключается в том, что я должен написать приложение на php, которые будет подсчитывать количество повторяющихся в тексте символов и которые строго определены в конфиге (который может содержаться и в текстовом файле и просто передаваться через textarea). Как только мне задали это задания — я подумал о Google Charts о котором недавно читал на хабрахабре.
Вчера я сел и написал это небольшое приложение:

function graphfile($SUPPORTCHARS, $file=false, $text=false)
{
	$str = array();	  //for sting
	$ch=0;
	if($text && !$file)
{
	$file = fopen("tmp/tmp.txt", "w");
	fwrite($file, $text);
	fclose($file);
	$file = fopen("tmp/tmp.txt", "r");

}
	while(!feof($file))
	{
		$str = fgets($file);
		$lenstr = strlen($str);
		for($i=0;$i<=$lenstr;$i++)
		{
			if($str[$i]!=NULL && strstr($SUPPORTCHARS, $str[$i]))
			{
				$pt = $ch;
				$tr = 0;
				for($j=0;$j<$ch;$j++)
				{
					if($chars[$j][1]==$str[$i])
					{
						$pt = $j;
						$tr = 1;
					}
				}
				if($tr!=1)
				{
					$chars[$pt][1]=$str[$i];
					$chars[$pt][0]=0;
				}
				for($j=0;$j<=$lenstr;$j++)
				{
				if($str[$j]==$chars[$pt][1])
					{
						$str[$j]=NULL;
						$chars[$pt][0]++;
					}
				}
				if($tr!=1) $ch++;
			}
		}
	}
	fclose($file);
	$charturl = "http://chart.apis.google.com/chart?cht=bvs&chxt=x,y,x&";
	$width = $ch*20;//chs=$widthx$height;
	$height = 400;
	do{
		$height--;
		$width--;
	}while(($width*$height)>300000 || $width>1000);
	sort($chars);
	$vars = "0:|";
	$data = "2:|";
	$maxv = 0;
	$chb = 15;
	for($i=0;$i<$ch;$i++)
	{
		$vars .= $chars[$i][0]."|";
		$data .= $chars[$i][1]."|";
		if($chars[$i][0]>$maxv) $maxv = $chars[$i][0];
	}
	$charturl .= "chs=".$width."x".$height."&";
$simpleEncoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-.';
$chartData = "s:";
  for ($i = 0; $i < $ch; $i++) {
    $currentValue = $chars[$i][0];
    if ($currentValue > -1) {
    $chartData.=substr($simpleEncoding,61*($currentValue/$maxv),1);
    }
      else {
      $chartData.='_';
      }
  }
   $charturl .= "chd=".$chartData."&chbh=".$chb."&chco=76A4FB&chxl=".$vars."1:|0|".($maxv/2)."|".$maxv."|".$data;
	?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=<?=$_CHARSET;?>" />
<title><?=_TITLE;?></title>
</head>
<body>
<h3><i><?=_TITLE;?></i></h3>
		<p><i><?=_GRAPHTITLE;?></i></p>
<?=$error;?>
<table>
	<tr>
		<td>
			<?php
				 echo "<a href = \"".$charturl."\" target = \"_blank\"><img src = \"".$charturl."\" border = \"0\" width = \"".$width."\" height = \"".$height."\"/></a>";
			?>
		</td>
	</tr>
	<tr>
		<td>
				<a href = "index.php"><?=_NEWGRAPH?></a>
		</td>
	</tr>
</table>
</body>
</html>
	<?php
}

В прочем в построении графика не было ничего необычного. С помощью отдельной функции я считал повторяющиеся в тексте символы, которые разрешены для учета.
Те, кому не терпится посмотреть исходных код программы я могу предложить посмотреть исходный код функции, которая обрабатывает данные из файла и строит графики.
(далее...)

Практика + Google Charts

Решил отмазаться написав небольшой скрипт на php. Написал — не понравилось, что слишком долго работает на больших файлах — стер основной код и теперь пишу заново. С рекурсией, сортировкой и все со старыми добрыми изученными на первом курсе методами.
Программка — ТекстоГрафик. Считает повторяющиеся в текстовом файле или тексте в textarea символы по заранее заданному шаблону и строит графики их использования с помощью Google Charts. Кстати, Google Charts — крайне удобный метод работы с графиками. Мы не подгружаем свой сервер, но и получаем графики, которые и качественные и в любой момент этот график можно изменить на другой не прибегая к особым знаниям в программировании. Надо будет написать как-нибудь статью по использованию этой радости. В общем — советую :)