GGAPI: Notyfikacje, wpisy na pulpicie

GGAPI REST cały czas się rozwija. Udostępniamy nowe zasoby dla aplikacji w GG.pl:

    // inicjalizacja GGAPI z parametrami aplikacji client_id i client_secret
    // pobranymi z konfiguracji aplikacji na http://dev.gg.pl
    $gg = new GGAPI('client_id', 'client_secret');

Wysłanie wiadomości na pulpit użytkownika:

$gg->sendEvent($message, $link, $image);

Parametry

  • image - link do obrazka związany z wpisem
  • message - treść wpisu
  • link - link do strony www

Wysłanie powiadomienia do jednego użytkownika (z listy znajomych) lub do wszystkich znajomych.

$gg->sendNotification($message, $link, $to);

Parametry

  • to - odbiorca notyfikacji (przyjmowane wartości: numer Gadu-Gadu - przy wysyłaniu do osoby z listy przyjaciół, null - przy wysyłaniu do wszystkich przyjaciół)
  • message - treść notyfikacji
  • link - link do strony www
Powiadomienie pojawi się znajomym w serwisie GG.pl
jak również w komunikatorze.

Przeczytaj całość »

Autor Przemek Łącki, 15/11/2010, w GG.pl, GGAPI, Gadu-Gadu Brak Komentarzy »

Problem z mallociem

Cała sprawa zaczęła się od tego, że zaobserwowaliśmy bardzo dziwne zachowanie naszych serwerów komunikatora. W momencie, gdy malał ruch na serwerach, zwiększało się obciążenie procesora. Wszelkie możliwe statystyki spadały, a procesor rósł... Nie było innego pomysłu, żeby sprawę zbadać, oprócz sprofilowania aplikacji. Całą historię zmuszenia OProfile'a do działania na Xenie można przeczytać tutaj:

http://dev.gg.pl/blog/gadu-gadu/oprofile-na-xenie/

Okazało się,  że problemem jest implementacja malloca w glibc wersji <2.6. Używana jest tam stara implementacja ptmalloc2, która zachowuje się w taki nietypowy sposób. Poniżej link, gdzie można przeczytać o tym więcej:

http://sourceware.org/bugzilla/show_bug.cgi?id=4349

Próbowałem ściągnąć ptmalloc3 ze strony http://www.malloc.de/en/ i zlinkować z naszą aplikacją serwerową, ale po paru godzinach bojów i crashy nie udało mi się zmusić jej do działania. Problemem było chyba to, że inne współdzielone biblioteki korzystały z innego malloca niż główna binarka. Nie jestem tego pewien i nie drążyłem bardzo tematu, ponieważ i tak mieliśmy plan przejść na nowszę dystrybucję Debiana (z etch na lenny) i to był bardzo dobry powód, żeby się za to w końcu zabrać (lenny zawiera glibc w wersji 2.7).

Tak więc wkrótce nasze serwery będą przechodzić upgrade z etcha na lenniego. Jeśli wynikną z tego jakieś ciekawe historie, to podzielę się tym z Wami na łamach poniższego blogu...

Autor gleszczynski, 10/11/2010, w Gadu-Gadu Brak Komentarzy »

OProfile na Xenie

Ostatnio mierzyłem się z problemem profilowania naszego serwera komunikatora GG. Nie było to proste i pomyślałem, że warto się podzielić z Wami wiedzą, którą zdobyłem.

Zacząłem od użycia gprofa, ale okazał się totalnym niewypałem. Nie udało mi się go zmusić do sensownego działania. Zdecydowanie nie polecam i nie będę się więcej na jego temat rozpisywał :-)

Następnie zmierzyłem się z oprofilem i tu udało się osiągnąć cel. Aczkolwiek na Xenie (systemie dla wirtualizowania maszyn - dla tych, co nie wiedzą) nie działa funkcja generowania callstacku. Pisałem do developerów Xena i Xen-OProfile'a i nie dostałem żadnej odpowiedzi. W necie też nie udało mi się nic znaleźć, więc strzelam, że to nie działa. Jeśli się mylę, to byłbym bardzo wdzięczny za pomoc, jak tą opcję zmusić do działania na Xenie.

Poniżej przedstawiam instrukcję, jak włączyć profilowanie na Xenowych systemach.

Najpierw na XenHoście i XenGuestach, które chcemy profilować trzeba skompilować i zainstalować OProfile. Należy wykonać poniższe kroki:

  1. Instalujemy paczki debianowe 'gcc', 'g++', 'libopt-dev' i 'binutils-dev'.
  2. Ściągamy źródła OProfile'a ze strony http://oprofile.sourceforge.net
  3. Ściągamy łatkę Xenową dla OProfile'a ze strony http://xenoprof.sourceforge.net
  4. Aplikujemy łatkę na źródła (za pomocą komendy w stylu patch -p1 < oprofile-0.9.5-xen.patch).
  5. Następnie właściwa kompilacja i instalacja: ./configure --with-kernel-support; make; make install
  6. Na koniec trzeba (być może nie jest to obowiązkowe, ale nie testowałem) ściągnąć plik z symbolami kernela i wgrać do /boot (u mnie był to plik xen-3.2-1-amd64-syms).

