domowa macierz dyskowa

jeszcze kilka lat temu… co ja mowie – jeszcze teraz, macierze kojarza sie z rozwiazaniami produkcyjnymi w duzych, bogatych firmach, ktore stac na drogie rozwiazania jakimi sa macierze.
raz juz stracilem rok zdjec, po padzie dysq. backupy robie na [kiedys CD obecnie] DVD ale ilez to razy nie wyciagalem plyty CD sprzed 2 czy 3 lat i okazywalo sie, ze nie mozna jej odczytac. teoretyczna zywotnosc plyt jest spora, ale w praktyce bardziej jestem sklonny wierzyc w teorie, ze wszystkie nosniki w polsce sa produkowane gdzies w lomiankach i tylko zmienia sie wrzuta na wierzchu TDK/platinum czy inna. jaka kolwiek nie byla by prawda, mam obecnie w kompie 4 halasujace drive’y, backupy robi sie niewygodnie… czas pomyslec o czyms bardziej… profesjonalnym ale domowym.
i okazuje sie, ze nie jestem jedyna osoba z podobnym problem, a popyt na podobne rozwiazania jest coraz wiekszy. mysle, ze wkrotce bede testowal takie rozwiazanie. w dobie aparatow cyfrowych, gdzie z wakacji przywozi sie 1,5G fotek, a nawet po przesiewie zostaje ich bardzo duzo, wypalanie staje sie co najmniej upierdliwe. nie mowiac o pozniejszym potem ich przegladaniu.

mniej spamu na o2…ROTFL

dostalem taka mila wiadomosc na skrzynke o2:
„Witaj w Nowym Roku!
Horoskop na 2007 rok:
[]
Od pewnego czasu zespół o2.pl pracował nad zmniejszeniem ilości spamu docierającego do Twojej skrzynki pocztowej. Mniej spamu to:
1) przyjemniejsze korzystanie z poczty,
2) większe bezpieczenstwo,
3) oszczędność Twojego czasu!
ZREDUKOWALISMY SPAM O 95%”

…biorac pod uwage, ze 95% spamu jaki dostawalem od o2 to wygenerowany przez nich, duzo lepsza wydajnosc by uzyskali przestajac rozsylac reklamy…

druzyna longhorna

