Saturday, October 20, 2012

Time-tracking based on git or mercurial commits

Time-tracking for the projects has always been a straining task for me. One has to remember the time when the work is started and after the work is finished one needs to open a time-tracking system, find the correct project and fill-in the form with the starting time, ending time and a comment. Often it's the same comment which was already inserted into a version control system during a commit. What's easier: reach out to copy/paste the old commit message or rewrite the same message in other words?
I've found a solution. https://github.com/spidgorny/git-hg-rp.
This system does both, it automatically fetches the starting time of the work, the ending time is the time of the commit, comment is the commit message. And it also posts it directly to the time-tracking system Rechnung+.
Pretty nice, isn't it?

Tuesday, October 16, 2012

Don't cut in front of the highway traffic when leaving the acceleration lane, you idiot!


The rule on the acceleration lane is not to interfere with the traffic already on the motorway. Make sure your speed is the same as the traffic already on the motorway. Mirrors and signals must be used correctly to avoid interfering with the following traffic.

This is very obvious and simple rule, but it needs to be reminded over and over. Please repost, retweet and share.

Tuesday, June 05, 2012

International PHP Conference Berlin 2012

Just went for a short walk and ended-up going 5.6km around the center. Beautiful city Berlin.

This is just a bookmark for myself and maybe it also helps somebody. A Timer based thread in Android can't change (even when it can access) UI elements. runOnUiThread() can help and this is how: http://steve.odyfamily.com/?p=12

Monday, April 30, 2012

Zend Optimizer on 1und1 hosting

Amazing but you can upload and enable your own PHP extensions on otherwise very limited 1und1 hosting. This way you can even upload Zend encoded scripts (binary PHP) and they will work. This is how.

Saturday, March 31, 2012

Руководство по SEO для начинающих и не очень. Практические шаги.

Я было занялся раскруткой сайта для одной хорошо знакомой семьи (они проводят прихологические семинары и тренинги), и здраво рассудив, что изобретать велосипед не стоит, решил найти какое-нибудь руководство по раскрутке, где было бы по пунктам расписано, что нужно в каком порядке делать. И, что-бы вы думали? Ничего не нашел. Да, конечно, есть куча сайтов на тему раскрутки и SEO, и все они, как ни странно, сразу находятся на первой странице в результатах поиска, но многие - просто отчёты с разных конференций (слишком абстрактно, только для специалистов), другие - подробное описание раскрутки одного или двух сайтов (даже с указанием заработка в месяц) - слишком специализировано. А один сайт показался очень даже подходящим, только все материалы на нем платные. Нет - это не наш путь.

Я сам занимаюсь разработкой информационных систем, а не раскруткой. И у меня стабильная работа, но у меня есть пара личных проектов, типа системы учёта времени или системы записи на приём. То есть меня можно назвать начинающим SEO-шником. Но даже такой минимальный опыт позволяет набросать список того, что нужно делать для продвижения вашего сайта. Это первый шаг - дальше можно читать другие сайты и вникать в эту область деятельности по самое "не хочу".

Что ж - начнём. Сразу хочу предупредить тех лохов наивных граждан, которые думают зарабатывать деньги на рекламе висящей на их сайте. Возможность этого рекламируется где не попадя и кажется, что каждый студент может сделать сайт с другом и иметь по 100$ каждый месяц на текущие расходы. Фигня! Мы это проходили и опыт самый печальный. Дело не в том что вас обманывают, нет - всё правда. Я даже добился своего первого чека от Google Adsense на 80 Евро, но сайт нужно очень сильно разкрутить что-бы поток посетителей превысил расходы на разработку и содержание сайта. Как можно раскрутить сайт быстро? Заплатить за рекламу в том же Google AdWords. И вот вы попали в безконечный круг - нужно заплатить что-бы получить денег. Думаю, у некоторых сайтов есть небольшой шанс, но это не легкие деньги.

Итак, раскручивать будем сайт с которого деньги поступают от клиентов а не посетителей. Посетители просто читают сайт, клиенты - платят деньги за услуги предоставляемые на сайте (онлайн или офлайн).

Вкратце раскрутка состоих из таких шагов:
  • Проверить текущее состояние сайта, количество посетителей и другую информацию. Это необходимо для того, чтобы потом оценить, насколько успешными будут ваши усилия по раскрутке.
  • Исправить внутреннюю структуру сайта, HTML, оптимизировать теги, сделать сайт приятным для поисковых систем.
  • Наращивать колличество и качество ссылок на ваш сайт с других популярных сайтов.
  • Исправить и улучшить текстовое наполнение сайта, его контент подбить под конкретные поисковые запросы.
  • Купить рекламу. Да-да, заплатить сначала самому, что-бы найти клиентов (не посетителей), которые вернут вам потраченные деньги.
