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

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

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

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

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

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

Namei: Почему в nginx permission denied?

Почему в Nginx error.log появляются записи вида open() ... failed (13: Permission denied)? Вообще, речь конечно не про Nginx как таковой. Ситуация, когда в *nix-системе доступ запрещён по непонятной причине, хотя у файла или папки "всевсевсе" права rwxrwxrwx (777 в числовом выражении), бывает с любым процессом. В таком случае нужно не биться головой о стену, а вспомнить, что у любого процесса для доступа к любому файлу, помимо прав на чтение (или запись), должны быть права на переход в каждую папку начиная от корня. 

Инструмент вебмастера: Site Auditor

Периодически проверяю статус индексирования поисковиками в программе Site-Auditor, помимо разных полезных сведений на текущий момент там сохраняются данные предыдущих проверок. Яндекс.Метрика и Google Analytics показывают данные с заметным отставанием, иногда до нескольких дней, утилиты вебмастера (Яндекс.Вебмастер и Google Webmaster Tools) тоже не всегда показывают актуальные данные. И вот подумалось,- а что, если извлечь данные из Site Auditor и сохранить их в какую-то свою историческую базу, да хоть и в графит? На маке использую AIR версию, вот некоторые итоги изысканий:


  • Данные, полученные программой, сохраняются в формате Adobe Shared Object, расширение sol.
  • Расположение файлов зависит от операционной системы, путь можно узнать на сайте Site-Auditor в разделе FAQ
  • Для работы с такими файлами в Python есть модуль PyAMF, установить можно с помощью pip
  • Помимо pyamf случайно нашёл модуль python site-auditor, по описанию судя делает почти всё тоже самое, что и программа. 

Переезд-2.03

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

Переезд-2.01

Прошло уже несколько дней с момента публикации предыдущей записи в блоге, где я жаловался на выпадение из индекса всвязи со сменой домена и делился тем, что добавил адрес блога в поисковый индекс Яндекса и Гугла. Оказалось, что сейчас индексирование сайта занимает более продолжительное время, чем это было несколько лет назад, по крайней мере прошла уже неделя,- а в индексе сайта до сих пор нет. Ни в Гугле, ни в Яндексе. Яндекс через 5 дней сообщил, что робот начал индексировать, но результата пока нет, а вот google вообще пишет, что страниц в индексе ровно ноль, и это число не особенно-то меняется. Пичалька.

Статистика: 146%

Скриншот графика в goolge analytics:
примерно +50% к обычному трафику
Неожиданно в статистике обнаружился прирост посещений, причём только за одни сутки. не 146%, конечно, но весьма заметно на общем фоне. Детальный анализ показал, что неожиданно на сайт стало попадать куча посетителей с гугла по запросу Ctrl-S и Vi. То, что пошёл такой поток,- понятно, ведь по этому запросу в поиске google сайт выводится на 1й позиции :-)

.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 приводит к ошибкам. А ошибки в гаджете,- не отображаются как таковые.

Универсальный конструктор класса для 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(){
# сделать что-нибудь перед уничтожением объекта
}
}
?>

Подсказки в полях ввода - реализация placeholder на JQuery

Понадобилось сделать небольшую обёртку для полей ввода в HTML, чтобы по умолчанию в пустом поле стоял текст подсказки (ну например, "введите номер телефона"), при входе в поле строка очищалась, при выходе и пустом значении подсказка возвращалась, а если что-то введено,- значение оставалось.
Написал коротенькую функцию на javascript с использованием библиотеки JQuery. На вход подаётся объект JQuery и строка для подсказки, текст подсказки устанавливается в поле и применяется CSS класс "hint" для оформления подсказки.


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

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


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


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


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


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

Семейный бюджет

КошелёкДошли руки попробовать облачный Google Application Engine. Сделал на питоне простенькое приложение для учёта финансов.

Киллер-фича,- возможность совместной работы (например муж+жена) с общими деньгами.

Если кому надо,- пользуйтесь, вход по гугловскому аккаунту.

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

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

Multifon portable

