Ктулху зохавает фсех

Увидел интересную новость под скандальным заголовком ««Документы» В Контакте похоронят e-mail«. В комментариях гики смеются над тем, что вконтакт что-то похоронит, и утверждают, что древняя, как говно мамонта, электронная почта с волшебными аббревиатурами SMTP, POP3 и IMAP всех нас еще переживет.

Я не был бы так оптимистичен. Вконтакт уже давно похоронил такое явление рунета, как «Страничка 203 группы Факультета бизнес-технологий Задрищенской Академии климата» («Академия климата» — это бывшее ПТУ по ремонту холодильного оборудования). Теперь будущие специалисты по бизнес-технологиям общаются в «группах» вконтакте. Там же, вконтакте — игры, там же и некое подобие электропочты, там же и кино, и музыка, и фотографии — в общем, для развлечений вконтакт стал самодостаточен.

Теперь «вконтактовцы» замахнулись на killer feature старого e-mail — возможность отправлять письма с вложениями. И я более чем уверен, что немалая часть пользователей вконтакта будет пользоваться привычным им вконтактом вместо довольно сложной «обычной» электропочты.

Я бы не сказал, что тенденция «все, что надо в интернете — под одним колпаком» появилась только сейчас, с приходом фейсбука и вконтакта. Что-то подобное хотели сделать и AOL, и MSN, даже ICQ в свое время обзавелась полным набором «сторонних сервисов». У меня валяется книжка А. Левина «Самоучитель полезных программ» (довольно древняя, 2001 года), там про тогдашние «примочки» аськи сказано следующее:

Просто живи в этой асе и не вылезай — тут поешь, тут и выпьешь, тут женишься, тут тебя и закопают…

До недавнего времени мало у кого получилось сделать такой «интернет в себе». Да, были мега-порталы типа Рамблера, был и AOL, но так или иначе необходимость «внешнего» Интернета сохранялась. Нынешние «социальные сети», похоже, смогут добиться в этом куда больших успехов, если, конечно, ничего плохого с ними не случится.

Взрослеющие поисковики

Как-то я написал в одной из ЖЖ-дискуссий, что мне не нравится в современных поисковиках. Ожидал забрасывания ссаными тряпками, но (к сожалению?) не получил оного.

Если совсем тезисно — то позиция поисковиков «мы зеркало интернета, мы не фильтруем информацию» — это очень наивный подход разного рода компьютерщиков 90-х годов. С тех пор Интернет из чисто технического курьеза превратился, в общем, в элемент общественно-политической жизни — во-первых, а во-вторых — в безграничное хранилище личной информации. Почему-то мало кто воспринимает тезис «все, что попало в Интернет, известно жене/боссу/судебным приставам», и не стесняясь, рассказывает на личной страничке о тех вещах, которые рассказывать не хотелось бы.

Не буду говорить, что слова про «зеркало интернета» устарели, просто приведу пару примеров.

Недавно с удивлением обнаружил, что в выдаче Яндекс.Директа реклама фармпрепаратов и медицинских услуг сопровождается пометкой «Имеются противопоказания. Проконсультируйтесь с врачом.» Замечу, что это противоречит принципу «зеркала интернета» — здесь уже даются некие оценки «правильности» рекламы.

А еще на этой неделе с жаром обсуждали то, что Google убрал из поисковой выдачи некоторое количество «пиратских» онлайн-библиотек. Заметьте — не стал прикрываться тем, что это проблемы правообладателя, и бороться надо не с поисковиком, а с самими сайтами и их пользователями, не отмазывался, что для совершения сего эпохального действия нужна бумажка, подписанная лично прокурором Калифорнии, не вопил про «экстерриториальность интернета» и не утверждал про неприменимость «оффлайновых» законов одной страны к сайту, хостящемуся в другой — а просто убрал и все.

Это уже «взрослый» для наших с вами интернетов поступок — вместо «детского» дисклеймера о свободе информации и «настроениях пользователей» было принято решение, устраивающее в коммерческом плане. На место старого лозунга «Не делай зла» пришел другой — «Не делай зла тому, кто платит». Яндекс, кстати говоря, заявляет о том, что так делать не будет. Посмотрим, лично я готов поспорить, что уже лет через пять коммерциализация Рунета дойдет до «общемировой» и поисковики станут играть на стороне тех, кто платит.

