Text

Mail.app doesn’t show email content?

Are You using Mail.app? Your email’s content has dissapeared (it’s just blank)? Have installed GPGTools? Don’t panic! Just uninstall, and install again GPGTools. Remember: reinstall/update doesn’t work… Fixing from prefpane also.

Text

Zmiana przyzwyczajeń

Od wielu lat używam wirtualnych pulpitów. Od momentu gdy zacząłem pracować na Linuksie, najpierw nauczyłem się korzystać z 4, później 6, a następnie na 8 sztukach, i tak mi zostało do dziś. Ogólnie - genialny wynalazek ;)

Wyrobiłem sobie związane z tym nawyki: aplikacje (poza przypadkami szczególnymi) zawsze full sccreen, na pierwszym pulpicie zawsze przeglądarka, na drugim - narzędzia (terminal, edytor, czasem inne), czwarty - komunikator, siódmy - klient poczty etc. I tak przez lata :) W pewnym momencie była przesiadka na Mac-a, tam kultywowałem te przyzwyczajenia. Standardowo na 3 pulpicie zagościł na stałe ForkLift, na 8-mym - Things (do momentu gdy przesiadłem się na Workflowy).

Moje nawyki w międzyczasie doprowadziły do wyrobienia sobie pamięci mięśniowej: przeglądarka - CTRL-F1, poczta - CTRL-F7 i takie tam ;) Gdy pojawił się Lion, gdzie zmodyfikowali zachowanie Spaces, wprowadzili Mission Control i nowy tryb Full Screen (tworzący osobnego Space-a), moje nawyki dość solidnie odstraszały mnie od używania tych rozwiązań - pomimo tego że uważam je za bardzo sensowne. Przez rok czasu nie udało mi się przestawić na dobre na używanie tegoż ;)

Dziś na moim Maczku pojawił się Mountain Lion, a ja spróbuję się przestawić na używanie aplikacji w nowy sposób: bez skrótów do konkretnych Space-ów, wszystkie aplikacje które to obsługują zawsze na full screen, i przełączanie się między nimi z użyciem Mission Control. Nie wiem czy mi się uda - to próba przełamania przyzwyczajeń które pojawiły się u mnie 10 lat temu, może być ciężko :) W każdym bądź razie dziś z 8 pulpitów zostały mi tylko cztery, prawie żadna z aplikacji nie jest już przypisana do konkretnego pulpitu (wyjątkiem jest Adium do spółki z Twitter, które siedzę na czwartym pulpicie), a ja się wkurzam za każdym razem jak wcisnę CTRL-F1 żeby przełączyć się na okno przeglądarki…

Tags: mac
Text

Drugie życie HTC Desire

Od dwóch lat jestem posiadaczem HTC Desire (pierwszej generacji - żadne tam HD, C, Z czy S ;) - jeszcze z AMOLED :P ). Telefon, jak na dwulatka, trzyma się naprawdę nieźle. Co prawda po pierwszym półroczu użytkowania potłukł mi się wyświetlacz, jednak dość szczęśliwie - pojawił się pajączek, ale sam wyświetlacz był w pełni sprawny: wszystkie części wyświetlały poprawnie, poprawnie też funkcjonował interfejs dotykowy… Wytrzymałem z nim w tej postaci przez półtora roku - wymieniłem go dopiero przed około miesiącem, jak stwierdziłem że nie będę zmieniał telefonu.

Wracając do meritum: sam telefon, jako taki, jest prawie idealny. Dla niektórych może być nieco za mały wyświetlacz (3.7”), czasem ktoś może ponarzekać na procesor (1GHz), ale to już czepianie się :) No i ew. bateria - ale przy moim korzystaniu (rozmowy, sms, trochę internetu, rzadko granie) bateria wytrzymuje mi minimum 1 dzień, czasem dwa, więc jak na nowoczesnego dotykowca to nie jest źle ;)

W tej sytuacji, tchnięcie drugiego życia to tylko zabawy z softwarem:

  1. Zmiana romu (Cyanogen)
  2. Zmiana klawiatury (Swype - bezkonkurencyjna…)
  3. S-Off
  4. Instalacja lepszego launchera (w moim przypadku: Go Launcher EX) wraz z dodatkami, jak Go SMS Pro czy Go Contacts EX + odpowiednie skórki i widgety. Wymieniłem tym samym domyślnego w Cyanogenie ADW Launchera, który o ile działa bez zarzutu, o tyle wyglądu nie ma ;)
  5. Instalacja S2E

