sluchaj muzy bez gumki

pozytywny news – najpierw apple, teraz emes – obie firmy obiecaly, ze muzyka bedzie bez DRM. news pochodzi z site’u, ktorego nieznosze wiec nie zachecam do klikania.
niech jeszcze pojawi sie news ‘hd dvd bez zabezpieczen’ i okaze sie, ze konsumentow mi podobnych jest wielu – zreszta jesze nie spotkalem osoby, ktora miala by odmienne zdanie. a wiec jednak jestesmy [konsumenci] w stanie zmusic producentow do przemyslenia i zmiany kierunq. mam nadzieje, ze to nie koniec zmian w tym kierunq.

pol zartem – pol serio

dostalem taki komentarz na allegro, ze musze go przeklic:

“Doskonały kontakt. Świetna komunikacja. Wyrozumiałość i profesjonalizm. “Kiedyś, gdy będę już za stary by handlować na Allegro , zasiądę przy kominku , zapalę fajkę i opowiem wnukomo aukcji z Tym Człowiekiem!” :)) POLECAM””

O_o jestem w ciezkim szoq – nie wiem czy mam sie smiac czy byc dumnym huehue. total rozjebka q:

nowe, lepsze 212!

dzieki najlepszemu webdeveloperowi – sethowi, 212 moze przeniesc sie na normalny system, z badziewnego bloxa, ktory jest najh**ym systemem blogowym z jakim przyszlo mi sie zmierzyc. moje podejrzenia potwierdzil seth podczas migracji postow. zdradze tajemnice, ze posty zostaly przewalone przy pomicy XML-RPC poprzez RSSy [+ masa recznej obrobki, nie zgodnych z zadnym standardem szitow z bloxa].