Правда, к тому времени Google придумает что-нибудь еще, гораздо более цинично-коммерческое. Скажем, продажу PageRank за некоторую мзду. А почему, собственно, и нет?

Про интерфейсы

Когда-то давно, еще, наверное, в IE5, при вводе в адресную строку чего-то, заведомо не являющегося URL, браузер искал это с помощью поисковика MSN или чего-то прописанного вместо него (хоть замена MSN на другой поисковик нигде не описывалась). Итого в панели браузера имелось лишь одно поле ввода, предназначенное как для поиска, так и для ввода URL. В современных браузерах существуют отдельные поле ввода URL и поле для «быстрого поиска», причем понять, что для чего предназначено, «юзеру» затруднительно (не говоря о том, что многие не отличают поле ввода поискового запроса на Яндексе от поля ввода URL в браузере). По-моему, получилось просто усложнение интерфейса.

И еще. Читал вчера у Joel’а по поводу картинок в FrontPage. Вспомнилась еще одна неприятная штука с картинками в HTML. В свое время считалось, что загрузка картинок в браузере может быть отключена, и тег img был снабжен атрибутом alt, в котором должен был прописываться некий текст, описывающий изображение. В «элементарных руководствах» по HTML всех призывали писать в нем описание картинки, что-нибудь типа «Белое облако, летящее с востока на запад». Надо ли говорить, что никто сегодня этим атрибутом толком не пользуется? К сожалению, человечество так и не придумало, как нормально снабдить графический файл альтернативным «текстовым описанием». Возможно, имело бы смысл отправлять эти данные в HTTP-заголовке, тогда вместо загрузки большого файла целиком можно было бы обойтись только запросом HEAD. Впрочем, все получилось так, как оно есть, с полной невозможностью найти картинку по ее описанию в «поиске по картинкам».

Пока тут разговаривают о конце жежешечки…

…а точнее, о криворукости СУПа, у меня, похоже, завершилось нашествие польских спамеров. Так что открою я сейчас комменты, а с утра посмотрю на результат.

Кстати, про веб-программизм

Одной из самых неудачных черт PHP (да и вообще современного сайтостроительства) лично я считаю то, что очень неудобно хранить настройки где-либо, кроме базы данных. Конечно, почти всегда существует текстовый файлик с назанием типа config.php или config.inc, но в нем прописываются только параметры, необходимые для доступа к БД. В вордпрессе, например, такие параметры, как часовой пояс, название темы оформления и тому подобные хранятся в отдельной таблице БД, имеющей очень простую структуру — имя+значение. Если надо «узнать» один из этих параметров — пишите запрос :)

Я не знаю, как это можно «согласовать» с реляционной моделью, но, к сожалению, более удобного способа хранить какой-нибудь ассоциативный массив («хеш») между различными выполнениями скрипта в PHP нет. Но дело не только в этом. Как мне кажется, подобное использование БД — «нецелевое», оно провоцирует на то, чтобы рассматривать базу данных, как какую-то «помойку» без определенной структуры, а не на очень удобное средство для хранения и (что более важно) выборки данных.

Хорошо спроектированная база данных вообще не нуждается в PHP-обертке, роль скриптов должна сводиться к «красивому» форматированию данных, полученных SELECT-ом. Может, конечно, я заново изобретаю велосипед (во всяком случае, идеи очень похожи на принцип Model-View-Controller), или призываю к «экстремизму», но вот мне кажется, что большинство движков веб-сайтов можно заменить на PHP MyAdmin :) Наверное, вряд ли это новость, но недавно я видел одну систему, построенную по довольно оригинальному принципу: есть база данных с кучей таблиц. Каждая таблица соответствует страничке сайта, которые строятся одним и тем же скриптом. Данные в таблицы можно добавлять через автоматически генерируемые веб-формы.

