Hip-Hop’owe Reklamy Monitorów

Rozpocząłem poszukiwania nowego monitora. Naturalnie marka była z góry ustalona (przez mojego pracodawcę) – Samsung. Nasza (chyba mogę tak powiedzieć) firma jest w końcu jednym z największych producentów paneli LCD na świecie. Przeglądając kolejne produkty, natknąłem się na ciekawą reklamę, dokładnie takiego modelu, jaki najbardziej przypadł mi do gustu.

Samsung SyncMaster PX2370 na swojej stronie ma nie tylko dokładny opis, zdjęcia i specyfikacje, ale również teledysk-reklamę. Bliżej mi nieznany El Gordo wykonuje utwór Gruby Boss, w którym wychwala produkt koreańskiego giganta – sprawdźcie sami [1]. Ten sam klip dostępny jest również na platformie YouTube [2]. Oto tekst utworu:

Co się patrzysz, jakbyś mówił „kepasa”
Mam nowy towar, ostry jak tasak
Licz cieniasa, dla mnie to kwestia zasad
Jest ultrasmukły, jak miss grudnia z kalendarza

Kupiłem go wczoraj, jest „alright”
LEDowy kozak, to mój nowy ziomal
Ma wypierd*lony obraz, nie muszę iść do galerii
Sztuki lecą na niego, jak wiewiórki na orzeszki

Turbofajna obudowa, się nie dziwmy, że twoja panna wpada do mnie na filmy
Ekran 23 cale, pełen bajer
Tak kotku, na noc zostajesz
Rozkręćmy na nim melanż, mam wolną chatę

Foki piszczą ze szczęścia, bo ma Full HD
To największy lans, jak chromowane felgi
Jak tak gruby sprzęt może być tak cienki?

[…]

Gruby boss, to kwestia ekonomii
Je mało prądu, ale ma kosmiczne osiągi
Do tego mega design, aż chcę go polizać
Zrobię to chyba, jak nikt nie będzie widział

To supernowa gwiazda, nie cienki celebryta
Ty bejbe, weź nie fikaj
Nazywasz się królową, bo na ekranie świecisz
Ale to mój Samsung ma prawdziwe LEDy

O nowym sposobie reklamowania się Samsunga, napisały już WirtualneMedia [3] oraz Gazeta.pl [4].

Nie wspominałbym jednak o tym, gdyby historia nie miała dalszego ciągu…

Pomysł i klip tak bardzo spodobał się pracownikom Samsunga, że sami postanowili stworzyć kolejny „Twój stary jest za gruby” [5]. Uwaga! Na pewno nie występują tam moi koledzy z R&D ani tym bardziej ja sam, a plotka głosi, że są to pracownicy oddziału sprzedaży i marketingu. Czy to prawda? Nie wiem :-) Pracujemy w różnych budynkach. I znów kilka linijek tekstu:

Jestem cienki, jak żyletki,
Albo raczej stringi twojej baby,
Jestem cienki, jak żyletki,
Świeci jak LED, ale nie Led Zeppelin

Laski mówią ‚ŁAŁ’, ziomy mówią ‚HAJ’,
To LEDowy style, gruby lans,
I to tyle, reszta jest mega cienka,
Kręci mnie ta obudowa, na 16 minimetrach,

Pierwsza klasa, przy tym ekonomiczny,
Żre mniej prądu, niż karmy pekińczyk,
Włącz inny, przejrzyj znad pingli,
Wybierz mega design, a nie retro wintige

Ogarnij się, twój stary jest za gruby,
Rozjedz go walcem, albo idź nowy kupić,
Nie bądź głupi, jak głupia modelka,
Ej grubasie, odchudź swój ekran

[…]

Talent, jak widać, mniejszy, ale chyba tekst jest zabawniejszy ;] O boże, ja tworze. Yoł!

To nie koniec! Jak wiadomo, Samsung jako południowokoreański gigant na każdym polu próbuje ‚walczyć’ ze swoim odwiecznym konkurentem – LG. Polski odział tejże firmy odpowiedział na utwory Samsunga własnym hitem – „Freestyle Odpal się w 3D” [6]. Utwór został stworzony przy współpracy z Wujkiem Samo Zło i również tam czynnie występują pracownicy firmy. Oto tekst piosenki:

3D do nas to nowa technologia,
Kolejny krok, ideologia,
To jest gra, to jest film,
Ty uczestniczysz chłopcze w nim

Już chyba teraz dobrze wiesz,
Płaski ekran, nie tego chcesz,
My damy Ci, powiew przyszłości,
Spróbuj 3D, ekipy jakości

I w całości poczujesz ten stan,
Umiesz korzystać, znasz ten fun,
Masz z tego przecież dużo radochy,
Sypią się właśnie z nich paprochy

Wypatroszyli tyle hajsu,
Nie kumają technologi, dzisiejszego bansu,
Odpalamy, ziomusie w 3D,
Kto jest na płasko, te robi źle

[…]

