Синхронизация между сървър и мобилни телефони

През последните седмици се занимавам главно с дооправяне на бакенда на Kolab към z-Push.

Тази технология дава възможност да си синхронизирате мобилния телефон – Symbian, Android, BlackBerry, Windows Mobile, iPhone с вашия сървър, така, че да можете винаги да имате актуални срещите в календара си, задачите си, както и електронната поща на мобилната джвъчка, която ползвате в момента.

z-push

Оказа се, че самият z-Push е доста далеч от utf-8 поддръжка, затова трябваше да я приложа в бакенд файла и се получи доста добре, сега поддържаме почти всички езици, a синхронизацията тече доста бързо. Последния тест беше с 10 000 събития, които успяха да стигнат от сървъра до телефона за около 4 минути, използвайки cache драйвер за MongoDB.

OpenWebAnalytics – както трябва да бъде

Тъй като съм почнал да пиша за статистика в Уеб, защото ми е писнало да използвам услуги на трети страни, които често правят “четки” на големи клиенти, а за малките … или пък бавят данните, които показват с дни, като tyxo.bg или Google Analytics.

Решението, дойде от самосебе си, докато се опитвах да реша случая, описан в предната ми публикация, тогава открих OWA, и даже го споделих в Twitter :)

Какво му е положтелното на това чудо:

  1. Xоства се при вас, вие притежавате и управялвате данните. Ако се компания за разработка, можете да предлагате тази услуга на всичките си клиенти и да печелите пари.
  2. С отворен код е и се разработва сравнително бързо – добавят се нови възможности, които за Google, например и невъзможно да бъдат приложени в следващите N месеца, поради тежката процедура.
  3. Има доста възможности, най-много ми харесва ето тази:
    Clickmap
  4. Говорейки за конкретна статистика за моя проект, ето това е безценно
    ОВА- цлицкстреам
    Това показва, каво точно е интересно за потребителя и върху какво клика на сайта ви,

PHP API
Като програмист винаги ми се е искало да мога да си комуникирам с услугите, които използвам, за да мога да вземам и да подавам данни за различни пресечки на информацията. Е, това е възможно, даже повече от възможно – лесно :)

Oще плюсове
Чудесно е, че има и проследяване на действията, което за кликове на определени места или за кампании за афилией маркетинг са доста полезни.

JS
Разбира се, че има и част за JS, което е и основния механизъм за събиране на данните. Има и досбра документация, но не би трябвало да имате проблеми с намирането на подходящия начин за използване.

Дай още, Бого
Вижте още от тук, за това как точно може да работите с данните, каква интеграция има с WordPress и още полезни възможности в най-новата версия или посетете сайта на проекта от тук.

Малко мониторинг на всички регистрирани сайтове в BGSite 2010

Ако ви е интересно моето проучване върху сайтовете, искащи да получат наградата на BGSite.

Ето и малко статистика, получена чрез писани от мен скриптове на PHP.

  • Колко от сайтовете са валидни, базирано на W3 валидатора (Abort, означава, че сайтът е бил недостъпен за услугата)
  • Колко връзки имат тези сайтове в Google (site:url);
  • Колко други сайтове сочат към този сайт (link: url);
  • За колко време се зарежда сайта от моя дейта център (в Суперхостинг.бг) (в секунди)
  • Ново: На кое място са домейните в класацията за България на Alexa. (колкото по-малко е числото – толкова по-посещаван е домейнът)
  • Ново: За колко време се зарежда сайта от cloud хостинг сървър на Rackspace

Тестовете можете да видите тук.

Бъдещи тестове:

  • Време за зареждане от независим дейта център – където е малко вероятно някой от сайтовете да бъде хостван. (готов)
  • Ще пусна пак теста за валидация, защото доста от сайтовете не можаха да бъдат достъпени от W3 API.
  • Лиценз на информацията
  • – … и още няколко интересни.
  • Графична визуализация на тези данни