Без лишнего шума и вообще без какого-либо пиара, МегаФон выкатил на всеобщее обозрение новую версию сайта multifon.ru и новые версии клиента,- к "просто мультифону" добавилась английская версия, а также версии, не требующие установки (portable), на русском и английском языках. Сайт стал более симпатичным, светллым и функциональным. Portable оказался вполне себе, устанавливается на USB флешку, в той-же папке, куда установился, хранит все настройки. Правда, структура папок не подходит для PortableApps, но в меню отображается и запускается. Скачать мультифон (в том числе Portable версию, не требующую установки) можно со страницы Мультифон: скачать.

Кроме этого, в домене multifon.ru наконец-то прописали записи DNS SRV для SIP. Надо перепроверять все железки, которые раньше не удалось настроить на мультифон...

Нарисовать иконку

В поисках бесплатного онлайнового редактора иконок наткнулся на полезный и качественный сервис favicon.cc. Умеет делать прозрачность, сдвигать рисунок, выбирать цвет из рисунка (как пипетка в Photoshop), и даже показывать получающуюся иконку в реальном времени в масштабе 100% на рисунке, изображающем адресную строку браузера.

Весьма удобно... и затягивает ;-)

Поисковый трафик

одна четвертьПросматривая статистику посещений нескольких сайтов с различной посещаемостью (от 30 до 3000 хитов в день) в GoogleAnalytics, заметил одну закономерную закономерность:
доля трафика с поисковых систем Яндекс и Гугл всегда находится в примерном соотношении 1/4. Для сайтов в зоне .ru,- доля Яндекса в 4 раза больше, чем доля Гугла, а в зонах, отличных от .ru (например на spam.sended2.me),- соответственно наоборот. Конечно, небольшие отклонения есть (в зависимости от сайта, наличия локализованных страниц),- но закономерность всё-таки прослеживается.

Расшарить всё

AddThis logoПо наводке интернет-магазина Озон набрёл на полезный сервис AddThis. С помощью панели инструментов, установленной на свой сайт (или блог), посетители вашего ресурса смогут быстро опубликовать ссылку на понравившуюся страницу в любом из множества социальных сервисов, будь то жЫвой жУрнал, твиттер или какой-нибудь закладочник, типа доброго бобра. Проверил на ЖЖ, GoogleReader и Facebook,- всё работает.

Бесплатная регистрация домена в зоне .ru

Что-то поставщики услуг совсем распоясались,- я всегда считал, что регистрация домена в зоне .ru стоит 20 условных единиц (около 600 рублей с поправкой на внутренние курсы регистраторов). Потом увидел цену в 99 рублей. Последнее самое вкусное предложение там-же,- 49 рублей,- правда с шансом 50%.
Хотите поучаствовать в лотерее (или гарантированно зарегистрировать домен за 99 рублей),- вам на repark.ru.
А вот совсем бесплатной регистрации пока не встречал

Дебаг PHP (в errorlog apache)

phpИногда возникает задача по-быстрому поправить что-то в PHP скриптах на сервере прямо из консоли. Если всё удаётся с первой попытки,- честь и хвала, а если нет? Часто бывает так, что страница просто перестаёт открываться, или на месте ожидаемого блока с текстом или картинки ничего нет. В этом случае поможет стандартная функция php error_log():

error_log('текстовое сообщение'); # записать в apache error.log

Не забудьте после отладки удалить (или закомментировать) все отладочные сообщения
Используя error_log можно быстро "на коленке" отладить небольшие изменения. А для больших проектов надо использовать что-то посерьёзнее, чем консоль, например Geany IDE

Защита Апача

apache_ssl_buttonВ очередной раз столкнулся с настройкой SSL для Apache: отозвали сертификат сайта (скомпрометирован субподрядчиком), сайты перестали открываться. Новый ключ есть,- надо установить:



  1. понадобятся два файла: собственно публичный сертификат и приватный ключ, соответственно в файлах server.crt и server.key.


  2. В конфигурацию виртуального хоста Apache добавляем (если ещё нет):


    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key



  3. Перезапускаем апач:


    $ sudo apachectl graceful




Вот и всё ;-)

В посте использованы изображения с сайта Apache SSL

Российский НИИ искусственного интеллекта

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