NOWY, LEPSZY 212. seth odgrazal sie, ze bedzie dokladal swoje 5gr. czekam (:

ps. seth ma w piatek urodziny. masz drinki on-the-house ziom (:

pulpit z pelna fizyka

baaardzo przyjemnie sie oglada demo. bardzo ciekawy pomysl. ale imho totalnie nieprzydatny i wydaje mi sie, ze nie ma racji bytu – a w kazdym razie nie dla osob takich jak ja na pewno. wady:
– pozwala na robienie balaganu. widzac biurka ludzi, az boje sobie wyobrazic jak beda wygladaly pulpity
– brak mozliwosci latwego sortowania i szybkiego odnalezienia bardzo konkretnego pliq [gdzie nazwy? 1ooo doqmentow pdf i wszystkie takie same? mam pamietac ze odwrocony o 67stopni w prawo to TEN a o 84 w lewo to TAMTEN?]
– zbyt zlozone do codziennego uzytq. nauka obslugi takiego pulpitu to sporo czasu… no to troche naciagany argument.

jak widze idealny pulpit? w zasadzie moja wizja laczy kilka rzeczy – po pierwsze caly file system oparty o baze danych. mniej-wiecej to, czym mial byc winFS, chociaz kiedy o nim czytalem, to nie jest do konca to o czym maze od lat, nie mowiac o tym, ze tego nie ma q: FS oparty o baze danych daje nieograniczone mozliwosci indexowania i szybkiego wyszukiwania – po czymkolwiek i w jakimkolwiek typie doqmentu.
– brak obiektu typu ‘katalog’ – zamiast tego wylacznie widoki
– plaska struktura plikow, dzielona widokami definiowanymi po slowach kluczowych lub atrybutach pliq [chyba troche cos takiego, co probuja zrobic google desktop czy ten microsoftowy… tylko bardziej oddolnie, od systemu pliqw, wydajniej i .. po prostu bardziej].
– oczywiscie brak rozszezen plikow [jednym z pol bazy danych bylby hash pierwszych bajtow danych/naglowek, swiadczacy o typie pliq] – troche jak w linuxie czy amiga OS tyle, ze nie bylby wyliczany przy kazdym uruchomieniu, sprawdzeniu, tylko bylby wydzielona kolumna.
– kazdy plik moglby nie byc przechowywany jako ‘ciagla struktura’ – jeden plik, tylko jako wartosci poszczegolnych kolumn w bazie typu wlasnie ‘naglowek’,’body’,’info’ etc. zaleznie od typu pliq bylyby rozne kolumny wypelnione. np. exif moglby byc takimi polami. przeszukiwanie plikow po danych z exifa … nice
– do tego manager okien dzialajacy jak polaczenie znanych dwupanelowcow [typu TC, NC, FC] a windowsowym explorerem – czyli mozliwosc otwarcia wielu niezaleznych widokow [aka explorator], ale przy akcji typu ‘copy’ czy ‘move’ wskazuje sie okno target. w sumie mam dosc szczegolowa wizje jakby to mialo dzialac, ale troche to nie poukladane poki co. taby w TC sa sporym ulatwieniem ale nadal to durne ograniczenie widoq… choc trzeba przyznac, ze TC nie ma sobie rownych w pomyslach dot. operacji na plikach, jak chocby kolejkowanie zamiast kopiowania od razu.. chociaz z wykonaniem troche gorzej [ostatnia wersja z jakiej korzystalem to jakies poltora roq temu – moze sie cos zmienilo].

przedzialow rutingu w vista nie ma

tyle o tym czytalem, udalo mi sie nawet w koncu dotrzec w jakis sposob tym ogolnie zarzadzac [route] – choc nie udalo mi sie wyluskac nigdzie informacji w jaki sposob zmienic zachowanie aplikacji [czyli np. czy aplikacja A jest w przedziale VPN czy w sieci lokalnej]. zadalem pytanie na forum longhorna i uzyskalem odpowiedz….

nExoRek, Routing compartments were cut from Windows Vista RTM. We are investigating how to deliver this functionality (or something similar) in a future release of Windows.

to ci dopiero niespodzianka

enumeracja atrybotow obiektu AD cz.2

poprzednie rozwiazanie ma wade, jesli chce sie potem wylistowane atrybuty np. pchnac do innego obiektu. po pierwsze jest ich za duzo, po drugie nie wszystkie sa modyfikowalne. wzorujac sie na opisie gibona udalo mi sie napisac troche poprawiona [kwestia tego co sie chce osiagnac – byc moze ‘zuobozona’] wersje skryptu, listujacego atrybuty, do ktorych ma sie prawo zapisu:

OPTION EXPLICIT
ON ERROR RESUME NEXT
CONST objectCN = "test test"
CONST objectOU = "OU=test"

Dim oDom, domDNS, namingContext, oObj
Dim allowedAttributes,strAttribute,strValues, strItem

'*******************************************************************************
set oDom=getObject("LDAP://RootDSE")
domDNS=oDom.dnshostname
namingContext=oDom.defaultNamingContext
domDNS=join( split( right(namingContext, len(namingContext)-3),",DC="),"." )

Set oObj = GetObject("LDAP://cn=" & objectCN & "," & ObjectOU & "," & namingContext)
oObj.getInfoEx array("allowedAttributesEffective"),0
allowedAttributes=oObj.getEx("allowedAttributesEffective")

For Each strAttribute in allowedAttributes
strValues = oObj.GetEx(strAttribute)
if err.number=0 then
For Each strItem in strValues
err.clear
Wscript.Echo strAttribute & " -- " & strItem
if err.number<>0 then
wscript.echo "ERROR getting "&strAttribute&": "&cstr(hex(err.number))&" "&err.description
err.clear
end if
Next
else
'wscript.echo strAttribute&" skipped"
err.clear
end if
Next

[oba skrypty – i ten i poprzedni, wypisuja tylko atrybuty, ktore da sie wypisac jako ciag, wywalajac blad przy np. atrybutach binarnych. ale to tylko ogolny przyklad a nie komplexowe rozwiazanie]
podstwowa roznica jest to, ze zmiast laczyc sie do schematu i zczytywac ‘jakie sa dostepne atrybuty dla obiektu typu “user”‘ tym razem po dolaczeniu sie do obiektu sprawdzam atrybut ‘allowedAttrbutesEffective’ i z tej listy probuje je odczytac.

warto zwrocic uwage na zastosowanie getInfoEx – przypominajacym, ze wartosci sa de facto odczytywane z cachu AD, ktory nie zawiera pewnych wartosci wyliczanych. pominiecie tej linijki zwroci blad ‘property not found in the cache’.

enumeracja atrybotow obiektu AD aka LDIFDE

ciekawy problem – w jaki sposob zrobic zrzut obiektu AD do pliq, ze wszystkimi mozliwymi wartosciami atrybutow? odpowiedzia prawidlowa jest oczywiscie LDIFDE lub CSVDE ale wiadomo – co wlasny skrypt, to walsny skrypt. pojedynczy mechanizm mozna zlozyc w calosciowe rozwiazanie – np. do odtworzenia srodowiska produkcyjnego w labie.
najpierw metody ktore wydawaly mi sie intuicyjne a nie zadzialaly, poniewaz – jak to czesto bywa, intuicja zawiodla. nie uda sie wylistowac atrybutow ani poprzez trywialna probe enumeracji:

set oUser=getObject("LDAP://dc=test,dc=com")
for each attribute in oUser
wscript.echo attribute.name &" "&attribute.value
next

nie uda sie rowniez zastosowac zapytania ADODB, wstawiajac ‘*’ w miejsce odpytywanych atrybutow:

[...]
adoCmd.CommandText = "<LDAP://"&domDNS&"/"&namingContext&_
">;(&(ObjectCategory=Person)(samAccountName="&toFind&"));*;SubTree"
[...]

o dziwo taka operacja zawsze zwraca parametr ADsPath [ciekawe jak to jest zdefiniowane, ze aqrat ten]. gibon nakierowal mnie na wlasciwy tor podsylajac linka do skryptu enumerujacego atrybuty. skrypt jednak jest dla ADAM a nie AD, ale to juz nieduzy krok i tak po poprawkach mozna uzyskac takie rozwiazanie:

OPTION EXPLICIT
ON ERROR RESUME NEXT
CONST objectCN = "test test"
CONST objectOU = "OU=test"
CONST strObjectType = "user" 'ie "organizationalunit", "group", "user"

Dim oDom, domDNS, namingContext
Dim oObj, oObjectProperties
Dim strAttribute,strValues, strItem
Dim strObjectDN

'*******************************************************************************
set oDom=getObject("LDAP://RootDSE")
domDNS=oDom.dnshostname
namingContext=oDom.defaultNamingContext
domDNS=join( split( right(namingContext, len(namingContext)-3),",DC="),"." )

Set oObj = GetObject("LDAP://cn=" & objectCN & "," & ObjectOU & "," & namingContext)
Set oObjectProperties = GetObject("LDAP://"&domDNS &"/schema/" & strObjectType)

For Each strAttribute in oObjectProperties.MandatoryProperties
strValues = oObj.GetEx(strAttribute)
For Each strItem in strValues
err.clear
Wscript.Echo strAttribute & " -- " & strItem
if err.number<>0 then
wscript.echo "ERROR getting "&strAttribute&": "&cstr(hex(err.number))&" "&err.description
err.clear
end if
Next
Next

For Each strAttribute in oObjectProperties.OptionalProperties
strValues = oObj.GetEx(strAttribute)
If Err = 0 Then
For Each strItem in strValues
Wscript.Echo strAttribute & " -- " & strItem
Next
Else
'Wscript.Echo strAttribute & " -- No value set"
Err.Clear
End If
Next

to co jest najwazniejsze to fakt, iz aby wylistowac wszystkie atrybuty… nalezy miec ich liste! to jest wlasnie to, czego nie moglem przeskoczyc. najpierw skrypt laczy sie do obiektu, nastepnie do obiektu wlasciwosci w schemacie dla danego typu obiektu – lub bardziej po ludzku, do listy zawierajacej spis dostepnych atrybutow dla danego typu obiektu.
nastepnie dla kazdego obiektu z listy, sprawdzane jest czy zadany obiekt ma go ustawionego czy nie – innymi slowy dzialanie od tzw. d*py strony.