niedziela, 15 listopada 2015

Lenovo S8-50L - update do Lollipop

Po aktualizacji tableta Lenovo S8-50L z Kit Kata do Lollipopa, bateria zaczęła znikać w niesamowitym tempie (przed aktualizacją potrafił chodzić 2 dni, po 4-6 godzin). Jako, że sporo osób się żaliło już na prądożerność po aktualizacji, to na pewno ktoś już rozwiązał ten problem. Google szybko dało skuteczną odpowiedź.

Po pierwsze, w ustawieniach sieci Wi-Fi, wyłączyłem Powiadomienie o sieci oraz Skanowanie zawsze dostępne. Kolejnym, prawdopodobnie najistotniejszym krokiem, było wyczyszczenie cache'u tableta.

Jak wyczyścić cache krok po kroku:
1) wyłącz tablet
2) uruchom tablet trzymając włączony power i głośność + (przytrzymać przez ok 3 sekundy aż zawibruje i zacznie się włączać)
3) pokaże się okno przypominające linuxowego boot loadera
4) przyciskiem głośności przewijamy do wipe cache partition i przyciskiem power zatwierdzamy
5) czekamy aż się wykonamy i wybieram reboot, po ponownym wyświetlaniu menu
6) cieszymy się z mniejszej prądożerności

Po tych zabiegach, bateria pokazuje jeszcze ponad 2 dni życia zamiast 6 godzin.

środa, 11 listopada 2015

Oracle PL/SQL - książka warta uwagi

Osobom, które rozpoczęły już naukę PL/SQL polecam Oracle Database 11g PL/SQL Programming Workbook autorstwa Michael McLaughlin i John M. Harper. Książka dostępna jest m.in. w Safari w formie elektronicznej.

Opisuje w zwięzły, a zarazem dość dokładny, sposób różne zagadnienia związane z programowaniem na platformę Oracle 11g.

niedziela, 8 listopada 2015

code::dive / codedive.pl - konferencja Nokii

Ostatnio uczestniczyłem w darmowej konferencji organizowanej przez Nokię - codedive.pl.

Zdecydowanie na plus należy zaliczyć fakt, iż konferencja była darmowa. Niestety w naszym kraju jest niewiele imprez tego typu, a do tego często stoją na niskim poziomie. Na szczęście ta konferencja odbiegała od podobnych w jakich uczestniczyłem i była na całkiem niezłym poziomie.

Pierwsza prezentacja w jakiej uczestniczyłem była poprowadzona przez Tomasza Kaczmarzyka na temat "HTTP/2". Prezentacja była na wysokim poziomie i omawiała istotne elementy wprowadzane przez nową wersję protokołu. Kolejne wystąpienie, prowadzone przez Vladimira Vukadinovica, było poświęcone coraz popularniejszemu tematowi Internet of Things (IoT). Było to solidne wprowadzenie do tematu wraz z próbą predykcji przyszłości. Niestety czas trwania pierwszych trzech prezentacji był zdecydowanie zbyt długi (1,5 godziny każda). Trzecia z prezentacji, w której uczestniczyłem Jakuba Derdy (Concurrency in cloud applications – design crashcourse), była zdecydowanie najsłabszą jaką kiedykolwiek widziałem. Slajdy źle przygotowane, czas trwania 45 minut (vs planowane 1,5 godziny), treść absolutnie nie współgrająca z tytułem. Czwartą prezentacją, w której uczestniczyłem był wykład Przemysława Szuflarskiego poświęcony Telco Cloud. Opowiadał o integracji elementów sieci komórkowej w niezależne moduły z możliwością wirtualizacji sieci. Ostatnią prezentacją był wykład Rafała Łojka "What You see is what You get. How testing tools and level can change the way You see the system". Rafał opowiadał o testowaniu. Najciekawszym elementem było pokazanie różnicy perspektyw - programisty i project manager na jakość przez raporty i sposób ich szybkiego generowania.

Jeżeli chodzi o organizację imprezy od strony niemerytorycznej, to była średnia. Brak jakiejkolwiek kontroli nad tym czy ludzie wchodzący na sale są uczestnikami konferencji czy nie. Ponadto catering był fatalny. Nie było ani darmowej kawy ani herbaty, tylko możliwość kupienia dość drogiej. Na lunch były niedobre bułki.

bokserki - informacja w iście Amerykańskim stylu

Takie info widnieje na opakowaniu z bokserkami Pumy - nie wiem czy śmiać się czy płakać

pytania rekrutacyjne C#/.NET - podstawy

W dzisiejszym wpisie zmierzę się z podstawowym pytaniem na większości rozmów rekrutacyjnych dla programistów C#/.NET, a mianowicie: "jakie są podstawowy typy danych?" lub "jaka jest różnica między typem wartościowym i referencyjnym?". Słyszałem jeszcze kilka innych wariacji, ale skupmy się na samym zagadnieniu.

Wyróżniamy następujące 2 podstawowe typy:
- wartościowe (value types)
- referencyjne (reference types)

Ponadto, o czym mało osób wie, C# wspiera wskaźniki, takie jak znane z C++. Żeby wykorzystywać wskaźniki, należy spełnić 2 warunki: włączyć we właściwościach projektu "Allow unsafe code" oraz każde użycie kodu że wskaźnikami umieścić w bloku unsafe.

Typy wartościowe przechowujemy na stosie (stack), a typy referencyjne na stercie (heap). Tutaj należałoby powiedzieć coś więcej na temat zarządzania pamięcią w .NET, ale to będzie przedmiotem osobnego posta. Jednakże warto wspomnieć o tym czym jest stos, gdyż wiele osób o tym nie wie - stos to kolejka typu LIFO (Last In - First Out). Oznacza to, że jeśli włożymy 3 elementy na stos, to żeby otrzymać pierwszy, musimy zdjąć ze stosu pozostałe 2 elementy, co jest kosztowne (zarówno czas jak i pamięć).

W przypadku typów wartościowych (np. int, bool, struct itd.) po przypisaniu wartości do zmiennej, a następnie przekazaniu zmiennej do metody, jej wartość nie ulegnie modyfikacji z wyłączeniem przekazania zmiennej z modyfikatorem ref lub out. Dotyczy to również typów referencyjnych oznaczonych jako immutable (opis w następnym poście).

Natomiast w przypadku typów referencyjnych (każda klasa z wyłączeniem immutable) przekazujemy referencję do obiektu (porównując do C++: kopię wskaźnika do obiektu). W związku z czym modyfikując jakąś właściwość czy pole znajdujące się w klasie, odwołując się do takiego obiektu z poziomu innej klasy, modyfikacja będzie widoczna i "trwała".