Monday, February 14, 2011

GitHub у поміч блогеру

Частенько блогеру, пов’язаному з IT-сферою, доводиться писати коротенькі сценарії, або ж операції, необхідні для досягнення бажаного результату. Зазвичай для подібних речей блогер ставить плагін для підсвітки синтаксису і самотужки вставляє шматки коду між спеціальними тегами. Однак щойно наш робочий скрипт змінився, чи з’їхала нумерація, як тут же всі вставки коду в статті доводиться переробляти наново.

Проте хочеться, щоб це виглядало максимально зручно для кінцевого читача. Однак і робити щоразу дурну роботу ліньки. Або ж хочеться описати деякі важливі моменти, а в кінці статті дати посилання на повністю готовий код. Або, описуючи власні дії покроково, дати користувачеві можливість просто-таки повністю скопіювати всі рядки разом, а не кожен окремо. Мало чого може залізти в голову блогеру.

Проте всі ці (і на разі не лише мої) забаганки можуть здійснитися, якщо використовувати GitHub, і, зокрема, сервіс Gist

Всім відомі сервіси для обміну шматками коду, та іншою текстовою інформацією. Це так звані Pastebin-и. Свою назву вони отримали від одного з родоначальників подібного сервісу під назвою pastebin.com і були призначені для того, щоб не кидати у вікно чату великі шматки коду, результати виконання команд, та ще купу всіляких речей, однак, з яких можна судити про проблему і дати слушну пораду. Ці сервіси дозволяють обмінюватись, вносити зміни, переглядати старі версії файлу, мають підтримку синтаксису та дозволяють модифікувати кільком особам один і той же файл. Більшість спільнот по програмуванню обзавелися власними подібними сервісами, наприклад, hpaste.org — для спільноти програмістів на Хаскелі, snipt.org — для твітерян, існують навіть боти на Perl. Проте вони з самого початку орієнтувались на чат. Це означало, що нам все одно доведеться переходити на іншу сторінку, щоб подивитись на код, а значить, просто не підходить для блогера. І тут з’являється Gist.


Сам сервіс Gist представляє собою класичну реалізацію pastebin-ів на базі git-репозиторіїв. Це значить, що з кожним таким шматком коду можна робити всілякі операції, властиві git-репозиторіям, зокрема, клонувати, зливати(мержити). На додачу це знімає обмеження на один файл, що ще покращує життя. При всьому цьому сервіс продовжує давати анонімний доступ, тобто зберігає всі можливості попередників.

І найзручніша плюшка для блогера — можливість вмонтувати код з підсвіткою синтаксису у власну публікацію та можливість скачування оригінального файлу прямо на місці. Підсвітка синтаксису реалізована за допомогою Pygments, а підключити файл в публікацію можна за допомогою тегу <script>, наприклад:

<script src="http://gist.github.com/324678.js?file=sample.html"></script>
view raw
sample.html
This Gist brought to you by GitHub.


На додачу, є перманентні посилання на кожну ревізію та кожен файл, підтримка історії, скачування всього репозиторію одним архівом. І ще більші можливості очікують на свою реалізацію. Тепер, змінивши файл, Вам не доведеться бігом редагувати його у блозі — все вже давно там.

Свій тест-драйв цих можливостей я вже зробив у попередній статті, і дуже задоволений. Проте є ще кілька речей, які я з нетерпінням очікую, і за які прошу проголосувати всіх, хто має обліковий запис на support.github.com (на жаль, для цього та основного домену облікові записи різні):
Options for gist embedded. Ці пропозиції включають в себе додання можливостей посилатись на вказані шматки коду а також кнопку для копіювання всього коду в буфер обміну.
Make all files embeddable like gists. Реалізація функціональності вмонтування для всіх файлів в стандартних репозиторіях Git. Це дозволить одного дня зробити один репозиторій для коду на весь блог і посилатись на нього. На додачу, коментатори зможуть побродити по всьому репозиторію і поназадавати каверзних питань. Дуже зручно, як на мене.

На цьому й завершу цей коротенький огляд, а для тих, хто хоче власноруч вибрати собі інструмент, даю наступні посилання:
http://en.wikipedia.org/wiki/Pastebin — стаття про розвиток сервісу pastebin і подібних
http://en.wikipedia.org/wiki/Comparison_of_pastebins — їхня порівняльна таблиця

Скрінсейвер з гарними фотками для ледачих

