пятница, 31 июля 2009 г.

С днём системного администратора - Happy SysAdmin Day!

Каждый программист хотя бы немного и системный администратор. Он сам устанавливает Linux, настраивает Apache, MySQL и PHP чтобы собрать ту самую лампу (LAMP) для веб-разработки. Также, при разработке приладного программного обеспечения, нельзя обойтись без навыков системного администрирования, настройке сетей и прочих вещей, прямо к программированию не относящихся, но являющихся столь необходимыми.

Сегодня последняя пятница июля 2009 года, и сегодня системные администраторы всего мира отмечают День сисадмина.

Согласно Wikipedia, «Отцом» праздника всех системных администраторов является сисадмин из США с 20-летним стажем Тед Кекатос, который решил, что хоть раз в год системные администраторы должны чувствовать благодарность со стороны пользователей. Первый раз данный праздник был отмечен 28 июля 1999 года. Это был просто пикник на природе на окраине Чикаго, в котором приняли участие члены небольшой софтверной компании.

среда, 15 июля 2009 г.

Windows Marketplace: С конца июля открыт для разработчиков 29 стран

Крупнейшая компания-производитель программного обеспечения Microsoft на своей конференции Windows Partners Conference заявила, что с 27 июля начинается прием заявок на размещение приложений в каталог Windows Marketplace for Mobile. Эти заявки могут подавать разработчики из 29 стран, включая страны Северной Америки, большинство стран Европы, Южной Азии, включая Гонг-Конг, Японию и Тайвань. Список стран приведён на странице. России как видим, в списке нет.

Windows Marketplace Компания Microsoft также отметила, что рынок будет открыт для всех Windows Mobile 6 устройств, а не только для готовящегося 6.5, и ожидает, что магазин будет заполнен к осени около 600 готовыми приложениями.

В рамках внедрения, Microsoft также сообщила, что будет дифференцировать свой магазин с введением раздела Business Center. Программы в этом разделе будут делиться по области применения и категориям. Право размещения своей программы в Windows Marketplace производители программного обеспечения обязаны будут платить $99 долларов в год, что будет давать право размещать 5 приложений для платформы Windows Mobile.

По материалам Electronista.

воскресенье, 5 июля 2009 г.

Получение реального IP-адреса на PHP

IP-адрес посетителя веб-страницы получается на PHP с использованием $_SERVER['REMOTE_ADDR']. Однако не во всех случаях оно работает. Ваш клиент может подключаться к Интернет через использование прокси-сервера, и тогда $_SERVER['REMOTE_ADDR'] в PHP вернёт всего лишь адрес прокси, а не клиентский адрес. Поэтому приведу функцию на PHP для получения реального IP-адреса машины посетителя сайта. Имеются расширенные серверные переменные для этого, это HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR.

Функция для получения реального IP-адреса в PHP


function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) // Определение IP-адреса
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) // Проверка того, что IP идёт через прокси
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}

В этой PHP функции сначала пытаемся получить непосредственно адрес компьютера пользователя, если невозможно - то используем HTTP_X_FORWARDED_FOR. Если и оно недоступно, то в конце берём IP-адрес используя REMOTE_ADDR.

среда, 1 июля 2009 г.

ASP: Постоянный редирект с заголовком 301

Итак, предыстория:
Был сайт, на котором в корне показывался flash-баннер, в самом флеше была ссылка, если было нежелание просмотра оного, ну или после того как баннер покажется весь, то происходил редирект на страницу сайта. Конкретно применялась папка внутри сайта.

После некоторых корректировок на сайте в процессе поддержки сайта была намечена необходимость этот баннер убрать. Поэтому индексный файл сайта был перемещён в корень дабы удовлетворить SEO-шникам, а со старого решили делать редирект, естественно с 301-заголовком (301 header).


На Active Server Pages (ASP) это сделали так:




<%@ Language=VBScript %>
<%
' Постоянный редирект Permanent redirection
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://valeev.org.ru"
Response.End %>

В Active Server Pages (ASP) Response.Redirect не делает того же самого, что и код повыше. Response.Redirect ставит заголовок адреса (location header) как показано, но однако код статуса ставится в HTTP/1.1 302 Object moved. Когда Вы ставите Location header с помощью Response.AddHeader, то код статуса должен устанавливаься вручную, иначе он будет 200 OK.

При отправке пользователю содержания страницы до заголовков, Вы получите ошибку типа: "Response object error 'ASP 0156 : 80004005'; Header Error; The HTTP headers are already written to the client browser. Any HTTP header modifications must be made before writing page content.". Обычно, этих ошибок не видно при редиректе, так как буферизация страниц включена по-умолчанию в IIS. Если хочется удостовериться, что контент не отдаётся вперёд заголовков преренаправления / редиректа, вызовите Response.Flush прямо перед ним, запретите буферизацию с помощью команды Response.Buffer = False, или отредактируйте конфигурацию IIS для запрета буферизации / кеширования страниц. Однако запрет буферизации снижает производительность веб-сервера.