Pārdomas par Neo nedarbiem

Neo atrasts, visi par to runā, laiks arī man uz papīra (ekrāna) uzlikt nedaudz pārdomas visā šajā sakarā.

Eksistē viedoklis, ka Neo neko vispār nav pārkāpis, jo ir piekļuvis tikai informācijai, kas “brīvi” pieejama internetā. Es tam īsti nevaru piekrist, jo:

  • ja adrese būtu http://eds/download?user=viesis&pass=viesis, nevienam nerastos šaubas, ka minot dažādas user un pass vērtības, mēs apejam autorizācijas sistēmu;
  • ja adrese būtu http://eds/download?id=A7F1CB37-BD2B-45F8-9006-5C4279ED62D9, tad id vērtības minēšanu (3,4 * 10^38 dažādas kombinācijas) viennozīmīgi var atzīt par laušanu;
  • ja adrese būtu http://eds/download?pass=100, ar ko īsti tas atšķiras no pirmā varianta – vienīgā atšķirība ir tas, ka parole ir muļķīgi vienkārša;
  • iepriekšējā piemērā lauku nosaucot par id, nevis pass mēs iegūstam reālo EDS situāciju – lejupielādes ir aizsargātas, taču ar ļoti muļķīgām parolēm – vienkāršiem skaitļiem no 1 līdz, piemēram, 2 000 000.