Запишете си препратката и се върнете скоро, ако искате още данни. Ще се радвам на мнение и идеи.

Интеграция между vTiger и WordPress

През последните дни се занимавах с интеграция между WordPress и не толкова попълярната в нашите ширини система за работа с клиенти – vTiger.

В началото потърсих готово решение или акъл на готово, но не се получи и се хванах да го направя от съвсем в началото.

Задачата беше проста, от сайта на клиента да има форма, специфична за дадения вид бизнес, която след като се попълни от клиента да бъде вкарана директно като “Lead” в сметката на екипа по продажби и те да могат да започнат обработката на заявката.

Така или иначе vTiger поддържа доста начини за интеграция (SOAP, WebForms, REST, ), но все още не на небходимото ниво и само за стандартната функционаност. Затова написах собствена услуга за този специфичен клиент и сега всичко работи.

Полезно?

vTiger е доста лека и много добра система за работа с клиенти и лично бих я препоръчал на всеки собственик на малък или среден бизнес – безплатна и е доста “лека” в сравнение с другата подобна SugarCRM.

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

Twitter, Oauth и Фортумо (как да променяме twitter чрез SMS)

Вчера в свободното си време направих едно интересно приложение, комбиниращо SMS канала на Fortumo, оAuth API на twitter и малък сайт за управление, което в крайна сметка дава възможност да променяте състоянието си в Twitter през SMS съобщения.

Имах в началото малко проблеми с кодирането и с недочитането на изискванията на Oauth, но вече всичко работи както трябва и поне аз ще си го ползвам, когато не съм онлайн и нямам достъп до Интернет :)

Как работи всичко това, можете да видите тук. Разбира се, че цялата част е написана на PHP, макар, че се изкуших да я надраскам на нещо друго, но за съжаление не ми остана време.

Услугата е отворена за всеки, който има twitter и телефон :)

Прост бот за Twitter

Aко искате да започнете да програмирате за twitter под PHP, ето ви и добро начало. Да създадем един прост бот, който при получаване на директно съобщение със съдържание ‘късмет’ да връща на подателя късметче.

Tова колкото и да е просто, като логика, може да ви запознае с начина на работа на API на Twitter, за което и аз ще се погрижа по-нататък, но е добре, ако започнете сами :)

Лесно и полезно!

Дефинираме класа и задаваме променливите:

Class bTwitter{
var $username = ""; //тук се слага потребителското име на twiter акаунта, който ще слушаме
var $password = ""; //тук се слага паролата

Стъпка 2: Да напишем функция, която да взема директното съобщение от входящата ви кутия в Twitter:


function getmessages()
{
$username = $this->username;
$password = $this->password;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_URL, "http://twitter.com/direct_messages.json");
return $result = curl_exec($curl);
curl_close($curl);
}

Стъпка 3: Да напишем функция, която да изтрива съобщението, след като сме изпратили късметчето:


function deletemessage($id)
{
$username = $this->username;
$password = $this->password;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_URL, "http://twitter.com/direct_messages/destroy/".$id.".json");
curl_setopt($curl, CURLOPT_POST, true);
return $result = curl_exec($curl);
curl_close($curl);
}

Стъпка 4: Да направим функция, която да връща случаен късмет:

function getKasmet()
{
$k[] = "Държавна лотария, тото, на твоя страна е числото! ";
$k[] = "Стягай багажа за воаяжа! ";
$k[] = "Кариера ще ти е приоритет –я министър, депутат – напред! ";
$k[] = "Тук няма искаш и не щеш – в службата ще порастеш! ";
$k[] = "Не се шегувам, ти печелиш – късмета скоро ще намериш. ";
$k[] = "На съседа бричката си подари,че нова кола ще караш ти!";
$k[] = "От Бил Гейтс ще се отървеш, с компютър с Линукс ще се обзаведеш";
$k[] = "Паричките ти в портмонето ще са като звездичките в небето. ";
$k[] = "Яки запивки, чаровни забивки и много усмивки! Успехи в бранша и чупки в ханша, здраве в изобилие и радост до безсилие ";
$k[] = "По-добре е да не започваш, отколкото да спреш на половината път.";
$k[] = "За плахия и колебаещия се, всичко е невъзможно, защото му изглежда така.";
$k[] = "Не е познал сладкото този, който не е изпитал горчивото. Силата е търпение и време.";
$k[] = "Можете да постигнете всичко, което пожелаете, но не може да имате всичко на този свят...";
return $k[rand(0, 12)];
}