Punkty 3 i 5 załatwiają największą i chyba jedyną bolączkę HTC Desire: ilość pamięci na aplikacje. Ja już dawno zaopatrzyłem się w szybką i pojemną kartę uSD, więc nie żal mi było kilku giga na poprawę tego mankamentu :)

Czy instalacja S2E po samym S-Off było potrzebne? Przecież spokojnie można wymusić instalację aplikacji na karcie i zaoszczędzić miejsce w samym telefonie? Niestety, w teorii można, w praktyce niespecjalnie. Bez S2E wymuszenie instalacji na karcie powoduje że:

  1. na kartę przenoszone jest tylko część danych aplikacji - tyle na ile aplikacja pozwala. Jeśli aplikacja uważa że potrzebuje 20MB danych w telefonie, a 100MB można przenieść, to 20MB zostanie nam ciągle w pamięci telefonu…
  2. jeśli aplikacja posiada widgety, to nie są one dostępne gdy aplikacja jest zainstalowana na karcie (to prawdopodobnie jeden z powodów dla których Evernote posiada osobną aplikację Evernote Widget)

Jako że przeznaczyłem sobie na aplikację jakieś 2GB pamięci karty, to dopiero teraz mogę sobie poinstalować ;)

Jeszcze tylko konfiguracja S2E - mam zaznaczone:

  • applications
  • private apps
  • dalvik cache
Tags: android desire
Text

Mail.app - zmiana folderów systemowych

Od kilku lat używam Maca. Od początku używałem Thunderbirda do poczty, jako że Mail.app był zbyt biedny, i ogólnie nieużywalny. O ile Apple system zrobiło fenomenalny, o tyle program do poczty i przeglądarka ssą strasznie… ale to osobny temat ;)

W każdym bądź razie, jedną z najbardziej wyczekiwanych przeze mnie “featur” w Lion-ie miał być nowy Mail.app. Po przesiadce na Liona zacząłem się przygotowywać także do nowego Mail-a. Pierwsze podejście spalone…

Przy drugim poszło lepiej, do chwili obecnej do nowej aplikacji się przyzwyczaiłem, jest całkiem fajnie :)

Brakowało mi dwóch rzeczy, znanych z Thunderbirda:

  • używania wskazanych folderów jako systemowych (szkice, wysłane etc)
  • tożsamości (tak to się chyba w Thunderbirdzie nazywało)

Wczoraj doczytałem się jak zrealizować pierwszą rzecz:

  1. klikamy na folderze który chcemy ustawić jako systemowy (np. [Gmail]/Sent Mail)
  2. klikamy w górnym menu na pozycji Mailbox
  3. wybieramy opcję Use This Mailbox For
  4. klikamy folder systemowy, za jaki ma nam służyć wybrany wcześniej folder poczty (np. Sent)

To tyle, i tylko tyle, a jak ułatwia życie ;)

Text

Porządki w .vim, git submodule i “untracked files”

