Archive for 27. veebr. 2009

Pean kiitma ühte mercedese parandamise kohta…

veebruar 27, 2009

Aus olla, ma pole eriti kedagi kiitnud. Kogumuse remondifirmade ja ka esinduste, sutsti valmis kirves arve selga ning nägemist. Kas ka töötab hiljem minu mure.

Tekkis probleem auto enam käima ei läinud ja temp. kôikumiste aeg, käisin vist kôik firmad läbi, diagnostikad kôik korras. Probleem ikka ôhus, siis mu sôber ütles, et otsi Imre üles. Mina siis ei teadnud, kes see Imre on, otsisin googles seoseid ja sain firma nime – Lesven OÜ

Suptsi ja korras, poisid lahendasid probleemi poole päevaga.

Nüüd oli probleem konditsioneeriga, pump pidi terve mootori (jooksis kinni)…essu keerama. Vahepeal sôitsin nagu tankiga, soojust autosse ei tulnud, oletasin, kus tee asub. Mesakeskusest öeldi selline remondihind, et mul pôrkasid varbad vastu otsaesist.

Otsisin Imre ja ta tiimi üles, no annab ikka teda leida.

Suur-Sõjamäe 30, Orto territoorium enne 5 angaari vasakule, siis paremale, 8 angaar.

Sutspi ja valmis ning kôik töötab nagu 5 kopikat.

Respekt, Imre ja ta tiim ikka tôsised gurud ! Töö kiire ja korralik sôna otseses môttes

Advertisements

Kuidas foorumi spämmerid (phpBB) captcha’st läbi tungivad !?

veebruar 2, 2009

Seekord pigem küsimus teile arvuti spetsialistidele ehk oskate aidata.
Haldan ühte foorumit ja spämmerid kuidagi urlidega mängides suudavad mingi nädalas korra ennast regada.

Varem oli nö lihtne “captha” peal, seal polnud mingit vaeva ocr tekstituvastusega tehti 1:0.
Nüüd gd tüüpi captha phpBB3 peale keeratud, piisavalt müra ja jooni lisatud. Tähed varieeruvad jne

Aga mingi imeline url on, mida nad proovivad ja mingi hetk õnnestub ka (blind sql injection ?). Kas mul mõni phpBB uuendus jäänud panemata? Peaks olema viimased koodid.

POST: posting.php?mode=reply&f=3&sid=ed1622df26a043c08bfb2f28b3160f17&t=4%2B%255B0,109157,6248%255D%2B-%253E%2B%255BN%255D%2B

POST: posting.php?mode=reply&f=3&sid=ed1622df26a043c08bfb2f28b3160f17&t=4%2B%255B0,109157,5287%255D%2B-%253E%2B%255BN%255D%2B

POST: posting.php?mode=reply&f=3&sid=ed1622df26a043c08bfb2f28b3160f17&t=4%2B%255B0,109157,6214%255D%2B-%253E%2B%255BN%255D%2B

Kõikides logides on sama sid ja t parameeter !

MSSQL : Hoiame infot bitmaskide abil…

veebruar 2, 2009

On olukordi, kus vaja hoida kirje kohta staatusi; ala töödeldud, viga (võib olla mitu viga), täiendavat infot.

Variandid:

  • teha tabelile kõvasti bit välju, muudaks tabeli suht koledaks
  • teeks teise tabeli, mis hoiaks antud kirje staatusi. Raiskame ketast ning muudame päringud kohmakaks

DOS ajast külge jäänud komme bitte kasutada. Jaotasin ära bitid loogilisse vahemikku, mis on väga tähtis
Veabitid jätke alati viimaseks !

Kokku 32 staatus, kui 0 ka arvestada :
0 – siis tähendas, et kirjet pole üldse töödeldud

– töödeldud edukalt
2^0=1

– milline programm muutis/töötles kirjet (4 programmi sai muuta)
2^1=2
2^2=4
2^3=8
2^4=16
— reserveeritud
2^5=32
2^6=64
2^7=128
2^8=256
— kirje täiendavad infobitid
2^9=512
2^10=1024
2^11=2048
2^12=4096
2^13=8192
2^14=16384