Кстати, SEO (Search Engine Optimization) это только часть работы по раскрутке сайта, та часть которая касается поисковых систем, а ведь есть еще раскрутка с помощью спама, Facebook, Twitter, рекламы оффлайн, Youtube и др. Часто всё это вмсесте называют SEO, что в принципе неверно, но уже так принято.

Шаг №1. Определим где мы находимся (не GPS).

Вот наш подобытный сайт: http://aistm.de/. Дальше пойдут контретные шаги, каждый из которых приблизит вас к вашей мечте.
  1. Заходим на Google Analytics, регистрируемся и вставляем код для учёта посещений себе на сайт. (Я не даю подробных описаний как это сделать, но если на этом этапе у вас возникли проблемы, то лучше дальше не читать и заняться чем-то другим, например, укладывать рельсы или играть на скрипке). Analytics обновляет информацию только раз в день. Зато даёт много достаточно подробной информации о сайте, посетителях и источниках трафика. Это не такая профессиональная система, как например, Omniture, зато наиболее популярная и бесплатная.
  2. Заходим на Woopra или GoSquared, регистрируемся и вставляем код на сайт. Тут мы получаем статистику в реальном времени. Это не только красиво и занимательно но и помогает иногда живее реагировать на резкие скачки трафика.
  3. Заходим на SeoQuake и инсталлируем этот тулбар. Да-да, я тоже ненавижу тулбары, но этот пригодится. Открываем наш сайт и смотрим инфо.
Что мы тут видим? Маленький ликбез по SEO.
  • Название страницы и мета теги очень выжны. Казалось-бы вы и так знаете что там написано, но перепроверить не мешает. Кроме названия сайта желательно добавить его краткое описание, т.к. его будет видно в результатах поиска.
  • PR - Page Rank. Каждой странице в индексе Google соответствует цифра от 0 до 10. Число вещевственное, с кучей цифр после запятых (надо же как-то сравнивать миллиарды страниц). Это число определяет престиж данной страницы, и как и сам престиж - определение это размытое и приблизительное. Нам нужно будет стараться поднять это число от нуля максимально вверх. Зависит это число от многих факторов но основным является качество и колличество (в таком порядке) сайтов ссылающихся на ваш. А поднимать это число нужно чтобы ваш сайт выдавался выше (раньше) в результатах поиска (по определенному запросу, в разных запросах будет разное позиционирование вашего сайта). В Яндексе этому соответстует ТИЦ (тематический индекс цитирования). Вот подробно о взаимосвязи важности с колличеством:  http://www.inwind.ru/publication_seo_pagerang/
  • Cached: дата последнего индексирования. А вы думали Google сразу знает о том что у вас новый контент появился? Нет, пройдёт какое-то время прежде чем вас переиндексируют. Но на это время можно влиять с помощью карты сайта.
  • Остальная информация это, в основном, колличество индексированных страниц или ссылок на ваш сайт с других сайтов. Подробности тут:  http://www.seoquake.com/pages/guide.php#l_parameters
4. Заходим на SEOCentro и вводим самый естественный запрос который соответствует тематике вашего сайта и адрес сайта. Мы увидим, на каком месте в результатах поиска попадется ваш сайт. Результат запомним (сохраним страницу как HTML) - после раскрутки будет с чем сравнивать. Эту операцию можно провести и вручную, но хорошо если поиск вашего сайта по страницам не займет пол-часа :-)

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

Продолжение: Оптимизация самого сайта.

Руководство по SEO для начинающих и не очень. Практические шаги. Шаг №2. Оптимизация самого сайта.

Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.

Это технический раздел. Тут мы сделаем так, чтобы поисковые системы проиндексировав наш сайт увидели, что он написан грамотно и повысили его в результатах запроса.

Заходим на подопытный сайт и в SEOQuake жмем Diagnostics. В результате получаем отчёт в котором будет прописано что на сайте сделано не самым оптимальным образом. Жмём [Show advice] что-бы посмотреть подробнее что не так и советы по улучшению ситуации.



Обратите внимание на название сайта (Title). Это текст который будет виден в результатах поиска. Есть смысл кроме названия сайта добавить туда краткое описание так, что-бы пользователи с одного взгляда понимали, что им остро необходимо зайти именно на ваш сайт. А название сайта можно поставить даже в конце.

Под названием сайта стоит его описание, которое берется из Meta description. Так поставьте туда подходящий текст! Meta description - это не абстрактное описание которое никому не нужно, а средство для прямого доступа к описанию вашего сайта в результатах поиска.

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

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

Используйте mod_rewrite или другой аналогичный способ сделать ссылки на вашем сайте "говорящими". Слова в URL имеют высокий вес. Сравните: http://www.alistapart.com/articles/succeed/ и http://www.rechnung-plus.de/?id=38.