Niedawno uporządkowałem nieco moje vim-owe sprawy, odświeżyłem pluginy (były w bardzo starych wersjach - nie miałem jak ich sprawnie aktualizować, a skoro działały, to nie ruszałem…), i ogólnie uporządkowałem. Zacząłem od instalacji pathogena, później znalazłem repo gita do każdego z używanych przeze mnie pluginów (chwała niech będzie pomysłodawcy https://github.com/vim-scripts/). Każdy z pluginów dodałem jako submoduł do mojego repo plików vima, i tyle. No dobra, prawie tyle. Po wygenerowaniu tagów z pomocą pojawiły się pliki z tagami w folderach poszczególnych pluginów. A co na to git?

#       modified:   bundle/gundo (untracked content)

Kiepsko :(

Dla submodułów w git nie działa pliczek .gitignore w folderze głównym, w żaden sposób. Na początku udało się łatwo - dodałem po prostu .gitignore z treścią:

.gitignore
tags

do folderu każdego z submodułów, i było fajnie. Ba, nawet dziś napisałem prosty skrypt, który jechał mi po wszystkich folderach w bundle, i jeśli nie było tam symlinka do mojego wspólnego dla bundli pliku .gitignore, to go symlinkował.

Dodałem sobie zatem ostatnio kolejny jakiś plugin (chyba gist), zapuściłem tego prostego skrypciora, git st, i…

#       modified:   bundle/gist (untracked content)

:(

Skrypt nawalił? Bez sensu, tak proste rzeczy się nie psują ;) Okazało się, że w skrypcie sprawdzam czy już plik istnieje, a dla gist .gitignore był zdefiniowany. Właściciel repo dodał go, całkiem słusznie, do repo. Jeśli bym go skasował, i dodał swój, to git też by się czepiał. Bez sensu ;)

Wyjścia jakie znalazłem są dwa:

  1. w konfiguracji repo (.git/config) dodać wpis który spowoduje, że komenda status nie wyświetli nie śledzonych plików. Rozwiązanie do tyłka, bo wtedy nawet jak będę miał jakiś nowy plik w .vim/, to st mi go nie pokaże. No way.
  2. W konfiguracji każdego z submodułów dodać wpis, mówiący o tym, żeby tam nie pokazywać nie śledzonych plików. Też średnio, ale w momencie gdy nie mam w planach grzebać w tak zaciągniętych wersjach pluginów (jeśli już to przez forka), to rozwiązanie jest OK. Szczególnie, że robi się to w jednym pliku.

Skoro już wiadomo, że na chwilę obecną wchodzi w grę tylko jedno rozwiązanie (drugie), to jedziemy: vim .gitmodules, i dla każdego z wpisów dodajemy linijkę:

ignore = untracked

Voila, można commitnąć zmiany, wyrzucić wszystkie utworzone przeze mnie symlinki do .gitignore.bundle, i zapomnieć o temacie ;)

Tags: vim git tips
Text

megiteam, perl, i własne moduły

Potrzebowałem dzisiaj, z poziomu perla, wysłać maila. Mój hosting (uwaga, ref link) pozwala tylko na połączenia szyfrowane (SSL/TLS), zatem najprostsza możliwa opcja, czyli Net::SMTP, odpadła w przedbiegach :(

Drugą z kolei opcją był moduł Net::SMTP::TLS, ale jego nie ma w distro. Dziwne trochę, bo Megiteam reklamuje się jako hosting dla “nietypowych” platform (perl w naszym kraju jest nietypowy ;) ). No OK, ale czemu dziwne? Bo skoro zwykłe SMTP nie jest tam dozwolone, to powinien być odpowiedni support dla innych metod. No ale zlew, to nie jest duży problem. Przecież można zainstalować sobie własne moduły, także ten! :)

OK, w pomocy jest info, że wszystko jest przygotowane, wystarczy:

cpan Net::SMTP::TLS

Może w nowych kontach tak zadziała, ale ja tam jestem dość długo, i jakoś nie chce ;) Pluje się, że nie mam dostępu do /root/cośtam, albo do /usr/share/man/cośtam. No i pewnie, nie mam tam roota, więc rację ma ;)

Co zrobiłem: odpaliłem cpana, i tam:

o conf makepl_arg INSTALL_BASE=/home/mysz/www/.perl/
o conf commit

Po tym już bez problemu zainstalowałem sobie mój “upragniony” ;) moduł:

cpan Net::SMTP::TLS

oczywiście, w domowym folderze, nie globalnie. Zatem moja aplikacja (ugh, szuuumna nazwa…) nie do końca chciała działać (nie respektowała .environment), więc wystarczyło ją nauczyć gdzie szukać biblioteki:

use lib “$ENV{HOME}/.perl/lib/perl5”;

I wszystko już mi zaczęło działać jak należy :)

PS. Jeszcze jedna dziwna IMHO rzecz na Megiteam: perl w wersji 5.8.8, a już dawno jest 5.12.x. Strange, very strange…

Tags: perl cpan tips
Text

Jak wydłużyć czas życia baterii…

Odłączyłem telefon od ładowarki ponad 2 doby temu. Później standardowo, kilkanaście minut rozmów/doba, ciągle włączone Wi-Fi + 3g (3g w zależności od dostępności znajomego Wi-Fi), jasność wyświetlacza na auto, etc. Trochę siedzenia “na necie” - czytanie newsów etc. Bez żadnych zmian w sofcie, żadnych killerów, nic. Ot, normalne życie telefonu. W tej chwili mam jeszcze 28% baterii.

