Press "Enter" to skip to content

Zagubiona wśród własnych myśli - Piatkosia's blog

WMI – tym razem z poziomu c#

Wczoraj napisałam, że pokażę wam jak użyć WMI z poziomu C#. Scenariusz jest następujący: chcemy utworzyć drobny launcher, który pozwoli nam na odpalenie dowolnej gierki, jaką widzimy w folderze games w win7 na przykład. Tym razem uniknę wklejania całego kodu, posłużę się tym, który upubliczniłam w wakacje, a dostępny jest pod adresem https://letsplay.codeplex.com/SourceControl/latest#LetsPlay/MainWindow.xaml.cs.
WMI zostało użyte dokładnie w tym fragmencie:

Jak wygodnie korzystać z neta w pociągu

Wielokrotnie zdarza mi się korzystać z internetu w pociągu przy użyciu zwykłego modemu 3g. Problem jest taki, że nie wszędzie mamy zasięg. Warto by było, aby aplikacje wymagające internetu nie żarły nam baterii kiedy my spokojnie czytamy to, co załadowała nam przeglądarka, lub odpalamy pdfa. Dzięki temu skryptowi w autoIT możemy zaoszczędzić kilka minut na baterii – które normalnie wyżarłyby nam aplikacje sieciowe próbujące się połączyć.

Jak się uczyć i się nauczyć – bez przeczytania ani jednej książki

Wpis piszę z dedykacją dla Nikowa – a czemu by nie;)
Któregoś dnia udało się nam załatwić dla UZtu produkty JetBrains – po tym fakcie skrobnęłam powiadomoenie do uczelni i wysłałam je do dziekanatu (maile od głównego informatyka się odbijały – okazało się że tamten już nie pracuje). Po paru tygodniach nikow zaproponował mi, abym napisała również informację o tym, że firma nie ogranicza się do dostarczenia oprogramowania, ale również przygotowała pewien pakiet edukacyjny bogaty w materiały do wykorzystania na zajęciach lub w domowej nauce. Ja jednak nie zrobiłam tego. Nie dlatego że nie lubię Nikowa czy firmy JetBrains. Po prostu jest to na chwilę obecną standard wśród firm informatycznych oferujących oprogramowania dla inżynierów. Żeby wymienić tylko te, które były używane przez nas bezpośrednio na uczelni jak http://www.autodesk.com/education/learn-and-teach/learn (3ds max/ auto cad), http://www.xilinx.com/training/ (elektra), http://www.sonycreativesoftware.com/training/vegaspro, czy http://www.microsoftvirtualacademy.com/ . Wiele firm prowadzi swój oficjalny kanał na YT jak wspomniany przez nikowa https://www.youtube.com/user/JetBrainsTV, https://www.youtube.com/channel/UCmJcrJ_30p6s_OTbyTFfbqQ (itfreetraining), https://www.youtube.com/user/CiscoPolska/videos.

Luźne rozważania okołobsidowe

Tak, piszę to wszystko po raz kolejny, bo to co się działo z tym wpisem w międzyczasie to porażka. Plik okazał się uszkodzony, odzyskać się nie dało, a sam komp wyłączył się jak go zamknęłam przytrzaskując chusteczkę od okularów:p. Jaja się działy od wczoraj, nie od pół roku:). W ogóle to rozpatrywałam przeoranie bloga, jednak parę dni temu stało się coś naprawdę dziwnego. A mianowicie trzech niezależnych czytelników (przy – jeśli wierzyć śledzikom – kilkunastu czytających łącznie) postanowiło się zapytać czy planuję jeszcze coś pisać. I wszystko byłoby OK, gdyby nie podchwycił całego tematu mój narzeczony i nie zaczął naciskać, by ów wpis pojawił się jak najszybciej. Kij że obecnie SBSy zabierają mi sporą część czasu, a w dodatku pogoda i zdrowie postanowiły się zgadać i zgodnie niedopisywać;).

c# like a perl

Wielokrotnie słyszałam, jak chłopaki komentowali taki język jak perl. Jako główną wadę wymienili mnogość konwencji zapisu pewnych elementów języka. Prawda jest taka, że w C# nie jest lepiej. Weźmy sobie dla przykładu taką oto klasę.

Oddawajcie internety!

Czasami zdarza mi się przełączać między wifi i modemem (raz jedno, raz drugie). I przy takim przełączaniu zdarza się, że połączenie się świeci jak psu jajca, niestety Windows (bo w nim czasami problem występuje) jak na złość sprawia, że nic się nie ładuje, a wszystko rzuca timeoutami. Przywrócić neta można na 3 sposoby.

I’m an engineer:)

Dziś nie będzie długiego posta. Wkrótce zacznę pisać co jakiś czas. Na razie tylko powiem, że ukończyłam studia i uzyskałam tytuł inżyniera;)

