суббота, 1 декабря 2007 г.

Denwer-3

Недавно вышла альфа версия 3-й версии Денвера - небольшого набора дистрибутивов Apache+PHP+MySQL.
Apache подрос до 2.х, PHP5, MySQL5.
Сложно представить, как я жил без этого пакета: тестировать проекты на удаленном сервере - слишком долго, каждый раз настраивать виртуальные хосты Apache - муторно.

Буду тестировать.

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

понедельник, 5 ноября 2007 г.

PHP тестирование на Мамбе

В блоге отчаяного PHP-ника нашел ссылку на PHP тест на Мамбе.
Тест странноватый, там достаточно вопросов про Linux, SVN, но вопросов по MySQL мало. А пока это самый интересный тест, который я видел.

Еще одна пузомерка

суббота, 3 ноября 2007 г.

Реалити шоу "Фрилансер"

Сергей и Донецка запускает реалити шоу: блог начинающего фрилансера, который каждый день будет рассказывать, как он идет к своей цели - зарабатывать XXXX с помощью фриланса. Советую почитать

Приятно, что он не агитирует всех регится с его рефералом в САПе, не занимается этим бомжеванием, которое в последнее время заразило всю блогосферу.

пятница, 2 ноября 2007 г.

Закладки: бесполезный Web 2.0 сервис

Как грибы после дождя множатся сервисы социальных закладок: delicius, БобрДобр, Memori, Ma.Gnolia и т.д. Сейчас во многих блогах есть ссылка "сохранить в del.icio.us/Бобруйск".

Поэтому ко мне в голову пришла идея сделать еще один бесполезный сервис: сайт-прослойка между пользователем и его сервисом закладок. Вместо 5 ссылок "добавить в избраное" будет только одна, которая ведет наш сайт, а там уже огромный выбор этих сервисов.
После первого добавления сайт запоминает, какими закладками человек пользовался, и дальше все идет прозрачно для пользователя - щелкнул на ссылку и ты уже в делишесе.

Blogged with Flock

среда, 31 октября 2007 г.

Социальные ссылки: делаем списки просто

Сервисы социальных закладок можно использовать не только по назначению. При нынешнем уровне интернетизации, любой почти объект можно описать URL'ом. Список учебных заведений может выглядеть так:
  1. http://school45.chebnet.com - 1996-...
  2. http://liceum3.cheb.ru
  3. http://chuvsu.ru 2004-2008
Чем не список? Таким образом можно вести, например в del.icio.us любой список со ссылками, какой захочется. Почему именно в del.icio.us:
  • Есть удобный интерфейс добавления, через их сайт, расширение Firefox или чуть настроив Flock.
  • Единое хранение ссылок. Я каждый день оставляю по 5 ссылок в соц закладках, поэтому очень удобно просматривать все в одном месте
  • Есть поддержка тегов. Для этой заметки я могу поставить тег "links:socseti_lists"
  • Открытое API, для которого написаны множества приложений. Также есть RSS
Хотите рассылать друзьям прикольные картинки про кошек? Нет проблем - добавляйте закладки в del.icio.us, а друзья прочитают RSS. Таким образом можно вести блог ссылок, вроде RMCreative

Формы: дьявол кроется в мелочах!

Наверное, моя единственная статья про дизайн.

Часто, просматривая сайты, видишь, что разработчики относятся к формам ввода легкомысленно. Многие дизайнеры видят в них только визуальный смысл - чтобы красиво смотрелась, забывая, о том, что это функциональный элемент сайта.

Чем удобнее будет сделана форма, тем больше пользователей напишет вам комментариев и зарегистрируется на сайте. Все эти приемы были поняты мною на личном опыте, я сам когда-то совершал такие же ошибки, поэтому решил написать про это.

Несколько примеров, как быстро можно сделать формы удобнее:

1. Используйте теги метки

Метка (<label>) используется для связи между полем и его описанием.
Клик на метку обрабатывается браузером, как клик на сам элемент.
Это может быть перевод фокуса на поле с текстом или установка/снятие флажка для полей выбора (radio кнопок, флажков). В desktop приложениях я привык кликать не на сам флажок, а на его описание т.к. попасть по нему мышкой гораздо проще. Если использовать <label> можно добиться подобного поведения и в HTML.

Как это выглядит в HTML:

<input type="checkbox" name="agree" id="agree_id" value="1" /> <label for="agree_id"> Я принимаю условия соглашения </label>