В принципе, это еще один шаг в сторону «веб-программирования мышкой«. Уже есть автоматизированные средства создания структуры БД (например, на основе Entity-Relationship диаграмм). При желании можно определить «визуализаторы» для различных типов SQL-запросов (например, запись в блоге или лента записей выводятся с указанием заголовка, автора, даты и т. п., комментарии — «лесенкой» или линейно), «вставить» их мышкой на страничку и получить готовую CMS для блога. Например, страничка, содержащая запись и комментарии к ней, полностью генерируется за два запроса:

SELECT author, title, text FROM entries WHERE entryid=$id;
SELECT author, text FROM comments WHERE entryid=$id;

Достаточно правильно отформатировать то, что вернула нам СУБД — и все готово!

Конечно, реальные запросы будут сложнее, например, явно стоит сделать таблицу authors (с полями типа name, surname, avatar), которую надо «соединять» с entries и comments, но все содержимое страницы определяется только SQL-запросами.

Есть, конечно, шутки об уникумах, которые сооружали сайты только на SQL-запросах (да-да, добавляя туда HTML-форматирование), и тем самым обеспечивали себе свое рабочее место до глубокой старости (потому что ни один пэхэпист ни в жисть не поймет, что это за извращение), но разве нельзя так делать сайты? И разве всем так нужны возможности тьюринг-полного PHP, когда вся его роль может быть сведена к форматированию отданных СУБД данных?

Про PHP и базы данных

В который раз убеждаюсь, что изложение SQL в «непрофильных» книжках по всякому там PHP приводит разве что к бесконтрольному распространению похапешных кодеров.

Недавно наблюдал замечательное — из базы данных извлекаются все записи таблицы (SELECT * FROM foo.bar;), затем сортируются пузырьком (!) в PHP-скрипте (про usort() аффтар был не в курсе), а затем выводятся те из них, которые имеют значение некоторого числового поля, равное 0 и 1. Про существование WHERE и ORDER BY мега-похапешник был не в курсе.

Собственно, осуждать похапешника и обвинять того в быдлокодерстве не стоит — я и сам был таким, делал сайты на самописном подобии CMS. Все это даже работало — с посещаемостью два недочеловека в день и не такое работать будет. Впрочем, некое «оправдание» у меня есть — я «изучал» SQL и PHP по статьям в журнале «Мурзилка» «Ксакеп». С гордостью могу заявить, что никаким SQL Injection у меня никогда не пахло! Впрочем, больше ничего хорошего сказать нельзя. Чему можно научиться вот из такого?

$sql2="select * from xforum";
$res2=mysql_query($sql2);
$a=mysql_num_rows($res2); #считаем количество тем в форуме
$b=ceil($a/30); # считаем количество страниц с результатами запроса
echo "Страницы: "; for ($i=1; $i<=$b; $i++) {if ($i!=$page) {echo "<a href=forum.php?page=$i>";} echo "$i"; if ($i!=$page) {echo "</a>";} echo " ";}
# выводим в цикле список доступных страниц с сообщениями
$sql="select * from xforum order by 'pid' desc limit $from,29"; #запрос на постраничный вывод дискуссий форума
$res=mysql_query($sql);

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

Я не говорю про всякое сложное типа «нормальных форм», но почему-то большинство похапешников совершенно не представляют себе, что такое SQL и что он может. Самое главное — это не мешает им считать себя большими специалистами по базам данных (умеют написать UPDATE и SELECT). Не так давно видел «критику» одного популярного вордпрессовского плагина — человек немного потупил в код, переписал пару SQL-запросов, убрал «сортировку пузырьком» — и добился весьма существенного роста производительности.

И эти люди запрещают нам ковыряться в носу :)

UPD Все было еще круче! Сортировка пузырьком понадобилась ровно по той причине, что чел просто не разобрался, как использовать usort(). Интересно, а лет пятнадцать назад, такие же монстры писали на C?

Про комменты

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

Киньте идей, по которым бредятинки можно попридумывать, а то самому интересно :)

Про штрудель

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

Имею две мысли:

Первая. На сайте г. Москвы первая новость — «Рейтинг доверия Мэру Москвы продолжает расти«, на сайте г. Вены — о выставке рисунков Микеланджело. Вот так везде в наших интернетах — где главная страница сайта, там же и фотография директора Районского Кактусокомбината. А вот, например, рецепта борща по-московски на http://mos.ru вы не найдете.

