logical

Top Page  |  Lists  |  User Login

logical
  • Andrei Gheorghe, 38
  • Bucureşti, România
  • Work: Infineon Technologies
  • School: Fac. de Electronică şi Telecomunicaţii

 

Total Page Views

182,104

RECENT COMMENTS

November 25, 2022 - 20:20

Adi

Cine mai explică acum că dacă nu egalau ecuadorienii, "olandejii" conduceau in c...

posted on “dacă nu egalau englezii, danezii ar fi condus în continuare”


June 20, 2022 - 20:18

Cătălina

Nişte angajaţi ai Urban Serv sunt foarte mândri de ei şi în ziua de astăzi pentr...

posted on mud


May 24, 2022 - 14:33

logical

există şi nişte bonus pack-uri în joc, dacă faci nişte achievementuri primeşti u...

posted on mai rapid ca rapidu


May 24, 2022 - 14:31

logical

regula de cinci secunde a devenit mult mai periculoasă de când cu pandemia... nu...

posted on curcubeie pe asfalt


May 24, 2022 - 14:27

logical

şi ca fun fact, nici măcar nu este primul chirurg din echipa Rapidului... am avu...

posted on te apără de goluri şi cardiace


May 24, 2022 - 14:25

logical

eu merg aproape sigur pe varianta b. pentru că e destul de uşor să verifici că a...

posted on achtung: se fură motoare maro cu jojă neagră


May 23, 2022 - 21:17

Specter

Am văzut şi eu trailerul mai demult. Chiar mă întrebam dacă au plătit redevenţă ...

posted on mai rapid ca rapidu


May 23, 2022 - 21:12

Specter

Toate ca toate, dar eu fără cartofi prăjiţi nu-mi fac transplant!

posted on 1+1 gratuit: Organe


May 23, 2022 - 21:09

Specter

Eh, când cei mai tineri fani ai Rapidului se apropie de 40 de ani, or fi zis şi ...

posted on te apără de goluri şi cardiace


May 23, 2022 - 21:05

Specter

Sunt două variante aici: a. Ei nici nu s-au gândit dacă o să meargă maşina aia ...

posted on achtung: se fură motoare maro cu jojă neagră


May 23, 2022 - 20:54

Specter

Oare regula de cinci secunde se aplică şi la compresor?

posted on curcubeie pe asfalt


April 2, 2022 - 13:48

logical

pare că nu...

posted on de la student la senior staff engineer


April 1, 2022 - 10:30

Adi

La multi ani? Mai primeşti ceva anul ăsta?

posted on de la student la senior staff engineer


February 22, 2022 - 12:18

Specter

Măcar nu au fost 18...

posted on i-a luminat farul


February 10, 2022 - 11:54

Specter

Scrie chiar de două ori! Oare a uitat că a scris prima oară, sau chiar l-a mai c...

posted on certitudinea marilor împliniri

   "Burn Bucharest, Burn You Fucking Maniacs" [Lake Of Tears, 11 Martie 2006]

small code optimization
small code optimization

ieri am trecut din nou la ora de iarnă... cu ocazia asta, am descoperit un bug în codul blogului... era legat de modul în care determinam dacă un post sau comentariu a fost scris cât timp era ora de vară sau ora normală...

mi-am adus aminte (nu cu plăcere) de ziua (de acum doi ani şi un pic) în care am scris codul care să returneze exact ce-am zis mai sus...

iată ce mizerie aveam în cod, scris cu mânuţele mele astea două:

<?php

  if ($year == ‘2012’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 25)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 27)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2011’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 27)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 29)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2010’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 28)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 30)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2009’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 29)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 24)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2008’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 30)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 25)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2007’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 25)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 27)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2006’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 26)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 28)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

  if ($year == ‘2005’)
    switch($month)
    {
      case ‘January’:
      case ‘February’:
      case ‘November’:
      case ‘December’:
        $time_zone = ‘EET’;
        break;
      case ‘March’:
        if ($day < 27)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      case ‘October’:
        if ($day > 30)
          $time_zone = ‘EET’;
        else
          $time_zone = ‘EEST’;
        break;
      default: $time_zone = ‘EEST’;
    }

?>

deci da, 186 linii de cod, care ieri au fost înlocuite cu mai elegantul cod de jos:

<?php

  $epoch = get_the_time(‘U’);
  $local = localtime($epoch, true);
  if ($local[tm_isdst])
    $time_zone = ‘EEST’;
  else
    $time_zone = ‘EET’;

?>

nu ştiam eu pe atunci ce e aia unix epoch time, cu ce se mănâncă şi dacă nu există vreo funcţie directă care să-ţi calculeze dacă era dst sau nu...

acum, bineînţeles că o să vă întrebaţi, bah ce pana mea ne arată ăsta aici doo’ste de linii de cod, explicându-ne cât de ţicnit e...

partea cea mai tare dragi prieteni este că mă chinuisem la tot acel cod doar pentru a afişa după ora postului EET sau EEST... atât, acea informaţie nu e folosită în afişarea orei, doar a acelui indicator... este fabulos cât de obsedat pot să fiu...

nota 1: este absolut genial ca un post cu titlul “small code optimization” să aibă id-ul 8051... asta e doar pentru cunoscători...

nota 2: EET = Eastern European Time, EEST = Eastern European Summer Time

