.NET i takie tam

Archive for Luty 2008

Firmowa logika

with one comment

Jakiś czas temu w pracy złożyłem zapotrzebowanie, na dodatkową kość pamięci RAM, do mojego biurowego blaszaka. Niby nic wielkiego, ani to duże, ani drogie, nie wymaga jakiejś specjalistycznej wiedzy przy montażu ale … czekałem na nią kilka miesięcy (tak wiem cierpliwy jestem 😉 ) i co ciekawsze, nie doczekałem się.

Z lekka zrezygnowany postanowiłem, do sprawy podejść sposobem i złożyłem kolejne, tym razem, nieco większe zamówienie. Mianowicie poprosiłem o nowy komputer – wyszedłem z założenia, że jak, ktoś tam, sobie zobaczy cenę nowego zamówienia (też, znów nie taką wysoką). To w iście cudowny sposób ‚przypomni’ sobie o moim dodatkowym RAM’ie.

Jakież było moje zdziwienie gdy, po ok. tygodniu na moim biurku zagościły dwa ogromne pudła. Nowy komputer – muszę przyznać, że trochę zbaraniałem – łatwiej przyszło mi zdobyć nowego DELL’a niż, głupią kość RAM’u.

Written by sakowicz

Luty 19, 2008 at 10:42 am

Napisane w Misc

Source Outliner

leave a comment »

Ruszył nowy portal Visual Studio Gallery którego celem jest skatalogowanie wszelkich możliwych dodatków do Visual Studio. Ot Microsoft’owy odpowiednik strony Sharp Toolbox.
Tak sobie w nim szperając, natrafiłem na darmowy plug-in: Source Code Outliner. Jest to proste, acz użyteczne narządko, które umożliwia nam przeglądanie wszystkich pól, właściwości, metod i klas.
Podobna funkcjonalność jest dostępna w Visual Studio, znajduje się w listach rozwijalnych umieszczonych tuż nad edytorem kodu. Jednak nie umożliwia ona nam przeglądania zawartości całego projektu podobnie jak brakuje jej możliwości filtrowania po dowolnym ciągu znaków.

Source Code Outliner

Source Code Outliner można pobrać stąd.

Written by sakowicz

Luty 13, 2008 at 5:04 pm

Napisane w Tools

Chuck Norris i Google

leave a comment »

Nawet Google nie jest wstanie znaleźć Chuck Norris’a! Dowód: otwieramy stronę główną naszej wyszukiwarki, określamy czego (w tym wypadku kogo) szukamy i klikamy ‚I’m Feeling Lucky‚ lub w polskiej wersji ‚Szczęśliwy traf‚ i sami sprawdźcie gdzie Was to zaprowadzi. 😀

Written by sakowicz

Luty 9, 2008 at 8:26 pm

Napisane w Misc

Cisco IP Phone

leave a comment »

Ostatnio pracuję nad nowym projektem, również związanym z urządzeniami zewnętrznymi, jednak już nie przenośnymi. Moim zadaniem jest umożliwić interakcję zwykłego, stacjonarnego telefonu z całym back-end’owym zapleczem. No dobrze, przyznaje ten ‚zwyczajny’ telefon, nie jest znowuż taki zwyczajny, to Cisco IP Phone 7960.

Obawiałem się, że projekt będzie niejakim wyzwaniem, gdzie będę musiał rozgryzać magiczne kody komunikacyjne etc. jak to swego czasu robiłem pisząc ‚sterownik’ dla drukarki fiskalnej POSNET‚u. Jednak ku mojej radości (nienawidzę nudnej, żmudnej dłubaniny) okazało się to całkiem proste. Tak dla ścisłości to był mój pierwszy bezpośredni kontakt z urządzeniami firmowanymi przez Cisco i nie bardzo wiedziałem czego się spodziewać. Muszę przyznać, że jestem miło zaskoczony tym jak chłopaki sobie to wszystko wymyślili.
Otóż, wszystko działa w architekturze klient-serwer, gdzie telefon po podłączeniu do cyfrowej centralki (np. zwykłego serwera z zainstalowanym oprogramowaniem centralki PABX) spełnia, jak się łatwo domyślić rolę klienta. Jest to możliwe, gdyż modele Cisco IP Phone z rodziny 7900, mają wbudowany interpreter plików XML, dzięki któremu możemy poinstruować telefon czego od niego oczekujemy. Czyli całą ‚trudnością’ jest stworzenie aplikacji ASP.NET komunikującej się z, w moim przypadku, bazą danych i generującą odpowiednie pliki XML. Struktura plików XML jest łatwa i przejrzysta, przykładowo aby wyświetlić menu na wbudowanym w telefon wyświetlaczu, musimy wysłać do niego następującą strukturę:

