piątek, maja 29, 2020

Alfred + Todoist i wysyłanie tasków do projektu, a nie tylko do Inbox'a ;-)

Od jakiegoś czasu używam Alfreda.

Dostałem sobie już nawet własny "workflow", który dodaje mi taski do Todoista.

No i było nieźle, ale trochę mi z czasem zaczęło brakować możliwości dodawania nie tylko do Inbox'a, ale też do projektów.

Wczoraj więc posiedziałem i mam, działa :-)

Wystarczy w trakcie tworzenia taska wpisać # i pojawia się lista projektów :-) co widać poniżej :-)



Mój workflow to aż 3 akcje ;-)


Pierwsza reaguje na słowo kluczowe todo i składa się z 2 skryptów w Pythoni'e ;-) pierwszy to Script Filter, którego zadaniem jest reagowanie na to co użytkownik pisze, i jak w tekście pojawi się # to skrypt ma zaproponować znane projekty :-) [oczywiście z filtrowaniem]
Gdy user już wszystko napisze i naciśnie Enter to (poza selekcją w autocomplete ;-))wynik jest wysyłany do drugiego skryptu w Pythonie, który wysyła item do Todoista i w razie w treści jest #<nazwaProjektu> to dodaje wpis do tego projektu, jeśli nie znajdzie takiego projektu to dodaje do Inboxa.

Druga reaguje na słowo todosync, i po prostu odpala skrypt który pobiera listę projektów z Todoista (ten Script Filter to też zrobi jeśli zauważy, że nie ma na dysku pliku z projektami ;-)).

Trzecia reaguje na słowo todotoken po którym powinien wystąpić ciąg znaków będący tokenem pozwalającym na korzystanie z API Todoista.
Jeśli poprzednie skrypty nie znają tokena to zamiast pomagać i robić to co jest ich zadaniem, poproszą o użycie todotoken ;-)

Sam Alfred nie wspiera jakoś szczególnie (a przynajmniej ja jeszcze nie umiem) reużywania kodu, więc w moich skryptach jest dość dużo powtórzeń ;-)

Jakby ktoś był zainteresowany to tutaj można sobie pobrać mój workflow :-) [ikonkę ukradłem stąd https://github.com/rbnh/todoist-alfred-workflow, zresztą jest tu mój pull request sprzed jakichś 2 tygodni, ale nikt tego projektu nie utrzymuje od paru lat więc raczej nie zostanie zmergowany ;-)]





Podobne postybeta
Workflow dla Alfreda do dodawania tasków z projektami i labelkami do Todoista :-)
Jak walczyć z gigantycznym kodem w Java'ie, część 1.5 ;-) - czyli jak je się słonie ;-)
Który kod (nie kot! ;-)) lepszy?
Buzz Troll Remover v0.3 - potęga guzików
Regresja liniowa w Google Docs

środa, maja 27, 2020

Wersjonowanie Rest API - pytanie filozoficzne

OK, w przypadku Rest API (choć de facto ogólnie API webowego ;-)) robi się wersjonowanie przez dodawanie albo w URLu numer wersji, albo w nagłówku.

No i wiadomo jak zmienia się zawartość endpointa i dochodzą nowe konieczne rzeczy to robi się update.
Ale co wtedy gdy zmiana jest kompatybilna w dół?

Nie wiem, kiedyś zwracaliśmy listę obiektów z takimi polami, a teraz te obiekty mają jeszcze jedno nowe pole?

Albo przyjmowaliśmy obiekt i pojawiło się w mim nowe pole, które nie jest required?

Czy numer API się powinien dla tego endpointa zmienić czy nie? ;-)

Wg mnie nie, bo to jest tak, że API jest nadal takie samo, stary kod nadal będzie działał.

Jak w przypadku kodu źródłowego, przyjdzie nowa wersja biblioteki i jest sobie kod z niej korzystający i API się nie zmieniło (choć może zmieniły się w sposób "niepsujacy" obiekty) to kod powinien nadal działać.
Jak zmieniamy wersję Java'y i dodano do Map nowe metody, ale zachowanie starych jest takie samo to jest OK. 
Wychodzi niemal jakby jakaś wariacja na temat zasady podstawienia Liskov ;-)



