Gmail – Ai uitat atasamentul

Tocmai am trimis un mail in engleza in care, pe undeva prin text, la un moment dat am scris ‘find attached ‘. Cand sa dau send, surpriza de la Gmail. Mi-a aparut un mesaj ca cica am scris in text ‘find attached’ si nu am atasat nici un document si sa verific daca nu cumva am uitat :).  Cred ca mi s-a intamplat de (prea) multe ori sa trimit mailuri fara atasament desi scrisesem in text ‘vezi atasamentul’. Cam asta inseamna un program prietenos.

Aflarea saptamanii din care face parte o data

Astazi m-am luptat ceva timp cu o problema de care cred ca s-au mai lovit si altii. Am o data calendaristica si vreau sa afisez din ce saptamana face parte. De exemplu, 14 aprilie 2010 (14-04-2010) face parte din saptamana 12-04-2010 – 14-04-2010.

Asadar, pentru exemplul nostru: 14-04-2010

$day = '14';
$month = '04';
$year = '2010';

Pentru aceasta trebuie sa aflam a cata zi din saptamana este:

$unixdate = mktime( 12, 0, 0, $month, $day, $year );
$dayofweek = date("w", $unixdate);

Pentru a afla ziua de luni dinainte de aceasta data:
$monday = date(‘Y-m-d’, mktime(0, 0, 0, date(‘m’, $unixdate), date(‘d’, $unixdate) – ($dayofweek – 1), date(‘Y’, $unixdate)));

Pentru a afla ziua de duminica dupa aceasta data:
$sunday = date(‘Y-m-d’, mktime(0, 0, 0, date(‘m’, $unixdate), date(‘d’, $unixdate) + (7 – $dayofweek), date(‘Y’, $unixdate)));

In final:

echo 'Data face parte din saptamana '.$monday.' - '.$sunday;

Bineinteles exemplul poate fi folosit pentru a afla orice data daca adaugam sau scadem un numar orecare de zile la o data stiuta. Nu trebuie decat inlocuita partea bolduita cu numarul de zile pe care dorim sa le adaugam sau scadem.

Despre Type Hinting in php

Am inceput sa citesc PHP Object, Patterns, and Practice si am inteles in sfarsit ce inseamna Type Hinting, desi il folosisem, dar nu stiam ca se numeste asa.
De exemplu, fara Type Hinting daca ai o metoda:

class MyClass {
  public function myFunc($unObiect) {
    echo "bla bla";
  }
}

poti sa apelezi aceasta metoda:

$obiect = new MyClass();
$obiectRau = new clasaRea();
$obiectBun = new clasaBuna();

$obiect->myFunc($obiectBun);

DAR si cu

$obiect->myFunc($obiectRau);

Cu Type Hinting, am rescrie myFunc astfel:

class MyClass {
  public function myFunc(clasaBuna $unObiect) {
    echo "bla bla";
  }
}

acum, daca vom apela

$obiect->myFunc($obiectRau); 

va da Fatal Error. De ce? Pentru ca $obiectRau nu este de tipul clasaBuna, asa cum cere definitia metodei.

Sper ca am inteles corect 🙂

Google traduce din si in Romana

La optiunile de Language Tools ale Google a aparut si limba Romana pentru a se traduce din ea in alte limbi si invers. Nu este deloc buna traducerea dar apreciez initiativa. Mai jos un text de pe CNN tradus de Google.

Textul original:
Many of the phones sold so far have been bought legitimately in one country, modified to work on any cellular network, and resold in countries where Apple doesn’t have agreements to sell the iPhone. The trend expands the iPhone’s reach but deprives Apple of some of the subscriber fees that Apple splits with its carrier partners.

Traducerea:
Multe din telefoanele vândute până în prezent au fost achiziţionate în mod legitim o ţară, modificate pentru a funcţiona pe orice retea celulare, revândute şi în ţările unde Apple nu au acorduri de a vinde de iPhone. Tendinta extinde iPhone a ajunge la Apple, dar privează de o parte din taxele de abonat care Apple şpalturi cu partenerii de transportator.

Intex RTL 8139D pe Debian Linux

Am cumparat zilele trecute o placa de retea de la Diverta la pretul de 14 lei. Este un Intex 10/100 Ethernet Card, cu numele de cod Intex RTL 8139D, ceea ce m-a indus in eroare, crezand ca are celebrul chipset 8139. Se pare ca nu e asa ci este doar chinezarie cu numele special pus pentru a induce in eroare. Am ajuns acasa, am instalat-o pe Windows si am trecut sa o configurez si pe Linux. Aici surpriza: nu exista. La lspci imi zice:
01:07.0 Ethernet controller: Hangzhou Silan Microelectronics Co., Ltd. Unknown device 2031 (rev 01)

Am inceput sa caut pe net o solutie si am gasit-o aici.
Pe scurt, pe debian-ul meu se poate folosi ndiswrapper care este in pachete. Daca nu il ai instalat, instaleaza-l.
Dupa aceea se copiaza pe hard-disk (de exemplu in /home/razvan/driver) de pe CD-ul de instalare cu care vine placa, din directorul winXP fisierele:
sInt.sys
si
netslnt.inf

Se intra in directorul unde le-am copiat /home/razvan/driver si se da comanda:
ndiswrapper -i netslnt.inf

Driver-ul ar trebui sa fie instalat acum. Pentru verificare se da comanda:
ndiswrapper -l
Daca afiseaza:
netslnt  driver installed
atunci totul este OK, altfel poti incerca cu driverele din Win2k sau altele de windows de pe CD.

Acum trebuie sa incarcam modulul prin comanda:
modprobe ndiswrapper

iar in fisierul
/etc/modprobe.d/aliases

adaugam linia
alias wlan0 ndiswrapper

Acum ar trebui sa vedem noua placa de retea cu
ifconfig -a
Mie imi apare ca
wlan0     Link encap:Ethernet

Cam asta a fost tot.

XOOPS Hacks

Zilele astea am avut probleme cu un site bazat pe XOOPS. Se pare ca unele scripturi sunt destul de vulnerabile astfel incat un turc a reusit sa insereze in tabela de stiri si de config cod html/javascript. Am pus modulul XOOPS Protector. Sper ca de acum sa nu prind picior de turc pe siteu ala.

P.S. For Mahsen: Atatürk sucks. By the way, he was gay or not? Spam here: x-murat@hotmail.com