Pereiti prie turinio

Jonaitis

Nariai
  • Pranešimai

    2.832
  • Užsiregistravo

  • Lankėsi

  • Laimėta dienų

    2
  • Atsiliepimai

    100%

Jonaitis Pranešimai

  1. 
    mysql> SELECT DATEDIFF('2013-03-20','2013-03-10') AS skirtumas;
    +-----------+
    | skirtumas |
    +-----------+
    |        10 |
    +-----------+
    1 row in set (0.00 sec)
    

     

    Ir kam naudot kažką papildomai iš PHP?

    Mintis teisinga. Nebuvo nurodyta kokiame kontekste reikia rezultato. :)

    Kuo daugiau alternatyvų pateiksime, tuo didesnė tikimybė, kad viskas bus panaudota pagal paskirtį.

  2. Sveiki,

     

    MySQL DB turiu pradinę datą ir galutinę datą.

    Noriu gauti šių datų skirtumą t.y. galutinedata - pradinedata.

     

    Kaip tai padaryti?

     

    Rašau taip:

    $Data = $row['galutinedata'] - $row['pradinedata'];

     

    Tačiau šitą skaičiuoja tik metų skirtumą. T.y. dabar man išveda 0.

     

    PVZ.

     

    Gal. data: 2013-03-20

    Pra. data: 2013-03-10

     

    Noriu kad ats būtų: 10. T.y. 2013-03-20 - 2013-03-10.

     

    Kaip tai gauti?

     

    Dabar man išveda 0. Jei galutinę datą padarau 2014 išveda 1.

     

    Pirmiausia, PHP prieš vykdydama skyrybos operaciją string konevertuoja į skaičių. T.y. eilutė

     

    '2013-03-20' - '2013-03-10'

     

    prieš skaičiuojant skirtumą tampa tokia:

     

    2013 - 2013

     

    Dėl datų. Jei nori surast skirtumą, paprasčiausias variantas būtų susikurti DateTime objektus ir panaudoti tam skirtus metodus:

     

    <?php
    
    $dateFrom = new DateTime('2013-03-10');
    $dateTo = new DateTime('2013-03-20');
    
    echo $dateTo->diff($dateFrom)->format('%a days'); // Rezultatas: 10 days

     

    Kitas variantas (nerekomenduoju) būtų gauti Unix timestamp ir paskaičiuoti skirtumą matematiškai:

     

    <?php
    
    $timeFrom = strtotime('2013-03-10');
    $timeTo = strtotime('2013-03-20');
    
    printf("%d days", ($timeTo - $timeFrom) / 60 / 60 / 24); // Rezultatas: 10 days

  3. Iš esmės naudoju chrome, bet įsirašęs win8 pastebėjau jog IE 10 labai patobulintas ir tikrai malonu juo naudotis :)

    Aš tai pastebėjau stipriai apkarpytą MSN puslapį kuris tiesiog skraido. Paclickinau, pasidžiaugiau, parsisiunčiau savo mėgstamą naršyklę ir palaidojau IE10 :)

     

    Jau beveik 10 metų naudojuosi Opera, bet svarstau ant Chrome pereiti. Iš esmės dėl to, kad Google ir šiaip dauguma puslapių nepalaiko Opera.

     

    folk, pakalbėk. Būtų įdomu išgirsti argumentus, kuriuos turi net nebandęs daikto.

  4. Prieš mėnesį įsigijau Intel® SSD 330 Series 180GB. Nusiskundimų aišku jokių :)

    Pasirinkau būtent šį modulį dėl trijų priežasčių:

    1. Rekomendacijos iš nusimanančio/patyrusio/išbandžiusio žmogaus (a.k.a. sysadmin)

    2. Intel

    3. Lyginant su kitais, gera kaina (400Lt prieš mėnesį)

     

    Dar gavau rekomendaciją tokios didelės talpos nepirkt, bet.. :) Kaina nuo 120GB modelio skyrėsi santykinai labai nežymiai, tai nesusilaikiau.

    Dabar galėčiau tą pačią rekomendaciją perduot kitiems. Jei yra galimybė šalia turėti HDD, tai tokio didelio SSD tikrai nereikia.

  5. Dar tiek mazdaug truksta,kad galeciau pradeti nuosava versla. Turiu jau ideja. Dabar reikia tik pinigu.O paskolos kazkaip netraukia.

    Ar tikrai viskas taip sudėtinga? Kokius garantijos kad nepabandžius su mažom investicijom didelės investicijos bus sėkmingos? Aš siūlau nepamiršt tikslo, bet pradėt nuo mažesnių dalykų.

  6. Naudot Java ar ne, tai keistas klausimas. Kas belieka? .NET? Abu dalykai, trumpai tariant, OOP karkasai. Esmė yra ne programos spartoj, o kūrimo ir priežiūros procese. Jei reikia maksimalios spartos tai su OOP sunkiai pavyks :) bet.. naujokams spartos tikrai nereikia. Net jei ir galvojat kitaip :) Naudodami OOP įdėję tiek pat pastangų (laiko) turėsit daugiau apčiuopiamo rezultato.

    Šiais laikais pigiau ir paprasčiau pastatyt galingesnį kompą, o ne susirast gerą programuotoją. ;)

  7. ...Žinau, kad dauguma iš čia bėga ne iš gero gyvenimo, bet ar ne patys kalti žmonės? Ar ne patys pasirinkote tokį kelią? Kiek procentaliai 20-25 metų žmonių jau yra beveik degradavę? Kiek procentaliai jaunų žmonių vienintelis laisvalaikio praleidimo būdas yra eiti į gamtą ir gerti alkoholinius gėrimus ten? Jeigu Jūs kaltinate valdžią, tai Jums reiktų įsijungti televizorių ir pažiūrėti tokias laidas kaip „Klausimėlis?“ ar „Farai“. Tada suprasite, kas iš tiesų yra kalti dėl Mūsų mylimos šalies visų nelaimių..

     

    Dėl šito pritariu šimtu procentų.

    Visa kita pasirodė poetinis paverkšlenimas. :huh:

  8. Pačiam neseniai reikėjo, tai buvau pasibaisėjęs, kad internete visi pavyzdžiai tokie griozdiški, teko pasirašyti pačiam. Esmė tokia, kad pradžioje reikia elementus pasortinti pagal PARENT desc. Pliusas tas, kad užtenka tik vienos sql užklausos vietoje milijono+1 taikant kitus metodus :) Šios funkcijos logika tokia, kad elementus pradedame dėlioti ne nuo viršaus į apačią (gylį), o iš pačios apačios į viršutinius lygius.

     

    function maketree($els){
    $elsv=array_values($els);
    $id=$elsv[0]['id'];
    $parent=$elsv[0]['parent'];
    if ($parent!=0){
    	$elsv[0]['level']+=1;
    	$els[$parent]['childs'][]=$elsv[0];
    	unset($els[$id]);
    	if ($elsv[1]['parent']!=0){$els=maketree($els);}
    }
    return $els;
    }
    
    $cats=$db->select("select * from kategorijos order by parent desc,name asc");
    $cats=maketree($cats);
    

     

    Šitas metodas visada nuskaito milijoną + 1 įrašą kai mums reikia tik tų kurių tėvo ID, pvz., 15.

    Netestavau aš šito metodo, bet ta rekursija atrodo žudanti. Sakyčiau variantas kaip tikrai nereikėtų daryti.

    Testavai metodą? Kas jei kategorijos ID = 5, o tėvo ID = 15?

     

    P.S. Jei kode įdėtum daugiau tarpų ir parinktum protingus kintamųjų vardus, būtų lengviau skaityti.

    P.P.S. Įprasta SQL raktinius žodžius rašyti iš didžiųjų raidžių.

  9. Na pavyzdžiui, jei nori gauti konkrečios kategorijos duomenis, tai manau tiktų tokia rekursinė funkcija:

     

    function getCatData($parent_id, $table) {
     global $kategorijos;
    
     $sql = mysql_query("SELECT * FROM $table WHERE id = '$parent_id'");
     if(dbrows($sql) > 0) {
      while($r = mysql_fetch_assoc($sql)) {
      	array_push($kategorijos, $r);
      	getCatData($r['parent_id'], $table);
      }
     }
    
     return $kategorijos;
    }

     

    Jos panaudojimas būtų toks:

     

    $kategorijos = array();
    $kategorijos = getCatData(KATEGORIJOS_ID, LENTELE);

    Šitą metodą galima patobulint, bet toks koks jis dabar yra tai mirtis. Suvoki kas bus kai norėsi visą kategorijų medį atvaizduot su tokiu metodu? 100 užklausų? T.y. kiekvienai kategorijai bent po vieną.

    Liekant prie tokios metodikos, reikėtų įrašus nuskaitinėt pagal "gylį". Pradžiai įrašus be tėvų, tada jų vaikus, vaikų vaikus ir t.t.

     

    Aišku geriausia būtų naudoti Justino minėtus "komplikuotus" metodus. Realiai jie komplikuoti tik realizacijoj. Pasirašytum (susirastum) klasę ir viskas pataptų elementaru.

  10. Turėtų būt kažkas tokio:

    $reklama2 = '<script type="text/javascript">
    var td_linkUrl = "http://inwin-style.com/";
    document.write(\'<embed type="application/x-shockwave-flash"  src="http://skanaus.eu/reklama2.swf" id="reklama1" name="reklama1"  bgcolor="#FFFFFF" quality="high" menu="false" width="750" height="100"  flashVars="clickTAG=\'+td_linkUrl+\'&CLICKTAG=\'+td_linkUrl+\'&clicktag=\'+td_linkUrl+\'&clickTag=\'+td_linkUrl+\'&ClickTag=\'+td_linkUrl+\'">\');
    </script>';
    
    
    echo <<<END
       <table align='center' cellspacing='0' cellpadding='0' width='$theme_width' class=' center'>
           <tr>
               <td>
                   <table cellpadding='0' cellspacing='0' width='$theme_width'>
                       <tr>
                           <td class='fulll-header'>$logo</td> 
                           <td class='fulll-header'>$reklama2</td>
    END;

    Anas genijus nesugebėjo apostrofų escap'inti.

     

    P.S. Šaunu kad programuoji, bet susirask kokį "coding style" ir laikykis jo. Naudot neskauda, o privalumų daug.

  11. Sukrečianti istorija. Sukėlė daug minčių. DjiXas padarė tai kas man atrodo nežmoniškai baisu - gyventi dėl savęs, nepriklausyti nuo kitų. Baisu dėl to, kad nežinau ar po tokio gyvenimo įmanoma grįžt į normalų ritmą - būti žmogumi - mokėti šypsotis, juoktis, džiaugtis, mylėti. Dar baisiau, kad toks noras apskritai gali dingti.

     

    Sėkmės Jam.

  12. Aišku supratom. Neteisingas požiūris į Exceptions.

    Tu gali padaryt taip:

    public class MyClass {
    
       public static void main (String args [ ]) {
    
           try {
               int x = 10;
    
               if (x < 20 || x >100) throw new NumberRangeException( ); 
    
               if (/*not valid*/) throw new MyException2('msg');
    
               if (/*not valid*/) throw new MyException3('msg');
    
           } catch (NumberRangeException e) {
               /*do somthing*/
           } catch (MyException2 e) {
               /*do somthing*/
           } catch (MyException3 e) {
               /*do somthing*/
           }
       }
    }

     

    arba be Exceptions:

    public class MyClass {
    
       public static void main (String args [ ]) {
    
           int x = 10;
    
           if (x < 20 || x >100) {
               /*do something*/
               return;
           }
    
           if (/*not valid*/) {
               /*do something*/
               return;
           }
    
           if (/*not valid*/) {
               /*do something*/
               return;
           }
    
           /*passed. do something*/
       }
    }

     

    Ar ne kvailai atrodo? Tiek pirmas tiek antras variantai kvailoki. Turėtų būti panašiai taip:

     

    public class MyValidator {
    
       public static void checkRange(int x) {
    
           if (x < 20 || x >100) 
               throw new NumberRangeException( ); 
       }
    
       public static void checkSmth2(int x) {
    
           if (/*not valid*/) 
               throw new MyException2('msg'); 
       }
    
       public static void checkSmth3(int x) {
    
           if (/*not valid*/) 
               throw new MyException3('msg'); 
       }
    }
    
    public class MyActionClass {
    
       public static int getTriple(int x) {
    
           MyValidator.checkRange(x);
           MyValidator.checkSmth2(x);
           MyValidator.checkSmth3(x);
    
           return 3 * x;
       }
    }
    
    public class MyClass {
    
       public static void main (String args [ ]) {
    
           try {
               int x = 10;
    
    
               MyActionClass.getTriple(x);
    
           } catch (NumberRangeException e) {
               /*do somthing*/
           } catch (MyException2 e) {
               /*do somthing*/
           } catch (MyException3 e) {
               /*do somthing*/
           }
       }
    }

     

    Nieko konkretaus neparašiau. Tik naujų minčių apmąstymui :)

    Rašyk kas neaišku, uždarbiečiai padės.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...