Podobne postybeta
Chrome2Chrome, mam dylemat
Delete Driven Development ;-)
WS-Security złe, SOAP zły, WebServices złe. REST dobry
Automagiczne dodawanie tagów do Pocket :-)
Google App Inventor for Android - co to będzie? ;-)

poniedziałek, maja 25, 2020

Doom Eternal.... ssie ;-)

Lubię Dooma, stąd gdy pojawiła się zapowiedź Dooma Eternal to od razu kupiłem.
Zapłaciłem 289.99 PLN i to prawie 5 miesięcy przed premierą.

I w nagrodę dostałem to miejsce:


Najsmutniejsze jest to, że gdy oglądam ludzi jak grają w Doom Eternal to tutaj w ogóle nie mają problemu.
A ja utknąłem.
Łącznie już z 2-3 godziny tu spędziłem i najdalej dotarłem tak jak w tym filmiku....

Stąd gra ssie. Nie powinna mieć takiego miejsca którego nie umiem przejść.



Podobne postybeta
Tym razem chcę bezszwowej TV ;-)
Dziwne sposoby zasypiania ;-)
Już prawie, prawie i będziemy na Plutonie ;-)
Joost - TV w komputerze
Jak zwiększyć swoje IQ?

środa, maja 20, 2020

Czasem człowiek musi napisać dekodowanie Base64 w JavaScript ;-)

Tak, wiem, że JavaScript w przeglądarce to ma, wystarczy użyć metody atob.
Ale ja postanowiłem sobie zrobić skrypt do Keyboard Maestro, który po tym jak sobie zaznaczę w przeglądarce token JWT i wcisnę jakąś kombinację klawiszy (na razie ALT-CMD-SHIFT-J) to mi zdekoduje ten token i go wyświetli.
JWT jest w Base64 i w sieci można łatwo znaleźć kod do jego rozkodowania....

No i wziąłem ten kod, tylko że okazało się, że JavaScript for Automation w macOS nie ma metody atob, która przerabia Base64 w tekst ;-)

Base64 jest proste, idea jest taka, że mamy 64 znaki, wielkie litery, małe litery, cyfry i w końcu + i /.
Mają wartości od 0 dla A do 63 dla /.
Czyli możemy tak zakodować 6 bitów :-)

Normalny znak ma 8 bitów ;-)

Więc 4 znaki z Base64 to 24 bity, czyli 3 znaki ASCII :-)

Czyli jak chcemy zdekodować jakiś tekst to bierzemy sobie liczbę, którą ustawiamy na 0, teraz robimy tak tą liczbę przesuwamy o 6 bitów w lewo, dodajemy do niej liczbę którą reprezentuje pobrany znak, i pobieramy następny znak, znów przesuwamy o 6 bitów i dodajemy... i powtarzamy to 4 razy.
Mamy 24 bity. Teraz przesuwamy najstarsze 8 bitów w prawo o 16 bitów i robimy and z 0xFF, i mamy pierwszy zakodowany znak ;-) bierzemy "środkowe" 8 bitów i przesuwamy je o 8 bitów w prawo i znów and z 0xFF i mamy drugi znak i w końcu robimy and 0xFF i mamy 3 znak :-)

Do tego trzeba pamiętać, że jak mamy = to po prostu przesuwamy bity (mogliby to równie dobrze zastąpić A ;-)

Mój kod nie jest jakiś szczególnie optymalny, ale chodziło mi o to by po prostu działał i wygląda tak ;-)
function f2t(z) {
var t = "";
var a = (z&(255<<16))>>16;
var b = (z&(255<<8))>>8;
var c = (z&255);
if (a!=0) t+=String.fromCharCode(a);
if (b!=0) t+=String.fromCharCode(b);
if (c!=0) t+=String.fromCharCode(c);
return t;
}

function _atob(base64) {
var t = "";
var z = 0;
var j = 0;
for (var i=0; i<base64.length; i++) {
var c = base64.charAt(i);
z<<=6;
if (c=='=') continue;
z+=b.indexOf(c);
j++;
if (j==4) {
t+=f2t(z);
z=0;
j=0;
}
}
t+=f2t(z);
return t;
}