3. Всегда указывайте порядок полей (tabstop'ы)

Опытные пользователи при работе с формами могут пользоваться только клавиатурой. Переходя по полям формы кнопкой TAB, часто можно попасть фокусом с первого поля на третее, а потом на второе.

4. Большие текстовые поля

Делайте большие поля для ввода. Помните о том, что пользователи там вводят текст! Каюсь, год-полтора назад я думал, что для формы добавления новостей вполне хватит и 4 строчного поля.
Кроме этого можно сделать так, чтобы ширина поля ввода автоматически подстраивалась под размер окна. Для этого нужно дописать в HTML

<textarea name="field" rows="8" cols="6" style="width: 95%"></textarea>

5. Внимание к мелочам!

Атрибут <input> maxlength не просто так придумали. Он позволит пользователю не вводить данных, больше чем возможно. Но нужно понимать, что он сделан для удобства пользователя, а не для проверки длинны текста. При желании и свободных 5 минутах, ограничение maxlength можно легко обойти. Посему лучше еще раз проверять длину текста на стороне сервера.

Если на вашей странице есть только форма, пусть первое поле сразу получит фокус ввода.
Это очень легко реализуется через

<body onload="document.getElementById('field1').focus()">
...
<input type="text" name="field1" id="field1" />

6. Тестируйте на пользователях

То, что для вас является абсолютно нормальным и понятным, как дважды два, обычных пользователей может ввести в смятение.
Первый раз я столкнулся с этим, когда сидел у знакомого и предложил зарегистрироваться на моем сайте. Он искал ссылку пару минут, и так ее и не нашел.

7. Сохраняйте данные в случае ошибки

Как бывает обидно, когда ты пишешь большой комментарий на сайт, тратишь на это время, думая "вот сейчас меня оценят, как я хорошо написал!>, нажимаешь кнопку <Отправить> и тебя встречает ошибка "Вы неверно введи код на картинке, вы - робот!".
Возвращаешься назад и видишь пустую форму. :`(
Можно сделать первичную проверку на Javascript, обычно он включен у пользователей, а дальше проверять данные на стороне сервера.
Либо сделать, чтобы в случае неверных данных, пользователю возвращалась та же форма, с комментариями, где он что неправильно заполнил. На PHP это очень просто делается с помощью библиотеки Дмитрия Котерова HTML_FormPersister

Если пользователю приходится писать большие комментарии, то можно сделать автосохранение в cookies (работает в LiveJournal) или на сервер с помощью AJAX (так поступает Google в GMail и Google Notebook)

P.S.
Хороший интерфейс сложно заметить. Пользователи считают, что так и должно быть. А малейшие изъяны видно сразу.
Удобства ваших формам! Жду комментарии и критику.

Ссылки по теме:

воскресенье, 28 октября 2007 г.

FAR Manager 1.80 (Unicode) выходит в Open Source

Мы ждали, ждали, и наконец дождались:
Сбылась мечта идиота!

Unicode Far или просто Far Manager 1.80 выходит в Опен Сорс.
Мы надеемся что общими силами нашего комьюнити получится поднять на ноги этот всеми долгожданный проект.

Удачи нам всем!
сообщил вчера trex на официальном форуме.

Там же на форуме ссылки на исходники, багтрекер, гуглогруппу, посвящённую разработке FAR, и многое другое. Поздравляю всех, кто пользуется этим файловым менеджером :)

Хабрахабр

Как я рад, просто слов нет! FAR не могу заменить ни чем, очень удобное средство разработки.

среда, 24 октября 2007 г.

Грузите апельсины бочками

9 Способов загрузить файлы на сервер

Перед любым web разработчиком рано или поздно становится проблема загрузки файлов на сервер. Заказчикам нужно размещать прайслист или поделиться фотографиями с конференции или …

К сожалению, HTML разрабатывался как язык вывода страниц, работа с формами там простовата, то же самое и с загрузкой файлов.
Постараюсь рассмотреть все способы, которыми можно загрузить файлы на сервер. В основном это касается загрузки фотографий для добавления их в фотоальбом

1) По одному файлу


Самый простой способ - разместить поле для загрузки файла (<input type=’file’ />) и мучить пользователей загрузкой нескольких файлов по одному.

2) Несколько полей

Вместо одного поля размещаются несколько. Часто количество полей неограниченно и их можно добавлять и удалять через JavaScript. Гораздо удобнее, чем 1-й способ, но приходится выбирать загружаемый файл несколько раз. Занятие, я вам скажу, не из приятных. Когда приходится загружать файлы с именами IMG_XXXX.jpg, можно легко по ошибке выбрать один файл два раза или пропустить нужный.

3) Загрузка архива

Пользователь архивирует нужные файлы, а потом загружает архив через форму. Чуть-чуть экономим трафик пользователя, зато приходится делать лишние действия.
Кроме этого есть проблемы с распаковкой больших проблем, т.к. у PHP может просто
не хватить памяти для извлечения нескольких 5-7 мегапиксельных фотографий (стандартное ограничение на память – 8 МБ), у хостера может не быть нужного расширения и т.д.

4) Загрузка по FTP

FTP специально разработан для передачи файлов что понятно из его названия (File Transfer Protocol). Удобен, если файлы нужно загружать определенному кругу лиц.
Неудобств много:

1) Разделение пользователей. Создать FTP аккаунт не так просто, как добавить запись в базу. А на shared хостинге это почти невозможно
2) Настройка. Обычному пользователю не очень удобно устанавливать FTP клиент, разбираться с активным/пассивным режимом и т.д.

5) Отправка по почте

Такая возможность загрузки фотографий есть на Flickr и Picasa Web от Google. Человек отправляет на e-mail vasya.pupkin@photo.example.com письмо с приложениями, которые извлекаются и добавляются в фотоальбом.
Удобен только тогда, когда есть встроенный почтовый клиент. В Windows XP есть удобный мастер (Отправить -> Адресат), который позволяет маштабировать фотографии перед отправкой.
Но если вы пользуетесь web почтой, то получаете все неудобства 1-3 способов.
Кроме этого средствами PHP не очень просто принимать почту и извлекать из нее вложения.

6) Java апплет

Сейчас очень редкий способ. Можно загружать множество фотографий и показывать статус загрузки, только очень мало пользователей разрешают Java.

7) Мастер публикации файлов в Web

Удобный мастер Проводника (Windows Explorer), позволяет публиковать файлы на веб узлах сайтах. Показывает статус загрузки, миниатюры загруженных изображений, в общем рай для обычного пользователя.
Недостатки:

1) Привязан к Windows XP (не знаю, есть ли такая возможность в Vista)

2) Необходимо запускать ключ реестра, что не каждый здравомыслящий пользователь сделает

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

8) Сторонняя программа

Скачиваете программу, выбираете файлы и загружаете. Простор для фантазии огромен, можно сделать все что угодно. Только программу придется разрабатывать и поддерживать, объяснять пользователям как ее настроить для работы через прокси и т.д.

9) FancyUpload

Спасибо Жеке за интересную ссылку. Удобная штука, использующая Flash для выбора файлов и загрузки, HTML+Javascript для всего остального. Решение сложно в настройке, не передает cookies и http авторизацию. Для загрузки файлов из Firefox под Windows Flash часть использует движек IE. Зато есть очень красочное отображение прогресса загрузки файлов, в первый раз завораживает.

Средство более массовое, чем Мастер Публикации, но все равно лучше сделать обычную форму, на случай, если у пользователя запрещен Flash.

Пока еще не до конца протестировал FancyUpload, но скорее всего именно его буду использовать для загрузки фотоотчетов на свой сайт.

А какой способ загрузки используете вы?

воскресенье, 21 октября 2007 г.

Спам - история борьбы

Я хочу рассказать про мою борьбу со спамерами. Моя борьба с почтовым спамом закончилась, когда я перешел на Google Applications, раз в день-два может приходить спам письмо, но остальные 50 ждут своего конца в папке «Спам».

Борюсь я со спамом в гостевых книгах. Нередко на сайтах, на которых давно не ступала нога администратора, можно встретить заваленные спамом гостевые книги, с предложениями о дешевой виагре и увеличении члена.

Я занимаюсь региональным проектом о развлечениях в Чебоксарах. В свое время мы сделали возможность комментировать заведения и мероприятия. Через месяц после этого, начал валить спам, сначала по 5 сообщений, потом уже 40 в день

и даже больше. Понятно, что нужно было что-то делать.

Я пытался построить каскадную спам защиту:

  1. Бан по IP. Толку от него мало, за все время сработал пару раз.
  2. Бан по словам. Половину сообщений было вроде «Nice Site! http://....». Сначала очень помогло, я даже расслабился и потирал руки, но потом спам стал видоизменяться и проходить через фильтры.
  3. Премодерация. Все сообщения от неавторизованных пользователей проходили премодерацию. Это помогало от спама и от пионеров, которые пишут всякую муть, в основном «Вася: А этот клуб – г…но, меня туда не пустили».
  4. CAPTCHA — это аббревиатура от английских слов "Completely Automatic Public

    Turing Test to Tell Computers and Humans Apart" — полностью автоматический тест Тьюринга для различения компьютеров и людей. Иными словами, это задача, которую легко решает человек, но которую невозможно (или крайне трудно) научить решать компьютер.
    После этого поток спама иссяк вообще. Позже оказалось, что этот тест не проходят еще и часть пользователей. Поэтому я сделал, что CAPTCHA не показывается для пользователей с местными IP адресами, для сайта с региональной аудиторией это достаточно.

Иногда спам все-таки появляется, проходя через Captcha. Но, скорее всего, его рассылают люди - спамеры.

Слава богу, что спам в гостевых книгах и досках объявлений не развился до такого уровня, как поисковый спам, иначе бы сайты утонули в море спама. По данным Яндекса
доля почтового спама составляет 95%

среда, 10 октября 2007 г.

Google Apps увеличил размер для почты

Когда я зарегистрировался в Google App мне дали 2 гб места вместо 2800 у пользователей GMail, что меня ни сколько не удручало - я просто не понимал, зачем столько места.
Буквально вчера заметил, что мне Google под почту дает уже 2900 МБ, мелочь, а приятно. Из разговора в twitter'е стало ясно, что это не для всех, у Никиты Бегуна до сих пор 2 ГБ

вторник, 9 октября 2007 г.

NoICQ

Давно зарегил домен noicq.info, но для наполнения его контентом руки не доходили.
Теперь дошли, но пока не знаю, что там можно разместить.
Можно сделать что-то вроде StopIE
Если у кого есть идеи или желание поучаствовать - пишите в комментарии

пятница, 6 июля 2007 г.

Первое сообщение

Я начинаю вести блог, посвященный технологиям. Основная тема будет программирование на php, также буду писать про интересные мне Web 2.0 и не только сайты