JavaScript klašu mantošana

JavaScript ir gaužām nepateicīga valoda, ja ir vēlme rakstīt objektorientētu kodu. Vienkāršas klases veidot ir vēl salīdzinoši vienkārši (izmantojot funkciju prototipus). Taču jau tik elementāra konstrukcija kā klašu mantošana rada zināmas problēmas. Zemāk ir piemērs vienam no risinājumiem kā, neizmantojot ārējas bibliotēkas, iespējams izveidot klašu mantošanu JavaScript valodā.

// Vienkārša klase ar divām metodēm, no kurām viena tiks pārlādēta.
function BaseClass() { }
BaseClass.prototype.showMessage = function() { alert("BaseClass"); }
BaseClass.prototype.execute = function() { this.showMessage(); }

// Atvasinātā klase
function DerivedClass() { }
// Nosakam, no kuras klases atvasinām
DerivedClass.prototype = new BaseClass();
// saglabājam atsauci, no kuras varēs izsaukt bāzes klases metodes
DerivedClass.prototype.base = BaseClass.prototype;
// Pārlādējam metodi
DerivedClass.prototype.showMessage = function() {
    alert("DerivedClass");
    // izsaucam bāzes klases metodi
    this.base.showMessage.call(this);
}

// Izveidojam atvasinātās klases objektu
var obj = new DerivedClass();
// Izsaucam metodi, ko tā manto no BaseClass
obj.execute();
// execute() parāda divus ziņojumus:
// vispirms "DerivedClass", pēc tam "BaseClass".

E-pastu jaunumi uz miga.lv servera

Nesenā miga.lv programmatūras atjaunināšana uz SmarterMail 6.0 izraisīja mēstuļu filtra nekorektu darbību, tika veikta nozīmīga izmaiņa mēstuļu filtrēšanā – ieviests greylisting (wikipedia). Īsumā – šis filtrs nepazīstamu sūtītāju e-pastus pirmajā reizē noraida. Īstie sūtītāji vienmēr mēģina vēlreiz, bet mēstuļu sūtītāji taupa savus resursus un atkārtoti vēstuli nosūtīt mēģina gaužām reti.

Šis filtrs uzreiz akceptē visus sūtītājus, kas atrodas Latvijā – pagaidām mēstules no Latvijas datoriem tiek sūtītas gana reti, kā arī dažādus populārākos e-pastu servisus, piemēram, gmail. Tādēļ galvenie cietēji ir dažādas tīmekļa lapas, kas, piemēram, sūta foruma reģistrācijas apstiprinājumus. Šie apstiprinājumi tagad var kavēties līdz pat 15 vai 30 minūtēm, atkarībā no sūtītāja.

Labā ziņa ir tā, ka katrs lietotājs savos uzstādījumos šo filtru var atslēgt, ja, piemēram, nepieciešams steidzami saņemt minēto reģistrācijas apstiprināšanas e-pastu.

Papildus šim jauninājumam šodien tika atjaunināta programmatūra uz SmarterMail 6.1.3518 versiju (izmaiņu saraksts), kurā solīta mēstuļu filtra SpamAssassin darbības uzlabošanās. Šī filtra sliktā darbība bija galvenais iemesls, kāpēc pēdējās pāris nedēļās mēstuļu atpazīšana bija tik sliktā līmenī.

Nobeigumā daži attēli, kas parāda greylisting noderīgumu.

Ienākošo mēstuļu skaits pa dienām (te gan jāņem vērā, ka pēdējās nedēļās daļa mēstuļu netika atpazītas):
Ienākošo mēstuļu skaits

Kopējais ienākošo un izejošo e-pastu skaits pa dienām:
Ienākošo un izejošo e-pastu skaits

Izejošo SMTP savienojumu skaits pa dienām (parāda, cik daudz savienojumu agrāk tika veidoti, lai paziņotu kādam citam serverim, ka mēstules adresāts nav atrasts):
Izejošo SMTP savienojumu skaits

Jauna SmarterMail 6.0 versija uz miga.lv

Uz miga.lv ir atjaunināta e-pasta servera versija uz SmarterMail 6.0 (izmaiņu saraksts). Izmaiņas nav pārāk mainījušas mail.miga.lv saskarni, taču daži jaunumi ir. Piemēram, e-pastu saraksts vairs nedalās lapās, bet ir viens garš, skrollējams saraksts. Kā arī uzstādījumu sadaļā parādījusies iespēja nomigrēt uz savu kontu visus datus no citas esošas pastkastītes (piemēram, gmail).

Krietni uzlabots arī mēstuļu filtrs - tagad mēstules tiek filtrētas, izmantojot daudz vairāk dažādus bloku sarakstus (RBL), kas, cerams, aizsargās pret gadījumiem, kad kādu IP kāds no servisiem nobloķējis netaisnīgi.