<CiscoIPPhoneMenu>
    <Title>Title of Menu</Title>
    <Prompt>Prompt text.</Prompt>
    <MenuItem>
          <Name>Name of Menu Item.</Name>
          <URL>http://url.of.site.com/services/command.aspx</URL>
    </MenuItem>
    <MenuItem>
          <Name>Name of Menu Item.</Name>
          <URL>http://url.of.site.com/services/command.aspx</URL>
    </MenuItem>
</CiscoIPPhoneMenu>

Więcej na temat struktury obiektów XML można znaleźć tutaj. Parametr URL prowadzi do kolejnego pliku XML, parametry możemy przekazywać za pomocą POST i GET. Plik XML który chcemy aby był punktem wejściowym dla naszej aplikacji definiujemy w centralce skąd odpowiedni URL jest przekazywanych do określonych telefonów.

Pisanie tego typu usług można sobie przetestować bez dostępu do całego zaplecza telefonów/serwerów etc. wystarczą nam tylko dwa programy. Pierwszym jest Call Manager Simulator, jest to aplikacja dołączona do książki Developing Cisco IP Phone Service jest ona typu freeware’owa i jako taka jest całkowicie nie supportowana przez Cisco. Emuluje ona serwer TFTP i pozwala określić jaka strona jest punktem startowym naszej usługi. Drugim programem jest jakikolwiek SoftPhone, ja skorzystałem z Cisco IP Communicator oczywiście możemy skorzystać z normalnego urządzenia jeśli takowe mamy pod ręką. Co musimy zrobić, po pierwsze uruchomić symulator:

i określić jego adres IP, w tym wypadku należy podać adres IP naszego komputera.

Następnie musimy zainstalować emulator telefonu, np.:

i w jego ustawieniach wskazać na serwer TFTP emulowany przez nasz Call Manager Simulator.

Teraz po zrestartowaniu naszego telefonu, jeśli wszystko będzie w porządku, w Call Managerze powinniśmy zobaczyć dostępne nowe urządzenie. Teraz musimy umieścić przykładową aplikację na naszym serwerze IIS, jej kod jest dziecinnie prosty i wygląda mniej więcej tak:

Response.Write("<CiscoIPPhoneMenu>");
Response.Write("<Title>Please select Service:</Title>");
Response.Write("<Prompt></Prompt>");
Response.Write("<MenuItem>");
Response.Write("<Name>Hello World Service</Name>");
Response.Write("<URL>http://" + this.IPAdress +
               "/IPPhoneServices/AskName.aspx</URL>");
Response.Write("</MenuItem>");
Response.Write("</CiscoIPPhoneMenu>");

Wiem przypomina to bardziej stare spaghetti ASP niż ASP.NET, ale cóż poradzić. Na koniec musimy jeszcze poinformować nasz telefon gdzie szukać naszej aplikacji, w tym celu wracamy do Call Managera zaznaczamy urządzenie i wybieramy Configure -> Selected Device. Tutaj w pozycji Services URL podajemy adres do naszej strony i gotowe. Na koniec po ponownym uruchomieniu telefonu i naciśnięciu przycisku Services powinniśmy zobaczyć efekt naszej pracy.

Written by sakowicz

Luty 7, 2008 at 8:43 am

Napisane w .NET, Devices, Misc