Вторая. В наших интернетах встречаются переводы рецепта штруделя с австрийского сайта. Предлагается такое, что хоть стой, хоть падай. Например, один из горе-переводчиков не понял, что такое breadсrumbs и предложил обжарить в масле яблоки (!). Не доверяйте русским интернетам.

Надо чой-нить техническое написать

Я вот, например, не могу поверить, что страничка по ссылке датируется 2010 годом.

http://freeart2010.narod.ru/graphic.htm

И это тогда, когда все прогрессивное человечество прошло уже третий Дум. Если бы для рисования в VRML требовался дорогущий пакет 3D-графики, доступный по стоимости только крутейшим студиям — то уверен, формат не был бы дискредитирован пионерскими поделиями наподобие приведенного выше.

PS Примеры хороших работ на VRML — творчество волгоградской студии ClickON:

http://www.volgograd.ru/web3d/
http://laplace.clickon.ru/demo3d/

Если подобное показывали бы в качестве примеров применения VRML — уверен, сегодня никто не заикался бы об O3D, WebGL и всяких 3D-движках на флеше.

UPD А вот очень хороший VRML:

http://www.dualmultimedia.com/stgo/vista3d/santamaria.html?English

Осторожно, очень большие и красивые текстуры. Пользователям Cortona рекомендую отключить опции типа mipmapping и «Улучшение качества текстур», а кроме того — поставить ограничение на размер текстуры. BS Player не пробовал, как в нем — не знаю.

Про говнокомментеров

А вот подскажите, че делать вот с такими пидорасами, которые оставляют комментарий в блоге со ссылкой на свой сайт (точнее, «Блог неординарной личности, которого люди называют просто… хм… ПИДОР»), на котором ясно написано (среди «глубокомысленных» размышлений про SEO и «блог как бизнес», точнее, способ заработать на мороженое):

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

Варианты: забанить, как остальных говнокомментеров; оставить коммент, убрать ссылку; ничего не делать.

Лично я склоняюсь к первому варианту.

Два года, однако

Как-то незаметно обнаружил, что сайту моему — уже два года. Точнее, 12 сентября — дата регистрации домена luberetsky.ru, а WordPress тут я поднял на три дня раньше. Того же 12 сентября я создал OpenID-аккаунт в ЖЖ.

Офигеть

Я на фишках.

Хорошо хоть картинки не хотлинкнули.

UPD Почитал комменты. Народ, оказывается, совершенно не умеет читать написанное черным по белому.

Про паровоз

Кстати, я нашел, почему Cortonовская игрушка с паровозиком не работает в Firefox и, наверное, Opera.

Выложил доработанную для этих браузеров и Cortona 3D Plugin (с другими не работает, но ИМХО препятствий для прикручивания, скажем, blaxxun, не имеется) версию, если у кого-то есть Firefox или Opera и желание проверить — жмите на ссылку (предварительно поставив Cortona Plugin):

http://shura.luberetsky.ru/parovoz

Нужен включенный JavaScript, но кто сейчас его выключает, кроме параноиков?

UPD Выяснилось, что в Opera работает не очень хорошо, а в Firefox и других Netscape-образных очень странно работает drag-and-drop (которым мы строим дорогу). Исправленную версию выложу вечером, а вскоре добавлю и поддержку blaxxun (только придется строить дорогу не дрыг-енд-дропом, а каким-то более другим способом).

UPD2 Выложил поправленную для Firefox версию.

Make me unsee it

Приходится иногда сталкиваться в программировании с такими «костылями», что даже не знаешь, стоять или падать.

Вот, например, извращенная задачка в веб-программировании. Есть два сайта — один на ASP.NET под IIS, другой на PHP под Apache. Первый крутится по адресу, к примеру, http://webserver:80/, другой — http://webserver:8080/. Задача — на первом сайте есть ссылка, открывающая окошко со страничкой второго сайта, оттуда надо передать JavaScript-ом какие-то данные в родительское окно. Думаю, все видели вот такие «палитры», так что представить в состоянии.

Разница в том, что «палитра» расположена немного по другому адресу и может подпадать под блокировку «кроссдоменной» передачи данных. Причем самое интересное — это то, что каждый из трех популярных браузеров понимает «кроссдоменность» по-разному.

