Markdown, czyli wygodne formatowanie tekstu

Przez moment szukałem w głowie odpowiedniego przymiotnika, którym chciałbym opisać bohatera dzisiejszego krótkiego wpisu. Myślę, że wygodny będzie całkiem dobrym określeniem choć Markdown jest zarówno wydajny jak i intuicyjny.

Czym w ogóle jest Markdown? Jest to język znaczników, służący do formatowania tekstu, wymyślony przez Johna Grubera i Aarona Schwartza w roku 2004. Jak już wcześniej wspomniałem, od innych dostępnych rozwiązań takich jak BBCode czy czysty kod HTML odróżniają go między innymi szybkość użycia i intuicyjność. Składnia Markdown zaprojektowana jest w taki sposób, że nawet patrząc na jeszcze nieprzetworzony kod widzimy przeznaczenie każdego znacznika. Już podaję przykład:

Nagłówek pierwszego stopnia
===========================

Podrozdział
-----------

Poszczególne akapity są od siebie oddzielone pustą linią, tak więc
w obrębie jednego paragrafu swobodnie możemy korzystać z
klawisza enter.

Równie intuicyjne jest też wyróżnianie tekstu: czy to poprzez *emfazę*,
czy **pogrubienie**.

Lista nienumerowana

- kurczaki
- ziemniaki
- psychotropy

Oraz lista ponumerowana:

1 kurczaki
2 ziemniaki
3 psychotropy

Taki kod Markdown zostanie sparsowany (parsery dostępne są dla większości języków) do następującego kodu HTML:

<h1>Nagłówek pierwszego stopnia</h1>

<h2>Podrozdział</h2>

<p>Poszczególne akapity są od siebie oddzielone pustą linią, tak więc
w obrębie jednego paragrafu swobodnie możemy korzystać z
klawisza enter.</p>

<p>Równie intuicyjne jest też wyróżnianie tekstu: czy to poprzez <em>emfazę</em>.
czy <strong>pogrubienie</strong>.</p>

<p>Lista nienumerowana</p>
<ul>
<li>kurczaki</li>
<li>ziemniaki</li>
<li>psychotropy</li>
</u>

<p>Oraz lista ponumerowana:</p>
<ol>
<li>kurczaki</li>
<li>ziemniaki</li>
<li>psychotropy</li>
</ol>

Jest to oczywiście pokaz tylko części możliwości Markdown. Chodziło m raczej o zademonstrowanie samej koncepcji i przejrzystości składni. Jak widać, dzięki użytej budowie, artykuły można spokojnie pisać w dowolnym edytorze tekstowym i nadal pozostaje to czytelne.

Poza to, co pokazano wyżej, składnia Markdown oferuje jeszcze między innymi: odnośniki, obrazki, przełamania linii wewnątrz akapitów, umieszczanie bloków kodu, czy cytaty. Istnieje też alternatywna składnia dla kilku z pokazanych już zastosowań - w standardzie dostarczono m.in. dwa sposoby oznaczania nagłówków, emfaz i pogrubień, które można stosować wymiennie w obrębie jednego dokumentu. Nic nie stoi też na przeszkodzie aby np. umieścić element listy składający się z kilku akapitów -nie chciałem po prostu opisywać tutaj całej składni, bo to już dobrze zrobił sam autor.

Ponadto, dla PHP (oryginalny preprocesor został napisany w Perlu) istnieje parser Markdown w wersji Extra, który oferuje nam takie rzeczy jak listy definicji, przypisy, tabele, czy poprawiony sposób umieszczania kodów źródłowych w tekście. Tutaj należy wspomnieć o jednym założeniu poczynionym na samym początku przez Grubera - Markdown nie ma stać się składnią alternatywną dla HTML. Ma być jedynie wygodną warstwą abstrakcji, która faktycznie ułatwi nam najczęściej stosowane formatowania tekstu.

Jako potwierdzenie powyższych zalet wystarczy zobaczyć jak wiele języków obecnie dostarcza biblioteki do obsługi tej składni i jak wiele oprogramowania pozwala z niej korzystać, czy to jako natywny sposób formatowania, czy jako rozmaite modyfikacje. Znajdziemy więc między innymi rozszerzenie do Thunderbirda, które pozwala nam pisać maile w ten sposób, a potem konwertuje je do HTML-a, a także wtyczkę do Wordpressa (przyznaję, że sam chętnie przerzuciłbym się właśnie na Markdowna, gdyby nie duża ilość treści do przekonwertowania).

