Noworoczne postanowienia (reaktywacja)
Z przerażeniem spoglądam dziś na statystyki bloga z ostatniego roku. Jeden post, w dodatku na samym jego początku… Nie taki był plan! Ostatnio zastanawiałem się nad przyczyną tego stanu rzeczy i doszedłem do wniosku, że przyczyna jest jedna: zawsze mierzę w artykuły długie i wyczerpujące temat, często dość obszerny. A przecież wiedza to nie tylko te tomiszcza, bloki wiedzy, ale również drobne wskazówki, ciekawostki i informacje, które zamknąć można w kilku zdaniach. Moje postanowienie noworoczne ich właśnie będzie dotyczyć. Planuję wrzucać coś o wiele częściej, ale w mniejszych porcjach. Wam będzie łatwiej to czytać, mi łatwiej pisać w miarę regularnie i jednocześnie jak sądzę może nawet ciekawiej.
Wymówki!
Skąd jednak ta tegoroczna posucha? Trzy przyczyny, z czego jedna daleko nietechniczna. Pierwsze dwie dotyczą PowerShella a jedna z nich właśnie ujrzała światło dzienne, głównie dzięki Mariuszowi, który mimo ciągłych opóźnień z mojej strony, nie zrezygnował i dzięki temu już dziś możecie zmierzyć się z przeszło dwugodzinnym kursem MVA dotyczącym zarządzania Linuksami za pomocą PowerShella. Co ciekawe: samo nagrywanie to była betka. Gros czasu pochłonęła późniejsza edycja. Z resztą doświadczeń z tej pracy zamierzam użyć w przyszłym roku. O tym jednak napiszę szerzej dopiero wtedy, gdy będzie o czym pisać. Nauczony zeszłorocznym doświadczeniem nie chcę obiecywać czegoś, po to jedynie, by z każdym tygodniem coraz boleśniej uświadamiać się, że moja zagrywka była blefem z parą dwójek w dłoni…
Druga przyczyna, choć planowana na zeszły rok, nadal wymaga sporo kreatywnych soków wyciśniętych przemocą z substancji szarej mojego mózgu. O niej również napiszę jak już będzie o czym pisać. Planuję ukończyć pracę z końcem lutego. Nie wiem ile czasu upłynie do chwili, gdy wyniki mojej pracy będzie można komukolwiek pokazać. Wierzcie mi jednak – czasu pochłania ten projekt sporo.
Trzecia, nietechniczna przyczyna ma na imię Ewa i podobnie jak jej tatuś, nie przepada za sypianiem w nocy. Tu jednak podobieństwa się kończą. Każdy wiek rządzi się swoimi prawami. Ja swoją bezsenność przekuwam na pisanie, nagrywanie, czytanie. Córcia zaś, uwięziona w swym łóżeczku, skazana jest na czynność dużo mniej twórcze, choć zauważalne przez całe otoczenie. Dziecię bowiem po tatusiu odziedziczyło również mocny głos. Ba – crossing-over chyba zrobił swoje i głos zdaje się nawet mocniejszy! Niestety, wpływa to na produktywność ojczulka. To też skłania mnie do przejścia na "krótką formę". Artkuł pisany przez kilka wieczorów zwykle się "rozsypuje". Na krótką formę czasu w trakcie takiego przykrótkiego wieczora powinno wystarczyć. Pozostaje więc jedynie znaleźć odpowiednie tematy, a tych raczej nie powinno mi w najbliższym czasie brakować (patrz: punkt wyżej).
OCB, czyli pierwsze koty za płoty!
By nie ograniczyć się do teoretyzowania, jako że temu oddawać się najłatwiej. Na koniec "przekąska", która powinna dać wyobrażenie, co rozumiem przez formę krótką. Dziś słowo o tworzeniu obiektów z "pseudotypem". Pisząc funkcje w PowerShellu z założenia zwracamy obiekty. Na ogół obiekty te są nasze własne, nie są to typy faktycznie istniejące w .NET. Sposobów tworzenia takich obiektów jest sporo, mój ulubiony (działający niestety dopiero od wersji trzeciej PowerShella) wymaga skorzystania z tablicy skrótów "przekonwertowanej" do typu PSCustomObject:
[PSCustomObject]@{ PSTypeName = 'PowerShell.Pseudo.Osoba' Imie = 'Bartek' Nazwisko = 'Bielawski' twitter = '@bielawb' email = 'bartek.bielawski@live.com' }
Wstawiając do tablicy klucz "PSTypeName" dopisujemy wybrany pseudotyp do tworzonego obiektu. Oznacza to, że obiekt taki możemy później formatować i modyfikować jak "prawdziwe" typy przy pomocy plików XML. Jeśli korzystając znów ze składni dostępnej w wersji trzeciej i wyższych zaktualizujemy najpierw nasz (nieistniejący przecież!) typ i dodamy do niego pewną metodę, to do naszej "osoby" będziemy mogli w miarę prędko wysłać maila:
$osoba = [PSCustomObject]@{ PSTypeName = 'PowerShell.Pseudo.Osoba' Imie = 'Bartek' Nazwisko = 'Bielawski' twitter = '@bielawb' email = 'bartek.bielawski@live.com' } Update-TypeData -TypeName PowerShell.Pseudo.Osoba -Value { Start-Process -FilePath "mailto:$($this.email)" } -MemberType ScriptMethod -MemberName SendMail $osoba | % Send*
Oprócz cudów ETS przemyciłem w tym kodzie kolejną nowinkę z PowerShell 3 – dramatycznie skróconą składnię polecenia ForEach-Object.
Do przeczytania!
I tym optymistycznym akcentem kończę ten podsumowujący rok post. Mam nadzieję, że za rok nie będę już musiał wycofywać się z kolejnych planów. Jeśli jednak czegoś nauczył mnie ten 2015 rok to to, że plany nie zawsze da się zrealizować. Tak czy inaczej, Do Siego Roku i do rychłego (mam nadzieję!) przeczytania!
Trzymam kciuki. Może obecne moje środowiska uda sie wymienić na doganiające MSFT-owe wymysły 🙂 i korzystać z tych konstrukcji. Nienawidzę PS1 v2 (a czasem i v1 :).
czekam z niecierpliwością 🙂
Jak tam z realizacją postanowienia??
Liczymy na Ciebie 🙂