Nie wiem, czy to jest dobry marketing, ale z pewnością mogę stwierdzić,  że wszyscy świetnie się bawili podczas tworzenia tekstu i kręcenia teledysków.

Czy taki sposób reklamy w internecie ma sens? Dlaczego owe klipy nie pojawiły się w TV? Tekst był nieodpowiedni?  Te i wiele innych pytań zrodziło się, kiedy po raz kolejny oglądałem te klipy. A Wy co o tym sądzicie?

Linki:

Rozszerzamy Visual Studio 2010 – Wstęp

Celem mojej pracy magisterskiej jest nie tylko praca badawcza prowadząca do pewnych wniosków i algorytmów, ale również budowa narzędzia implementującego te algorytmy. W związku z tym, że koncentruję się na analizie statyczne/dynamicznej kodu, postanowiłem rozszerzyć Visual Studio 2010 o swoje własne narzędzie. Celem kolejnej serii wpisów na moim blogu będzie zapoznanie Was z możliwościami rozbudowy, jakie oferuje Visual Studio 2010.

Na samym początku chciałbym wspomnieć o myśli, która niemal co chwila przeplata się we wszystkich artykułach i wszystkich screencast dotyczących Visual Studio Extensibility: kiedyś pisanie rozszerzeń do Visual Studio było bardzo bolesne, teraz jest o wiele, wiele prościej.

Aby rozpocząć swoją przygodę z rozbudową Visual Studio, należy oczywiście posiadać owe IDE w wersji Proffesional lub lepszej oraz pobrać i zainstalować SDK (~10MB) dostępny tutaj [1]. Po pomyślnym zainstalowaniu powinniście w oknie nowego projektu posiadać dodatkową kategorię  „Extensibility” w poszczególnych sekcjach językowych.

Niestety budowanie wtyczek nie jest trywialne i nie da się po prostu stworzyć Hello World bez choćby chwili poświęconej na dokształcenie. Wszystkim zainteresowanym zatem polecam serię screencastów z Development Tools Ecosystem Summit dostępnych na kanale 9 [2]. Myślę, że przebrnięcie przez serię 100 da Wam w miarę jasny obraz sytuacji i bez problemów będziecie mogli stworzyć prostą wtyczkę. Seria 200 jest już bardziej ambitna (ale i trudniejsza), dlatego tym bardziej ją polecam ;-)

Kopalnia wiedzy znajduje się oczywiście w bibliotece MSDN w sekcji Visual Studio 2010 SDK [3]. Polecam ją wszystkim ciekawskim i spragnionym detali developerom. Jest również specjalna strona Extending Visual Studio [4] będąca MSDN’owym punktem wejściowym w świat rozszerzeń Visual Studio.

Nie należy również zapomnieć o blogu zespołu tworzącego Visual Studio [5].

Najlepszym jednak sposobem poznania VSX (Visual Studio Extensibility) jest (po uprzedniej krótkiej lekturze) grzebanie w kodzie. Stworzoną przy pomocy tutoriala wtyczkę rozkładałem na części pierwsze, a wszystkie niejasności sprawdzałem w bibliotece MSDN. Po dwóch takich wieczorach mam już ogólne pojęcie na temat architektury wtyczek, podstawowych zasad ich tworzenia, a także wiem, czego unikać i co należy stosować.

W kolejnych wpisach postaram się Wam pokazać, jak stworzyć już nietrywialne wtyczki. Zapraszam.

Linki:

Promuj

Axum – Agenci w akcji

Powakacyjna kontynuacja serii na temat różnych podejść w pisaniu aplikacji równoległych. Po koniec lipca przedstawiłem model Agenta, a dzisiaj chciałbym przedstawić jego Microsoftową implementację.

Axum to kolejny inkubacyjny projekt z Redmond, tak więc naprawdę nie wiadomo, co się z nim dalej stanie. Model agenta [1], który przedstawiłem w poprzednim poście, został przez giganta potraktowany całkiem poważnie. Solidna implementacja, skalowalność, wtyczka do Visual Studio – to wszystko daje całkiem duże pole do popisu, ale powoli…

Axum to jezyk programowania – pewnie się zdziwiliście – w 99% oparty na C# i w pełni współpracujący z platformą .NET. To narzędzie umożliwiające koordynację niezależnych komponentów aplikacji, definiujące agentów oraz ich interakcje. Jest to język „special-purpose”, więc z miejsca wprowadzona jest tu równoległość.

Najprościej przedstawić Axum budując bardzo prostą aplikację taką jak  kalkulator. Na początek zatem musimy zaplanować, jakie elementy będą nam potrzebne – myśląc naturalnie w świecie agentów. Otóż, potrzebny będzie nam agent wykonujący pojedyncze działanie, np. dodawanie, ale również agent, który przekaże mu dane jednocześnie odbierając je od nas (np. z konsoli), tj. agent utożsamiany z punktem wejściowym aplikacji. Agent powinien również definiować kanał, czyli określenie rodzaju wiadomości, jaką może obsłużyć.

