poniedziałek, lutego 20, 2017

Odinstaluj jedną aplikacje dziennie - wyniki

Wychodzi, że skasowałem z telefonu już wszystko czego nie używam.
Teraz ekran główny wygląda tak:

Chociaż nadal są to 92 aplikacje...
Ale było więcej :-)

Chyba jednak będę już musiał zrezygnować z tego codziennego odinstalowywania codziennie jednej aplikacji.

Telefon wydaje się działać jakoś tak ciut szybciej i wygląda, że bateria starcza mu na dłużej.

posted from Bloggeroid




Podobne postybeta
Facebook vs. Ja, tym razem 1:0 dla Facebooka ;-)
Minisec
Usuń jedną aplikacje dziennie
5 prawd życiowych ;-)
4 mln ton....

niedziela, lutego 19, 2017

Deklaratywnie czy imperatywnie... oto jest pytanie ;-)

Jest teraz wielka wojna między imperatywnym, a deklaratywnym programowaniem.
Ja w użyciu jestem bardziej przy imperatywnym, choć deklaratywne mi się podoba.

Ale popatrzmy na takie 2 przykłady, które robią dokładnie to samo:

public int findOddStream(int[] A) {
return Arrays.stream(A).reduce(0, (a, b) -> a ^ b);
}

public int findOddImperative(int[] A) {
int n = 0;
for (int i:A) n^=i;
return n;
}

Obie metody robią to samo, czyli znajdują nieparzystą liczbę w tablicy A.

Nie wiem czemu, pewnie przez lata praktyki, ale to drugie rozwiązanie wydaje mi się bardziej czytelne.

Fakt, że wersja deklaratywna ze strumieniami jest krótsza jeśli liczyć linie, ale w znakach jest dłuższa.

No i w wersji deklaratywnej trzeba wiedzieć, że 0 w reduce to identity redukcji, czyli taka "wartość startowa".

Szczerze nie wiem która wersja wydaje mi się bardziej czytelna.

PS.
Na Google+ w komentarzach wyszło, że dobrze by było podać linka do treści zadania, które tu jest rozwiązywane ;-)
Stąd link https://codility.com/programmers/lessons/2-arrays/odd_occurrences_in_array/


Podobne postybeta
Dziwne te ludzie ;-) - pazerność2
Miejsca gdzie nie używałeś jeszcze komputera [ewentualnie miejsca, gdzie nie dopadły nas jeszcze komputery ;-)]
Plus dla Scala, minus dla Groovy ;-)
Fix na problem, który męczył Bloggeroida od lat.....
Skasuj konto w Facebooku - oni zdecydowanie za dużo o Tobie wiedzą.

sobota, lutego 18, 2017

Chcę sankcji UE

Chciałbym żeby UE nałożyła na Polskę sankcje za łamanie trójpodziału władzy i łamanie standardów demokratycznych.
Chcę żyć w demokratycznym państwie prawa, chcę też żyć w UE. Stąd chcę żyć w demokratycznej UE, w której przestrzega się prawo.
Jeśli UE nie zacznie wymagać od krajów takich jak Polska czy Węgry przestrzegania demokratycznych standardów to znaczy, że to nie jest ta UE w której chcę żyć.

Nie miałbym problemu z wygraniem wyborów przez PiS, gdyby PiS przestrzegało zasad.
Gdyby wybrało sobie sędziów TK na wolne miejsca, gdyby nie tworzyło ustaw o TK, które miały TK sparaliżować.
Gdyby deformę edukacji poprzedziło badaniami i konsultacjami. Gdyby nie rozwalało armii, służb specjalnych, sądów, prokuratury, czy ogólnie państwa.

Ale to co teraz robi PiS to nie demokracja, a demokratura. Nie rządy większości z poszanowaniem woli mniejszości, a dyktat tego kto ma większość w organach przedstawicielskich.

PiS ma dla jaj w nazwie na pierwszym miejscu słowo prawo, dla takiej samej beki ma jako drugie słowo sprawiedliwość. Prawa nie przestrzega, czego dowiódł demontaż TK (i to, że teraz obecna prezes TK jest w stanie zawieszenia przez to, że złamała procedury ustawy, którą pod nią napisano tylko to umacnia), sprawiedliwość ma zaś obok gwiazdkę z dopiskiem "sprawiedliwość wg Jarosława Kaczyńskiego".

