Показаны сообщения с ярлыком Веб. Показать все сообщения
Показаны сообщения с ярлыком Веб. Показать все сообщения

Переезд 3.0: Цифровой Океан (Digital Ocean)

Некоторое время назад на домашнем сервере был поднят сайт. Долго ли, коротко ли, постепенно сайт проиндексировался и Яндексом, и Гуглом и даже всевозможными заморскими Бингами и Асками, так что на сайт стали захаживать посетители. Не то что бы много,- пара сотен в день. Всё хорошо,- и постоянный адрес от провайдера домашнего интернета пожалован, и канал не то, чтобы тонкий,- но временами серверу стало плохеть временами, да так, что не только ssh отваливался, а и перезагружать стало надобно, да аж по питанию.

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

Вообщем,- выбран был самый простой тариф, да ось знакомая, да времени на развёртывание ушло около минуты. Удобный интерфейс, моментальное развёртывание образов,- рекомендую всем.

И да, вы можете прямо сейчас зарегистрироваться на Digital Ocean и получить скидку на 10$ 

Web-технологии: O2C player

O2C (сокращение английской фразы «objects to see») - это векторный формат хранения и программа-визуализтор трёхмерных (3D) объектов. Отличная детализация объектов, анимация и динамическое управление обзором впечатляет гораздо больше, чем классические чертежи, буклеты или фотографии.

С вашим браузером можно только чёрно-белое фото

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

Переезд-2.03

Пока я жалуюсь на то, что сайт плохо индексируется поисковиками, поисковый робот mail.ru незаметно посетил аж 54 страницы, из которых львиная доля,- страницы архива по месяцам и с пяток недавно созданных страниц. Признаться честно, непосредственно записи из архива по месяцам робот почему-то индексировать не стал. Да и трафика от mail.ru обычно не бывает нормального, если принимать во внимание портрет среднестатистического пользователя мейлрушных сервисов и тематику этого блога. Тем не менее, у mail.ru, как и у взрослых, тоже есть свой webmaster.mail.ru, хоть и простенький. В последнее время и набор вебмастера и статистика,- только от отечественного производителя :-), Яндекс-Метрика в моём личном рейтиге ощутимо лучше Google Analytics, человечнее как-то.

Прозрачная картинка 1x1



Если не нравится в веб-проектах включать картинки размером 1x1 пиксель в виде отдельных файлов, такие картинки можно включить напрямую в HTML-код или таблицы стилей CSS с
помощью приёма data:image.

Например, полупрозрачный серый блок с Opacity=0.5 можно задать с помощью свойства background-image:


{background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgqAcAAIIAgLO2btEAAAAASUVORK5CYII=);}


или напрямую в HTML-коде картинкой:


<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgqAcAAIIAgLO2btEAAAAASUVORK5CYII=">


Удобный конструктор значений data:image для разных оттенков и степени прозрачности можно попробовать на сайте http://px64.net/

Сравнить нельзя обновить

Ну, допустим, хочется сделать скрипт проверки и обновления какого либо файла из интернет. Хороший такой скрипт, чтобы лишней нагрузки на сервер не создавал, и лишний трафик не гонял. То есть, необходимо проверять обновление какого-либо ресурса по URL, и, при необходимости, загружать новую версию, или как-то по иначе отреагировать, письмо, например, послать. Тут на помощь приходят заголовки HTTP Last-Modified (в ответе сервера) и If-Modified-Since или If-Unmodified-Since(в запросе). При ближайшем рассмотрении оказывается, что значения в этих полях не имеет смысла из строкового приводить к типу datetime в принципе

CJK: китайские и японские иероглифы в Unicode

Дословно в википедии:

В китайском, японском и корейском языках приняты несколько отличающиеся начертания многих иероглифов, обозначающих одно и то же понятие. Однако, поскольку Юникод представляет символы, а не начертания, соответствующие иероглифы в нём объединены. Правильное начертание выбирается за счёт использования соответствующего шрифта. Браузеры могут это осуществлять автоматически, если текст на веб-странице помечен как относящийся к тому или иному языку с помощью тега lang.
Википедия: Китайское письмо

То есть читать не учим, учим иероглифы, так получается?

Попробуй догони: Web2.0 против пользователей

Понадобилось тут на одном социальном сайте найти кое-какую несоциальную информацию, вроде той, что пишут в разделах "О компании" или "Связаться с нами". На очень социальных сайтах информация такого типа обычно доступна по ссылкам в подвале страницы. Вот так и здесь,- привычно работаю скроллом вниз, уже почти и...