Zacznijmy zatem od kanału. Nazwijmy go MathChannel:

  1. channel MathChannel
  2. {
  3.    input int X;
  4.    input int Y;
  5.    output int Z;
  6. }

Jak widać, kanał definiuje pewne pola zwane portami. Oprócz typu decyduje się również o kierunku. Porty to nic innego jak bufory. Kolejność używania portów przez agenta można zdefiniować w tzw. patternach, ale na tym etapie poznawania Axum nie będą one potrzebne.

Stwórzmy zatem agenta dodawania:

  1. public agent Adder : channel MathChannel
  2. {
  3.    public Adder()
  4.    {
  5.       while(true)
  6.       {
  7.          Z <– ( receive(X) + receive(Y) );
  8.       }
  9.    }
  10. }

Należy zauważyć, że definiując agenta, musimy zdecydować, jaki kanał będzie obsługiwał, a w tym wypadku oczywiście będzie to nasz kanał matematyczny. Jak widzicie, kanał nie decyduje o funkcjonalności, a jedynie o możliwym interfejsie obsługi. Konstruktor tego agenta jest punktem wejściowym. Czytanie z kanału jest blokujące, tak więc łatwo zauważyć, na czym polega działanie agenta: czeka on na parametr, który pojawi się na porcie X w kanale. Jeśli przyjdzie, czeka na Y, a jeśli i ten przyjdzie – na port Z wstawia wynik działania i znów nasłuchuje na porcie X. O ile konstrukcja pobierania z portu jest „normalna”, to wysyłanie wyniku na port operatorem „<–” może troszkę dziwić. Axum definiuje więcej podobnych operatorów.

Czas na kluczowego agenta:

  1. public agent App : channel Application
  2. {
  3.    public App()
  4.    {
  5.       var a = Adder.CreateInNewDomain();
  6.       while(true)
  7.       {
  8.          Console.Write("X: ");
  9.          int x = Int32.Parse(Console.ReadLine());
  10.          a::X <– x;
  11.  
  12.          Console.Write("X: ");
  13.          int y = Int32.Parse(Console.ReadLine());
  14.          a::Y <– y;
  15.  
  16.          int za = receive(a::Z);
  17.          Console.WriteLine("Adder Z: " + za);
  18.       }
  19.    }
  20. }

Agent będący punktem wejściowym aplikacji musi implementować kanał Application, co w tym wypadku polega jedynie na deklaracji. W konstruktorze (czyli w ciele wykonywania agenta) tworzymy pozostałych potrzebnych nam agentów, w tym wypadku tylko jednego – do dodawania. Zauważcie, że stworzony został w innej domenie niż obecny agent, przez co będzie mógł działać równolegle. Następnie najzwyczajniej w świecie pobieramy liczbę z konsoli i wysyłamy ją na dany port agenta – port który definiuje zgodnie z kanałem. To samo robimy z drugim argumentem. Znaną funkcją receive odbieramy wynik. Ciekawy jest sposób dostępu do portów, a mianowicie nie przez kropkę, jak przywykliśmy do tego typu konstrukcji, a przez podwójny dwukropek.

Myślę, że kod jest na tyle prosty, że każdy zrozumiał ideę, ale teraz więcej szczegółów.

  • każdy agent to oddzielny wątek
  • wysyłanie na porty odbywa się przez kopiowanie i jest nieblokujące
  • porty mogą być jedynie typów niezmiennych (immutable) lub w pełni serializowanych
  • możliwe są operacje Multiplex, Combine, Broadcast, Alternate
  • kanały są kompatybilne z WCF

Axum to naprawdę potężne narzędzie, które bez problemu można wpleść w istniejące projekty .NETowe. Jest skalowane, intuicyjne i proste w zaadaptowaniu. W powyższym wpisie przedstawiłem jedynie  zarys funkcjonalności, ale wszystkich gorąco zachęcam do przyjrzeniu się temu narzędziu bliżej.

Dostępna jest wersja Axum zarówno do VisualStudio 2008 oraz 2010 [2]. Dla ciekawskich powyższy projekt powiększony o jeszcze jednego agenta prezentuje na swoim googlowym hostingu kodu [3]. Zapraszam!

Źródła:

Promuj

Parallel Programming with Microsoft .NET E-BOOK

Darmowa pozycja dla wszystkich fanów rozwiązań równoległych. Microsoft Press wydał e-book na temat gorącego ostatnimi czasy, programowania równoległego. Książka na 224 (anglojęzycznych) stronach przedstawia idee zrównoleglania, oraz prezentuje przykłady oparte oczywiście o Parallel Extensions w .NET Framework 4.0

Przykładowe rozdziały to Parallel Loops, Parallel Tasks, Dynamic Task Paralelism, Debugging and Profiling Parallel Applications. Na CodePlex umieszczono również pełne kody używane w książce.

Pozycja pobowiązkowa!

Linki:

Promuj