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 :-)
Żenienie Todoist z Obsidian przy pomocy Pythona ;-)
Hacky tool ;-) - workflow do Alfreda, który pozwala wykonywać różne konwersje na zawartości schowka ;-)
Rube Goldberg machine do reminderów ;-)
Kopia zapasowa ważna ;-)

ś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
Magia....
Chrome2Chrome, mam dylemat
WS-Security złe, SOAP zły, WebServices złe. REST dobry
Delete Driven Development ;-)
U mnie Linux vs Windows ma teraz wynik 5 do 4, a było 6 do 3 ;-)

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 ;-)
Już prawie, prawie i będziemy na Plutonie ;-)
Joost - TV w komputerze
Moja triada spokoju to jednak nie triada a tetrada spokoju ;-)
Pociąg vs samolot - cena

ś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
Ile w tym i przyszłym miesiącu z odsetek za obligacje?
Raspberry Pi + no-ip.org ;-)
Lenie ;-)
Lubię bity, czyli jak dodawać, odejmować, mnożyć i dzielić na bitach ;-)
Kiedy skończyć pracę...

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
Post PC i nowa klawiatura ekranowa
"Praca" na stojąco i Chromebook - to działa :-)
Bloggeroid na Chrome OS - to działa... czasami ;-)
Czy jesteś już post-PC?
Co ma wspólnego łyżka z post-PC?

czwartek, maja 07, 2020

&amp;quot;Aplikacyjka&amp;quot; ;-)

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
Tłumaczenie stron nie jest dobrym pomysłem ;-)
Androidujemy sobie ;-) ale tak niemrawo
OAuth mnie denerwuje ;-)

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
Apple i Updaty....
Kiedy trigger words będą w mailach obowiązkowe? ;-)
Myjnia
Nexus S zawstydził mydelniczkę ;-)
Fundacja, sezon 2

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
Głosowanie korespondencyjne jest tak dziurawe, że aż szkoda gadać - z perspektywy IT
2016 będzie rokiem "nietypowym"
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 :-)
"Praca cytatem" - a fuj...
Tak sobie, czyli co bym chciał lub co mnie męczy ;-)
Eventual consistency....
Jak utrudnić życie złodziejom kart ;-)