Jak to Pratchett pisał, jeden człowiek = jeden głos, u nas tym człowiekiem jest Jarosław Kaczyński... Wódz. Jednoosobowo podejmuje wszystkie decyzje.

Stąd UE jeśli ma być organizacją zrzeszającą państwa demokratyczne powinna reagować i stosować presję finansową. W końcu jaki interes obywatele UE mają w niedemokratycznej Polsce?


Podobne postybeta
Noż kurwa....
Skrócona wersja zmian w ustroju Polski po wyborach w 2015 roku
Atlas zbuntowany, ale na odwrót ;-)
Ja się tam mogę ewakuować....
Politycznie

czwartek, lutego 16, 2017

Procesy ;-)

Tak dziś rozmawialiśmy w pracy o różnych praktykach w różnych firmach i wyszło, że są firmy w których gdyby ktoś zaproponował żeby w ramach podnoszenia motywacji zrywać programistom paznokcie tak raz na miesiąc to na tekst, że to głupi pomysł padłaby odpowiedź, że to bardzo nieagileowo odrzucać pomysł bez sprawdzania.
Po 3 miesiącach gdyby developerzy mówili, że to jest naprawdę głupi pomysł i nie działa usłyszeliby, że 3 miesiące to za mało by móc oceniać skuteczność i że nadal trzeba to testować.
Po 9 miesiącach zrywania paznokci na słowa krytyki od programistów padłaby odpowiedź, że może to rzeczywiście nie działa tak dobrze, ale przecież tyle już w to zainwestowaliśmy, że szkoda tak to porzucić...
Po 2 latach gdy program by jednak umarł (na korzyść wyrywania włosów tym razem) to pojawiłyby się głosy, że to niesprawiedliwe, że nowi ludzie nie będą mieli szansy popracować z procesem zrywania paznokci ;-)

posted from Bloggeroid




Podobne postybeta
[Lifehack] Jak połapać się w ładowarkach ;-)
Podróżujemy ;-)
Na śpiocha....
Post drugie - bądź na tak ;-)
A gdyby tak....

wtorek, lutego 14, 2017

CI z branchachmi to jednak nie jest CI

W dyskusji pod postem o branchach pojawił się temat CI czyli continuous integration.
I take sobie uświadomiłem, że jednak nadal jest wiele miejsc gdzie korzysta się z narzędzi do CI, ale de facto nie robi się CI.
Bo CI to jednak jest ciągła integracja, w której istotne jest to, że mamy szybką pętlę zwrotną i nie kisimy zmian tygodniami na własnych branchach by w końcu zrobić wielką integrację.
Inna sprawa, że nawet w takich miejscach te narzędzia pomagają ;-)

posted from Bloggeroid




Podobne postybeta
Wrrr.... złe API ;-)
Mój Robot - podejście pierwsze ;-)
O tym czemu branche są złe...
Czy psy lubią gdy zwraca się na nie uwagę?
W Androidzie przydałyby się nagrywalne intenty :-)

niedziela, lutego 12, 2017

Wesołego Dnia Darwina - daj pohasać dziś swojej wewnętrznej małpie :-)

Dziś 12 lutego czyli Dzień Darwina.

Radosne święto ku czci człowiekowi, który pokazał skąd taka różnorodność życia.


To dzień w którym Twoje wewnętrzna małpa powinna radować się z tego, że miała tyle szczęścia by zaistnieć.

Ja ku czci przywdzieję koszulkę z Darwinem i poczytam sobie o ewolucji :-)
A i posłucham kawałka który wyżej ;-)


Podobne postybeta
Powiedz dziś "Część!" swojej wewnętrznej małpie ;-)
Dzień Darwina
Półsprawny Gadacz....
Jakieś święto, czy co?
Rok Darwina czas zacząć :-)

Dysonans poznawczy roku 2017 ;-)

Jest rok 2017.
De facto naszym zmartwieniem i tematem rozmów powinno być budowanie stałej bazy na Marsie i lot na Jowisza, a nie budowa muru między USA i Meksykiem, nie jacyś szaleńcy w turbanach, którzy postanowili zbudować kalifat, nie "seby" i "janusze" chcący zamordyzmu.

O tym skąd pochodzą gatunki wiemy od 158 lat.
75 lat temu zbudowano pierwszy reaktor jądrowy.
64 lata temu poznaliśmy strukturę DNA.
63 lata temu pierwszy człowiek poleciał w kosmos.
48 lat temu ludzie wylądowali na Księżycu..