Podobne postybeta
Raspberry Pi + no-ip.org ;-)
Lenie ;-)
Z NMEA do KML (chyba najbardziej kryptyczny tytuł postu jak stworzyłem ;-))
2016 będzie rokiem "nietypowym"
Spectre powinno działać nawet w Java'ie ;-)

czwartek, maja 14, 2020

Wygoda a post-PC ;-)

Zdecydowanie nie jestem jednak post-PC ;-)

Przed snem postanowiłem dodać kilka rzeczy do swojej listy ToDo.
Łatwiej mi było wziąć mojego leżącego teraz przy łóżku Macbook Air i używając Alfreda dodać kilka rzeczy do tej listy, niż zrobić to samo przy pomocy telefonu.

Jednak duża klawiatura, której mogę używać bezwzrokowo jest o wiele lepsza od wszelkich dotykowych wynalazków ;-)

Dla mnie jak mam wybierać komputer i komórka to zawsze jednak będzie komputer.... przynajmniej na razie ;-)



Podobne postybeta
Rok Darwina czas zacząć :-)
"Praca" na stojąco i Chromebook - to działa :-)
Post PC i nowa klawiatura ekranowa
Bloggeroid na Chrome OS - to działa... czasami ;-)
Czy jesteś już post-PC?

czwartek, maja 07, 2020

"Aplikacyjka" ;-)

W pracy kilka razy dziennie kopiuję kilka kawałków URLa, i później je "formatuje" wrzucając w konsoli AWSa.
I już mnie to nudzi ;-)
Zapragnąłem "narzędzia" które będzie to robiło za mnie. 
Najlepiej jakby to było coś gotowego, co można przekształcić.
Ale tak poszukałem i nie znalazłem niczego prostego, czego bym się nie musiał uczyć.

Więc napisałem sobie aplikacyjkę w JavaScript'cie z użyciem Electrona.

Działa tak, że siedzi w zasobniku systemowym jak na nią kliknę to bierze zawartość schowka i konwertuje ją na taką jaką bym chciał.

Aplikacyjka ma 33 linie JavaScriptu. I waży 121 MB ;p
Takie są uroki ciągnięcia za sobą całego Chrome'a ;-)



Podobne postybeta
Electron + Airly = wskaźnik jakości powietrza w pasku ;-)
Google Docs i Zoho niszczą wzory
Androidujemy sobie ;-) ale tak niemrawo
Android + Google Docs OCR = zestaw dla szpiega? ;-)
Raport z prac nad ubogą krewną Playtypusa, czyli Kolczatką :-)

wtorek, maja 05, 2020

Czego Apple może się nauczyć od Google?

Właśnie mój Pixel 4 XL się updatuje do nowej wersji Androida.
Robi to w wyśmienity sposób, pobiera sobie kod przez sieć, po czym instaluje go na drugiej partycji, robi jeszcze na niej "optymalizację aplikacji" (co chyba tak naprawdę oznacza kompilację ;-)) i po wszystkim proponuje, że zresetuje urządzenie. Robi reset i po parudziesięciu sekundach telefon znów działa.

Jak to wygląda w produktach Apple takich jak iPad Pro i Macbooki? Urządzenie ściąga poprawkę i pyta czy robić instalację jeśli tak to robi reset i teraz potrafi się kilka razy zresetować, przez parę minut udaje martwe (rada dla kogoś kto updatuje swojego iPada albo Macbooka, jak klikniesz Yes i zacznie się reset to wyjdź z pomieszczenia i wróć za 30-40 minut bo inaczej możesz mieć zawał jak widzisz, że urządzenie ma jabłuszko, nagle wszystko znika i przez minutę czy dwie wszystko wygląda jak martwe. Próbujesz przyciskać guziki i nic, wszystko leży).

Więc Apple mogłoby się od Google nauczyć updatów. Google to po prostu zrobiło dobrze.

Aplikacje Google są też wygodniejsze w użyciu.