miga.lv lapai jauns izskats

http://miga.lv lapai tika veikta kosmētiskā operācija, kas, cerams, to padarīs daudz pievilcīgāku jebkura apmeklētāja acīs. Cerība arī, ka nedaudz uzlabosies google meklētājā, kur meklējot "hostings" līdz šim migas lapa pirmajās desmit lapās nebija atrodama.

Pagaidām reģistrācija un pārvaldes modulis tiek izmantots no vecās versijas, bet ar laiku arī tas tiks nomainīts.

P.S. Pārvarēju sevi un miga.lv šobrīd ir pirmā lapa, kur kolonnu izkārtojumu veidoju ar tīru CSS, bez tabulām. Nebija jau nemaz tik grūti, kā varētu likties.

Virtuālais DVD disks iekš Windows 7

Windows 7 gan piedāvā iebūvētu programmiņu, kas ļauj ierakstīt .iso failu saturu diskā, taču nenodrošina veidu, lai tos varētu atvērt kā virtuālos diskus. Šiem mērķiem kopš sen seniem laikiem tika izmantots Daemon Tools, taču uz Windows 7 pēdējās bezmaksas versijas nestrādā (bezgalīgs instalē-pārstartējas process). Strādājot veca 3.17 versija, bet to neesmu pārbaudījis.

Izmēģināju tādu lietu kā MagicDisc. Instalējas ātri, strādā ok. Galvenā problēma - nav iespēja (vismaz neatradu) .iso failu automātiski atvērt ar dubultklikšķi.

Galu galā paliku pie Virtual CloneDrive. Arī bezmaksas, arī neliels izmērā un strādā korekti (uz Windows 7 x64 Enterprise).

IIS7 FTP SSL konfigurēšana

Nokonfigurēt IIS7 piedāvāto FTP protokola šifrēšanu, izmantojot SSL, nebija gluži tik elementāri, kā būtu gribējies. Ja neizmantotu FTP virtuālos hostus, tad viss būtu bijis vienkāršāk, bet diemžēl šoreiz tā nebija.

Viss it kā diezgan vienkārši - atveram FTP saitu un izvēlamies SSL sertifikātu. Nekā, piedzīvoju kļūdu: "534 Local policy on server does not allow TLS secure connections". Izrādās, SSL sertifikāts jānorāda nevis konkrētam saitam, bet gan visam serverim. Principā jau loģiski, jo enkriptēšana ir nepieciešama vēl pirms tiek ievadīts lietotāja vārds.

Bet, norādot sertifikātu serverim, dabūju kļūdu "431 Failed to setup secure session." kā atbildi uz "PROT P" komandu. Te nu izrādījās, ka konkrētam saitam SSL sertifikāts tomēr ir vajadzīgs, lai nodrošinātu datu konekcijas enkriptēšanu.

Nobeigumā varbūt noderīgs links par FTP SSL konfigurēšanu ar visām bildītēm, kā arī pamācību, kā konfigurēt Windows iebūvēto ugunsmūri: Configuring FTP Firewall Settings.

miga.lv atjaunots SSL sertifikāts

Šodien tika atjaunots SSL sertifikāts miga.lv servisiem (FTPS, HTTPS, IIS7 remote management). Iepriekšējā sertifikāta derīguma termiņš izbeidzās pirms pāris dienām tāpēc iespējams, ka kāds redzēja atbilstošos brīdinājumus.

Neliela piebilde - kad sertifikāta pieprasījums tiek izpildīts, nevajag jauno sertifikātu kaut kādu iemeslu dēļ dzēst ārā. Otru reizi izpildīt sertifikāta pieprasījumu nav iespējams. Kļūda, kura man izleca otrajā mēģinājumā, bija "certEnroll::CX509Enrollment::p_InstallResponse: ASN1 bad tag value met. 0x8009310b (ASN: 267)". Paglāba informācija šajā rakstā: The Way I See It. Pievienoju sertifikātu ar roku un izpildīju rakstā minēto pēdējo komandu, lai sertifikātam atjaunotu privāto atslēgu.

Java kļūdu klašu skaidrojumi

Klaiņojot pa interneta plašumiem uzdūros jaukam sarakstam ar skaidrojumiem par dažādu Java kļūdu (exception) klašu nozīmi.

Daži no tiem tekstiem pat ir tādi, ko varētu izmantot, lai neadvancētam lietotājam izskaidrotu, ko konkrētais burtu savirknējums nozīmē.

http://rymden.nu/exceptions.html

miga.lv hostinga grafiskais pārvaldes rīks

Viens no lielākajiem ieguvumiem, izmantojot Microsoft Internet Information Services, ir grafiskais pārvaldes rīks, kas būtiski atvieglo dažādu tīmekļa servera uzstādījumu konfigurēšanu. Zemāk aprakstīti soļi, kas jāveic, lai no sava datora ar grafisko vidi pieslēgtos miga.lv serverim.

1. Atbalstītās operētājsistēmas: Windows XP SP2+, Windows Server 2003 SP1+, Windows Vista SP1+.

2. Jāinstalē IIS 7.0 Manager for Remote Administration: 32bit vai 64bit (instrukcija un instalācija). Jāņem vērā, ka uz Windows Vista šis ir papildinājums iebūvētajam rīkam, kas ļauj pārvaldīt tikai lokālo serveri.

3. Jāpalaiž Internet Information Services (IIS) Manager.

4. Sadaļā Connection tasks jāizvēlas Connect to a site...

5. Laukā Server name jānorāda miga.lv, bet laukā Site name jānorāda Jūsu domēna vārds, piemēram, knagis.miga.lv vai meritus.lv.

6. Spiežot Next, tiks pieprasīts lietotāja vārds un parole - tie jāievada tieši tādā pašā formā kā http://miga.lv pārvaldes modulī.

7. Pēc Next nospiešanas tiek piedāvāta iespēja nodēvēt savienojumu kādā specifiskā vārdā, pēc Finish nospiešanas atvērsies pārvaldes rīks.

8. Pēc šiem soļiem ļoti iespējams, ka parādīsies jautājums, vai vēlaties instalēt dažas specifiskas bibliotēkas. Tam vajadzētu piekrist, jo tās nodrošina dažādas papildus iespējas, kā konfigurēt savu domēnu.

Turpmāk pie sava domēna pārvaldes varēsiet tikt, izvēloties attiecīgo ierakstu kreisajā malā, tikai katru reizi būs no jauna jānorāda lietotāja vārds un parole.

IIS Manager ļauj konfigurēt dažādus tīmekļa lapas aspektus, piemēram, norādīt, ka noteiktas direktorijas saturs tiek parādīts lietotājam (Directory Browsing), vai arī tieši otrādi - ļauj aizliegt piekļuvi kādas direktorijas saturam (Authorization Rules).

Lielākā daļa no izmaiņām, kuras serveris ļauj veikt domēna īpašniekiem, tiek saglabātas Web.config failos, kuriem var piekļūt, izmantojot FTP. Līdz ar to arī pati konfigurācija var tikt veikta, izmainot atbilstošos failos un augšupielādējot tos caur FTP.

Šim rakstam drīzumā sekos dažu atsevišķu pārvaldes rīka funkciju sīkāks apraksts ar pamācībām.

Veids, kā var mēģināt lauzt hostinga serverus

Pienācis laiks aprakstīt kādu drošības caurumu, kas bija viens no galvenajiem iemesliem, kāpēc atteicos no vecā miga.lv servera un Apache web servera. Šis raksts netika rakstīts ar domu, ka kāds šo caurumu nu sāks izmantot (ceru, ka lielajos hostinga serveros tas nav iespējams), bet, lai serveru administratoros raisītu pārdomas par to, kā, apvienojot dažas nekaitīgas funkcijas, var panākt sliktas lietas.

Problēma sastāvēja no vairākām, atsevišķi nekaitīgām, detaļām:

  • uz servera bija atļauts .htaccess failā definēt MIME tipus;
  • PHP moduli web serveris palaiž atkarībā no faila MIME tipa;
  • uz servera bija iespējams veidot un lietot simboliskos linkus.

Katrs no šiem punktiem ir nepieciešams noteiktos scenārijos un pats par sevi neko sliktu nevar izdarīt.

Par caurumu tie pārvērtās sekojošā situācijā:

  • servera ļaunais lietotājs izveido simbolisko linku uz kāda cita klienta direktoriju;
  • ļaunais lietotājs direktorijā, kurā atrodas šis links, izveido .htaccess failu;
  • .htaccess failā ļaunais lietotājs norāda, ka .php failiem MIME tips ir text/plain, papildus vēl ieslēdz arī direktoriju pārlūkošanu;
  • ļaunais lietotājs caur pārlūkprogrammu piekļūst šim linkam, iegūstot pieeju visiem otra klienta .php failiem kā tekstam.

Tā kā .php failos parasti ir tīrā tekstā saglabātas datubāzes paroles, ļaunais lietotājs var piekļūt svešām datubāzēm. Papildus ļaunais klients iegūst pieeju cita lietotāja intelektuālajam īpašumam (lapas kodam).

Vienīgā aizsardzība, kas tika izveidota uz miga.lv vecā servera, bija regulāra pārbaude, vai kāds lietotājs neveido simboliskos linkus uz svešām direktorijām. Diemžēl, nesamazinot piedāvāto funkcionalitāti, ar izmantoto programmatūru šo caurumu izlabot nevarēja.