Ludzie nigdy nie żyli tak długo i tak zdrowo jak teraz. Nigdy nie było na Ziemi tylu ludzi. Nigdy ludzie nie byli tak najedzeni. Nigdy ludzkość nie miała takiego nadmiaru żywności, że dla wielu podstawowe problemy zdrowotne wynikają z przejedzenia.

No mam pewien dysonans poznawczy...


Podobne postybeta
Czytanie w śnie - to nie działa ;-)
Stare = do zniszczenia?
Ukradli nam przyszłość....
Android Marketowi odbiło
Sarkania na C++

sobota, lutego 11, 2017

O tym czemu branche są złe...

Jeszcze w poprzedniej firmie narysowałem taki "komiks":


Który oddaje mój stosunek do branchy ;-)

Czemu nie lubię branchy?

Bo sprzyjają konfliktom w czasie mergowania.

Jeśli wszyscy pracują  na wspólnym źródle, czyli wszystkie commit'y idą do wspólnej gałęzi to mamy tak, że co chwilę odbywa się integracja.

Gdy developer robi pull z repozytorium to ma prawie 100% szans, że wszystkie pliki jakie pobrał są w najnowszej wersji (znaczy, że nikt nie ma nowszej wersji zakiszonej na swojej lokalnej maszynie).
To nie jest pełne 100%, bo inni developerzy też pracują nad swoimi zmianami, stąd pewna niewielka grupa plików jest u nich w nowszych wersjach. Ale, że nie mając własnych branchy wszystkie commity muszą iść do głównej gałęzi, co nadal jeszcze niewiele daje, ale zwykle każdy developer robi przeciętnie 1 pusha do repo dziennie oddając kod, który "w miarę działa". Dzięki temu w większości plików mamy pewność, że ich nowsza wersja nie będzie się znacząco różniła od tego co pobraliśmy właśnie z repo.
Stąd z jednej strony mamy dość małe szanse by w danym czasie 2 developerów pracowało nad tym samym plikiem, jeśli jednak pracują i pojawi się konflikt to będzie on ze zmian z 1 dnia.

W przypadku branchy już tak dobrze nie jest.
Gdy developer robi pull z repozytorium dostaje najnowsze wersje plików, ale dość duża grupa plików ma nowsze wersje na innych branchach gdzie mogą się kumulować zmiany z kilku ostatnich tygodni.
Robienie upmergy z głównej gałęzi nie rozwiązuje problemu, bo nadal pobieramy tak tylko część zmian. Do tego ponieważ nasza gałąź ma już ileś tam dni to przy każdym upmerge'u mamy niezerowe prawdopodobieństwo konfliktu. Jego rozmiar jest tym większy im dłużej minęło od momentu gdy nasz gałąź dla danego pliku odpięła się od innej wersji tego pliku. Do tego zwykle w takim merge'u mamy dość dużo zmian.
W końcu gdy robimy naszego końcowego merge'a to znów mamy szansę na konflikt.

"Matematyka" do tego niby jest prosta, chociaż trudno to tak opisać.
Zakładając, że każdy developer pracuje codziennie z 1 plikiem mamy szansę, że dany plik zostanie dotknięty przez danego deva z prawdopodobieństwem P(plik dotknięty przez deva)=1/N gdzie N to liczba plików.
W takim przypadku konflikt, czyli P(konflikt)=P(prawdopodobieństwo dotknięcia pliku przez 2 devów)=(1/N)^2

Gdy mamy branche i każdy dev nadal dotyka 1 pliku dziennie to po M dniach kiszenia czegoś na branchu mamy zmienione M/N plików z repo (gdzie M to ilość dni kiszenia, a N nadal ilość plików w repo).
Trudniej tu stwierdzić jakie jest prawdopodobieństwo konfliktu bo przecież może ono zajść na dowolnym z M plików, ale załóżmy, że chodzi o konflikt z devem, który zrobi 1 zmianę na 1 pliku, wtedy P(konflikt na branchu)=M/N^2.
Czyli prawdopodobieństwo konfliktu na branchu jest przynajmniej M razy większe niż bez branchy.

Problemem tu nie są nawet same branche, a to, że branche oznaczają rzadszą integrację.