Wcześniej przy takiej aktywności ładowałem telefon co dobę. Co zrobiłem, że tak ładnie teraz to działa?

W sumie… nic. Prawie nic. Ot, tydzień temu zmieniłem CyanogenMod z wersji 6.1 na 7.0. I to wszystko ;)

Text

Problemy z synchronizacją kontaktów

Trochę namieszałem, i wysiadła mi synchronizacja kontaktów. Cały czas w ustawieniach synchro miałem komunikat:

Sync is currently experiencing problems. It will be back shortly.

I nic się nie dało z tym zrobić. A ja nie miałem 90% swoich kontaktów ;)

Standardowo Google był pomocny. Po wpisaniu komunikatu znajdujemy m.in. link do zgłoszenia na Google Code: http://code.google.com/p/android/issues/detail?id=2436

Tamtejszy komentarz numer 13 rozwiązuje cały problem. W skrócie: backupujemy sobie listę połączeń (ja używam MyBackup), wyłączamy wszelkie synchro, usuwamy dane aplikacji Contacts Storage, włączamy synchro, przywracamy listę połączeń. Voila! :)

Tags: android tips
Text

Regexpy i //m

Mam sobie taki skrypcik do sprawdzania niektórych aspektów fsadsastandardów kodowania w pracy. Skrypcik ten zaczął ostatnio strasznie ścierwić, wziąłem się za sprawdzanie z czym jest problem. To co znalazłem nieco mnie zaskoczyło…

..Po zapuszczeniu “ruskiego profilera” (robocza nazwa dla wyrzucania sobie w poszczególnych ciekawych miejscach aktualnych timestampów – skojarzenia z “ruskim debuggerem” są jak najbardziej na miejscu) na jednej z naszych aplikacji (charakteryzującej się tym, że jej kod źródłowy to około 1MB perla), okazało się że najwięcej ścierwią 2 testy:

  • svnid – 10s
  • vimaddon – 26s!!!

A to tylko proste regexpy:

  • svnid ($comm w przypadku plików perla to ‘#’):
    if (lc ($data) !~ /^\s*$comm+\s*\$id(?::|\$$)/m);
  • vimaddon:
    if ($data !~ /^\s*$comm+\s*vim:/m);

Trochę bez sensu, nie?

Okazało się że głównym winowajcą jest wspomniany w tytule modyfikator //m. Po zmianie tych regexpów na wersję bez //m obydwa testy zajmują poniżej sekundy. Przetestowanie całej aplikacji zaczęło się o: 1298146768.353036, a skończyło: 1298146769.3054, czyli wykonanie wszystkich testów zajęło mniej niż sekunda! Gdy wcześniej 2 testy zajmowały 36s.

Sposób naprawy? Zmieniłem te wyrażenia regularne na wersje:

  • svnid:
    if (lc ($data) !~ /(?:^|\n)\s*$comm+\s*\$id(?::|\$)/);
  • vimaddon:
    if ($data !~ /(?:^|\n)\s*$comm+\s*vim:/);
Text

htop na MacOS X

Po przesiadce na Maca jakieś 2 lub 3 lata temu, brakowało mi sensownego narzędzia do szybkiego sprawdzenia, co mi zżarło zasoby. Owszem, mam iStat Menus, które pokazuje mi na pasku na górze ogólny stan systemu, mam własny skrypt, który w połączeniu z Geektool wyświetla mi na pulpicie aplikacje zajmujące najwięcej pamięci i zażynającej procka, ale to ciągle nie to. Mój skrypt jest odpalany co określony czas, czyli ma lagi. iStat Menus trzeba kilknąć i rozwinąć żeby coś zobaczyć. A ja i tak jestem zagorzałym (ale nie fanatycznym) konsolowcem, terminal mam zawsze otwarty, więc wolałbym coś sensownego w terminalu. Tak, wiem że jest top, ale wspominałem w poprzednim zdaniu o czymś sensownym. Tęskniłem za htopem ;)

Dziś w końcu ^harston podesłał mi linka do MacOSowej wersji htopa na GitHub (tak naprawdę podesłał mi linka do artykułu na GeekTechnica, ale kto by się czepiał drobiazgów - z tamtąd łatwo już trafić dalej ;) ). Dzięki niech będą ^harstonowi ;)