Mam Apple TV+ (dostałem z "maleństwem" na rok) i naprawdę nie wiem jak to działa.... na Roku udało mi się znaleźć coś w aplikacji, ale zawsze miałem problemy.
Google Play Movies jest o wiele wygodniejsze, YouTub też.

Google Drive bije iCloud. Google Photos biją Apple Photos.

Google jest też o wiele bardziej otwarte. Używam ich produktów na Androidzie, iOS, macOS i Linuksie i powiedzmy na Windows (ale to przez Parallels) i wszędzie działa to podobnie.
Apple TV+ na Androida nie ma, do tego nie działa z Chromecastem, działa na Roku.

Że Google się może wielu rzeczy nauczyć od Apple to też wiadomo ;-)


Podobne postybeta
iCloud jest podły....
Windows mnie jednak nie lubi ;-)
Nexus S zawstydził mydelniczkę ;-)
Myjnia
Kilka rzeczy, które chciałbym zobaczyć w produktach Google...

poniedziałek, maja 04, 2020

Ostatnie wolne wybory już były?

No i w tym tygodniu się okaże czy ostatnie wolne wybory już mieliśmy.

Scenariuszy jest kilka.

Ustawa o prezydencie z koperty przechodzi => ostatnie wolne wybory już mieliśmy.
Ustawa nie przechodzi => tu zależy.

Jeśli ustawa nie przechodzi to mamy scenariusze:

PiS kurcgalopkiem donosi na swoją ustawę o tarczy antykryzysowej czy czymś podobnym w której zabronił PKW przeprowadzić wybory i kontrolowany przez PiS TK uznaje zapis za niekonstytucyjny, więc PKW ma zorganizować wybory. Tylko trzeba będzie pokombinować z datą => ostatnie wolne wybory już mieliśmy

PiS wprowadza stan wyjątkowy (a nie klęski żywiołowej) => ostatnie wolen wybory już mieliśmy

PiS wprowadza stan klęski żywiołowej => nie wiadomo, jest szansa na wolne wybory.


Szczerze jak PiS wygrał w 2015 roku i zaczął majstrować przy TK to się spodziewałem najgorszego, ale chyba jednak nie tak szybko. Okazuje się, że jestem w swoim pesymizmie szaleńczym optymistą ;-)


Podobne postybeta
2016 będzie rokiem "nietypowym"
Głosowanie korespondencyjne jest tak dziurawe, że aż szkoda gadać - z perspektywy IT
Skrócona wersja zmian w ustroju Polski po wyborach w 2015 roku
Geolokalizacja ma problemy
PROPFIND, czyli jak przechytrzyć HttpURLConnection

niedziela, maja 03, 2020

Czy COVID-19 spowoduje powrót do identyfikacji przez odcisk palca? ;-)

Powiedzmy wprost, używanie teraz na zewnątrz telefonu który odblokowuje się przy pomocy FaceID czy jakiegoś jego odpowiednika nie jest proste ;-)
Jak zwykle nigdy nie muszę wpisywać PINu to teraz jestem o to dość często proszony gdy jestem na zewnątrz ;-)
I to nie tylko gdy próbuję zajrzeć do apki która używa nazwijmy to FaceID do autentykacji, ale nawet jak po prostu chcę przewinąć podcast ;-) zwykle ratuje mnie jednak to, że w Androidzie można mieć przypisane niektóre urządzenia jako "godne zaufania", u mnie to są AirPods Pro i zegarek ;-)

Google Photos nie umie też skojarzyć zdjęcia ze mną ;-)


Sprawdziłem ludzie mnie nadal rozpoznają ;-)

Ciekawe czy ta epidemia spowoduje powrót do FingerID? ;-)
Chociaż odciski nie działają dobrze w zimę bo wtedy znów są rękawiczki....


Podobne postybeta
Nowa metoda autoryzacji czy też innej autentykacji zbliża się do Bloggeroida :-)
AirPods Pro rządzą
Tak sobie, czyli co bym chciał lub co mnie męczy ;-)
Jak utrudnić życie złodziejom kart ;-)
Windows....