Markdown jest też jednym ze sposobów formatowania treści dostarczanym natywnie przez takie usługi jak Github, BitBucket, Jekyll, a także rozmaite systemy CMS.

Tak więc Markdown kryje pod swoją nazwą dwie rzeczy: standard opisu informacji, czyli zaprezentowany i opisany wyżej język znaczników, a także pierwotny parser napisany przez Grubera w Perlu. Niezależnie od czy tworzycie jakąś nową aplikację w języku, który ma bibliotekę do parsowania Markdowna albo pracujecie z programem, który umożliwia jego użycie , jeżeli przewidujecie dużą ilość pracy z prostym tekstem, polecam spróbować tego rozwiązania - praca po chwili staje się naprawdę przyjemna i szybka.

Na sam koniec dwa konkretne linki dla osób, które zainteresował temat: oryginalna strona projetu gdzie w pełni opisano dostępną w standardzie składnię oraz stronę klasy Markdown.php.

Opera i polski słownik

Dla wielu osób zaczynających swoją przygodę z Operą problemem może być to, że cały tekst napisany po polsku jest podkreślany jako niepoprawny. Problem ma bardzo proste źródło – w domyślnie pobranej Operze nie ma polskiego słownika. Można go jednak bardzo łatwo doinstalować. Wszystko co musisz zrobić to:

  1. W momencie gdy w jakimś polu tekstowym tekst po polsku podkreśli Ci się na czerwono, po prostu kliknij prawym przyciskiem myszy i na samym dole menu powinieneś mieć rozwijaną pozycję Słowniki. Wybierz z niej „Dodaj lub usuń słowniki”.
  2. W okienku, które Ci się pojawi, odszukaj słownik Polski, zaznacz go i kliknij dalej, słownik zostanie pobrany.
  3. Zaakceptuj jego licencję (spokojnie, jest na GPL – nie ponosisz żadnych kosztów, ani zobowiązań).
  4. W następnym okienku ustaw słownik Polski jako domyślny i… to tyle :) Żadnego latania po stronach, czy restartu programu tak typowego dla niektórych przeglądarek.

Testowane na wersji, 11.50, jednak jakoś od wersji 10 nie powinno być większych zmian w tej procedurze. Oczywiście po aktualizacji nie trzeba tego powtarzać.

Nie wszystko sweet, co się świeci…

W ostatnich latach możemy zaobserwować rosnącą popularność cukierkowych, coraz bardziej minimalistycznych interfejsów programów. Do napisania tego wpisu skłoniły mnie dwie aktualizacje programów jakie wczoraj wykonałem. Mowa o Thunderbirdzie i Operze.

Jeśli chodzi o Thunderbirda, to widać, że mania podbijania numeracji, zapożyczona od Google, na dobre zadomowiła się w Mozilli. Dotyczy już nie tylko Firefoxa. Z Thunderbirda 3.2 na 5.0… niezłe tempo.

Interfejs w tej wersji miał zostać lekko podrasowany. Spójrzmy na różnicę. (kliknij na obrazki, aby powiększyć)

Thunderbird Thunderbird

Poza lekkim odświeżeniem kolorystyki głównego okna ekranu i jeszcze większym zaokrągleniem wszystkiego co się dało (niedługo będziemy kupować monitory w kształcie koła) najbardziej dla mnie rażącą sprawą jest uczynienie tła, pod buttonami i menu, półprzezroczystym. Bo oczywiście teraz wszystko musi być półprzezroczyste…

Problem jest tylko taki, że teraz przyciski "Pobierz", "Napisz", "Adresy", "Etykieta" oraz wszystkie zakładki menu wyglądają jak zawieszone w powietrzu. Albo to jest po prostu nieładne, albo ja jestem strasznie wybredny.

Teraz skupię się na Operze.

Opera 11.11 (kliknij, aby powiększyć) Stary interfejs Opery

Opera 11.50 (kliknij, aby powiększyć) Nowy interfejs Opery

