Friday, August 02, 2013

Copy whole folders from Android with only MTP to the PC (over USB, using PHP and adb)

I've always wanted my mobile phone photos to appear on my PC "magically" when I come home and have a WiFi connection. I just haven't found a decent app for this yet.

In the mean time I used to copy files with USB cable. Back in the days the phone SD card was automatically mounted as a new disk so I could automate the process with "robocopy". But ever since phones switched to MTP protocol I had no way to use batch files to copy new pictures. I guess you know the painful process of using Windows Exprorer. Mouse-oriented, choose the source folder (MTP is slow), select all files, copy, go to the destination, paste. Manual work. Programmers don't like repetitive manual work.

But then I discovered that "adb" allows to "pull" and "push" files to the device over MTP. Unfortunately it doesn't support copying whole folders. It's been several years until I discovered an "adb" command to list files on the Android device. Whow! No I can script it to copy whole folders and automatically skip files which have been already copied.

Here's the result. The script is written in PHP. You run it like this:
> php acf.php /sdcard/DCIM/100ANDRO/ ./100ANDRO/

It will read all the files in the "100ANDRO" folder on the connected device and copy missing files to the specified folder on the PC.

Requirements:
1. PHP installed.
2. Android SDK installed.
3. "USB debugging" enabled on the phone.
4. Download the script below and try.

All links contain the same source code:
http://demo.php-pastebin.com/VsY8J7m6
http://codepad.org/bYC3JLZ8
http://ideone.com/3lljIB

Friday, May 31, 2013

Concise and Reliable Backups with WinRar


I use the following BAT file to do daily backups:
start /b C:\Program Files\WinRAR\winrar a -u -as -r -ms N:\ProjectsBackup.rar c:\users\depidsvy\NetBeansProjects\
  • start /b - open WinRar and close the black CMD window immediately (as opposed to keep it open while archiving)
  • a - add new files
  • -u - keep unchanged files - don't repack again
  • -as - delete deleted files from the archive
  • -r - with subfolders
  • -ms - don't pack, include as they are the following files: 7z, ace, arj, bz2, cab, gz, jpeg, jpg, lha, lzh, mp3, rar, taz, tgz, z, zip
Enjoy

Monday, May 27, 2013

Force charging Prius battery

Everybody knows how to force discharging Prius battery - that's what the EV button is for. Today, being afraid of the red triangle error, I wanted to charge the battery before going to the automatic washing booth. Pressing gas pedal while in [P] doesn't charge. But pressing both brake and gas pedals in the same time in [D] did the trick.

Thursday, April 18, 2013

Завтра едем в Голландию

Завтра едем в Голландию. Жить будем в Sint Maartenszee. Рядом будет магазин SPAR, дюны, море и ядерный реактор. Главная цель поездки - парад цветов. Витя советовал посмотреть голландскую венецию - Giethoorn . Прокат лодок - якобы 15 евро.
В Голландии много (десятки?) городов и замков в виде снежинки окружённой водой. Один такой будет недалеко - Fort Erfprins, но это военно-морская база. Маленький Den Helder. Другие: Naarden, Brielle, Bourtange. Вот фотки пятерых (что за слово такое) из них. Ещё Loevestein.

Смотрите также несколько прошлогодних ссылок (ещё). Там тоже интересные места.

Далее список всего подряд:

Tuesday, March 05, 2013

Single most annoying Prius problem

I'm a happy Prius driver. But one thing that bugs me a lot in Prius 2006 is that Consumption MFD screen doesn't show the current consumption value, only the approximate bar. I have to switch between the information screens to read that value and then switch back to see the chart quite often.

As a side note I'd also like driving instructions (turns) to appear in the corner when Consumption screen is active. This way I would not need to switch to the map screen either.

P.S. I accidentally googled an interesting screen. I wish I had this one as well.

Source: http://priuschat.com/threads/next-generation-mfd-check-it-out.84493/page-2

Friday, March 01, 2013

Why time tracking is best with Rechnung+

There are dozens of time tracking apps and sites, no surprise it's very hard to choose one which fits you best. Here I share my reasoning so it may be easier for you to choose.

1. It needs to be free.

While it may be OK to pay for some larger software which is outmost important for your work (I think of the PHPStorm, other examples are Photoshop, 3DMax, MS Office, etc.) I'm not ready to pay for dozens of smaller tools which make my life easier but are too cumbersome to take extra efforts to choose the payment plan, choose payment method, pay and wait for payment to arrive or investigate why payment didn't pass through.

2. Registration should be easy.

Login and password is the minimum necessary data for the registration. Everything else is redundant. Extra information may be filled in later when I'm sure I'll continue with the selected tool. Registration with OpenID from Google or other providers will make it even faster and easier. A demo account without registration at all is even better.

3. It should be quick to track.

Noone wants to track the time, it's a distraction from the actual work. If I do it, I don't want to spend more than 1 minute. After login I should be able to fill-in the rest of the pre-filled form with default data. So then I can return to work or get rest
without wasting my time.

4. Getting data under control.

Well, it's my own time tracked even though it's stored on some server somewhere else. I need to be able to download the whole package of data for private backups, importing into some other system or even post processing in Excel.

Rechnung+ can do it all.
1. It's free.
2. Registration is easy, just three obligatory fields. Demo account can be tested without any registration and OpenID is supported.
3. Time tracking is fast. The only necessary field is the "duration". Rechnung+ allows real-time tracking with start/stop buttons.
4. You can download your data for a local backup, export project data into CSV, run built-in time and money analytics and even delete your account completely.

Please comment if your time tracking tool can do all of that and maybe some more.

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.