Text To HTML ratio сам по себе не очень важен, но он позволяет выявить страницы у которых слишком мало текста или наоборот.

Если к картинкам добавить их описание включающее ключевые слова, то наш сайт найдут даже если будут искать картинки.

С помощью robots.txt можно запретить поисковым системам индексировать некоторые страницы или даже разделы сайта. Обычно это не нужно, разве что у вас на сайте есть секретная информация в открытом доступе.

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

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

Потом заходим в Google Webmaster Central и проверяем что наш сайт проиндексировался без ошибок. Ошибки исправляем и запрашиваем повторную индексацию. Да-да, вы можете влиять на то, как часто ваш сайт будет индексироваться. Создайте файл Sitemap и обновляйте его (лучше автоматически) при изменениях на сайте. В Google Webmaster Central также есть минимальная статистика по разным параметрам, но она не очень интересна - ведь у нас же уже есть Analytics.

Заходим на http://www.addthis.com/, регистрируемся и вносим сгенерированный код на сайт. Таким образом мы дадим тем пользователям, которым понравился наш сайт, простую возможнось поделиться ссылкой с друзьями.

Следующий шаг: Наработка ссылок.

Руководство по SEO для начинающих и не очень. Практические шаги. Шаг №3. Наработка ссылок

Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.

Думаю, все уже знают что сайты на которые ссылаются другие респектабельные сайты поднимаются выше в результатах поиска. Раньше для этого советовали контактировать с web-мастерами других сайтов на подобную тематику и обмениватся с ними ссылками. Это слишком трудоёмкий способ - забудьте его. Также как и покупку ссылок в специальных ссылочных мусорках (это запрещённый черный SEO).

Нам нужно найти сайты где можно самому про себя написать и поставить ссылку. Первыми в голову приходят форумы, гостевые книги и подобные сайты. Да, с этого можно начать и получить первых 100-1000 посетителей, но регистрироватся на десятках форумов конкретно достаёт. И не создавайте новый топик с рекламой вашего сайта - это спам, найдите топик где люди обсуждают тему вашего сайта и коструктивно выскажите своё мнение или компетентно ответьте на вопрос, не забыв указать ваш сайт в подписи.

Добавте ссылку на сайт в подписи ко всем вашим письмам - об этом часто забывают.

Создайте на сайте блог и пару раз в неделю пишите ни о чём о новостях, изменениях и улучшениях в вашей отрасли. Пишите сами - содранные тексты легко выявляются поисковыми системами и понизят вас в рейтинге.

Дублируйте статьи в блоге на Facebook, Twitter и других подобных сайтах. Не всегда нужно ожидать вирусного эффекта, но пару новых посетителей вы получите.

Если есть немного креативности - создайте прикольное видео, закачайте на YouTube и пропишите ваш сайт в описании. Продублируйте видео на Vimeo и др.

Напишите интересную статью на любую тему и отправте на тематический сайт или даже офлайн журнал. (Да-да, вот оказывается зачем я всё это описываю :-) Продублируйте на сайтах с новостями обо всём на свете, например http://nnm.ru/.



Если вы продаёте товар, то поставте объявления на http://www.ebay.ru/ и аналогичных сайтах. Если даже вы продадите товар за цену ниже себестоимости зато получите ссылки с сайтов с хорошим PR.

В общем - будьте активны и сделайте чтобы вас заметили, если (пока-что) не в результатах поиска так хоть на Facebook или хотя бы http://failblog.org/ ;-).

Шаг №4. Ключевые слова.

Руководство по SEO для начинающих и не очень. Практические шаги. №4. Ключевые слова.

Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.

Помните информацию о странице в SEOQuake?


Теперь мы обратим внимание на нижнюю часть. Там видны ключевые слова и фразы а также частота их использования на странице. Нужно выбрать (или придумать) несколько слов и фраз по которым ваша страница должна быть найдена и отредактировать текст таким образом, что-бы частота встречаемости этих фраз была около 5%. Если будет больше то поисковые системы заподозрят вас в черном SEO. Не забывайте главное правило: текст должен оставаться легко-читаемым для людей.

Такую же информацию можно получить и на таком сайте: http://tools.seobook.com/general/keyword-density/.

Большой вес имеет текст ссылок. Помните прикол с жалким неудачником?

Так можно проверить и сайты конкурентов, посмотреть как они оптимизировали свой сайт и перенять пару идей.

Дальше: Платим, чтобы получить клиентов.

Руководство по SEO для начинающих и не очень. Практические шаги. Шаг 5. Платим, чтобы получить клиентов.

Это продолжение статьи - начало тут: Руководство по SEO для начинающих и не очень. Практические шаги.

Тут мы создадим рекламное объявление которое будет показываться справа в результатах поиска. Таким образом мы сделаем Google ещё богаче получим первых довольных клиентов которые вернут нам наши потраченные деньги на рекламу.