Nastąpiło rozjaśnienie większości barw (tak jak chyba we wszystkich programach - autorzy nie mają już własnych pomysłów tylko ślepo gonią za tłumem), oczywiście jeszcze większe wygładzenie wszystkich przycisków i uczynienie grafik (przycisk nowej karty, ikonki w "szybkim wybieraniu itd") jeszcze bardziej szczegółowymi. No i oczywiście półprzezroczyste tło pod to wszystko. Czy tylko mnie nie kręci możliwość zobaczenia pulpitu przez menu przeglądarki internetowej?

A co Wy sądzicie o takim trendzie minimalizacji i "usładzania" interfejsów? Podoba się Wam to, czy może wolicie starą prostotę?

PS: Żeby nie było, że tylko narzekać umiem - muszę pochwalić Google za ich nowy design. Jest genialny :).

[howto] Szybkie zarządzanie XAMPP-em

Już od dłuższego czasu z powodzeniem używam XAMPP-a jako pakietu pod localhosta. Jednak, jako że jestem maksymalnie leniwy, to stwierdziłem, że nie chce mi się uruchamiać tzw. XAMPP Control Center i klikać 2 razy przyciski start, skoro można to zrobić łatwiej…

Wystarczyło szybkie spojrzenie do plików uruchamiających MySQL i Apache w katalogu xamppa (mysql_start/stop.bat i apache_start/stop.bat). Cały "skrypt", jeśli można to tak nazwać, prezentuje się tak.

Dla uruchamiania

@ECHO OFF
X:\Twoj_katalog\z_xamppem\xampp_cli.exe start apache
X:\Twoj_katalog\z_xamppem\xampp_cli.exe start mysql

Dla zatrzymywania

@ECHO OFF
X:\Twoj_katalog\z_xamppem\xampp_cli.exe stop apache
X:\Twoj_katalog\z_xamppem\xampp_cli.exe stop mysql

Oczywiście zamiast X:\Twoj_katalog\z_xamppem wstawiamy ścieżkę, w której zainstalowaliśmy program. Pliki te zapisujemy np. jako xampp_start i xampp_stop. Ważne jest nadanie im rozszerzenia *.bat. Jeśli robisz to w notatniku, to przy zapisywaniu wybierz z listy rozwijanej "zapisz jako" pozycję "wszystkie pliki" i w polu nazwy wpisz np. xampp_start.bat, analogicznie dla pliku zatrzymującego.

Jeśli komuś zależy na samym serwerze Apache+MySQL+PHP (tzw. AMP - stąd nazwa xampp :P), to może też usunąć katalogi dla takich rzeczy jak Mercury czy FileZilla Server w katalogu programu. Jednak to już tylko dla fanatyków odzyskiwania jak największej ilości miejsca, jak ja :)

NetBeans 7.0

Jak już pisałem w jednym z wcześniejszych wpisów jestem zadowolonym użytkownikiem NetBeans'a, czyli zintegrowanego środowiska programistycznego m. in. dla PHP. Dzisiaj podczas przeglądania nowości w RSS'ach zauważyłem informację o wydaniu NetBeansa 7.0 (do tej pory używałem 6.9.1). Pomijam wszystkie changelogi, skupię się na własnych wrażeniach.

Zacznę oczywiście od instalacji. Już na starcie będzie troszkę narzekania, bo tak jak w poprzednich wersjach, nie mamy możliwości ustawiania czegokolwiek poza ścieżką do instalacji. Naprawdę nie widzę sensu instalowania m. in. chińskiej, rosyjskiej, portugalskiej i japońskiej wersji językowej "na sztywno", powinno się dać to odznaczyć.

Świeżo po instalacji IDE zajmuje u mnie 142 MB. Po skasowaniu wszystkich innych wersji językowych niż angielska pozbyłem się 1291 plików i całych 7,41 MB :P Mam jednak wrażenie, że program uruchamia się troszkę szybciej.

Po uruchomieniu programu pojawiło się okienko informujące, że na komputerze wykryto ustawienia z wersji 6.9 z możliwością ich zaimportowania. Krok wręcz obowiązkowy. Wszystko poszło bez problemu, wszystkie projekty wczytały się bez zmian.