Стъпка 5: Да направим функция, която да изпраща съобщението до подателя:


function sendmessage($to)
{
$kasmet = $this->getKasmet();
$postData = array("user"=>"$to", "text"=>$kasmet);
print_r($postData);
$username = $this->username;
$password = $this->password;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_URL, "http://twitter.com/direct_messages/new.xml");
return $result = curl_exec($curl);
curl_close($curl);
}
}

Да изпробваме какво сме направили:

$bt= new bTwitter; // инициираме класа
$result = $bt->getmessages(); //вземаме съобщенията от входящата кутия
$r=json_decode($result,true); //декодираме формата им от json към масив
$size = count($r);
for ($i = 0; $i<$size; $i++) //започваме да ги обхождаме { // ако съдържат ключовата дума 'късмет' if (ereg('късмет',$r[$i]['text'])) { $bt->sendmessage($r[$i]['sender_screen_name']); // изпращаме съобщението
$bt->deletemessage($r[$i]['id']); //изтриваме директното съобщение
}
}

Оптимизации върху кода може да има много, което много добре разбирам :)

Идентичност директно в браузера

Мозила отново ме изненадаха, като предприеха тази стъпка, да предложат идентичност директно в браузера, базирана на openID.

Mоята идея върху, която работя е още по-изчанчена от тяхната имплементация, но това е повече от чудесно.

Какво предлагат те:
1. За сайтовете, които използват OpenID, всеки потребител, ще бъде логван автоматично (ако пожелае), само като посети страницата на сайта/услугата, която използва.
2. Въвеждането на OpenID идентификатора, ще става само веднъж и ще се пази в софтуерното приложение за контрол на идентичностите, а според мен, ще може да се съхранява и във други устройства (smart карта)

Това е една стъпка напред към създаването на me:// протокола, където браузера, ще бъде основен софтуер за управление на цяла компания и/или на моето пространство в Интернет.

Мобилна версия

Направих си версия на блога за мобилен телефон. Сега като се влезе с мобилно устройство се показва компактна версия на блога, оптимизиран само за мобилни телефони. Тъй като бъдещето е в мобилните технологии и съдържанието ще трябва да е достъпно по всички възможно начини такава стъпка беше наложителна.

Ако използвате мобилен телефон с браузър или iPhone ще виждате тази нова версия. Ако и вие искате да си имате такава, можете да използвате това разширение за wordPress.

Разбира се, ако можете и имате време да си я направите сами, би било най-добре.

Най-добрите скриптове за да си направите социална мрежа

В последно време се появиха много скриптове, които ви дават възможност да си направите сайт, който да бъде като социална мрежа.

Ще разгледам два, които можете да използвате както намерите за добре.

1. Elgg възникна като система за отворено обучение, но все повече минава към социалния софтуер. Разполагате с много добра система, която можете да моделирате, така, че да работи както искате и още по-важно да изглежда както искате. Има създаване на профили, групи, комуникация между потребителите, новини и много други.

Ето и два примера.

Отрицателно
(-) Няма превод на български;
(-) Основния дизайн е доста дървен и трябва да се преработи, но разполага с няколко вградени дизайна. Ако искате да изглежда добре, всичко е във вашите ръце;

Положително
(+) Инсталира се лесно, настройва се лесно, работи лесно;
Continue reading “Най-добрите скриптове за да си направите социална мрежа”