• ↓
  • ↑
  • ⇑
 
Записи пользователя: alhames (список заголовков)
18:52 

Использование кириллицы в URL

alhames
alhames.ru
Речь идет об URL вида http://ruweb.diary.ru/добавить_новый_пост

Сейчас сделал обработку кириллистических символов, передаваемых в url, думаю использовать для упрощения адресации на сайте.
Вопрос такой: какие подводные камни могут встретиться?

Во-первых, отказался от использование пробелов, т.к. они только в FF не энкодятся автоматически -соответственно все через подчеркивание.

Во-вторых, в браузерах при ручном наборе все работает стабильно, но при вставке подобного URL из буфера все спец-символы энкодятся, что напрочь разрушает все удобство.
URL передаваемый на сервер будет всегда перекодирован, поэтому скрипту все равно как выглядит URL в адресной строке. Как же мне тогда отлавливать перекодированные URL и редиректить на удобочитаемые? Парсить на JS не особо хотелось бы..
И, что самое важное, как к подобному редиректу отнесутся поисковые роботы?

Собственно, реакция поисковиков играет тут наиболее важную роль.
Для Яндекса «Желательно, чтобы вид URL давал представление о том, что содержится на соответствующей странице. Использование транслитерации в адресах страниц также позволит роботу понять, о чем может быть страница.»
Но если взять в пример Википедию - то ведь с индексированием кириллистических URL вроде как не возникало проблем?

Собственно, что в данный момент наиболее выгодно использовать - транслитерацию (благодаря которой URL остается полностью валидным) или всеже кириллицу (благодаря которой и без заголовка ясно о чем страница)?

@темы: SEO

22:09 

Использование произвольных шрифтов на сайте

alhames
alhames.ru
Из всех опробованных мной вариантов я могу выделить только один - cufón.

Суть проста:
1) Берем нужный нам файлик шрифта.
2) Выбираем нужные нам символы и параметры - cufon.shoqolate.com/generate/
3) Скачиваем сгенерированный шрифт в формате .js
4) Скачиваем сам cufón
5) Подключаем оба скрипта к страничке.
6) Прописываем, к прмиеру, Cufon.replace('.my-font'); - теперь весь текст с классом my-font будет нужного вам шрифта.

В общей сложности оба файла у меня обычно не превышают 50 кб - зато очень упрощают жизнь =)

@темы: шрифты, верстка, Веб-дизайн

18:59 

RSS-ридер

alhames
alhames.ru
Вообщем, такая задача:
имеется 100-200 rss-каналов, имеется сайт на котором выводятся сообщения из этих каналов.
При поступлении нового сообщения оно добавляется в базу данных и висит там до тех пор, пока не будет прочитано администратором, либо пока не истечет срок хранения.
Т.е., к примеру, за день накапливается очередь таких сообщений и вечером администратор ее просматривает.
Как реализовать?

Первое что приходит в голову - повесить на cron скрипт, который:
1) запрашивает filemtime() rss-файла и если он не соответствует последнему сохраненному - добавляет файл в очередь;
2) по очереди тащит из файла инфу с помощью file_get_contents(), парсит и добавляет последние сообщения в бд;
3) удаляет из бд все сообщения, хранящиеся дольше определенного промежутка.
Но при таком количестве rss-лент скрипт будет посылать огромное количество запросов. Можно, конечно, проверять через каждые 5 минут к примеру по 20 rss-лент, но тогда есть вероятность большой задержки между появлением сообщения в rss-ленте и добавлением его в бд.

08:03 

Защита от ботов без использования каптчи

alhames
alhames.ru
Имеется: форма с двумя полями - login и text.
Данные передаются через Ajax.
Необходимо минимизировать вероятность отправки автоматических сообщений.

Есть ли смысл добавлять в форму ложный action или вообще убирать тег form? Насколько боты разумны в этом плане и могут ли правильно отправлять ajax-запросы?

17:35 

Проверка загрузки изображений (JQuery)