Internet Explorer всех версий вообще не делает различий между domain.com:80 и domain.com:8080. Соответственно, все работает правильно.

Firefox считает такие «домены» разными и по умолчанию блокирует передачу. Правда, спасает вот такое заклинание, произнесенное перед открытием «палитры» в родительском окне и в дочернем — до передачи данных:

document.domain = document.domain;

Смысл заклинания совершенно необъясним, поэтому «это нельзя понять, это надо запомнить».

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

Вопрос фанатам «альтернативных браузеров»: и чего же вы добились, обвиняя Microsoft и Internet Explorer во всех смертных грехах, начиная от монополизма? Похоже, только того, что в каждом из браузеров надо применять свои «костыли и подпорки», а любая программа на JavaScript начинается с разбора трех случаев.

PS К сожалению, ни прикрутить ASP.NET к Apache, ни PHP к IIS нереально — апачевский модуль для ASP.NET совершенно не хочет работать, а PHP-шная часть сайта существенно использует апачевские возможности по работе с .htaccess.

Смотрел статистику сайта

А кто на меня ссылки на лепре дает?

http://foto.leprosorium.ru/comments/852908
http://leprosorium.ru/users/faortto/comments/
http://business.leprosorium.ru/comments/762829
http://leprosorium.ru/users/140003/comments/

Про правописание

Мне тут знакомые филологи карманного историка («у моей подруги с ее парнем», ну да) сообщили, что я зверски попрал правила русского языка 1956 года, написав «мелочовка«. Оказывается, это устаревшее уже полвека напейсание.

Чтобы окончательно разозлить филологов, сообщаю, что на всех сайтах домена luberetsky.ru отныне официально отменяется свод правил 1956 года и вводится дореформенная орфография, с написанием «итти» вместо «идти», чорт и несклоняемыми иностранными фамилиями. Чтобы филологи окончательно выпали в осадок, скажу, что товарищу Берия эта затея бы понравилась.

Да, для историков сообщу. Домен мой, чо хочу, то и верчу.

Кстати, по поводу спамеров

Пришли сегодня два коммента:

Всех с праздничком с прошедшим и наступающим!!! как думаете теракты будут или нет а то чтото стрёмно быть в толпе на параде (((

и

Тема пондравилась хорошо изложено . Ведать у многих паника после взрывов в метро.

Кроме того, в комментах содержались спамерские ссылки на левые сайты (всякая ерунда — какие-то онлайн-магазины).

Раньше я не замечал «террористической» тематики в спаме по комментариям. Неужели Империя Бобра открыла не только свой «Блогун» с блекджеком и шлюхами, но и комментоспамилку типа ББеттера? А кто-то еще удивляется, зачем «Репортеры без границ» издают «руководства» для политически озабоченных блоггеров (причем озабоченных в одном направлении). С руководством ознакомиться можно здесь:

http://en.rsf.org/IMG/pdf/guide_gb_md-2.pdf

Жаль, не описано, кто догадался использовать СЕОшные методы для промывания мозгов интернет-аудитории.

Об’ява

Завтра выезжаю в так называемую «Незалэжную Литовскую Республику» — уродливое псевдогосударственное образование на карте Европы, чучело Франкенштейна, собранное из куска Лифляндии, куска Польши и куска Восточной Пруссии, существующее на деньги калининградской братвы. Пункт назначения — населенный пункт Шварцорт (или Юодкранте на местном наречии). Планируемый срок пребывания — 3 недели.

Соответственно, хоть я и куплю местную SIM-карту в Мемеле (то есть Клайпеде), интернеты я смогу смотреть только с коммуникатора. Поэтому на уютном сайтеге временно, на те самые 3 недели, вводится премодерация всех комментариев.

Френдленту читать, скорее всего, буду, но комментировать — вряд ли, Opera Mini почему-то при этом иногда глючит.

PS Луч дикой диареи посылается китайцам — разработчикам видеокамеры DV-136ZB за то, что их чЮдо непонятным образом сдохло за одну ночь, просто постояв у меня на столе. Так что порадовать вас стереороликами Вильны и Мемеля я не смогу :(