Что за хрень? Только я добрался до низа страницы и начал прицеливаться в нужную мне ссылку, как супер-функция подгрузки дополнительных записей отработала свой хлеб и сделала страницу длиннее ещё на несколько экранов. Попробовал ещё,- такая же проблема. И ещё. И ещё :-) На какой-то итерации продукт фантазии программистов всё-таки угомонился, сделав страницу примерно в 10 раз длиннее (в терминах размера по вертикали) против первоначального размера.

Вот только мысль написать этот пост негодования пришла в голову за две попытки до того, как прекратилась автоматическая подгрузка. Получается, что подвал на таком сайте увидит далеко не каждый. Скажем даже,- очень не каждый, зато настойчивый пользователь. А кнопка "в самый низ" дизайном не предусмотрена. Прямо на уровне юзабилити намекают,- нечего тут шариться, ничего мы про себя рассказывать не хотим, потребляй контент.
Проверил несколько других сайтов,- аналогичная картина. Вот он, список очень социальных сайтов :-) :
  • Vkontakte
  • Odnoklassninki.ru
  • LinkedIn
  • Facebok
  • Google+
Среди прочих проверенных приятно порадовали почта Яндекса и Гугла, а также яндексовский МойКруг,- там автоматической подгрузки нет, зато есть кнопочки/ссылки для тех, кому нужно получить дополнительное содержание. Молодцы.

.Gadget: Никаких логов в консоли

Пара стандартных гаджетов-виджетов
 на рабочем столе Windows
Довелось тут делать gadget для Windows Sidebar. Дело оказалось нехитрое, но шибко геморройное, как и всё связанное с Internet Explorer. Краткую инструкцию можно найти по известному адресу или погуглить, информации в сети достаточно.

Вкратце: Gadget для Windows Sidebar представляет из себя HTML-страничку с небольшой дополнительной обвязкой в виде ресурсов (javascript, CSS, графика) и нескольких дополнительных файлов, которые помогают винде понять "что со всем этим делать". Внутри странички может работать уже упомянутый javascript (в том числе всевозможные jQuery и прочие библиотеки с небольшими ограничениями), можно делать ajax-заросы к внешним ресурсам (с учётом Access-Control-Allow-Origin на сервере, конечно), можно прикрутить несколько дополнительных страниц (выезжающая плашка ака flyout и страница настроек). Все эти файлы собираются в одну папку с именем, оканчивающимся на ".gadget" и подкладываются операционной системе. Операционной системе это кажется гаджетом, который можно разместить на рабочем столе (в Vista и Windows7) и быть от этого счастливым.

К сути истории: сам виджет я собирал и тестировал по максимуму на макинтоше и под хромом, решив адаптацию под Windows и IE делать после того, как будет дизайн и будет работать весь javascript. Работающий уже полностью (как казалось) виджет положил на машину с Windows.... и не получил вообще ничего, абсолютно пустая страница в том виде, в котором она есть после загрузки страницы и инициализации скриптов, но без результата выполнения хотя-бы одной функции. Это меня озадачило...

Процесс ошибок был долог, но конечный результат таков:
Несмотря на то, что console.log работает в IE9 с открытым окном "Средства разработчика F12",- не надо использовать console.log в виджетах, ибо в виджете console.log приводит к ошибкам. А ошибки в гаджете,- не отображаются как таковые.

Смена сервера и падение трафика

Через 2 недели недоступности 
в поисковом индексе Google 
почти не осталось ссылок 
на страницы сайта
Сбой сервера и последующая двухнедельная эпопея по восстановлению сайта из бэкапа привели к радикальному выпадению из поискового индекса и соответствующему падению трафика на сайт. Из 380 с гаком проиндексированных страниц спустя неделю после начала недоступности сервака в индексе осталось 244. Ещё неделю поисковая машина Google на что-то надеялась и индекс больше не трогала, а потом выкинула из рейтинга ещё 200, оставив в живых всего 44 линка, которые и дожили до сегодняшнего дня. Яндекс.Вебмастер, как выяснилось, даже писал мне письма в стол про то, что сайт перестал индексироваться, но письма не отправлял, в надежде, что я туда захожу каждый день, видимо :-)

Другие поисковики не проверял, ибо смысла не вижу: ну выпал из индекса, что ж теперь :-)

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