alhames
alhames.ru
Имеется скрипт:
$("#foto img").animate({ opacity: 0.0 }, myImg['speed'], (function(){
    $("#foto img").attr("src", myImg['name']);
    $("#foto img").load(function(){
        $("#foto img").animate({ opacity: 1.0 }, (myImg['speed'] * 2));
    });
}));   


Соответственно myImg['name'] - адрес нового изображения, а myImg['speed'] - скорость анимации.
Скрипт выполняется при клике на превьюшке, но проблема в том, что ведет он себя очень странно - при каждом новом нажатии картинка загружается все медленее и медленее.
Можно ли как то иначе проверить, загружено ли нужное изображение или нет?

18:09 

Вывод дерева

alhames
alhames.ru
Чет я совсем плохой стал, не могу никак сообразить как вывести дерево с произвольным числом элементов.
Представляет оно из себя массив:
<?
$row
[0] = array ('id'= > 1'parent'=> 0'title'=>'это первый корневой элемент');
$row[1] = array ('id'= > 2'parent'=> 0'title'=>'это второй корневой элемент');
$row[2] = array ('id'= > 3'parent'=> 1'title'=>'это потомок первого корневого элемента');
$row[3] = array ('id'= > 4'parent'=> 2'title'=>'это потомок второго корневого элемента');
$row[4] = array ('id'= > 5'parent'=> 4'title'=>'это это потомок потомка второго элемента');
// и т. д.
// т.е. по сути соответсвие 'parent' (потомка) == 'id' (родителя)
?>


Необходимо его вывести либо дивами, где каждый последующий потомок смещался бы, скажем на 20px, либо в списках - не столь важно. Проблема в том, что число потомков произвольно и неизвестно - их и вовсе может не быть. По идеи нужно использовать рекурсию, но чет никак не соображу как, а мне это нужно до завтра..

пример вывода

13:52 

Определение настроек браузера (рисунки)

alhames
alhames.ru
Как определить, отключены ли у пользователя рисунки?
Лично у меня в Опере стоит "Показывать только кэшированные", и при необходимости нужную графику я подгружаю вручную.
Заметил такую особенность, когда на Яндекс.Картинках открываешь страничку с картинкой с отключенными рисунками, то вместо нее загружается надпись «К сожалению, изображение было удалено.», но стоит включить отображение графики и обновить страницу - и картинка загрузится нормально.

Есть идеи? У меня есть одна мысль как это реализовать на JS, но что-то не получается..

20:18 

Новые правила регистрации доменов в зоне ru

alhames
alhames.ru
С 1 октября 2009 года при заключении договора администраторам доменных имен помимо идентификационных данных необходимо предоставлять регистратору документы, подтверждающие сообщаемые данные (п. 5.2. Правил). Порядок и способы передачи документов регламентируются регистратором. По усмотрению регистратора для идентификации администратор может предоставлять простые копии документов, однако регистратор вправе затребовать предоставление нотариально заверенных копий документов. Регистратор доменных имен обеспечивает хранение копий предоставленных администратором документов в электронном или бумажном виде в течение всего срока действия Договора, а также в течение трех лет после его окончания.


У меня и раньше не было особого желания регистрироваться в зоне .ru, а если сейчас еще придется заверять копии у нотариуса - то вообще отпадет..

@темы: Новости, Право

04:23 

Редактор JavaScript

alhames
alhames.ru
Для HTML и CSS я использую Dreamweaver, для PHP - Zend, а в чем наиболее удобно редактировать JS-скрипты?
Необходимы:
1) подстветка синтаксиса
2) проверка синтаксиса
3) раскрывающиеся списки свойств и методов объекта
4) раскрывающийся список функций (аналогично Zend для PHP)

Что посоветуете?
P.S. Visual Studio не подойдет - слишком ресурсоемкая..

@темы: JavaScript, Программы

14:28 

Определение браузера на PHP