Stworzyłem programik w Pythonie, którego zadaniem jest zasymulowanie pracy zespołu 5 developerów, którzy pracują nad małym repo z 3000 plików i pracują albo bez branchy, przeprowadzając integrację codziennie przez robienie codziennie commit'ów kodu, który "w miarę działa", oraz tego samego zespołu który integruje się z branchy raz na 5, 10, 15, 20, 25 i 30 dni.
Pracowali przez 250 dni (czyli mniej więcej tyle ile jest dni roboczych w roku).


odstęp między commitamikonfliktów
10
54
109
1514
2019
2522
3029

Liczba konfliktów w przypadku commitów codziennie wyniosła 0, przy 5 dniowych branchach 4, przy 10 dniowych 9 i tak dalej.
Większe odstępy między commitami wyszły trochę lepiej niż wyszłyby w rzeczywistości bo po prostu 250 nie do końca się ładnie przez nie dzieli, stąd ich liczby konfliktów zostały trochę zaniżone.

Wyraźnie widać, że liczba konfliktów rośnie wraz z czasem kiszenia zmian na swoim branchu. Nawet upmerge tutaj nie pomagają, bo co najwyżej trochę zmniejsza odstępy między integracją.

Jedynym powodem stosowania branchy jaki widzę jest to, że łatwiej robić review zmian w przypadku branchy, bo widać zmiany w jednym kawałku. 
Z drugiej jednak strony, gdyby zastąpić duże inspekcje serią mniejszych i później jedną większą, która przegląda wszystkie zmiany to chyba każda z inspekcji byłaby prostsza, a i szansa wprowadzenia błędu mniejsza...

Jak kto ciekawy to kod programiku do symulacji jest tutaj.



Podobne postybeta
Trzy heurystyki developerskie, których wdrożenie uchroni Cię przed zawałem i pozwoli przebić balon zadufania ;-)
Projekty Informatyczne - Mity ;-)
OS X po 1.5 miesiąca... chyba wolę Ubuntu ;-)
Inercja i koło wielokrotnego wynajdywania, czyli radosne macki piekieł w kodzie [alem pojechał w tytule ;-)]
Dobór naturalny, albo my

piątek, lutego 10, 2017

Deklaracja wyborcza ;-)

W ostatnich wyborach parlamentarnych głosowałem na Razem, wcześniej zawsze na SLD i chyba raz na Ruch Autonomii Śląska.

Teraz jednak utwierdzam się w przekonaniu, że w razie jakichkolwiek wyborów będę głosował na tą partię, która nie jest PiSem albo Kukizem i która będzie miała wg sondaży największe poparcie.

Jak to będzie PO to zagłosuję na PO, chociaż ich nie lubię. Jak to będzie Nowoczesna to zagłosuję na Nowoczesną.

W skrócie będę głosował na AntyPiSa, kimkolwiek* on będzie.


* - z zastrzeżeniem, że nie będzie to Kukiz, jakaś partyjka z PiS, narodowcy i inne podobne typy.


Podobne postybeta
Prosty test obiektywności dla zwolenników PiS/PO/whatever
Rycerz na białym koniu? ;-)
Obywatelski obowiązek spełniony
Czekam na MotoTab
1 na 9 głosów

niedziela, lutego 05, 2017

Wtyczka na pamięć - brniemy dalej ;-)

Moja wtyczka na pamięć, która ma wyświetlać "uwagi" do odwiedzanej właśnie strony WWW nabawiła się nowego ficzera ;-)
Potrafi wyświetlać wybrane uwagi na górze strony:


Ta uwaga tutaj przypomina mi bym nie robił zakupów na Amazon'ie w nocy, bo wiem, że wtedy mam opuszczoną gardę i chętniej wydaję pieniądze ;-)

Na innej stronie mam taką przypominajkę:


Bo już się kilka razy naciąłem, a nie zawsze o tym pamiętam.

Na popularnej stronie społecznościowej zaś:


Bo nie chcę żeby mi wchodzenie na tą stronę kończyło się na sprawdzaniu kto jest ;-)

Sam popup wtyczki nadal nie jest zbyt piękny:


Ale zdecydowanie bardziej użyteczny niż poprzednio :-)

Źródła wtyczki jak zwykle dostępne na moim GitHub'ie.

Teraz przydałoby się dodać możliwość synchronizacji uwag między instancjami przeglądarki...


Podobne postybeta
Błeee
Dziwne linki w iGoogle ;-)
EEE Storage :-)
Jak wywołałem kryzys....
OOo2GD 2.4.0 - foldery i HTTPS