Właśnie odnośnie zmian - otóż tych w wersji siódmej jest naprawdę niewiele. Pojawiło się m. in. wsparcie dla systemu kontroli wersji GIT i zawijanie linii - oba wyłączyłem. Natomiast przydać się może wsparcie dla znaczników HTML5. Podejrzewam, że sytuacja przedstawia się inaczej jeśli chodzi o wersję dla Javy, bo to przecież pod ten język był pisany NetBeans.

Standardowo wyłączyłem kilka nieprzydatnych pluginów (z 17 aktywnych po instalacji zostało 10). Generalnie jak dla mnie w programie zmieniło się niewiele. Jednak z drugiej strony nie muszę przyzwyczajać się do nowego interace'u itd, a program działa sporo szybciej (przynajmniej na moim sprzęcie). Nie mam na co narzekać :)

Menadżery haseł

O bezpieczeństwie haseł powiedziano już bardzo wiele, było, że powinny być skomplikowane i trudne do złamania, było też słynne porównanie haseł do majtek (na polski: "Hasła są jak majtki. Nie zostawiaj na widoku, zmieniaj często i nie pożyczaj obcym.").

Jest też jedna z mądrości na ten temat mówiąca, że najbezpieczniejsze hasło, to takie którego nie pamiętamy. Wiadomo: nie podamy go niezaufanym ludziom i nie zapiszemy na karteczce przyklejonej do monitora. Ale jak używać hasła, którego nie pamiętamy? Tutaj z pomocą przychodzą nam managery haseł. W tym wpisie skupię się na jednym z nich - KeePass Password Safe.

Jest to swego rodzaju sejf na hasła (jak zresztą widać w nazwie). Cała istota tego rozwiązania polega na tym, że wymyślamy tylko jedno super bezpieczne hasło, którym zabezpieczamy bazę programu, a reszty haseł nie musimy pamiętać, co ma też takie plusy, że do każdego serwisu możemy mieć inne hasło i nie martwić się o to, czy ktoś nie trzyma ich w plaintexcie (czysty tekst, bez szyfrowania*).

Jednak, by zalogować się do jakiegoś serwisu musimy mieć program przy sobie. Twórcy pomyśleli też i o tym. Program jest portable, tj. nie instaluje się w systemie przez co możemy go nosić na pendrive'ie. Aplikacja jest też dostępna w języku polskim oraz powstały jej wersje m. in. na systemy Windows, Linux i Mac OS.

Oczywiście bardzo dużą wagę przyłożono do bezpieczeństwa danych trzymanych w programie. Program korzysta z mocnych i bezpiecznych algorytmów szyfrujących takich jak AES i Twofish oraz haszujących SHA-256. Dodatkowo KeePass nawet po uruchomieniu i otworzeniu bazy danych, hasła trzyma zaszyfrowane w swoim procesie w pamięci, chroniąc je przed wykradnięciem.

Skoro nie musimy pamiętać ustawianych haseł, program został wyposażony także w generator losowych haseł (możemy ustawić znaki które maja się w nich znaleźć [litery, cyfry, znaki specjalne itd]).  Przy wpisywaniu hasła w programie, podaje on siłę hasła w bitach i pokazuje obrazkowo.

KeePass został też wyposażony w różne funkcje zwiększajace bezpieczeństwo już po otwarciu bazy z hasłami (nie tylko szyfrowanie danych w pamięci, wspomniane powyżej).  To m. in. możliwość ustawienia po jakim czasie ma się blokować obszar roboczy programu. Możemy też nakazać blokować się mu na przykład po przełaczeniu użytkownika lub nawet po zminimalizowaniu okna. Aby go odblokować musimy podać nasze hasło główne. Możemy też ustawić czas po jakim schowek systemowy ma być czyszczony z hasła skopiowanego z programu (domyślnie 12 sek.).

Ponadto w opcjach mamy dostępna zakładkę "Polityka", w której możemy ustalić co możemy robić po otworzeniu bazy haseł. Można np. zabronić uruchamiania wtyczek do programu lub zmiany klucza głównego. Dostępne jest kilkanaście opcji.

Biorąc pod uwagę te wszystkie zalety uważam, że ten zajmujący zaledwie 3.5MB pakiet powinien zagościć na pendrive'ach i dyskach wielu osób. Program KeePass Password Safe można pobrać stad.

  • wiem, powinienem napisać hashowania zamiast szyfrowania, ale użyłem tego terminu jako bardziej zrozumiałego dla osób niezaawansowanych.

