W związku z konieczną do zapełnienia dziurą w naszej rodzimej części sieci – powstał nowy serwis, pozwalający użytkownikom na składanie dyspozycji przekazywanych przyjaciołom po.. ich śmierci. Serwis – jak pozostałe w fazie planów i budowy – spięty z 2o6:OpenID. Poniżej logo i nazwa ;). Więcej informacji – w samym serwisie afterme.pl

Uprzedzając pytania – dlaczego usługi są płatne ( aktywacja konta i abonament 3 miesięczny – 50zł, kolejne abonamenty 9zł ) odpowiadam iż – po wielu rozmowach przeprowadzonych ze znajomymi oraz testerami, w celu wyeliminowania jakichkolwiek nadużyć z serii “założę konto za darmo, przestanę się odzywać, zobaczę czy coś przyślą” oraz nieugiętą postawą firm kurierskich oraz telekomunikacyjnych. żądających zapłaty za swoje usługi – konieczne było wprowadzenie płatności.

Po długim czasie nieobecności i braku nowych notek ( jestem usprawiedliwiony nakładem pracy włożonym w nowy serwis prv.pl :) ) z nieukrywanym zadowoleniem zapraszam do rejestracji w tworzonej po nocach grupie serwisów 2o6.pl. Z założenia same 2o6.pl jest serwisem utrzymującym OpenID ( nazywane dalej 2o6:OpenID ) dla pozostałych ( będących w fazie developerskiej ) serwisów. Niedowiarków informuję – iż logowanie pomiędzy nimi nie polega na korzystaniu bezpośrednim z jednej bazy ( a co :P ) a wywoływaniu odpowiednio przygotowanego API, zwracającego jedynie XML’e. To tak pobieżnie, tymczasem zapraszam do nowego pctk.org które w końcu doczekało się obsługi profili użytkowników oraz.. dodawania do ulubionych i zgłaszania nadużyć. Niby mała rzecz – a cieszy.

pctk.org - skracanie linków, śmieszne filmy, zabawne zdjęcia.
Dla ciekawskich – porzuciłem php jako zbyt toporne i oporne na rzecz Ruby on Rails. Szczerze polecam książkę Jarka Zabiełło, o której możecie dowiedzieć się nieco na jego blogu. Książka ta jest doskonałym wstępem do nauki RoR’a i w sposób czytelny wyjaśnia zarówno zagadnienia z gatunku ‘n00b’, jak i te wymagające posiadania nieco większej wiedzy o samych railsach.

Z przyczyn obiektywnych lub też nie – po prawie rocznym korzystaniu z usług, zmuszony zostałem do zmienienia dotychczasowego serwera dedykowanego z webtropii na ovh. Plusem tych zmian, dość znaczącym zresztą, jest kontakt z serwisem – w wypadku ovh – całkowicie bezproblemowy i szybki, stojący w opozycji do lakonicznych tłumaczeń łamaną angielszczyzną pracowników supportu z niemiec. Dodatkowym plusem jest naprawdę przejrzysty panel ( wielojęzyczny ), w którym właściwie wszystkie możliwe operacje związane z wykupionym serwerem da się załatwić “od ręki”. Uwagę moją przykuło dodatkowe miejsce na backup na serwerze ftp – równe powierzchni dysku. Z uwagi na to że jestem strasznie leniwy a backupów nie chciało mi się ( i pewnie nie będzie chciało jeszcze przez długi czas ) regularnie samodzielnie wykonywać, “na szybko” popełniłem poniższy skrypt – który ( mam nadzieję ) przyda się nie tylko użytkownikom ovh. Prawa autorskie na licencji RPL – czyli Religion Public License ( Bierzcie i jedzcie z tego wszyscy ).
#!/usr/bin/python
from ftplib import FTP
from time import strftime
import MySQLdb, os, sys, string, commands
### CONFIG
dbrootpasswd="haslorootamysql"
ftphostname ="hostftp"
ftpuserlogin="loginuzytkownikaftp"
ftpuserpass ="haslouzytkownikaftp"
maindirect ="/sciezka/do/katalogu/ze/skryptem"
keeps ="11" # liczba dni backupu które należy zachować na serwerze.
def WriteLog(backupDate):
logw = open("ftp-backup.log", "a")
logw.write(backupDate +".tar\n")
commands.getstatusoutput("mkdir "+backupDate)
logw.close()
def MySQLBackup(backupDate):
print "Getting MySQL backup.."
commands.getstatusoutput("mysqldump -u root -p"+dbrootpasswd+" --all-databases > "+backupDate+"/"+backupDate+".db")
print "Database backup complete."
def HostingBackup(backupDate):
print "Packing up hosting directory."
commands.getstatusoutput("tar -cf "+backupDate+"/home-"+backupDate+".tar /home/hosting")
print "Hosting directory packed."
def FtpSendThatShit(backupDate):
print "Sending everything to backup server."
ftp = FTP(ftphostname,ftpuserlogin,ftpuserpass)
ftp.storbinary("STOR "+backupDate+".tar", open(backupDate+".tar", "rb"), 1024)
ftp.quit()
print "Everything ok. Quitting."
def FtpCheckOld(oldDate):
print "Cleaning old stufffffff pufff.."
ftp = FTP(ftphostname,ftpuserlogin,ftpuserpass)
ftp.delete(backupDate+".tar")
ftp.quit()
print "Puffff....."
def CleanLocal(backupDate):
print "Local filesystem cleaned."
commands.getstatusoutput("rm -fr "+backupDate+"*")
os.chdir(maindirect)
try:
log = open("ftp-backup.log", "r")
logList = log.readlines()
log.close()
backupDate = strftime("%Y-%m-%d")
print "Backup: "+backupDate
try:
logDate = logList[len(logList)-1].split('\n')
oldDate = logList[len(logList)-11].split('\n')
if logDate[0] == backupDate +".tar":
print "Backup for today was created."
exit(-1)
else:
WriteLog(backupDate)
MySQLBackup(backupDate)
HostingBackup(backupDate)
except:
WriteLog(backupDate)
MySQLBackup(backupDate)
HostingBackup(backupDate)
print "And now.. packing up everything.."
commands.getstatusoutput("tar -cf "+backupDate+".tar "+backupDate)
try:
FtpSendThatShit(backupDate)
except:
print "Something is fucked up."
try:
FtpCheckOld(oldDate)
except:
print "Nothing to clean.."
CleanLocal(backupDate)
except:
commands.getstatusoutput("touch ftp-backup.log")
commands.getstatusoutput("echo \"error\" > ftp-backup.log")
print "Small error, try again."
exit(-1)