sobota, lutego 04, 2017

Skrócona wersja zmian w ustroju Polski po wyborach w 2015 roku

Do niedawna przybliżony model tworzenia prawa w Polsce wyglądał mniej więcej tak:

Najpierw pojawiał się pomysł na prawo, mógł się pojawić w Rządzie, wśród posłów, albo wśród obywateli.
W końcu trafiał do Sejmu, który mógł uchwalić takie prawo, albo nie. Zależało to od tego czy odpowiednio wielu posłów uzna, że chce takiego prawa.
Jeśli Sejm uznał, że powinno dojść do zmiany prawa to trafiało ono do Senatu.
Senat mógł klepnąć prawo, lub dokonać w nim zmian. W drugim przypadku trafiało to znów do Sejmu.
W końcu trafiało do Prezydenta.
Prezydent miał do wyboru 3 opcje.
Podpisać, co sprawiało, że prawo stawało się obowiązującym prawem.
Mógł zawetować ustawę, wtedy wracała ona do Sejmu, który mógł je odrzucić albo nie.
Prezydent mógł jeszcze odesłać ustawę do Trybunału Konstytucyjnego, który mógł uznać, że ustawa lub jej poszczególne przepisy są niezgodne z Konstytucją.

Ale nawet obowiązujące prawo nie miało tak lekko bo np. Rzecznik Praw Obywatelskich mógł je zaskarżyć do TK, albo Sąd mógł poprosić TK o ocenę.

To wyżej to model uproszczony.

PiS to jednak partia, która przedkłada prostotę nad komplikację.

Obecny model stanowienia prawa w Polsce wygląda mniej więcej tak:


Czyż nie jest prościej?

Stąd jeśli część wyborców PiS, albo nie wyborców ma nadzieję, że głupie pomysły na ustawy nie przejdą to próżne nadzieje.
Jeśli poseł Jarosław Kaczyński uzna, że coś ma być prawem to nim będzie.


Podobne postybeta
Demokracja 3.3 ;-)
1 na 9 głosów
Chcę sankcji UE
Rząd wykonał swój plan aż w 17% ;-)
Największy przekręt w Polsce?

czwartek, lutego 02, 2017

Amazon Prime Video na XBOX One w Polsce - how to ;-)

Od jakiegoś czasu (miesiąc, albo dwa) Amazon Prime Video jest dostępne w 200 krajach na świecie w tym w Polsce.

Amazon jednak nie lubi Chromecasta... to trzeba mieć jakiś inny sposób oglądania.
Można na tablecie/telefonie z Androidem, ale telewizor mały i trochę głupio oglądać na 10.1" gdy przed Tobą jest 49"...
Poszukałem po sieci i podobno można użyć XBOX One do oglądania Amazon Prime Video....

To próbowałem wielokrotnie znaleźć aplikację Amazon'a w XBOX Store... bez sukcesów.

Przypuszczałem, że po prostu połączona indolencja ludzi z kilku firm sprawiła, że ktoś zapomniał odznaczyć w konfiguracji sklepu, że dana aplikacja jest niedostępna w Polsce....
Uprzedzając fakty - miałem rację ;-)

Zmieniłem kraj w ustawieniach XBOX'a (Ustawienia -> System -> Języki) na Stany Zjednoczone...

XBOX się zresetował (głupi telefon potrafi w locie zmieniać język, ale coś z Windowsem już nie...).

Amazon Video pojawiło się w XBOX Store :-)

Zainstalowałem. Działa, chociaż obraz nie jest najwyższej jakości.

Zmieniłem kraj znów na Polskę. Reset. Działa :-)

Tak oszczędziłem jakieś 800-1000 PLN, bo myślałem o kupnie NVidia Shield TV, a tak nie muszę ;-)

Zgaduję, że ktoś w Amazonie zapomniał odhaczyć "ptaszka" i aplikacja nadal ma ustawione, że nie ma się pojawiać w polskiej wersji XBOX Store....


Podobne postybeta
A ja wybrałem Xbox One ;-)
Nie, to brak HDCP 2.2, a nie backdrop nie służy Chromecastowi Ultra ;-)
Ice Cream Sandwich - Nexus S coraz bliżej, EEE Pad Transformer czeka...
So many Kindles..... ;-)
A ja jestem przeciwny prywatyzacji służby zdrowia.