Viens no argumentiem, kāpēc šī darbība ir attaisnojama, ir tas, ka visi dati esot bijuši brīvi pieejami internetā. Atkal tas ir kas tāds, kam nevar piekrist. Piemēram:

  • zaglis, kurš iekļūst mājā, izmantojot labi paslēptu, bet neaizslēgtu logu, ir tikpat vainīgs kā tas, kurš atlauž durvis;
  • ja, piemēram, delfi.lv būtu administrācijas sadaļa, kura nav aizsargāta nekā savādāk, kā vien ar slepenu adresi (piemēram, http://delfi.lv/admin/) – jebkurš, kurš piekļūst šai sadaļai, vienkārši uzminot šo adresi, ir savā veidā uzlauzis sistēmu (tiesa, apejot ļoti vienkāršu security by obscurity risinājumu).

“Brīvi pieejams internetā” varētu tikt attaisnots ar to, ka eksistētu lapa X (piemēram, kāds blogs), kurā būtu publicētas šīs adreses. Šajā gadījumā vainot varētu informācijas publicētāju, nevis izmantotāju, līdzīgi kā gadījumā, kad con artist pārdod personai māju, kas viņam nepieder, vainīga nav šī persona, kas tagad ieiet svešā mājā, bet gan con artist-s, kas šo māju pārdeva.

Turpinot šo domu, varētu pieņemt, ka Neo kaut kur interneta plašumos uzgāja vienu šādu adresi, piemēram, kāda uzņēmuma grāmatvedis bija nokopējis linku no sistēmas un kaut kur pieglabājis vēlākai lietošanai. Šādā situācijā, ja vien kopā ar adresi nebija publicēti tās lietošanas ierobežojumi, neko nevar pārmest ziņkārīgam cilvēkam, kas to atvēra un apskatījās.

Atverot šādu adresi var ieraudzīt vienkāršu XML dokumentu ar vārdiem, nosaukumiem, skaitļiem – taču neko, kas pateiktu, kas tie par datiem un kādiem mērķiem tā ir izmantojama (piemēram, teksta dokumentos šāda informācija ir vai nu sākumā, vai dokumenta “kājenē”). Un atkal ar ziņkārību var attaisnot to, ka ieraudzījis adresē ciparus, šī persona izdomā pamainīt tos un paskatīties, kas notiek.

Te parādās viena liela problēma ar mūsdienu sistēmu datiem – ja reālos, parakstītos dokumentos tiek iekļauti to izmantošanas nosacījumi, konfidencialitātes prasības, dokumenta auditorija un tas viss tiek uztverts par vienu veselumu, tad dažādiem apstrādātiem datiem dažādās strukturētās formās gandrīz nekad nav pievienoti šādi meta dati. Kas ļauj, iegūstot šādu dokumentu ārpus konteksta, neapzināties sekas šīs informācijas izmantošanai.

Ja turpinam par ziņkārību – manuprāt, ar šo argumentu varētu Neo diezgan veiksmīgi aizstāvēties (galu galā, neviens taču nepārmetīs, ja http://tvnet.lv/news/123 tiks aizstāts ar http://tvnet.lv/news/666, tomēr šeit ir viena nopietna problēma. Nav iespējams apgalvot, ka Neo neapzinājās, ka piekļūst informācijai neatļautā veidā, jo viņš slēpa savas pēdas, maskējoties aiz [visdrīzāk] dažādiem proxy vai līdzīgiem risinājumiem. Kā arī pēc pirmās informācijas publicēšanas viņš nenāca klajā ar paziņojumu, ka “atvainojiet, es tiešām nezināju, ka šī informācija ir konfidenciāla – tā taču bija tik brīvi pieejama”.

Rezumējot, mans viedoklis ir, ka Neo būtu pelnījis kādu no simboliskajiem sodiem – brīdinājumu vai, piemēram, publisko darbu (ko varētu veikt, auditējot citas valsts IT sistēmas), kas pamatojams ar to, ka viņš ļoti apzinīgi rīkojās, izplatot tālāk iegūto informāciju – necieta privātie uzņēmumi vai individuāli cilvēki (ja vien tie nebija attiecīgo uzņēmumu vadībā). Paralēli tam vajadzētu nopietni piestrādāt, lai sakārtotu likumdošanu saistībā ar to, ko drīkst un ko nedrīkst šādas ziņkārības vadīti personāži darīt – skaidri noteikt, piemēram, ka jebkura informācija “.gov.lv” domēnos ir konfidenciāla, ja vien nav noteikts savādāk.

MSSQL rezerves kopiju veidošana

Lai risinātu iepriekš aprakstītās problēmas, veidojot MSSQL automātiskās rezerves kopijas, izveidoju savu mazu programmiņu. Tās galvenās funkcijas:

  • veidot rezerves kopijas visām uz servera esošām datubāzēm;
  • apstrādāt reizē vairākus datubāzu serverus (vai instances);
  • sūtīt skaisti noformētus statusu pārskatus;
  • izdzēst novecojušas rezerves kopijas.

Lejupielāde: SqlBackup.zip (gan pirmkods, gan kompilēta versija)

Konfigurācijas fails un pirmkods ir dokumentēts pietiekoši, lai jebkurš šo kodu varētu izmantot, pielāgojot vai arī neko nemainot.

Komandējumi

Vēl nesen man bija priekšstats, ka, ja uzņēmums darbinieku nosūta komandējumā, darbiniekam ir garantijas, ka uzņēmums par viņu parūpēsies un šī garantija ir noteikta likumā. Izrādās, ka tā vis nav.

Citāts no MK noteikumiem http://www.likumi.lv/doc.php?id=63561:

18.2. pildot darba (dienesta) pienākumus, kā arī no viņa neatkarīgu iemeslu dēļ (piemēram, biļešu trūkums, lidmašīnas pacelšanās neiespējamība, transportlīdzekļa remonts), — dienas naudu (kompensāciju par papildu izdevumiem) izmaksā un citus izdevumus par dienām, kas pārsniedz noteikto komandējuma (darba brauciena) laiku, darbiniekam atlīdzina, ja institūcijas vadītājs pēc darbinieka atgriešanās pastāvīgajā darba (dienesta) vietā ir motivēti pagarinājis komandējuma (darba brauciena) laiku;

No šī citāta var secināt, ka šodien aktuālajā situācijā ar Īslandes vulkānu darba devējam nav pienākuma turpināt maksāt dienas naudu un viesnīcu, ja darbinieks nevar nokļūt mājās. Vienīgā garantija ir tā, ka komandējuma laikā nevar cilvēku atlaist vai mainīt algu.

Izklausās, ka šie noteikumi ir rakstīti, lai aizsargātos pret situācijām, kur valsts iestādēs vadītājs sev tuvos cilvēkus sūta nepamatotos komandējumos, taču ir aizmirsts par normālajām situācijām bez korupcijas.

Mani gan šī problēma neskar, jo uzņēmums turpina maksāt gan dienas naudu, gan par viesnīcu, taču ļoti iespējams, ka ir cilvēki, kam nav tā paveicies.

Silverlight data binding un validācija

Silverlight 3 iebūvētie data binding un ar to saistītās validācijas ir pamatīga sāpe. Pavisam vienkāršos scenārijos tā strādā kā gaidīts, bet pietiek vēlēties kaut ko nedaudz sarežģītāku, lai konstatētu, ka lielākā daļa vēlmju tā arī paliks vēlmes, jo tās realizēt ir praktiski neiespējami.

Labi raksti par šo tēmu atrodami The Joy Of Code blogā (trīs rakstu sērija). Par laimi, Silverlight 4 jau ir iznācis un praktisku iemeslu palikt pie Silverlight 3 īsti nav.

Agile

Agile nozīmē to, ka Izpildītājs smaida un piekrīt, kad Pasūtītājs kārtējo reizi maina tvērumu (scope).

Tāda diemžēl ir ļoti daudzu vadītāju uztvere, kas nav iemācījušies, ka kopā ar dažādām Agile metodoloģijām nenāk tikai iespēja mainīt prasības, bet arī daudz dažādi citi ierobežojumi un pasākumu kopumi. Paņem to, kas izdevīgi, nepaņemot to, kas nepieciešams, lai metodoloģiju veiksmīgi īstenotu.

Slinkie programmētāji

Šodien ieguvu vērtīgu atziņu. Labam programmētājam ir jābūt slinkam. Labs un slinks programmētājs centīsies sev uzdoto darbu izdarīt, radot pēc iespējas mazāk artefaktus (kodu utt.). Kas savukārt nozīmē, ka radītos artefaktus vēlāk būs vieglāk pārvaldīt un uzturēt.

Jautājums gan filozofisks, bet neliela paslinkošana, pirms ķerties klāt nopietna darba izpildei, vienmēr nāks par labu, jo ļaus sakopot domas un varbūt saprast, ka pirmais izdomātais risinājums nebūt nav labākais.

Microsoft Security Essentials Latvijā

Jau pirms laba laika parādījās jauns bezmaksas antivīruss Windows operētājsistēmai. Šoreiz no paša Microsoft. Pats to neesmu pārāk pētījis, bet pirmais iespaids, kā arī internetā lasītais, vedina domāt, ka šobrīd šis ir labākais (vienkāršākais utt.) risinājums. Gan jau ka atrodams kāds pētījums, kurā antivīruss X atrod par 2% vairāk vīrusu, bet cik tādiem pētījumiem var ticēt, nekad neviens neuzzinās.

Diemžēl Microsoft ir vismaz viena izstrādātāju komanda, kas pelnījusi dabūt pa nagiem, jo iedomājušies, ka Accept-Language HTTP parametrs nenozīmē vis lietotāja atrašanās vietu, bet gan to, kādā valodā lietotājs vēlas saņemt saturu. Un, lai gan specifikācija to nenosaka, tad parasti tiek pieņemts, ja lapa neatbalsta nevienu no valodām, tad saturs tiek parādīts lapas noklusētajā valodā (ja nu, piemēram, tvnet.lv atver tūrists no Ķīnas interneta kafejnīcas).

Microsoft lapās salīdzinoši bieži sastopama problēma, ka gadījumā, ja satura attiecīgajā valodā nav, tad lietotājam tiek parādīta tikai kļūda un nekas cits. MSE gadījumā kļūdas teksts vispār ir ačgārns: “You appear to be in a country or region where Microsoft Security Essentials is not available.” Lai tiktu galā ar šo problēmu, viens no variantiem ir mainīt pārlūkprogrammas uzstādījumus. Daudz vienkāršāks variants ir nedaudz palabot lapas adresi ar roku:

Google atrod šādu adresi: http://www.microsoft.com/security_essentials/market.aspx

Lai tiktu galā ar pārbaudi, var izmantot: http://www.microsoft.com/security_essentials/?mkt=en-us

Triks ar “?mkt=en-us” strādā arī citās Microsoft lapās, kur tiek veiktas līdzīgas pārbaudes. Pāris gadus atpakaļ Windows Live lapā nevarēja tikt iekšā (un lejupielādēt, piemēram, Live Messenger) ar “nepareizi” konfigurētu pārlūkprogrammu un arī tad strādāja šī pati pieeja.

MSSQL rezerves kopiju problēmas

Savulaik, strādājot ar MySQL, priecājos par iespēju veidot ērtas rezerves kopijas ar mysqldump. Pēcāk, pārejot uz Microsoft SQL Server, priecājos par iespēju izmantot iebūvēto rezerves kopiju veidošanu, kas gan nebija tik ērti izmantojama citiem mērķiem kā parasti SQL skripti, bet toties tika veidoti krietni ātrāk un deva iespēju veidot inkrementālas rezerves kopijas.

Tomēr pēc kāda laika tika apzinātas vairākas problēmas, kas piemīt iebūvētajām backup funkcijām, kad tās izmanto, piemēram, katras nakts rezerves kopiju veidošanai, no kurām dažas:

  • nav iespējams norādīt, pret kuru pilno rezerves kopiju tiks veikta inkrementālā – tā vienmēr būs pret pēdējo pilno;
  • nav iespējas automātiski dzēst vecās rezerves kopijas (lai gan katrai rezerves kopijai var norādīt, cik ilgi tā būs derīga).

Otro problēmu daļēji risina Maintenance plan uzdevums, kas tīra rezerves kopiju vēsturi. Taču – tas tīra rezerves kopijas, nevis, ievērojot katras kopijas derīguma laiku, bet gan visas, kas vecākas par x dienām.

Pirmo problēmu iespējams daļēji risināt, izmantojot COPY_ONLY parametru BACKUP operācijai. Tas gan neļauj norādīt, ka inkrementālā kopija jāveido uz noteiktas pilnās kopijas bāzes, taču tas ļauj izveidot kopijas, kas ir neatkarīgas, un kuru izdzēšana nesabojās kādu citu kopiju.

Tieši šis pēdējais faktors bieži ir bijis ļoti svarīgs – ir nepieciešams izveidot automātiskās rezerves kopijas katru nakti, bet paralēli tam nepieciešams ļaut datubāzes administratoram pašam spēlēties ar savām rezerves kopijām – tās dzēst, veidot utt. Un automātiskās kopijas netiek glabātas ilgāk kā, piemēram, nedēļu, kamēr manuāli veidotās var tikt saglabātas bezgalīgi.

Lai ar šīm problēmām cīnītos, kā arī ērti automatizētu vairāku servera instanču rezerves kopiju veidošanu, uzrakstīju nelielu programmiņu, kas automātiski veic šādu kopiju veidošanu. Programmu ar visu pirmkodu drīzumā nopublicēšu, ja nu gadījumā vēl kāds atpazīst aprakstītajā savas problēmas (vai varbūt tagad saprot, ka savs esošais mehānisms īsti pareizi nestrādā).

Microsoft SQL Server backup iespējas gan sniedzas tālāk par parastu rezerves kopiju veidošanu (piemēram, transaction log backup-ošana), taču ikdienā lielākā daļa lietotāju izmanto šādu vienkāršotu pieeju.

Papildināts: MSSQL rezerves kopiju veidošana

Regulārās izteiksmes iekš CSS

Nejauši uzdūros šodien CSS funkcionalitātei, par kuru iepriekš neko nezināju. Izrādās, CSS selector-os var izmantot regulārās izteiksmes. Zemāk piemērs kā mainīt izskatu visām saitēm, kas norāda uz .pdf failiem.

a[href$='.pdf']{
/* apply icon */
}

Vairāk informācijas lapā, kurā par šo lietu uzzināju.

Ātrā pārbaude liecina, ka augstāk redzamais piemērs strādā uz IE7/IE8/FF3.

“Ārprātīgi” lielās algas

Pateicoties datu noplūdēm no VID EDS, mēdijiem nepārtraukti nāk jauns materiāls skaļiem virsrakstiem par milzu algām vienā vai otrā iestādē: “Autoceļu uzturēšanas naudu tērē milzīgām darbinieku algām. Pērn 365 VAS "Latvijas autoceļu uzturētājs" darbinieku vidējie ienākumi pirms nodokļu nomaksas pārsnieguši 1000 latus”.

Ārprāts. 1000 lati pirms nodokļu nomaksas. Veram vaļā algu kalkulatoru un skatāmies. 1000 latu pirms nodokļu nomaksas ir… 682,50 Ls pēc nodokļiem. Tiešām ārprāts. Tik mežonīgas algas.

Dažām amatpersonām esot pat 4000 latu alga. Pēc nodokļiem tas ir apmēram 2700 Ls. Tas droši vien ir tikai kādam no lielajiem priekšniekiem. Uzņēmumā, kurā ir vairāk kā 2000 darbinieku. Kurš saprātīgs cilvēks piekritīs tādai atbildībai par mazāku naudu? Tad drīzāk būtu jājautā, kāda ir konkrētā cilvēka motivācija strādāt par mazāku algu šādā amatā. Vai nu korupcijas iespējas vai vienkārši neadekvāta kvalifikācija.

Un vispār – manuprāt, ar likumu vajadzētu noteikt, ka mēdijos minot dažādas algas, vienmēr ir skaidri jāpasaka, vai tas ir pirms vai pēc nodokļiem. Vislabāk būtu, ja likums noteiktu par obligātu prasību uzrādīt abas summas. Citādi jebkurš žurnālists var manipulēt ar skaitļiem pēc sirds patikas.