Teraz możemy już włączyć profilowanie (kolejność ma znaczenie):

  1. Na XenHoście wykonujemy: opcontrol --start-daemon --xen=/boot/xen-3.2-1-amd64-syms --no-vmlinux --active-domains= <oddzielone przecinkiem numery domen xena, które chcemy profilować - zwracane przez 'xm li'>
  2. Na XenGuestach wykonujemy: opcontrol --start --xen=/boot/xen-3.2-1-amd64-syms --no-vmlinux
  3. Na XenHoście wykonujemy: opcontrol --start
  4. Od tej chwili powinniśmy mięć dostępne wyniki profilowania na hoście i na guestach.

Nie będę się rozpisywał na temat obsługi oprofile, bo od tego jest jego dokumentacja :-) Powyższa instrukcja ma tylko pomóc włączyć OProfile na Xenie. Poniżej jeszcze kilka uwag:

  • OProfile potrafi się zwiesić i wtedy nie pomogało mu nic oprócz restartu całego Xena (występuje wtedy błąd dostępu do filesystemu OProfile i żaden opcontrol --deinit nie pomaga).
  • Warto sobie ściągnąć bibliotekę libc z symbolami i wgrać do /lib - potem potrzebowałem restartu Xena, żeby to zaczęło działać.
  • OProfile potrafi się wyłączyć (nie jestem pewien, czy na jego stabilność nie miało wpływu wgranie libc z symbolami) i trzeba go wtedy znów włączyć przez --start.

Poniżej zamieszczam jeszcze skrypt, który jest odpalany co minutę z crona, żeby zbierać wyniki profilowania:

# na wypadek padu
/usr/local/bin/opcontrol --start --xen=/boot/xen-3.2-1-amd64-syms --no-vmlinux

date >>/var/log/op_sys_rep.txt
/usr/local/bin/opreport >>/var/log/op_sys_rep.txt
echo -e "\n\n\n" >>/var/log/op_sys_rep.txt

date >>/var/log/op_symbol_rep.txt
/usr/local/bin/opreport -l | head -60 >>/var/log/op_symbol_rep.txt
echo -e "\n\n\n" >>/var/log/op_symbol_rep.txt

/usr/local/bin/opcontrol --reset

I to by było na tyle. Za chwilę dodam jeszcze post, czemu potrzebowaliśmy sprofilowania naszego serwera i co ciekawego z tego wynikło :-)

Autor gleszczynski, 10/11/2010, w Gadu-Gadu Brak Komentarzy »

Katalog oraz manager aplikacji – lista nowości w GG.pl

Changelog GG.pl:

  • dodano katalog aplikacji,
  • dodano manager aplikacji,
  • dodano obsługę dynamicznego panelu Inne w pasku aplikacji dla niskich rozdzielczości,
  • dodano możliwość usuwania komentarzy innych osób z własnego profilu,
  • dodano możliwość dodana wpisu z załącznikiem (zdjęcia, wideo, link) bez własnego komentarza (mój pulpit, profil, poleć na gg, konferencja),
  • dodano powiadomienie o zaproszeniu do grupy,
  • poprawiono stylowanie walla,
  • poprawiono odświeżanie profilu użytkownika po przyjęciu zaproszenia,
  • poprawiono przekierowywanie na adres wewnętrzny po przejsciu przez Centrum Logowania,
  • poprawiono odczyt meta tagów przez crawler linków w poście,
  • zmieniono styl okna aktywacji konta,
  • zmieniono teksty powiadomień.

Changelog aplikacji Grupy w GG.pl:

  • dodano przekazywanie adresów z aplikacji Grupy do iframe'a GG.pl,
  • dodano główny preloader dla aplikacji Grupy,
  • dodano możliwość usuwania komentarzy innych użytkowników dla właściciela grupy,
  • dodano możliwość dodana wpisu z załącznikiem (zdjęcia, wideo, link) bez własnego komentarza (wall grupy),
  • dodano przycisk zaproś znajomych przy liście uczestników grupy,
  • poprawiono możliwość edycji nazwy istniejącej grupy,
  • poprawiono odświeżanie zmienionych nazw użytkowników w liście uczestników grupy,
  • poprawiono (ujednolicono) przyciski stronicowania,
  • poprawiono obramowanie dedykowanej nazwy przycisku dołącz przy edycji grupy,
  • poprawiono stylowanie przycisków w edycji grupy,
  • poprawiono stylowanie walla,
  • poprawiono formatowanie długich nazw grup na listach,
  • poprawiono przechodzenie do zakładki wszystkie po ponownym wejściu w aplikację Grupy,
  • poprawiono licznik uczestników grupy po dołączeniu do niej,
  • wyniesiono aktywację konta z aplikacji Grypy do GG.pl.

Uwagi można zgłaszać na forum http://forum.gadu-gadu.pl/forumdisplay.php?f=58

Autor Michał Abram, 09/11/2010, w GG.pl, Gadu-Gadu Brak Komentarzy »
Copyright © GG Network S.A.
Engine by Wordpress
Aktualności RSS