Багатьом людям рано чи пізно стандартний майкрософтівський прапорець набридає і вони шукають якоїсь гарненької заміни. Одним хочеться оживити “відпочиваючий” комп’ютер усякими там анімованими пейзажами чи акваріумними рибками (ненав’язлива реклама  ), а іншим типу мене обожнює дивитись на всякі там гарні фотки. Скрінсейверів, що просто показують фотографії з певних каталогів на диску нині дофіга, але всам факт завантажування фоток такого ледащо і гіка як я вельми дратує – ну не сучасно це, і кому ті зайві рухи потрібні? От як би то його зробити, щоб воно саме… Та сучасні технології не стоять на місці і вже мабуть навіть останній найледачіший користувач інтернету знає про інсування стрічок RSS – найзручнішого засобу отримувати свіжу інформацію без нагальної необхідності лазити по сайтах (найбільш адекватні з них ще й користуються єдино вірною RSS-читалкою – Google Reader, але зрештою донесення цієї істини до варварів не є темою цього допису і залишаєтсья на самоопрацювання). Так от, одне з чудес RSS полягає в тому, що воно дозволяє додавати в стрічку не лише звичайні статті (з текстом, відео та картинками), а і долучати до нього медіа-дані (як аттачменти у електронній пошті). Ті самі відео та картинки, але не як елемент статті, а як окрему сутність (в термінах RSS воно називається enclosure). Це важливо, бо комп’ютери все-таки тупі і виділити потрібну картинку з-поміж тексту їм не так легко як людині. Думаю ви розумієте до чого я веду: картининки можна автоматично отримувати з відповідних RSS і не треба нічого самотужки качати – розумні програми зроблять все за вас. Єдина умова – щоб ці картинки були оформлені у стрічці як enclosue (на жаль, не всі фото-сайти настільки просунуті, щоб видавати стрічки картинок з картинками не у вигляді вмісту новини, а саме як додаток).

Вибір самих RSS з фотографіями чи картинками та скрінсейвера з підтримкою їх завантаження з чих стрічок – справа смаку, але особисто мну для цих цілей рекомендує дві речі: фотки краще всього діставати з найкращого сайту по фотографії – Flickr, а в якості самого скрінсейвера Google Photos Screensaver. З останнім, щоправда, Гугль зробив невелику підлість – раніше це був окремий продукт, а зараз він іде виключно як складова Google Picasa, яка мені в повному обсязі нафіг не треба, бо я замість Пікаси все одно більш полюбляю Adobe Lightroom (бета версія якого ще нещодавно була безкоштовною, але як зараз – не знаю). Але повертаючись до нашого барану… Нижче показано як виглядає його налаштування за замовчуванням (дефолтна стрічка вже декілька місяців, на жаль, не працює, а там були непогані фото). При додаванні нової RSS-стрічки він перевіряє її на наявність додатків-фотографій і якщо таких не буде, то скаже, що вона не підходить.



Чим крутий Флікр? По-перше, тим, що це зараз мабуть найбільший і найкращий сайт де можна знайти справді гарні фотки практично всього що завгодно. Плюс саме завдяки ньому я частково відучився від поганої практики завантаження фоток на локальну машину. Навіщо? Щоб вона потім згубилась в нетрях диску? Краще вподобану вами на Флікрі фотографію додати собі у “favorites” – вона буде там присутня поки власнк не надумає її видалити (що буває вкрай рідко), плюс автор фото дізнається, що вона вам сподобалась і йому буде приємно. По-друге, цей сайт багато в чому передовий і там підтримується згадана вище RSS з фото-додатками майже для всього що тільки можна! Хочете отримати фотки, у яких в тегах прописано “кіт” – будь-ласка, з певної групи – ніяких проблем, власні вподобання – та залюбки…




Єдиний мінус Флікра – це жлобство деяких професійних (і не дуже) фотографів  В тому сенсі, що вони викладають лише зменшені копії своїх фотографій і тому при показі скрінсейвера воно виглядє убого. Я довго мучився з цим, поки одного осіннього ранку, чи то вечора на мене не зійшло осяяння під назвою Yahoo Pipes. Це така кльова штука, яка дозволяє збирати та модифікувати дані з різних джерел та видавати у потрібному вигляді, але при цьому не вимагає від вас ніяких навичок програмування  В нашому випадку задача проста як двері: взяти RSS-потік з додатками-картинками та відфільтрувати його по розмірам зображень, але про це я напишу вже іншим разом, ок?