[c#] Zdarzenia – ostatni z konkursowych

Zdarzenia są wywoływane, jeżeli coś konkretnego stanie się w trakcie działania naszego programu. Akcją wywołującą je może być osiągnięcie przez zmienną pewnej wartości, przejście wykonania programu do określonego bloku, użycie mechanizmu drag and drop, lub chociażby kliknięcie na przycisk lub najechanie myszką na dane pole na ekranie. To właśnie dzięki zdarzeniom dany obiekt może poinformować inny (który dane publiczne zdarzenie obsługuje) o zmianie swojego stanu. Klasa naszego obiektu może mieć bardzo wiele zdarzeń, które są wywoływane po zaistnieniu ściśle określonego warunku (jak zakończenie pobierania pliku, przyciśnięcie przycisku czy ustawienie zmiennej w setterze). Użytkownik pisząc w Visual Studio często sobie takie zdarzenia „wyklikiwał” projektując interfejs – na przykład przeciągał z toolboxa kontrolkę typu button, nadając jej nazwę, a następnie klikając na nią 2 razy. Po takiej operacji został wygenerowany następujący kod:

 
private void button1_Click(object sender, RoutedEventArgs e)
        {
            
        }

Jak widać funkcją obsługującą zdarzenie jest (i musi być) funkcja, która nie zwraca wartości, a pobiera obiekt, który wywoła zdarzenie, oraz obiekt typu EventArgs. W przykładzie powyżej mamy obiekt typu RoutedEventArgs. Najeżdżając na nazwę tego typu i po wciśnięciu F12 możemy zobaczyć taki fragment kodu public class RoutedEventArgs : EventArgs .
Jak widzimy, klasa RoutedEventArgs dziedziczy po EventArgs – czyli wszystko jest jak być powinno. Powyższą klasę należy wypełnić kodem, który zostanie wywołany przy zajściu zdarzenia – kliknięcia na przycisk o nazwie button1.
Aby nasza funkcja obsłużyła dane zdarzenie należałoby dokonać subskrypcji poprzez dopisanie delegaty do listy delegat, czyli zdarzenia. W przykładzie powyżej nie musieliśmy tego robić? Nie prawda, też musieliśmy, ale zrobiła to za nas platforma. W pliku MojaKlasa.g.cs (przy nowym projekcie MainWindow.g.cs), który jest generowany na podstawie naszego pliku .cs oraz .xaml czytamy:

 
#line 6 "..\..\..\MainWindow.xaml"
this.button1.Click += new System.Windows.RoutedEventHandler(this.button1_Click);

[C#] Tablice

(to też post na konkurs)

Tablice są zmiennymi tego samego typu, ułożone w pamięci sąsiednio tak, że wiedząc którym kolejno elementem od zerowego jest poszukiwany, możemy się do niego dostać. Możemy sobie wyobrazić tablicę jak pociąg złożony z wagoników (każdy z tych wagoników może przewozić tylko przedmioty jednego typu, na przykład kosz jabłek, lub samochód). Aby wyobrazić sobie drugi wymiar tablicy, trzeba by wyimaginować sobie pociąg, który jechałby jednocześnie po dwóch torach (na chwilę zapomnijmy że te tory powinny iść w przeciwnych kierunkach), więc jednym wymiarem będzie numer toru, drugim numer wagonika (liczone od zera). Dlaczego zmienne zgrupowane w tablicy muszą mieć ten sam typ? Jest to spowodowane koniecznością wyliczenia miejsca, gdzie znajduje się element o danym indeksie. Tak naprawdę komputerowi wystarczy, aby elementy zajmowały tę samą ilość pamięci – ale język jest napisany w taki a nie inny sposób i elementy muszą być tego samego typu i już.

[C#] Operatory

Artykuł zgłoszony do konkursu na stronie http://strefainzyniera.pl

Wstęp

Większość oprogramowania, jakie przyjdzie nam pisać, będzie wymagała użycia operatorów. I nie mówię tu wyłącznie o operatorach znanych nam z matematyki – czyli „+”, „-” i tak dalej. Nawet w najprostszych aplikacjach używających chociażby instrukcji warunkowej używamy operatorów porównania. Manipulując zmiennymi zwykle używamy operatorów przypisania i konwersji.
Operatory, to nic innego, jak funkcje, które zwracają wartość, za wejście biorąc wartości, które w wersji prefiksowej występują zaraz po znaku, postfiksowej gdy przed znakiem, zaś infiksowej, pobiera sąsiadów po obu stronach. Jeżeli operator pobiera trzy wartości, symbole składające się na niego rozdzielają wartości wejściowe funkcji wywoływanej (niewidocznie dla programisty) przez operator. Tylko operator wywołania „()” oraz operator pobrania elementu wskazywanego przez indeks „[]” biorą swój operand w środek znaków, jakie się na niego składają.
Dziś omówimy jakie możliwości dają nam operatory w języku C#. Pełną ich listę możemy znaleźć w dokumentacji języka, dostępnej pod adresem http://msdn.microsoft.com/pl-pl/library/6a71f45d.aspx .

Jak Jasio z dowcipów liczby w c# konwertował

Jak napisałam na FB, pokażę kawałek kodu, który może się przydać początkującym, ale tak zupełnie początkującym, jak uczniowie w szkole średniej, którzy pierwszy raz mają programowanie w szkole. Załóżmy, że dana szkoła poszła z duchem czasu i nie uczy już pascala, ale na przykład takiego c#a. I dzieci dostały zaraz po kalkulatorze w textmode standardowo napisać konwerter liczb dziesiętnych do bin, hex i oct.

Jak zrobić przezroczystego ApplicationBara, który nic nie przykryje

Czasami zdarza mi się programować pod Windows Phone (tak, również na starego – sprzęt mam jaki mam, brak vtx/slat boli).
W trakcie pisania pewnego projektu zauważyłam, że ustawienie opacity w ApplicationBar na wartość mniejszą niż 1 (aby uzyskać przezroczystość) kończyło się tym, że nie szło kliknąć w ostatni (widoczny, ale przysłonięty appbarem) element umieszczony na stronie.

Ładny listing w c#

Oczywiście, wiem, że idzie to zrobić jedną linijką w bashu czy innych zabawkach:) Ale pisałam 4fun, żeby sobie przypomnieć język;)

Inspiracją był pewien listing z książki. Został on ponumerowany w pewien sposób. Pomyślałam sobie – też chcę mieć coś takiego. No i siadłam i klepnęłam w kilka minut taki oto kawałek kodziszcza.