alhames
alhames.ru
Задача: необходимо по заданной переменной user-agent вывести массив, содержащий название браузера, его версию и ОС.
В случае, если посетитель - робот, то вывести его название.
<?php
function getUserAgent($user_agent '')
{
   
// по умолчанию запрашиваемый браузер
   
if(empty($user_agent)) $user_agent $_SERVER['HTTP_USER_AGENT'];
   
   
// обработка $user_agent
   
   
return $agent;
   
// $agent[0] = переключатель (0 - браузер, 1 - бот)
    // $agent[1] = название браузера/бота
    // $agent[2] = версия браузера
    // $agent[3] = ОС
   
}
?>


Есть ли у вас какие-либо идеи как оптимально реализовать эту функцию?

@темы: PHP

19:26 

Хранение IP в MySQL

alhames
alhames.ru
И сразу второй вопрос, пока не забыл)

Как хранить IP в базе данных?
Лично я использовал функции ip2long() и long2ip(), но проблема заключается в том, что я понятия не имею какой тип поля задать. В INT все ip-шники врятли вместятся, а INT UNSIGNED задать не могу, т.к. к примеру ip2long('255.255.255.255') == -2. Пока что поставил BIGINT, но тут явно запас слишком большой..

Нашел вот такой материал:
Для хранения IP в базе воспользуйтесь двумя функциями, INET_ATON что бы добавить
SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
-- 2130706433, 2130706433

и INET_NTOA что бы получить
SELECT INET_NTOA(3520061480);
-- '209.207.224.40'

или выбрать промежуток
SELECT * FROM Sessions WHERE ip_address
BETWEEN INET_ATON('192.168.0.1') AND INET_ATON('192.168.0.255');

PS: поле под ip_address должно быть int


Но что-то недопонял - командой SELECT добавить?? И даже если так, то куда она в приведенных примерах будет записывать ip?

19:05 

Авторизация с помощью сессий

alhames
alhames.ru
Так вот, я вновь вернулся к этому вопросу =)

Порылся по интернету, в итоге ориентируясь на советы собрал вот такой вот код:
читать дальше

Собственно, какие ошибки я тут допустил и как их избежать?
Что еще можно дополнить?
+ по ходу кода оставил еще несколько вопросов.

P.S. Хотел изначально весь алгоритм выложить ввиде блок-схемы, но понял что это займет черезчур много времени.
P.P.S. Касательно передачи идентификатора сессии через get-запросы, то думаю что лучше вообще этого не делать, так как черезчур легко украсть.

@темы: PHP, Безопасность

14:40 

jabber

alhames
alhames.ru
Так как на дайри наконец-то появился джаббер, то теперь можно организовать то, что не доступно было ранее - а именно, общение в реальном времени. Как считаете, необходима ли конференция для этого сообщества?

Вопрос: Нужна ли конференция?
1. Да 
10  (45.45%)
2. Нет 
2  (9.09%)
3. Безразлично 
10  (45.45%)
Всего: 22
17:49 

Спецификации по CSS, HTML, XML, XHTML на русском языке

alhames
alhames.ru
Помните я когда-то спрашивал спецификацию XHTML на русском, и все скептически протянули "а такие вообще есть"?
Так вот, чисто случайно наткнулся:


Весь список находится здесь - loc.stack.ru/rus/project.shtml
Там вы можете найти:
> локализация mozilla
> сибкон коммуникатор
> перевод спецификации css2
> перевод спецификации html 4.0
> перевод спецификации xml 1.0
> перевод спецификации xhtml 1.0
> перевод спецификации xhtml 1.1
> краткое руководство по html
> углубленный курс html
> краткое руководство по css

Может кому понадобиться =)

@темы: CSS, HTML, XSL, Веб-дизайн, Серфинг

17:38 

Воюем с эксплорером

alhames
alhames.ru
Имеется страничка:

Код страницы

В Опере и Лисе отображается как и требуется, а вот экслорер (а именно IE7) просто игнорирует относительную высоту столбцов. Как ему подсказать где раки зимуют что надо делать?

P.S. Можно все сделать в блочной верстке, нельзя менять только доктайп.

@темы: Веб-дизайн, CSS, HTML, XSL

19:02 

Размещение рекламы у себя на сайте