Хватит тут шариться!

Только что заметил в поиске google нововведение: если перейти по какой-либо найденной ссылке, а потом вернуться обратно на страницу поиска,- в плашке результата для этого сайта появляется строчка "Заблокировать все результаты с [aдрес сайта]". После нажатия на ссылку, все результаты поиска с данного сайта будут исключены из выдачи. Естественно, чтобы эта фича работала, нужно авторизоваться в гугле, чтобы понятно было в какой профиль записывать данные. Не знаю, каким образом блокировка отдельных сайтов вдлияет на глобальную выдачу пользователям без настроек и на рейтинг в выдаче, но для персонального использования штука полезная. У меня часто бывает, что при поиске какой-нибудь редкоупоминаемой фигни, вылазит куча мусора с каких-то бредоподобных сайтов со справочниками по типоразмерам зубцов ковшей снегоуборочной техники, например.

Рамблер-Контакты

Пропустил новость, что в июле 2011 года появился новый IM-клиент "Рамблер-Контакты". Поддерживает протоколы Jabber, MMP (Mail.ru Agent), GoogleTalk, ICQ, умеет подключаться к FaceBook, вКонтакте, Яндекс.Онлайн и QIP. Сейчас (в ноябре 2011) всё ещё в статусе бета, оно и понятно,- при установке ругается на отсутствие прав, показывает какие-то каракули, однако устанавливается. После установки пытается запуститься и падает с грохотом. Ручной запуск удаётся,- однако,- для входа требуется логин на Рамблере, дальше не пошёл. Дизайн явно навеян макосью, но достаточно приятный, по крайней мере не такой кривой, как у мультифона.

Дождёмся стабильной версии?

Универсальный конструктор класса для PHP4 и PHP5

Редко приходится работать с PHP, но всё-же иногда приходится. Чуть не сошёл с ума в попытке найти ошибку в чужом коде. На тестовой системе всё летало, а на боевой,- пустая страница. Закономерно оказалось, что версии PHP на тестовом и боевом серверах разные, а в коде используются классы с объявленными конструкторами в стиле PHP5. PHP4 про то, что нужно вызывать метод __construct() в качестве конструктора ничего не знает, пришлось уговаривать ;-)

В самом общем случае вариант универсального конструктора класса (для 4-й и 5-й версии PHP) выглядит вот так:

class Foo{
# конструктор для всех версий
function __construct($arg){
# сделать что-нибудь при создании объекта
}
# конструктор для PHP < 5.0
function Foo($arg){
# сюда мы попадаем по умолчанию в ранних версиях PHP
if(version_compare(PHP_VERSION,"5.0.0","<")){
# вызываем конструктор
$this->__construct($arg);
# регистрируем деструктор
register_shutdown_function(array($this,"__destruct"));
}
}
# деструктор для всех версий
function __destruct(){
# сделать что-нибудь перед уничтожением объекта
}
}
?>

Colspan=100%

Много раз сталкивался с ситуацией, когда надо сделать ячейку таблицы, объединяющую все столбцы (например для подзаголовка группы строк или как footer для всей таблицы). Если наперёд знаешь сколько столбцов,- не проблема, есть стандартный атрибут colspan, указываешь количество объединяемых ячеек, например colspan="2", всё работает.

А если страница выводится скриптом и количество столбцов наперёд неизвестно? И нет возможности посчитать в шаблонизаторе? В последний раз такая задача возникла при использовании Django, там шаблоны очень удобные, но с математикой там туго, а писать собственный template tag или filter казалось излишеством. Выкручивался либо изменением шаблона (чтобы такое объединение ячеек вообще не было нужно) либо городил в коде дополнительный подсчёт количества столбцов, пока не надоело. А когда надоело,- полез гуглить.

Оказалось, что не я один "хочу странного", куча народу уже сталкивалась с такой-же проблемой. Пробуют добавлять в свойства таблицы colspan="all" или colspan="0", - не во всех браузерах работает. На stackoverflow нашлось решение,- рекомендуют писать colspan="100%".

Попробовал на доступных браузерах,- работает везде.

Linux в браузере

Буквально вчера (16 мая 2011 года) в интернете запустился проект jslinux (эмулятор PC с Linux на javascript в браузере) от уважаемого мужчины по имени Фабрис Беллар. Эмулятор для запуска Linux полностью написан на JavaScript. При входе на страницу отображается консоль, на которой начинается загрузка Linux с нуля до момента отображения рутовой консоли. В консоли работает куча стандартных команд, вплоть до компилятора TCC. И всё это работает прямо в браузере. Крутизна необыкновенная.