Заходим в Google AdWords, регистрируемся и создаём рекламную кампанию. Это будет просто категория различных объявлений. Внутри кампании создаём группу. Объявления в группе показываются в случайном порядке. Создаём одно или несколько объявлений: одна строка с названием, две строки с описанием и ссылка.


Теперь важно выбрать ключевые слова которые должны ввести пользователи Google чтобы ваше объявление появилось справа от результатов. Проявите фантазию - что должны искать пользователи чтобы ваш сайт их заинтересовал? Можно задать несколько ключевых слов или фраз.

Для предварительной оценки ключевых слов попробуйте Google Traffic Estimator. Там можно ввести много разных ключевых слов и предложений и сразу оценить как часто их ищут и сколько будет стоить один клик в  Google AdWords. Иногда можно с помощью не большого изменения термина (синонима) рекламироваться на порядок дешевле. Но самые дешевые ключевые слова обычно совсем не популярны - нужно найти балланс.



В настройках кампании можно ограничить показ обявления только по странам, языкам, сетям (только на сайте Google или также и других сайтах использующих Google AdSense), устройствам (смартфоны) и задать максимальные расходы за день.

Поищите, многие сайты раздают ваучеры на 100$ на Google AdWords, тогда вам нужно будет заплатить только 10$ для активации вашей рекламной кампании и рекламировать на все 110$. (Действительно только для новых клиентов, но ведь никто не мешает каждый раз создавать новую учётную запись.)

Вот и всё. Что сам знал - описал. Надеюсь вам было интересно и полезно почитать. Как писать конструктивные комментарии к статье вы знаете. Желаю вам громадного Conversion Rate.

Wednesday, March 07, 2012

Kraftort: Kapellenberg, Quellenheiligtum bei Hofheim am Taunus

1666 wurde eine Bergkapelle direkt neben dem aus der Eiszeit stammenden Heiligtum errichtet. Zu diesem Datum erhielt der alte “Rabenberg” seinen heutigen Namen. Die Eremitage bei der Wallfahrtskapelle gab der am Westhang des Berges gelegenen Quelle ihren Namen “Einsiedlerborn”.
Höhensiedlung seit 4. Jahrtausend v.Chr.!
Ringwall rund um den Kapellenberg ist aus dem Mittelalter.
Wegbeschreibung: Autobahn Frankfurt-Wiesbaden, Ausfahrt Frankfurt-Zeilsheim. Richtung W der “Zeil” folgend -> Kreuzweg hinauf bis zur Bergkapelle

Bilder:






Tuesday, February 28, 2012

Android app for Rechnung+

Good news. Now you can track your time on the Android app tipcat and export it to Rechnung+. For details see below.

Wednesday, February 15, 2012

Progress bar for a lengthy PHP process

If you ask an average web-developer if it's possible to make a running progress bar on the web-page while it's loading(!), most of them will say "no". This is understandable as practically all web-pages do not exhibit such progress bars and are in a sense "static" - the whole web-site is dynamically generated from a database, but each page is static except for AJAX changes due to user actions. Here I will show how a lengthy PHP process can show a running progress bar while the page is loading. Of course, it doesn't make sense for pages loading within a second or three, but those import/export/dump/analyze/recode/generate scripts which takes ages.

Wednesday, January 25, 2012

How to change the collation for all tables in a MySQL database to UTF-8?

In response to How to change the collation for all tables in a MySQL database to UTF-8? where they only changed the default collation for any column which will be created in the future, I post the script which also changes the collation of each FIELD in the database. I've used it for http://www.mantisbt.org/.

Beware (!) that if your database already contains data in the incorrect encoding this script may corrupt the data. It should be safe to use it for English though.

<?php
require '../config_inc.php';
$db = mysql_connect($g_db_hostname, $g_db_username, $g_db_password);
if(!$db) echo "Cannot connect to the database - incorrect details";
mysql_select_db($g_database_name);
$result=mysql_query('show tables');
while ($tables = mysql_fetch_array($result)) {
    foreach ($tables as $value) {
        echo '<b>'.$value.'</b><br />';
        mysql_query("ALTER TABLE $value COLLATE utf8_general_ci");
        alterTable($value);
    }
}

function alterTable($table) {
    $result=mysql_query('show columns from '.$table);
    while ($fields = mysql_fetch_assoc($result)) {
        $fieldName = $fields['Field'];
        $fieldType = $fields['Type'];
        if (substr($fieldType, 0, 7) == 'varchar') {
            echo $table.'.'.$fieldName.'<br />';
            mysql_query("ALTER TABLE $table CHANGE $fieldName $fieldName $fieldType COLLATE utf8_general_ci");
            echo mysql_error();
            //print '<pre>'.print_r($fields, true).'</pre>';
        }
    }
}

echo "The collation of your database has been successfully changed!";