alhames
alhames.ru
Интересует заработок в сети для владельцев веб-ресурсов. Какие сервисы покупки/продажи ссылок, контекстной либо баннерной рекламы вы используете? Что можете порекомендовать?

Интересуют следующие параметры:
1) Форма публикации рекламы (вставка JavaSсript-кода, php-кода, фрейм, ссылка, изображение)
2) Размер оплаты за клики/показы (сколлько стоит клик? сколько 1000 показов?)
3) Переодичность выплат за показы (за месяц показов, ежедневно, по мере увеличения кликов)
4) Минимальная сумма для вывода средств
5) Платежные системы для вывода средств
6) Минимальные условия для веб-ресурса (уровень тИЦ, PR, минимальное число посетителей)


Дело в том, что попытался разместить код бегуна - скорость загрузки страницы упала чуть ли не в 10 раз (из-за JS), ежедневное число посетителей уменьшилось практически в трое - пришлось отказаться..

03:05 

Браузеры пользователя

alhames
alhames.ru
Интересную статистику я наблюдал у себя в Google Analytics. Оказывается мой любимый браузер самый популярный среди посетителей:
1. Opera - 40,43 %
2. Internet Explorer - 29,06 %
3. Firefox - 27,62 %
4. Chrome - 1,08 %
5. Safari - 1,08 %
6. NetFront - 0,36 %
7. SeaMonkey - 0,36 %

Кого не затруднит, поделитесь своей статистикой..
Насколько я помню, Опера была третьим по популярности браузером - неужели она даже майкософт опередила?

@темы: Программы

17:17 

Счетчки статистики

alhames
alhames.ru
Какие счетчики является наиболее удобными для сбора статистики на ваш взгляд?

Лично я уже привык к трем - LiveInternet, SpyLog и Рейтинг@Маил, но уже давно задумался об оптимизации страниц и тут сталкнулся с такой проблемой:
все эти счетчики используют JavaSсript, который грузится заметно дольше, чем вся страница - поэтому если счетчик расположен в начале или середине страницы, то происходит задержка загрузки последующих частей.
Убери счетчик вниз - скажете вы, но это увы не всегда возможно. Дело в том, что я счетчики пытаюсь максимально вписать в дизайн, поэтому так или иначе в самом конце он оказаться не может.

Как вы решаете эту проблему? Хотелось бы увидеть конкретные примеры..

@темы: HTML, JavaScript, Оптимизация

21:40 

Привязка домена второго уровня к форуму

alhames
alhames.ru
Имеется форум на http://mybb.ru/, имеется личный домен, зарегистрированный на http://reggi.ru/, где DNS-серверы настроены на отдельный хостинг.
Необходимо привязать домен вида "forum.mysite.ru" к форуму. В мануале написано, что непосредственно на форуме нужно вбить адрес домена - это сделал. Потом надо «в управлении DNS зонами добавить A запись вида: "forum.vasya.ru. IN A 87.242.123.128"» - с этим возникли трудности.

На http://reggi.ru/ я создал дочерний домен и в поле ввода IP-адреса ввел адрес. Прошли сутки, но он так и не откликается.
Сразу возник вопрос: раз DNS-серверы настроены на хостинг, то дочерний домен надо создавать непосредственно на хостинге? Если да, то как образом это делается, т.к. при создании суб-домена через Cpanel нет никаких полей, куда можно было бы ввести IP.

07:09 

[ok] Ошибка подключения к БД

alhames
alhames.ru
Вообщем, пролема с подключением к мускулу - задаю функции как всегда, в Опере и Лисе никаких проблем не возникает, а ИЕ7 матерится на доступ: Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'ODBC'@'localhost' (using password: NO)

Разве браузер может влиять на подобные вещи? Ведь подключение происходит на сервере еще до возврата ответа клиенту. В чем может быть проблема?

P.S. Закомментил подключение - ИЕ7 стал матерится на инклуд в конце страницы (который никоим образом не связан с мускулом).

@темы: MySQL, PHP

@web-программирование

главная