Анимированный GIF для Ajax

Нашёл несколько веб-сервисов для создания анимированных гифов для индикации процесса загрузки в ajax-приложениях. Записываю в закладки, чтобы не потерялось:


  • AjaxLoad.info. Простенький, но шустрый сервис, для выбора есть пара десятковразличных индикаторов и возможность настройки цвета


  • loadInfo.net. Ещё одна вариация на тему, красивый, хотя и мрачноватый сайт, выбор тоже небольшой, есть возможность настройки цветов и выбор размеров (16x16, 24x24, 48x48).


  • preLoaders.net. Самый функциональный сайт, несколько типов картинок (горизонтальные, круговые, трёхмерные), есть возможность настройки цвета, настройки скорости анимации. Размеры рисунка можно выбирать произвольные. Сделано в России.


Пользуйтесь на здоровье!

ef bb bf - ползёт разметка в Django

Столкнулся с необъяснимым на первый взгляд явлением,- на одной из страниц Django'вского приложения необъяснимо разваливалась разметка страницы. Только на одной. Смотрю исходник страницы,- на первый взгляд всё в порядке, только какая-то чёрточка странная и посторонняя в самом начале HTML кода. Причём эта самая необъяснимая чёрточка видна далеко не во всех редакторах. В попытке вяснить причину добрался аж до просмотра в HEX,- оказалось, что там целые 3 байта EF BB BF, а не чёрточка. Остальное дело техники: эти байты,- признак ByteOrderMark. Осталось просмотреть все шаблоны, из которых генерируется страница, поскольку BOM может быть в любом из файлов, даже вложенном. У меня оказалось, что BOM присутствует в файле шаблона аж на третьем уровне вложенности шаблонов. Не забывайте проверять, в каком формате сохраняете файлы

В Гугле работают разводилы

Гугл прислал письмо. Разводка в чистом виде,- типа халявные 1400 рублей для протестировать AdWords. Всё хорошо, кроме того, что письмо приходит на день позже, чем заканчивается действие рекламного предложения. В жж народ пишет, что не в первый раз уже такое

Полный список параметров SIP

Обнаружил полезный документ,- полный список заголовков SIP и других параметров (Session Initiation Protocol (SIP) Parameters):
В документе описаны:

Registries included below:
- Заголовки (Header Fields)
- Протоколы причин (Reason Protocols)
- Опциональные теги (Option Tags)
- Коды уведомлений (Warning Codes (warn-codes))
- Методы и коды ответов (Methods and Response Codes)
- Значения приватных заголовков (SIP Privacy Header Values)
- Имена механизмов безопасности (Security Mechanism Names)
- Схемы сжатия (Compression Schemes)
- Параметры URI (SIP/SIPS URI Parameters)
- Параметры и значения полей заголовков (Header Field Parameters and Parameter Values)
- Назначения и форматы URI (URI purposes)
- Пространства имён приоритетов (Resource-Priority Namespaces)
- Значения приоритетов (Resource-Priority Priority-values)
- Параметры идентификационной информации (Identity-Info Parameters)
- Параметры алгоритма идентификационной информации (Identity-Info Algorithm Parameter Values)
- Параметры настройки User-Agent (SIP Forum User Agent Configuration Parameters)

XMPP вКонтакте

 Ну вот, дожили: вКонтакте начал открытое тестирование XMPP-протокола. Насколько я понимал до сих пор бизнес-модель социальной сети,- это была прибыль от рекламы на веб-интерфейсе. А тут вКонтакте сам у себя откусывает кусок? Не понимаю. Вполне возможно, что акцент уже давно сместился с баннерной рекламы на встроенные игрушки и приложения, с доходов которых вКонтакте получает свои 2%? Тогда это всё объясняет, более того, открытие джаббера выглядит вполне логичным шагом, особенно на фоне того, что фейсбук поддерживает XMPP уже давно. Кроме всего прочего, вКонтакте позволяет транслировать статусы из клиента в твиттер,- чёрт, эту идею я придумал ещё год назад :-\ Следующими прорывными шагами будет поддержка s2s (возможности общаться с пользователями других сервисов), потом объединение с одноклассниками и внедрение SIPовой или проприетарной звонилки,- и получится национальная социальная сеть с самой большой абонентской базой.