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…
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
NTFS-3g
nie przetesotwalem jeszcze dystrybucji knoppixa ani ubuntu ale przeczytalem gdzies zdanie 'poki co wszystkie linuxy maja wsparcie read only’ i dolaczony link do tutoriala instlacji NTFS-3g RW dla ubuntu edgy eft
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:
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.