— töötlemisel tekkinud vead (16 tk), 7 reserveeritud
2^15=32768
2^16=65536
2^17=131072
2^18=262144
2^19=524288
2^20=1048576
2^21=2097152
2^22=4194304
2^23=8388608
2^24=16777216
2^25=33554432
2^26=67108864
2^27=134217728
2^28=268435456
2^29=536870912
2^30=1073741824

Näiditabel siis:

create table bitmaania
(vagavajalikudandmed varchar(255),
staatused int not null default 0)
go
create index bitmaaniatavalineindx on bitmaania(staatused)

Paneme mõned kirjed ka:

insert into bitmaania(vagavajalikudandmed,staatused)
values(‘JAMA 1’,2|32768 )
go
insert into bitmaania(vagavajalikudandmed,staatused)
values(‘JAMA 2’,8|2097152|134217728 )
go
insert into bitmaania(vagavajalikudandmed,staatused)
values(‘ÜKS ÕNNESTUNUD KIRJE’,1|4|8192 )

Tulemus tabelis…

Päringu tulemus:

JAMA 1 32770
JAMA 2 136314888
ÜKS ÕNNESTUNUD KIRJE 8197

Teeme päringu, anna kõik korrektsed kirjed

Teoorias nagu kõik õige, kui bitmaskide loogikat kasutada. Aga tegelikkuses pole lood nii ilusad, sest mõlema näite puhul ei kasutata indeksit (forced index ei anna ka midagi).

SELECT [vagavajalikudandmed]
,[staatused]
FROM [test].[dbo].[bitmaania]
where staatused & 1=1

või mittekorrektsed

SELECT [vagavajalikudandmed]
,[staatused]
FROM [test].[dbo].[bitmaania]
where staatused & 1!=1

Nüüd peame esitama küsimuse, kas me teeme ainult otsingut ainult stiilis anna kõik korrektsed ja mittekorrektsed kirjed või tahame otsida ka veakoodide järgi.

Kui tõesti vaid esimene variant, siis võib bitmaaniatavalineindx kasutada. See olukord eeldab, et kirjel peab alati olema töödeldud staatus. Sest suvaline infobit märgiks, et kirje töödeldud.

SELECT [vagavajalikudandmed]
,[staatused]
FROM [test].[dbo].[bitmaania] with (index (bitmaaniatavalineindx))
where staatused>0 and staatused<32768

Aga saab ka kavalamalt teha,
et kas ikka reaalselt ka töödeldud bit olemas !

alter table [test].[dbo].[bitmaania]
add okrecs as cast(staatused & 1 as bit)
go
create index okbit on [test].[dbo].[bitmaania](okrecs)

— anname indeksi ette,
— et mssql server ennast üle ei mõtleks !
SELECT [vagavajalikudandmed]
,[staatused]
FROM [test].[dbo].[bitmaania] with (index (okbit))
where okrecs =1

Näiteks soovime ainult kirjeid, millel viga:
2^21=2097152

SELECT [vagavajalikudandmed]
,[staatused]
FROM [test].[dbo].[bitmaania] with (index (bitmaaniatavalineindx))
where staatused>=2097152 and staatused<=4194303

Bitmask pole paha stiil andmebaasinduses, aga seda tuleb osata kasutada !

Lõppu hariv sql lause, millega saate 2 astmete väärtustega tutvuda

set nocount on
declare @btmasks table (temp varchar(255))
declare @cnt int
set @cnt=0

while @cnt<31
begin
insert into @btmasks
select ‘ 2^’+CAST(@cnt as varchar)+’=’+cast(power(cast(2 as bigint),@cnt) as varchar)
set @cnt=@cnt+1
end
— 2^31 – 1 viimane bait on negatiivsuse lipp, seda kasutada ei ole hea

select temp as bmaskval from @btmasks