Tags: , ,

Monday October 31, 2011 - 23:58pm (EET)

Comments

(27 total) Post a Comment

ce tare e aia cu 8051 :D

şi eu am făcut la şcoală unix epoch time :D

Tuesday November 1, 2011 - 00:01am (EET) Comment Link

anca

dude, that is wrong on so many levels :p

Tuesday November 1, 2011 - 10:26am (EET) Comment Link

date('I'); /* ? */

Tuesday November 1, 2011 - 21:18pm (EET) Comment Link

Specter

Your post is wearing blue...

Tuesday November 1, 2011 - 22:01pm (EET) Comment Link

haha, Sorin... that would have been too easy :D

Tuesday November 1, 2011 - 22:25pm (EET) Comment Link

ha, de fapt, se pare că există şi varianta date('T') care returnează direct „Timezone abbreviation”... super tare :D

Tuesday November 1, 2011 - 22:27pm (EET) Comment Link

Eu apreciez că eşti obsedat, dar este so wrong să scrii 186 de linii pentru get time :D

Tuesday November 1, 2011 - 22:31pm (EET) Comment Link

de aia îmi place mie PHP-ul. există o soluţie pentru orice prostie. şi dacă totuşi nu există, pot să-i dau cu system() :D.

Tuesday November 1, 2011 - 22:31pm (EET) Comment Link

(186 având în vedere că făcuseşi doar până în 2012, ia să vedem pe 10 ani) :))

Tuesday November 1, 2011 - 22:34pm (EET) Comment Link

da da da... păi de aia mă apucasem să-l refac, că ştiam că de la anul n-o să mai ştie ce să afişeze...

pe de altă parte, vârsta mea din căsuţa aia din stânga sus este calculată automat :D

Tuesday November 1, 2011 - 22:35pm (EET) Comment Link

nu se pune, nu a fost de la început, s-a ocupat Y! de asta :D

Tuesday November 1, 2011 - 22:36pm (EET) Comment Link

dacă ai fi fost fată şi ar fi fost vârsta calculată automat, după o anumită vârstă ai fi învăţat PHP doar ca să nu mai fie calculată automat. (şi le-ai zice vizitatorilor că e o eroare de programare)

Tuesday November 1, 2011 - 22:38pm (EET) Comment Link

:( Sorin read my mind

Tuesday November 1, 2011 - 22:39pm (EET) Comment Link

stai, cum adică nu se pune că s-a ocupat Y! de asta ?

Tuesday November 1, 2011 - 22:43pm (EET) Comment Link

eh, păi nu a fost automat făcut de tine de la început :D

Tuesday November 1, 2011 - 22:44pm (EET) Comment Link

ca la edison şi tesla :D

Tuesday November 1, 2011 - 22:45pm (EET) Comment Link

ba da măi, de la Yahoo nu am putut copia decât clasele CSS, adică aspectul vizual pentru că niciodată nu poţi vedea codul php al unui site...

deci tot ce e php (automat sau nu) e scris de mine în aşa fel încât să semene perfect cu ce avea şi Yahoo-ul, dar nu e direct copiat de la ei...

Tuesday November 1, 2011 - 22:46pm (EET) Comment Link

poţi să vezi codul dacă nu au short_tags = On şi le folosesc, sau dacă cineva a luat codul php şi l-a pus într-un comentariu html. sau dacă a făcut echo file_get_contents(); crezând că asta e un fel de require :D. (toate sunt întâlnite de mine)

Tuesday November 1, 2011 - 22:51pm (EET) Comment Link

funny...

Tuesday November 1, 2011 - 22:52pm (EET) Comment Link

aoleu, iar te bat :)) ştiu că nu poţi vedea codul php şi că tu ai luat doar css şi că ai scris alt cod. dar nu a fost aşa de la început, nu e ideea ta, asta zic

Tuesday November 1, 2011 - 22:52pm (EET) Comment Link

ah, la idee te referi... da, să ştii că nu m-am dus cu ea la biroul de patente :D

Tuesday November 1, 2011 - 22:53pm (EET) Comment Link

nu a fost ideea lui să se calculeze vârsta automat pe un site? probabil nici a celor de la yahoo nu a fost ..

Tuesday November 1, 2011 - 22:55pm (EET) Comment Link

aoleu aoleu change the topic

Tuesday November 1, 2011 - 22:56pm (EET) Comment Link

voi nu sunteţi în aceeaşi cameră cu laptopurile şi vorbiţi între voi prin commenturi pe blogul meu nu ? că ar fi prea autistic...

Tuesday November 1, 2011 - 22:56pm (EET) Comment Link

eu sunt în pat cu pisica, sorin nu ştiu ce face. probabil el e cu două :D

Tuesday November 1, 2011 - 22:57pm (EET) Comment Link

două pisici şi-un porc :D (pentru cunoscători)

Tuesday November 1, 2011 - 22:59pm (EET) Comment Link

Deci ca sa inteleg... If year > 2012 then halt?

stii la ce ma refer :)

Wednesday November 2, 2011 - 11:14am (EET) Comment Link

Compose a comment for this post

Limit 65535 characters.No HTML, please.

Notify me of followup comments via e-mail

SEARCH
ARCHIVE

Valid HTML 4.01 Transitional