Pereiti prie turinio

Lapinskis

Patvirtinti nariai
  • Pranešimai

    665
  • Užsiregistravo

  • Lankėsi

  • Laimėta dienų

    2
  • Atsiliepimai

    100%

Reputacijos išklotinė

  1. Patinka
    Lapinskis gavo reakciją nuo twea Mokytis, o gal nesimokyti ?   
    http://gamedev.stackexchange.com/questions/13115/vectors-in-game-development
    http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
     
    Čia tam, kad neįsivaizduotum jog viską moki ir žinai. Vektoriai tikrai panaudojamas dalykas. Siūlau nusileisti ant žemės ir mokytis matematiką. Vien jau iš bendro išprusimo tokius dalykus reikėtų žinoti, net jeigu darbe ar dar kažkur to ir nepritaikysi.
     
    O tai dabar toks jausmas, kad įsivaizduoji jog viską moki ir nieko tau nereikia. Teisingai tėvai tau sako - mokykis. Patariu klausyt jų patarimų, gi ne iš lempų patarinėja jie, o dažnai, kad jų pačių klaidų nekartotum saugo arba tiesiog eitum teisingu keliu.
  2. Patinka
    Lapinskis gavo reakciją nuo twea Mokytis, o gal nesimokyti ?   
    http://gamedev.stackexchange.com/questions/13115/vectors-in-game-development
    http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
     
    Čia tam, kad neįsivaizduotum jog viską moki ir žinai. Vektoriai tikrai panaudojamas dalykas. Siūlau nusileisti ant žemės ir mokytis matematiką. Vien jau iš bendro išprusimo tokius dalykus reikėtų žinoti, net jeigu darbe ar dar kažkur to ir nepritaikysi.
     
    O tai dabar toks jausmas, kad įsivaizduoji jog viską moki ir nieko tau nereikia. Teisingai tėvai tau sako - mokykis. Patariu klausyt jų patarimų, gi ne iš lempų patarinėja jie, o dažnai, kad jų pačių klaidų nekartotum saugo arba tiesiog eitum teisingu keliu.
  3. Patinka
    Lapinskis gavo reakciją nuo lukisx7 Mokytis, o gal nesimokyti ?   
    Aš esu pastebėjęs, kad labai daug žmonių į universitetą žiūri tik kaip į žinių šaltinį. Kaip į vietą kur kažką išmoksti ir po to tai taikai darbe. Vienavertus, tai yra tiesa, bet kitavertus iš universiteto gauni ne tik žinias, bet ir pažintis. Įsivaizduokit tarp kokio kiekio bendraminčių ten patenkate besidominčių tais pačiais dalykais? Manau tai pati puikiausia terpė regzti pažintims, draugų paieškai ir idėjų brandinimui, kas vėliau tikrai padės gyvenime. Nereikėtų ir to pamiršti :)
  4. Patinka
    Lapinskis sureagavo į SauliusK Mokytis, o gal nesimokyti ?   
    Pagal tave vieni gimę mokytis, o kiti - "kalti" pinigus. Man asmeniškai yra vienodai ką tu darai su savo gyvenimu, bet man tiesiog pikta, kai skleidi erezijas ir skatini jaunimą nestudijuoti pateikdamas išimtis iš taisyklės ir teigdamas, kad tavo penkių draugų patirtis yra vertingesnė nei oficiali statistika. Išimčių iš taisyklės visada yra, tačiau taisyklė yra tokia - kuo daugiau išsilavinimo, tuo didesnis atlyginimas bei tuo didesni šansai sėkmingai vadovauti verslui. Jeigu su tuo nesutinki, tai jau yra tavo asmeninis požiūris (pagrįstas keleto žmonių patirtimi) ir čia jau nieko nepakeisi:).
  5. Patinka
    Lapinskis gavo reakciją nuo twea Mokytis, o gal nesimokyti ?   
    http://gamedev.stackexchange.com/questions/13115/vectors-in-game-development
    http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
     
    Čia tam, kad neįsivaizduotum jog viską moki ir žinai. Vektoriai tikrai panaudojamas dalykas. Siūlau nusileisti ant žemės ir mokytis matematiką. Vien jau iš bendro išprusimo tokius dalykus reikėtų žinoti, net jeigu darbe ar dar kažkur to ir nepritaikysi.
     
    O tai dabar toks jausmas, kad įsivaizduoji jog viską moki ir nieko tau nereikia. Teisingai tėvai tau sako - mokykis. Patariu klausyt jų patarimų, gi ne iš lempų patarinėja jie, o dažnai, kad jų pačių klaidų nekartotum saugo arba tiesiog eitum teisingu keliu.
  6. Patinka
    Lapinskis sureagavo į SauliusK Mokytis, o gal nesimokyti ?   
    Tie visi kur su mersais važinėja baigę 10 klasių, savo verslus sukūrė, ar bent jau pamatus padėjo, žlugus Sovietų Sąjungai (tarpe tarp 1990-1996), kai tikrai ne protu buvo sukaupiamas kapitalas.
     
    Jei atvirai, tai nusišneki juodai. Pateiki 1% žmonių, kaip taisyklę, nors tai yra paprasčiausia išimtis. Bet aišku, tu juk ir esi išimtis, kaip ir pusė forumiečių, kurie nesugeba padaryti 11 klasės matematikos, tačiau yra prigimtiniai genijai. Pasaulis tik ir laukia, kol jie pasidalins savo nuostabiais gabumais ir savo idėjomis pakeis pasaulį. Aš irgi lygiai taip pat mąsčiau, kai buvau 17-18 metų. Well, guess what - aš esu nulis, tu esi nulis, 99% forumiečių yra nuliai, ir kai tai suprasi, ateis ir suvokimas kiek darbo reikia nudirbti, kad taptum kažkuo:).
  7. Patinka
    Lapinskis gavo reakciją nuo twea Mokytis, o gal nesimokyti ?   
    http://gamedev.stackexchange.com/questions/13115/vectors-in-game-development
    http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
     
    Čia tam, kad neįsivaizduotum jog viską moki ir žinai. Vektoriai tikrai panaudojamas dalykas. Siūlau nusileisti ant žemės ir mokytis matematiką. Vien jau iš bendro išprusimo tokius dalykus reikėtų žinoti, net jeigu darbe ar dar kažkur to ir nepritaikysi.
     
    O tai dabar toks jausmas, kad įsivaizduoji jog viską moki ir nieko tau nereikia. Teisingai tėvai tau sako - mokykis. Patariu klausyt jų patarimų, gi ne iš lempų patarinėja jie, o dažnai, kad jų pačių klaidų nekartotum saugo arba tiesiog eitum teisingu keliu.
  8. Patinka
    Lapinskis sureagavo į Klicko web programuotojų atlyginimai 2012   
    Beprasmiškas klausimas.
  9. Patinka
    Lapinskis gavo reakciją nuo twea Mokytis, o gal nesimokyti ?   
    http://gamedev.stackexchange.com/questions/13115/vectors-in-game-development
    http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
     
    Čia tam, kad neįsivaizduotum jog viską moki ir žinai. Vektoriai tikrai panaudojamas dalykas. Siūlau nusileisti ant žemės ir mokytis matematiką. Vien jau iš bendro išprusimo tokius dalykus reikėtų žinoti, net jeigu darbe ar dar kažkur to ir nepritaikysi.
     
    O tai dabar toks jausmas, kad įsivaizduoji jog viską moki ir nieko tau nereikia. Teisingai tėvai tau sako - mokykis. Patariu klausyt jų patarimų, gi ne iš lempų patarinėja jie, o dažnai, kad jų pačių klaidų nekartotum saugo arba tiesiog eitum teisingu keliu.
  10. Patinka
    Lapinskis sureagavo į CMYK CMYK darbai   
    Sveiki, norėčiau su jumis pasidalinti savo darbais bei sulaukti kritikos / patarimų. Mano pagrindinis siekis - tobulėti. Todėl neidrovėkite :D
     
    Iliustracijos (photoshop/wacom):
     
    http://img694.imageshack.us/img694/1963/donotdisturba.jpg
    http://img594.imageshack.us/img594/923/entrytomonsterland.png
    http://img14.imageshack.us/img14/1094/shomenw.jpg
    http://img24.imageshack.us/img24/3726/robotukas.jpg
    http://img201.imageshack.us/img201/433/roseht.png
    http://img14.imageshack.us/img14/851/swanqueen.jpg
    http://img831.imageshack.us/img831/5884/avisj.jpg
     
    Iliustracija tradicinėmis priemonėmis:
    http://img831.imageshack.us/img831/4346/67569140.jpg
     
    Plakatas:
    http://img10.imageshack.us/img10/7278/78254886.jpg
     
    Fontas / viršelis ZINUI:
    http://img837.imageshack.us/img837/8445/dsc0006vn.jpg
     
    Pakuotė / dizainas kavai ( pakuotės maketas aišku ne naujas, ir ne mano sugalvotas ):
    http://img593.imageshack.us/img593/9880/pakuote.jpg
     
     
    Tai tiek. Kolkas logotipų variantų neturiu, bet turėsiu. Tad kai sukursiu ką naujo - pasidalinsiu :) Ačiū už dėmesį!
  11. Patinka
    Lapinskis sureagavo į wicked Sodex darbai   
    tavo darbai yra šlamštas.
  12. Patinka
    Lapinskis sureagavo į dziu-mAn-dzy Pasitikėtumėte tokiu tiekėju?   
    Ant tiek naivus esi?
  13. Patinka
    Lapinskis sureagavo į ITaptarnavimas sms pazintys   
    kiekvienas jaunuolis per savo web praktika turi buti padares gyvenime 3 darbus:
     
    CS serveri su fusion puslapiu
    pazinciu svetaine
    foruma
     
    na ir dar gal nuorodu/skelbimu puslapi :)
  14. Patinka
    Lapinskis sureagavo į Silke PHP scriptas html'e   
    Šiaip jau kaip nustatysi serverį, taip ir bus. PHP interpretatorius apskritai nežiūri į failo plėtinį.
     

    justinas@ubuntu[~] echo "<? echo 'hello world'; ?>" > sausainis.su.arbata justinas@ubuntu[~] php sausainis.su.arbata hello world%
     
    Aišku, defaultu koks nors Apache duos php'ui tik failus, pasibaigiančius .php ir panašiomis galūnėmis.
  15. Patinka
    Lapinskis sureagavo į Silke savaiminis BB kodo įsiterpimas   
    Ši PHP mysql biblioteka (vadinama ext/mysql) yra atgyvena. NE MYSQL SERVERIS. MySQLi ir PDO irgi yra tik bibliotekos jungimuisi prie serverių, tik ne deprecated, objektiškai orientuotos (mysqli turi ir procedūrinį interfeisą), palaikančios prepared statements ir t.t. :)
  16. Patinka
    Lapinskis sureagavo į juraska Ką daro ši php funkcija?   
    http://php.net/manual/en/function.ob-start.php
  17. Patinka
    Lapinskis gavo reakciją nuo Medinukas Web scrapping naudojant PHP   
    Sveiki uždarbiečiai, jau vienur prisižadėjau, kad parašysiu šiek tiek apie web scrapping. Tai pirmas mano straipsnis šiame forume, todėl nemaišykit su žemėmis be pagrindo. Konstruktyvi kritika visada laukiama, o šiaip ir pasiginčyti galiu, jeigu atsiras žmonių, manančių, kad mano pateikti programinio kodo pavyzdžiai yra neteisingi ar, kad galima padaryti kažką geriau. Pats esu gana dar jaunas ir daug ko nemoku, tačiau trokštu išmokti. Iš savo, ir kitų mano artimųjų patirties galiu pasakyti, kad srities specialistu tampi mokydamas kitus.
     
    Pradedant, norėčiau apžvelgti kam web scrapping gali būti panaudojamas. Šį metodą programuotojai naudoja tada, kuomet reikia gauti informacijos iš kitos svetainės ir nenorima dirbti "copy->paste" principu. Web scrapping tai padarys už jus. Kadangi daugiausia teko programuoti PHP programavimo kalba, tai tik ja galėsiu pateikti pavyzdžių.
     
    Vogti/skolintis/pasiimti informaciją PHP pagalba iš kitų interneto svetainių galima keletu būdų. Tačiau aprašysiu tik du - vieną, kuris nepatogus ir jį naudojant gali prasidėti rimtas "galvos skausmas", ir antrą - kurį pats naudoju ir rekomenduoju naudoti kitiems.
     
    Pirmasis būdas. Jame naudojama curl biblioteka, preg_match_all funkcija. Blogiausia šio metodo savybė - reikia rašyti regexp išraiškas. Man (spėju ir kitiems programuotojams) tai yra "pain in the ######". Šis metodas turi ir pliusų - juo parašyti script'ai veikia šiek tiek greičiau negu antruoju.
     
    Daug netuščiažodžiaujant, štai kodo pavyzdys (ačiū Sauliui):
     

    <?php function rasti_turini( $pradzia, $galas, $url ) { $pradzia = str_replace('/', '\/', $pradzia); $galas = str_replace('/', '\/', $galas); $regexp = '/' . $pradzia . '(.+?)' . $galas . '/'; preg_match_all($regexp, $url, $atitike); return $atitike[0]; } function curl( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } //magic (: $url = curl( 'http://www.orai.lt/lt/prognozes/vilnius' ); $orai = rasti_turini( '<td class="oraiTableRow">', '</td>', $url ); //atvaizduojame antrąjį masyvo elementą echo $orai[1]; //jeigu norite pažiūrėti, kaip atrodo gautas masyvas, atkomentuokite sekančias 3 eilutes //echo '<pre>'; //print_r( $orai ); //echo '</pre>'; ?>
     
     
    Antrasis būdas. Tai mano mėgstamiausias, ir mano nuomone geriausias būdas gauti informaciją iš kito tinklalapio. Kaip taip padaryti? Ogi pasitelkti simple html DOM biblioteką. :) Jos pagalba galima rašyti elementų select'orius jQuery stiliumi.
     
    Pvz.:

    $html->find('table.bioTableAlt tbody tr');
     
    Argi gali būti patogiau ir greičiau? :rolleyes:
     
    Tarkim turime užduotį, mums reikia gauti visą geriausių teniso žaidėjų sąrašą iš šitos svetainės. Taip, visą 1000 :) Atkreipkite dėmesį, kad lentelė atnaujinama kiekvieną pirmadienį. Kad šis kodas veiktų, jums prireiks parsisiųsti simple html dom klasę.
     
    Kodas:

    <?php //nuimame laiko limita set_time_limit(0); //simple html dom include('simple_html_dom.php'); //------------------------------------------------------------------------------ // Nuorodos //------------------------------------------------------------------------------ //paskutinio pirmadienio data $date = date('d.m.Y', strtotime('last monday')); //užkomentuokit dali nuorodu, jeigu norit greiciau pamatyti rezultata $urls = array(); $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=1'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=101'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=201'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=301'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=401'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=501'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=601'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=701'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=801'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=901'; //inicijuojam masyvą $zaidejai $zaidejai = array(); //praskanuojam visas nuorodas foreach($urls as $url) { //gauname duomenis iš svetainės $html = file_get_html($url); foreach( $html->find('table.bioTableAlt tbody tr') as $a ) { // Duomenys apie žaidėją: // pozicija --- vardas, šalis --- žaidėjo taškai --- pozicijos pokytis --- turnyrų skaičius $zaidejas['pozicija'] = $a->children(0)->plaintext; $zaidejas['vardas'] = $a->children(1)->plaintext; $zaidejas['taskai'] = $a->children(2)->plaintext; $zaidejas['ppokytis'] = $a->children(3)->plaintext; $zaidejas['tskaicius'] = $a->children(4)->plaintext; $zaidejai[] = $zaidejas; } } //pašalinam nereikalingus masyvo elementus (lentelės heading'us) unset( $zaidejai[909] ); unset( $zaidejai[808] ); unset( $zaidejai[707] ); unset( $zaidejai[606] ); unset( $zaidejai[505] ); unset( $zaidejai[404] ); unset( $zaidejai[303] ); unset( $zaidejai[202] ); unset( $zaidejai[101] ); unset( $zaidejai[ 0 ] ); //sutvarkom array keys $zaidejai = array_values( $zaidejai ); //pažiūrim gautą masyvą echo '<pre>'; print_r( $zaidejai ); echo '</pre>'; ?>
     
    Štai dar vienas pavyzdys, kuriame gauname filmo reitingą iš imdb.com:

    <?php //simple html dom biblioteka include('simple_html_dom.php'); //filmo url $url = 'http://www.imdb.com/title/tt0485947/'; //gauname svetainės html $html = file_get_html($url); //gauname filmo reitingą $ratio = $html->find('span.rating-rating', 0)->plaintext; echo $ratio; ?>
     
     
    Pabaigai, noriu paminėti, kad su web scrapping galima sukurti gausybę naudingų ir niekam nekenkiančių dalykėlių, tačiau su juo galima pilnai pavogti turinį is RSS srauto ar iš paprasčiausios svetainės. Bet kaip tai padaryti - susigalvokite patys.
     
    Ir tikiuosi, jog jums patiko, bei buvo naudingas pirmasis mano straipsnis uždarbis.lt forume :)
  18. Patinka
    Lapinskis sureagavo į Arvydas css arba html pozicija   
    HTML

    <div class="headeris"> ... <div class="facebook">Facebook kodas</div> ... </div>
     
    CSS

    .headeris{ position: relative; width: 960px; height: 120px; background: Fuchsia; /* kad geriau matytusi - vėliau panaikinti */ } .facebook{ position: absolute; top: 20px; right: 20px; background: Aqua; /* kad geriau matytusi - vėliau panaikinti */ }
  19. Patinka
    Lapinskis gavo reakciją nuo FaitasS Jau mėnesį neišeina iš jQuey.com atsisųsti jQuery.   
    Esu matęs visaip pavadintą jQuery... Bet kad kas jį vadintų ilgu error'u... :D
     
    Na, bet nieko, suprantu, kad dar tik mokaisi ;) Sėkmės programuojant.
  20. Patinka
    Lapinskis gavo reakciją nuo FaitasS Jau mėnesį neišeina iš jQuey.com atsisųsti jQuery.   
    Esu matęs visaip pavadintą jQuery... Bet kad kas jį vadintų ilgu error'u... :D
     
    Na, bet nieko, suprantu, kad dar tik mokaisi ;) Sėkmės programuojant.
  21. Patinka
    Lapinskis sureagavo į L33T Pradėjau mokytis PHP, bet labiau pasidomėjes Python ir Ruby - susimasčiau   
    http://imageshack.us/a/img543/3870/39051410151091916509285.jpg
  22. Patinka
    Lapinskis sureagavo į Esnyper Išleista ilgai laukta Prestashop 1.5 versija!   
    Ko gero pradėsiu nuo naujų funkcijų:
     
    Multistore management
     

    With options for multiple currencies, multiple languages and multiple domains, multistore management is complete, efficient and integrated into PrestaShop v1.5. This new feature will allow any merchant, regardless of business size, to manage multiple stores from a single Back Office. Cart-pricing rules
     

    PrestaShop v1.5 allows you to manage your cart's pricing rules easily through an ergonomic interface. Additionally, merchants can now provide discounts on any and all items in a customers' cart. This feature provides an overtly-efficient way to market promotional offers upon checkout. New modules API
     

    For new APIs, the structure has been revised to help you simply and efficiently manage updates to all of your modules. The APIs will now automatically check to ensure you always have the latest version(s) of each module installed into your Back Office. Rewritten Core
     

    PrestaShop's core software has been rewritten to meet the MVC pattern and the object paradigm. This will make it even easier for all developers using PrestaShop. Redesigned Back Office
     

    With an improved ergonomic Back Office and an updated graphical layout, PrestaShop's new Back Office design is visually stunning and very easy to use. The redesign respects the MVC pattern to allow developers to quickly make customizations, if needed. http://preprod-img.prestashopinc.netdna-cdn.com/blog/articles-blog/09-10-2012/BO.png(Check out the new Back Office design)
     
    Editing commands in Back Office
     

    The editing commands in the Back Office have been optimized and relaxed. You will now be able to modify customers' shopping carts as well as products already ordered. You will also be able to place orders from the back office, allowing you to help customers make purchases on your site (i.e. when they contact you by phone). Improved Front Office Design and Functionality
     

    The customer experience has been improved, including the order and checkout processes. Merchants will now also be able to offer comprehensive product descriptions on a homepage that has been reimagined, and rebuilt from the ground up. http://preprod-img.prestashopinc.netdna-cdn.com/blog/articles-blog/09-10-2012/DT.png(New default template)
     
    Improved After-Sales Service
     

    The integrated customer service feature has been greatly improved to centralize all of your customers' messages from multiple sources. This new feature allows you to sync all of your email accounts so you can view and send messages directly from your Back Office. Improved inventory management, supply orders, product returns and partial deliveries
     

    For greater efficiency, PrestaShop will now include an inventory management tool allowing you to discern your physical stock from available quantities. In v1.5, you will now be able to manage your inventory in various warehouses, generate supply orders and view your stock through clear and specific interfaces. This inventory management tool is natively compatible with the new multistore feature, so managing your entire catalog of products has never been easier. Finally, for flexibility in managing customer orders, partial deliveries will now be available. Improved management of downloadable products
     

    We have made selling downloadable products (photos, music, computer files, etc…) easier. You will now be able to manage product variations and create packages of multiple downloadable products. The file upload process has also improved. In addition to the features provided above, multiple delivery addresses are now available. This way, if a customer chooses to shop for Christmas, or some other big event, they can buy multiple products at once and ship them individually to family and friends all over the world.
     
    Several new partner modules have also been added as native features inside PrestaShop v1.5′s source code.
     
    New partner modules include:
     

    AddShoppers Klarna Jirafe Allied Wallet Kiala Wexpay PrestaShop Assurance Merchant Warehouse We've also taken extensive time to improve numerous existing partner modules so you can maximize your stores functionality and profitability.
     
    Major module improvements include:
     

    Cloudcache (Added SSL support. Cloudcache is now compatible with old templates using Smarty) Avalara (Major improvements were made) Twenga (No major fixes here, but the module definitely functions more efficiently) Hipay (Major improvements) TNT (Major improvements) SoColissimo (Major improvements and bug fixes) Shopping Flux (The module was entirely rewritten, and now v2 is available) PayPal (Major improvements and bug fixes were made to improve functionality) Paysafecard (Minor bug fixes) Trusted Shops (Minor bug fixes) Mondial Relay (Major improvements and bug fixes) PrestaShop's partner modules function better in v1.5 then they have in previous versions of our software. Utilizing modules allows you to completely customize the look, feel and functionality of your online business.
     

     
    Daugiau informacijos:
    http://www.prestashop.com/blog/en/prestashop-v1-5-now-available-for-download/
     
    Taip pat pridedu pataisytą vertimą, kurį vėliau atnaujinsiu, o dar po kiek laiko įdėsiu į patį Prestashop tinklapį.
    lt.rar
     
     
    Atsiųstą failą išekstraktuokite ir įkelkite per administracinę panelę. Laimingo naudojimo!
     
     
     
  23. Patinka
    Lapinskis gavo reakciją nuo Medinukas Web scrapping naudojant PHP   
    Sveiki uždarbiečiai, jau vienur prisižadėjau, kad parašysiu šiek tiek apie web scrapping. Tai pirmas mano straipsnis šiame forume, todėl nemaišykit su žemėmis be pagrindo. Konstruktyvi kritika visada laukiama, o šiaip ir pasiginčyti galiu, jeigu atsiras žmonių, manančių, kad mano pateikti programinio kodo pavyzdžiai yra neteisingi ar, kad galima padaryti kažką geriau. Pats esu gana dar jaunas ir daug ko nemoku, tačiau trokštu išmokti. Iš savo, ir kitų mano artimųjų patirties galiu pasakyti, kad srities specialistu tampi mokydamas kitus.
     
    Pradedant, norėčiau apžvelgti kam web scrapping gali būti panaudojamas. Šį metodą programuotojai naudoja tada, kuomet reikia gauti informacijos iš kitos svetainės ir nenorima dirbti "copy->paste" principu. Web scrapping tai padarys už jus. Kadangi daugiausia teko programuoti PHP programavimo kalba, tai tik ja galėsiu pateikti pavyzdžių.
     
    Vogti/skolintis/pasiimti informaciją PHP pagalba iš kitų interneto svetainių galima keletu būdų. Tačiau aprašysiu tik du - vieną, kuris nepatogus ir jį naudojant gali prasidėti rimtas "galvos skausmas", ir antrą - kurį pats naudoju ir rekomenduoju naudoti kitiems.
     
    Pirmasis būdas. Jame naudojama curl biblioteka, preg_match_all funkcija. Blogiausia šio metodo savybė - reikia rašyti regexp išraiškas. Man (spėju ir kitiems programuotojams) tai yra "pain in the ######". Šis metodas turi ir pliusų - juo parašyti script'ai veikia šiek tiek greičiau negu antruoju.
     
    Daug netuščiažodžiaujant, štai kodo pavyzdys (ačiū Sauliui):
     

    <?php function rasti_turini( $pradzia, $galas, $url ) { $pradzia = str_replace('/', '\/', $pradzia); $galas = str_replace('/', '\/', $galas); $regexp = '/' . $pradzia . '(.+?)' . $galas . '/'; preg_match_all($regexp, $url, $atitike); return $atitike[0]; } function curl( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); return $result; } //magic (: $url = curl( 'http://www.orai.lt/lt/prognozes/vilnius' ); $orai = rasti_turini( '<td class="oraiTableRow">', '</td>', $url ); //atvaizduojame antrąjį masyvo elementą echo $orai[1]; //jeigu norite pažiūrėti, kaip atrodo gautas masyvas, atkomentuokite sekančias 3 eilutes //echo '<pre>'; //print_r( $orai ); //echo '</pre>'; ?>
     
     
    Antrasis būdas. Tai mano mėgstamiausias, ir mano nuomone geriausias būdas gauti informaciją iš kito tinklalapio. Kaip taip padaryti? Ogi pasitelkti simple html DOM biblioteką. :) Jos pagalba galima rašyti elementų select'orius jQuery stiliumi.
     
    Pvz.:

    $html->find('table.bioTableAlt tbody tr');
     
    Argi gali būti patogiau ir greičiau? :rolleyes:
     
    Tarkim turime užduotį, mums reikia gauti visą geriausių teniso žaidėjų sąrašą iš šitos svetainės. Taip, visą 1000 :) Atkreipkite dėmesį, kad lentelė atnaujinama kiekvieną pirmadienį. Kad šis kodas veiktų, jums prireiks parsisiųsti simple html dom klasę.
     
    Kodas:

    <?php //nuimame laiko limita set_time_limit(0); //simple html dom include('simple_html_dom.php'); //------------------------------------------------------------------------------ // Nuorodos //------------------------------------------------------------------------------ //paskutinio pirmadienio data $date = date('d.m.Y', strtotime('last monday')); //užkomentuokit dali nuorodu, jeigu norit greiciau pamatyti rezultata $urls = array(); $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=1'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=101'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=201'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=301'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=401'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=501'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=601'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=701'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=801'; $urls[] = 'http://www.atpworldtour.com/Rankings/Singles.aspx?d='.$date.'&c=&r=901'; //inicijuojam masyvą $zaidejai $zaidejai = array(); //praskanuojam visas nuorodas foreach($urls as $url) { //gauname duomenis iš svetainės $html = file_get_html($url); foreach( $html->find('table.bioTableAlt tbody tr') as $a ) { // Duomenys apie žaidėją: // pozicija --- vardas, šalis --- žaidėjo taškai --- pozicijos pokytis --- turnyrų skaičius $zaidejas['pozicija'] = $a->children(0)->plaintext; $zaidejas['vardas'] = $a->children(1)->plaintext; $zaidejas['taskai'] = $a->children(2)->plaintext; $zaidejas['ppokytis'] = $a->children(3)->plaintext; $zaidejas['tskaicius'] = $a->children(4)->plaintext; $zaidejai[] = $zaidejas; } } //pašalinam nereikalingus masyvo elementus (lentelės heading'us) unset( $zaidejai[909] ); unset( $zaidejai[808] ); unset( $zaidejai[707] ); unset( $zaidejai[606] ); unset( $zaidejai[505] ); unset( $zaidejai[404] ); unset( $zaidejai[303] ); unset( $zaidejai[202] ); unset( $zaidejai[101] ); unset( $zaidejai[ 0 ] ); //sutvarkom array keys $zaidejai = array_values( $zaidejai ); //pažiūrim gautą masyvą echo '<pre>'; print_r( $zaidejai ); echo '</pre>'; ?>
     
    Štai dar vienas pavyzdys, kuriame gauname filmo reitingą iš imdb.com:

    <?php //simple html dom biblioteka include('simple_html_dom.php'); //filmo url $url = 'http://www.imdb.com/title/tt0485947/'; //gauname svetainės html $html = file_get_html($url); //gauname filmo reitingą $ratio = $html->find('span.rating-rating', 0)->plaintext; echo $ratio; ?>
     
     
    Pabaigai, noriu paminėti, kad su web scrapping galima sukurti gausybę naudingų ir niekam nekenkiančių dalykėlių, tačiau su juo galima pilnai pavogti turinį is RSS srauto ar iš paprasčiausios svetainės. Bet kaip tai padaryti - susigalvokite patys.
     
    Ir tikiuosi, jog jums patiko, bei buvo naudingas pirmasis mano straipsnis uždarbis.lt forume :)
  24. Patinka
    Lapinskis sureagavo į Jurijus14 Daromas projektas, kuris eis i pliusa.   
    :DDD GAL net daugiau gražins, negu INVESTAVOTE :DD
  25. Patinka
    Lapinskis sureagavo į TomasKi Kada per vėlu pradėti mokytis?   
    Net jei nori programavimo, kam komplikuoti mokymąsi, žmogų supainioti, kad nieko nesuprastų ir mestų susinervinęs.Pritariu Silkei.
×
×
  • Pasirinkite naujai kuriamo turinio tipą...