Trzy dni z Linuksem

Trzy dni z Linuksem i… żyję. Nie pożarła mnie konsola, nie zgubiłem się pośród pakietów, mam większość potrzebnych mi programów, a wygląd mojego Linuxa to wcale nie tapeta w pingwiny lub konsola rodem z Matrixa…

Czytaj dalej →

NetBeans i Sourceforge - pierwsze wrażenia

W pierwszej kolejności przepraszam za bardzo długą przerwę w publikowaniu wpisów i obiecuję, że postaram się to nadrobić.

W ostatnim czasie byłem pochłonięty realizacją mojego nowego projektu - CMSa. Powiem tylko krótko, że CMS to taki fajny rodzaj projektu gdzie programista zbiera wszystkie umiejętności i łączy w jedną całość. O CMSie napiszę więcej już niedługo.

Przy okazji pisania tego sporego jak na moje standardy skryptu postanowiłem się przestawić na jakieś IDE (Zintegrowane Środowisko Programistyczne). Wybór padł na NetBeans…

Czytaj dalej →

Opera 11 - krótka relacja

Jak zawsze po powrocie do domu, ślęczenie przed komputerem zacząłem od przejrzenia nowości w kanałach RSS. Z zadowoleniem zobaczyłem informację o wydaniu finalnej Opery 11. Swoją drogą, to DobreProgramy wprowadziły ciekawy styl Operowy na tą okazję (jeśli już go nie widać to kliknijce na przycisk wygląd po lewej).

Od razu po przeczytaniu newsa włączyłem Operę i zacząłem pobierać najnowszą wersję. I o to co nasuwa mi się na pierwszy rzut oka. Interface zmieniony nieznacznie także starzy userzy Opery spokojnie się w nim połapią, wygląd został jednak lekko odświeżony (i przycisk menu skopiowany od Fx :P*).

Wady
Czym był by tak optymistyczny wpis bez wspomnienia o wadach nowej Opery.

  • Brak polskiego słownika - podejrzewam, że jest gdzieś do pobrania/ustawienia, ale jak na razie nie znalazłem a to mocno utrudnia pisanie.
  • W Fx w momencie gdy chciałem zaznaczyć cały akapit tekstu do skopiowania, to po prostu klikałem na niego dwa razy. W Operze do dwukliku pojawia się menu kontekstowe i skrót ctr+c nie działa
  • Sytuacja występująca m. in. na YT: po najechaniu na player mam komunikat "Kliknij aby aktywować i używać tej kontrolki". Obiekt flash działa jednak jeszcze przed kliknięciem i kiedy najedziemy na niego myszą bez klikania, to zaczyna się on przycinać (przynajmniej na YT)

Adblock
Sprawą wymagającą szerszego omówienia jest kwestia zastępnika AdBlocka w Operze, bo jak wiadomo user Firefoxa nie może bez niego żyć :P.

Na stronie z dodatkami do Opery jest udostępnione rozszerzenie NoAds (Adblock+NoScript). Rozszerzenie w zasadzie działa bo np. onet jest wolny od reklam, ale menu ustawień nie działa u mnie tzn. po kliknięciu na "Settings" nic się nie dzieje.

Dla mnie Adblock bez wygodnej konfiguracji filtrów, przycisku "Zablokuj" na flashah i opcji zablokuj w menu kontekstowym dla obrazków to nie AdBlock.

Inne dodatki
Z innych dodatków istniejących dla Fx, a dla Opery nie, brakuje mi:

  • Firebug - tak, wiem, że jest Dragonfly, ale opinie na jego temat są różne. Muszę sam przetestować
  • WebDeveloper - wszystko dla webmasterów w jednym miejscu.

Podsumowanie
Opera była i jest dobrą przeglądarką. Wersja 11 wprowadza spory postęp m. in. przez dodatki. Jednak jako fanboy Fx muszę zmartwić fanów Opery. Dopóki nie doczekam się dobrych zamienników wspomnianych wyżej dodatków - zostaję na Firefoxie. Planuję jednak z Opery uczynić przeglądarkę portable używaną na wyjazdach. Na szczęście portableapps.com już przygotowało wersję pod swój pakiet :)

* - możliwe, że tym dopiskiem wywołam burzę, ale co tam :P