rozpoczynamy prace nad gloszeniem slowa o longhornie (; druzyna longhorna obecnie juz oficjalnie sklada sie z 7 ludkow w postaci: nexor, kojn, peki, noise, marcin [bez nicka… jeszcze], karol [hmm… cos z tym trzeba bedzie zrobic (;] + artur z emesa. pierscien longhorna dzierzy darek [MS].
**UPDATE**
okazalo sie ze karol ma nicka AaaA – w pismie ok, ale jak to wymowic.. bez zajakniecia? q:

[na zdjeciu stojacy artur, czytajacy kojn, sqpiony karol, rozwalony noise i zdegustowany nexor (;]
wkrotce otwarty bedzie oficjalny site – polska strona longhorna, w ramach technetu. bedzie blog, forum, arty – wszystko co byc powinno, zeby o longhornie mozna bylo dowiedziec sie wszystkiego.

nasz pierwszy task to odsmiecenie polskiego tlumaczenia strony technetowej o longhornie. i tak przez nas nie bedzie mozna cieszyc sie 'ekscytujacymi cechami systemu’ ani 'kosztownie zaklocajacymi zlosliwostkami’. za to bardzo przepraszamy (; ale postanowilismy udoqmentowac czesc wersji oryginalnej, zaraz po tym jak juz podnieslismy sie z podlogi:

taki jest efekt, kiedy tlumacz nie jest informatykiem. mysle, ze gdybym mial przetlumaczyc text medyczny, lekarze mieli by nie gorsza ucieche ^^’

pierwsza ankieta jaka chcielismy zrobic to pytanie 'co przedstawia znaczek longhorna?’

macicę
stringi
glowe byka
– nie wiem ale jest fajne

do wygrania: troche fanu q:
oczywiscie nie wierze, zeby tego rodzaju zarcik przeszedl przez tryby korporacji, wiec pozostanie [mam nadzieje] uciecha dla nielicznych tu zagladajacych.

iPhone

odbyla sie konferencja apple. poza zmiana nazwy firmy z apple computers na apple inc najwiecej czasu poswiecono iphone – wniosek z tego prosty – to bedzie robaczek w jabluszq.
tak wygladaly zgadywanki jak bedzie toto wygladac, a tak wyglada realnie.

telefon ma wyswietlach-touchscreen, nie ma rysika, i jest polaczeniem telefonu, ipoda i messengera. ciekawostka – stoi na tym os X, procesor – oczywiscie wg. nowej drogi apple – intel.

vanishing point – gra o viste

w ramach promocji visty, emes i amd uruchomilo gre-puzle – vanishing point. gra niby miedzy narodowa, jednak q niemilemu zaskoczeniu oznacza to kraje: usa, australia, kanada, niemcy, uk, nz, irlandia, francja, wlochy, hiszpania i singapur. troche dziwnie. jakos w regulaminie czy opisie nie doczytalem sie czemu aqrat takie kraje a nie inne.
nagroda glowna – lot na orbite. fucking nice…

sama gra ma ciekawa formule i oprawe – do puzli dolaczony jest krotki material video. rozwiazaniem jest polaczenie rozwiazania puzli i czegos ukrytego w tym materiale.
zagadek nie rozwiazywalem – pomineli polske, a czasu na zabawe braqje q:

windows home server

po serii plotek w koncu wiadomo co to takiego Windows Home Server – bedzie to mlodszy brat SBS, oparty na w2k3 r2, owizardowany gdzie sie da [i tam gdzie sie nie da]. produkt ma pojwic sie pod koniec roq.
generalnie jak czytam zdanie 'serwer tak prosty, ze obsluzy go nawet mama’ to .. niewiarygodne…
link

export kontaktow outlook express do AD

trafil sie ostatnio taki problem – wdrozylismy AD+EX i klient poprosil o pomoc przy przeniesieniu kontatkow z outlook do AD. generalnie nic trudnego – mozna zalatwic to prostym skryptem, jest jednak pewien myk. oto kilka uwag dotyczacych takiej operacji:

najpierw sam skrypt. przy pelnym exportcie kontatow z outlooka dostaje sie plik excelowy z gigantyczna iloscia kolumn. najpier wiec definicja pol:

const X_SALUTATION=1
const X_GN=2
const X_SN=4
CONST X_COMPANY=6
CONST X_DEPT=7
CONST X_TITLE=8
CONST X_ADDR=9
CONST X_CITY=12
CONST X_STATE=13
CONST X_ZIP=14
CONST X_COUNTRY=15
CONST X_ASSISTANT=30
const X_FAX=31
CONST X_TEL=32
CONST X_TEL2=33
CONST X_MOBILE=41
CONST X_TEL3=43
CONST X_PAGER=44
CONST X_EMAIL=49
CONST X_ENAME=51
CONST X_NOTES=73
CONST X_WEBPAGE=85

skrypt jest dosc prymitywny – na szybko – zalozeniem jest wiec, ze jedno z pol – tu 'nazwisko’ – jest zawsze niepuste. skrypt bedzie przetwarzal arqsz excela az trafi na wiersz z pusta kolumna 'nazwisko’. przed przypisaniem kazdej wartosci do AD trzeba sprawdzic czy nie jest ona przypadkiem pusta:


Set objRoot = GetObject("LDAP://rootDSE")
strDNS = objRoot.Get("defaultNamingContext")
Set objDomain = GetObject("LDAP://" & strDNS)
Set objOU = GetObject("LDAP://OU=contacts," & strDNS)
set oExcel=createobject("Excel.Application")
oExcel.workbooks.open(left( WScript.ScriptFullname, instrRev(WScript.ScriptFullname,"") )&"kontakty-import.xls")

i=2
with oExcel.ActiveSheet
While .Cells(i,X_SN) <> ""
wscript.echo vbcrlf&"przetwazam wiersz: "&cstr(i)

tu jeszcze informacja – podczas importu kontaktow, trzeba pamietac o tym, ze aby pojawily sie one w ksiazce adresowej, musza byc uzupelnione wszystkie pola wymagane przez exchange – inaczej utworzonego contactu nie bedzie w GALach. czesc z atrybutow uzupelnia sie sama, ale czesc trzeba przypisac recznie – to jest glownie cn oraz mailnickname:


surname=.cells(i,X_SN).Value
givenname=.cells(i,X_GN).value
if not isNull(givenname) and not isEmpty(givenname) then
contactname=givenname&" "&surname
else
contactname=surname
end if
wscript.echo contactname

Set objContact = objOU.Create("contact", "cn="&contactname)

wscript.echo "nazwisko: "&.cells(i,X_SN).Value
objContact.put "sn",.cells(i,X_SN).Value
objContact.put "mailNickName", contactname
if not isNull(.cells(i,X_GN).Value) and not isEmpty(.cells(i,X_GN).Value) then
wscript.echo "imie: "&.cells(i,X_GN).Value
objContact.put "givenName",.cells(i,X_GN).Value
end if
if not isNull(.cells(i,X_SALUTATION).Value) and not isEmpty(.cells(i,X_SALUTATION).Value) then
wscript.echo "salut/desc: "&.cells(i,X_SALUTATION).Value
objContact.put "description",.cells(i,X_SALUTATION).Value
end if
if not isNull(.cells(i,X_COMPANY).Value) and not isEmpty(.cells(i,X_COMPANY).Value) then
wscript.echo "company: "&.cells(i,X_COMPANY).Value
objContact.put "company", .cells(i,X_COMPANY).Value
end if
if not isNull(.cells(i,X_DEPT).Value) and not isEmpty(.cells(i,X_DEPT).Value) then
wscript.echo "department: "&.cells(i,X_DEPT).Value
objContact.put "department", .cells(i,X_DEPT).Value
end if
if not isNull(.cells(i,X_TITLE).Value) and not isEmpty(.cells(i,X_TITLE).Value) then
wscript.echo "title: "&.cells(i,X_TITLE).Value
objContact.put "title", .cells(i,X_TITLE).Value
end if
if not isNull(.cells(i,X_ADDR).Value ) and not isEmpty(.cells(i,X_ADDR).Value ) then
wscript.echo "street: "&.cells(i,X_ADDR).Value
objContact.put "street",.cells(i,X_ADDR).Value
end if
if not isNull(.cells(i,X_CITY).Value ) and not isEmpty(.cells(i,X_CITY).Value ) then
wscript.echo "city: "&.cells(i,X_CITY).Value
objContact.put "l",.cells(i,X_CITY).Value
end if
if not isNull(.cells(i,X_STATE).Value ) and not isEmpty(.cells(i,X_STATE).Value ) then
wscript.echo "state: "&.cells(i,X_STATE).Value
objContact.put "st",.cells(i,X_STATE).Value
end if
if not isNull(.cells(i,X_ZIP).Value) and not isEmpty(.cells(i,X_ZIP).Value) then
wscript.echo "postal: "&.cells(i,X_ZIP).Value
objContact.put "postalCode",.cells(i,X_ZIP).Value
end if
'if not isNull(.cells(i,X_COUNTRY).Value) and not isEmpty(.cells(i,X_COUNTRY).Value) then
' wscript.echo .cells(i,X_COUNTRY).Value
' objContact.put "",
'end if
if not isNull(.cells(i,X_ASSISTANT).Value ) and not isEmpty(.cells(i,X_ASSISTANT).Value ) then
wscript.echo "asist/info: "&.cells(i,X_ASSISTANT).Value
info="telefon do asystenta: "&.cells(i,X_ASSISTANT).Value
end if
if not isNull(.cells(i,X_FAX).Value) and not isEmpty(.cells(i,X_FAX).Value) then
wscript.echo "fax: "&.cells(i,X_FAX).Value
objContact.put "facsimileTelephoneNumber",.cells(i,X_FAX).Value
end if
if not isNull(.cells(i,X_TEL).Value ) and not isEmpty(.cells(i,X_TEL).Value ) then
wscript.echo "telefon: "&.cells(i,X_TEL).Value
objContact.put "telephoneNumber",.cells(i,X_TEL).Value
end if
if not isNull(.cells(i,X_TEL2).Value) and not isEmpty(.cells(i,X_TEL2).Value) then
wscript.echo "othertel1: "&.cells(i,X_TEL2).Value
othel=.cells(i,X_TEL2).Value
end if
if not isNull(.cells(i,X_MOBILE).Value) and not isEmpty(.cells(i,X_MOBILE).Value) then
wscript.echo "mobile: "&.cells(i,X_MOBILE).Value
objContact.put "mobile",.cells(i,X_MOBILE).Value
end if
if not isNull(.cells(i,X_TEL3).Value) and not isEmpty(.cells(i,X_TEL3).Value) then
wscript.echo "othertel2: "&.cells(i,X_TEL3).Value
if isNull(othel) or isEmpty(othel) then
othel=.cells(i,X_TEL3).Value
else
othel=othel&","&.cells(i,X_TEL3).Value
end if
end if
if not isNull(.cells(i,X_PAGER).Value) and not isEmpty(.cells(i,X_PAGER).Value) then
wscript.echo "pager: "&.cells(i,X_PAGER).Value
objContact.put "pager",.cells(i,X_PAGER).Value
end if
if not isNull(.cells(i,X_EMAIL).Value) and not isEmpty(.cells(i,X_EMAIL).Value) and instr(.cells(i,X_EMAIL).Value,"@")>1 then
wscript.echo "email: "&.cells(i,X_EMAIL).Value
objContact.put "mail",.cells(i,X_EMAIL).Value
end if
if not isNull(.cells(i,X_ENAME).Value) and not isEmpty(.cells(i,X_ENAME).Value) then
wscript.echo "enote: "&.cells(i,X_ENAME).Value
'objContact.put "",
end if
if not isNull(.cells(i,X_NOTES).Value ) and not isEmpty(.cells(i,X_NOTES).Value ) then
wscript.echo "notes: "&.cells(i,X_NOTES).Value
info=info & vbCrLf & .cells(i,X_NOTES).Value
end if
if not isNull(.cells(i,X_WEBPAGE).Value) and not isEmpty(.cells(i,X_WEBPAGE).Value) then
wscript.echo "www: "&.cells(i,X_WEBPAGE).Value
objContact.put "wwwHomePage",.cells(i,X_WEBPAGE).Value
end if

if not isNull(info) and not isEmpty(info) then
objContact.put "info", info
end if
if not isNull(othel) and not isEmpty(othel) then
objContact.putex 2,"otherTelephone",split(othel,",")
end if
on error resume next
objContact.setInfo
if err.number<>0 then
wscript.echo "blad zakladania usera: "&contactname&" "&err.description
err.clear
else
wscript.echo "DONE."
end if
i=i+1
wend
end with

oExcel.Quit

czesc dotyc
zaca kraju zostala wyremowana, poniewaz kraj opisuje sie w AD countrycode wg numerkow ISO 3166 wiec trzba by stworzyc tabele realicji. nie przy tak prywmitywnym skrypciq.

to nie jest jednak koniec problemow – podczas importu kontaktow, RUS [recipient update service], automatycznie zaktualizajuje wszystkie kontakty. w rezultacie swierzo zaimportowane kontakty beda mialy maile.. firmowe. aby RUS nie podmienil kontkaktow mozna skorzystac z tego opisu lub z narzedzia admodify w zakladce ’email addr’ zaznaczajac jeden z dwoch checkboxow przy 'update recipient policy ….’. mozna tez, korzystajac z artykulu z ms dodac do skryptu update dodatkowego pola w AD:


objContact.put "msExchPoliciesExcluded","{3B6813EC-CE89-42BA-9442-D87D4AA30DBC}"

tego jednak nie testowalem, a w innym artykule podana jest nieco inna wartosc: „{26491CFC-9E50-4857-861B-0CB8DF22B5D7}” – taka tez wartosc znalazlem w AD po skorzystaniu z ADModify.

jesli zdarzy sie koniecznosc ponownego importu, na pewno to przetestuje q: