php
Aptana vs Notepad++
Для разработки проектов любой сложности, вебсервисов и всего остального нужно было всего пара вещей - notepad++ для веб-разработки(кроме asp.net) и Visual Studio для всего остального! Ну + всякие программы для командной разработки.
По сути все что надо разработчику на php - notepad++, tortoise svn(если ОС -Windows) и trac . Никогда не пользовался большими IDE для разработки на php, так как считал их не очень эффективными, так как к примеру Zend Studio, Eclipse, Aptana уступают быстрому notepad++ и тормозят/позвисают при разработке, что уменьшает эффективное время написания скриптов и сильно убивает мои нервы =) (говорим об окнах), хотя с более богатыми средствами для разработки и пр фичами. Но вот сегодня слетела моя лицензионная семерочка и дистриба под рукой не оказалось - решил поставить Ubuntu по-быстрому и настроить чтобы посидеть на ней пару тройку дней пока не доберусь до своего дистрибутивчика. Соответственно поставил Aptana, так как давно ее люблю но никак не могу перейти на нее с notepad++ в винде. Так вот после установки и настройки ее "под себя" - она и правда оказалась очень быстрой и эффективной. Наконец все стало нравиться по быстроте работы + интелесенс и прочие вкусности хорошей IDE.
Не считаю это никаким ростом и прочей фигней но в пользу разработки на крупных IDE под php могу сказать хорошие слова без ноток безразличия
Опрос сайтов
Зачастую вебмастера редко смотрят на уже готовые сайты, тем более если их обновляют другие люди. Просто статы по заработку смотреть куда приятнее чем полсотню своих сайтов где ты не найдешь ничешь нового. Из-за этого можно не вовремя отследить какой-нибудь косяк. Например база отвалилась либо с сервом неполадки, либо ip сайта умер, либо затупили ns сервера- в общем проблем хватает, да и я с такими сталкивался не раз.
Выход- каждый день просматривать сайты?? - нет. Это жестко, да и времени на это нет.
Если не нужно проверять дизайн, либо проверять контент - а нужно удостовериться что сайт работает- то нужно напистаь робота которые за тебя это бы все сделал.
Ну и вот я не долго думаю набросал скрипт опроса сайтов. Суть в том чтобы проверять хедеры отдаваемые страницей если к примеру 404 и 503, то алярма) если 200 либо редиректы - то ок) ну в кратце принцип простой...
Вот собственно и скрипт:
$recipient = "test@example.com";//мыло для отправки $mode=1; //если 0, то отправляютья все отчеты, если 1 то только в случае недоступности сайтов $sites=file('sites.txt'); //берем из файла сайтами $user_agent='Yandex/1.01.001 (compatible; Win16; I)'; //мы яндекс =) foreach ($sites as $k=>$v) { if(!ereg("http://",$v)) //предохраняемся на случай неверного формата URL $url ="http://".$v; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); $res = curl_exec($ch); curl_close($ch); $temp_res=explode("\n",$res); if(!ereg("301",$temp_res[0]) &amp;&amp; !ereg("302",$temp_res[0]) &amp;&amp; !ereg("200",$temp_res[0])) //если не ок и не редиректы $out['bad'][]=$url; else $out['good'][]=$url; sleep(rand(1,15)); //поспим чтобы хостер, такие как Мастерхост не пытались залочить при большом объеме сайтов } $email = "alert@site.com"; $name ='Sites report'; $subject = "Sites report -".date("Y.m.d"); $header = "From: ". $name . " <" . $email . ">\r\n"; if($mode) { if(count($out['bad'])) $mail_body ="Bad sites :\n".implode("\n",$out['bad']); } else $mail_body ="Bad sites :\n".implode("\n",$out['bad'])."\n\n Good sites:\n".implode("\n",$out['good']); if($mail_body) //Отсылаем если данные есть mail($recipient, $subject, $mail_body, $header);
Теперь осталось только поставить его на выполнение! Для этого юзаем серверную утилиту crontab.
Для безопасности делаем следующее:
- лезем на свой сервер через shell
- набираем crontab -l
- копируем все что он выдал в файл (к примеру cron.txt)
- дописыаем в файл скроку для нашего скрипта
- закидываем файл на сервер
- в командной строке пишем crontab cron.txt и если все сделали верно- то ко всем прояим вашим, либо системным скриптам добавить и на выполнение наш скрипт. Далее про все это следует звбыть и наслаждыться результатом, пополняя файл новыми сайтами на проверку
Строка добавления в крон (поставим проверять на каждые 2 часа)
0 */1 * * * /usr/local/bin/php /www/domain.com/site_tester.php > /dev/null 2>&1
где /usr/local/bin/php путь до php
/www/domain.com/site_tester.php - путь до скрипта на сервере
Подробнее про cron можно посмотреть сдесь и сдесь
Для работы скрипта на сервере должна быть установлена библиотека CURL
Если есть предложения и рекомендации по этому скрипту- буду рад услышать) Но на самом деле вещь простая, но довольно полезная.
Парсеры -общие положения
Иногда нужно быстро написать парсер для какого-нить сайта, и тут главное не красота кода, а чтобы быстро работало и гдавное не жрало систему... ну итак -мини мануал по парсерам:
На самом деле все просто! Логика такова- простой путь от общего к частному- от сайта целиком до текста поста в частности... для примера будем парсить http://xvideos.com/ (конечно весь код выкладывать не стоит по главные моменты показать просто)
Phalanger
Вернувшись с конференции ReMix, я был под впечатлением презентации в которой показывалась быстрая работа php на IIS при помощи модуля FastCgi и взаимодействие php- страниц с Asp.net приложениями. И не так давно Thomas Petricek, интервью с которым можно послушать здесь начал разработку Phalanger - компилятора под .NET Framework для языка php. Phalanger позволяет разработкику получать доступ к .Net библиотекам и к платформе Silverlight 1.1(что для меня просто праздник :), что позволит писать расширенные php - приложения, разрабатывать web-сервисы, получать доступ к данным с помошью LINQ, разрабатывать RIA (Rich internet application) на платформе Silverlight, а не использовать граммосткий flash, ипользовать контролы Asp.net.Phalanger встраивается в Visual Studio 2008 и пхп - разбаротчик в скором времени может пользоваться всем функционалом Visual Studio, что, на мой взгляд, очень неплохо.
При написании приложения в Visual Studio для отделения разметки от программного кода используется Code Behind:
Листинг Default.aspx.php
<?
import namespace System;
import namespace System:::Data;
import namespace System:::Configuration;
import namespace System:::Web;
import namespace System:::Web:::Security;
import namespace System:::Web:::UI;
import namespace System:::Web:::UI:::WebControls;
import namespace System:::Web:::UI:::WebControls:::WebParts;
import namespace System:::Web:::UI:::HtmlControls;
partial class Download_aspx extends System:::Web:::UI:::Page {
function __construct() {
$this->Load->Add(new EventHandler(array($this, "Page_Load")));
}
function Page_Load($sender, $e) {
$this->MaintainScrollPositionOnPostBack = true;
if ($this->IsPostBack) return;
$page = Convert::ToInt32($this->Request->QueryString->get_Item("Page"));
if ($page >= 0) $this->FormView1->PageIndex = $page;
}
}
?>
Листинг Default.aspx:
<%@ Page Language="PHP" MasterPageFile="~/Default.master" Title="Your Name Here | Picture Details"
CodeFile="Details.aspx.php" Inherits="Details_aspx" %>
<asp:content id="Content1" contentplaceholderid="Main" runat="server">
<div class="shim solid"></div>
<div class="page" id="details">
<asp:formview id="FormView1" runat="server" datasourceid="ObjectDataSource1" cssclass="view"
borderstyle="none" borderwidth="0" CellPadding="0" cellspacing="0" EnableViewState="false" AllowPaging="true">
<itemtemplate>
<div class="buttonbar buttonbar-top">
<a href="Albums.aspx"><asp:image ID="Image1" runat="Server" skinid="gallery" /></a>
<asp:ImageButton ID="ImageButton9" Runat="server" CommandName="Page" CommandArgument="First" skinid="first"/>
<asp:ImageButton ID="ImageButton10" Runat="server" CommandName="Page" CommandArgument="Prev" skinid="prev"/>
<asp:ImageButton ID="ImageButton11" Runat="server" CommandName="Page" CommandArgument="Next" skinid="next"/>
<asp:ImageButton ID="ImageButton12" Runat="server" CommandName="Page" CommandArgument="Last" skinid="last"/>
</div>
<p><%# $this->Server->HtmlEncode($this->Eval("Caption")) %></p>
<table border="0" cellpadding="0" cellspacing="0" class="photo-frame">
<tr>
<td class="topx--"></td>
<td class="top-x-"></td>
<td class="top--x"></td>
</tr>
<tr>
<td class="midx--"></td>
<td><img src="Handler.ashx?PhotoID=<%# $this->Eval("PhotoID") %>&Size=L" class="photo_198" style="border:4px solid white" alt='Photo Number <%# $this->Eval("PhotoID") %>' /></a></td>
<td class="mid--x"></td>
</tr>
<tr>
<td class="botx--"></td>
<td class="bot-x-"></td>
<td class="bot--x"></td>
</tr>
</table>
<p><a href='Download.aspx?AlbumID=<%# $this->Eval("AlbumID") %>&Page=<%# $Container->DataItemIndex %>'>
<asp:image runat="Server" id="DownloadButton" AlternateText="download this photo" skinid="download" /></a></p>
<div class="buttonbar">
<a href="Albums.aspx"><asp:image ID="Image2" runat="Server" skinid="gallery" /></a>
<asp:ImageButton ID="ImageButton1" Runat="server" CommandName="Page" CommandArgument="First" skinid="first"/>
<asp:ImageButton ID="ImageButton2" Runat="server" CommandName="Page" CommandArgument="Prev" skinid="prev"/>
<asp:ImageButton ID="ImageButton3" Runat="server" CommandName="Page" CommandArgument="Next" skinid="next"/>
<asp:ImageButton ID="ImageButton4" Runat="server" CommandName="Page" CommandArgument="Last" skinid="last"/>
</div>
</itemtemplate>
</asp:formview>
</div>
<asp:ObjectDataSource ID="ObjectDataSource1" Runat="server" TypeName="PhotoManager"
SelectMethod="GetPhotos">
<SelectParameters>
<asp:QueryStringParameter Name="AlbumID" Type="Int32" QueryStringField="AlbumID" DefaultValue="0"/>
</SelectParameters>
</asp:ObjectDataSource>
</asp:content>
З.Ы. Поскольку на данный момент php является самым популярным языком программирования для веб-рабработо, Microsoft ведет активную работу по полной поддержки языка php и активно сотрудничает с Zend. посмотрим что из этого получится...
Теги
.Net AMZcash C# 3.0 Cj fotocash Google Google Analytics Google Chrome Linq NATS nofollow noindex Phalanger php Ruconvert Sape SEO smsdostup teasernet tgp topsape traffic9 XML XRumer Yandex Дорвеи Заработок Ноябрь С# Яндекс адалт анализ текста биллинги заработок в сети здоровье парсинг партнерки партнерские программы подписки поисковики программы для SEO тИЦ тгп трафик финстрипЗадать вопрос
Последние комментарии
Архивы
- Август 2010 (2)
- Июль 2010 (4)
- Июнь 2010 (2)
- Май 2010 (6)
- Апрель 2010 (6)
- Март 2010 (8)
- Февраль 2010 (4)
- Январь 2010 (6)
- Декабрь 2009 (8)
- Ноябрь 2009 (7)
- Октябрь 2009 (4)
- Сентябрь 2009 (6)
- Август 2009 (4)
- Июль 2009 (4)
- Июнь 2009 (6)
- Май 2009 (4)
- Апрель 2009 (4)
- Март 2009 (8)
- Февраль 2009 (4)
- Январь 2009 (7)
- Декабрь 2008 (6)
- Ноябрь 2008 (4)
- Октябрь 2008 (3)
- Сентябрь 2008 (2)
- Август 2008 (3)
- Июль 2008 (6)
- Июнь 2008 (7)