Ruby → Введение в Ruby/Tk. Часть первая
Доброго времени суток!
Заглянув сегодня в свой ToDo лист, я понял, что работы на сегодня у меня нет. Сидеть в интернете и читать новости целыми сутками тоже, знаете ли, ещё то удовольствие. Надо было чем-то заняться, а именно написать какое-либо приложение. На следующих выходных я хотел познакомить вас со связкой Ruby + Qt, но поскольку Qt биндинги я пока не установил мне пришлось искать замену. И я её нашёл. Т.к. вместе с Ruby поставляется Tk, то именно на него и пал мой выбор.
Ф.И.О: Давыденко Михаил Юрьевич
Место рождения:
На самом деле, речь пойдет не обо мне, а о Tk.
Tk (от англ. Toolkit — «набор инструментов», «инструментарий») — кроссплатформенная библиотека базовых элементов графического интерфейса, распространяемая с открытыми исходными текстами.
Ruby (от англ. Ruby — «Рубин») — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. В общем и целом то, что нам сейчас нужно.
Введение
Заглянув сегодня в свой ToDo лист, я понял, что работы на сегодня у меня нет. Сидеть в интернете и читать новости целыми сутками тоже, знаете ли, ещё то удовольствие. Надо было чем-то заняться, а именно написать какое-либо приложение. На следующих выходных я хотел познакомить вас со связкой Ruby + Qt, но поскольку Qt биндинги я пока не установил мне пришлось искать замену. И я её нашёл. Т.к. вместе с Ruby поставляется Tk, то именно на него и пал мой выбор.
Знакомимся с пациентом
Место рождения:
На самом деле, речь пойдет не обо мне, а о Tk.
Tk (от англ. Toolkit — «набор инструментов», «инструментарий») — кроссплатформенная библиотека базовых элементов графического интерфейса, распространяемая с открытыми исходными текстами.
Врач уже здесь
Ruby (от англ. Ruby — «Рубин») — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. В общем и целом то, что нам сейчас нужно.
Информационная безопасность → Anonymous запустили HackerLeaks.tk для слива информации о взломах
Несмотря на появление многочисленных клонов WikiLeaks, участники Anonymous решили запустить собственный. В отличие от остальных, сайт HackerLeaks.tk (http://hackerleaks2011.blogspot.com/) специализируется на публикации баз данных, эксплойтов и дыр в безопасности, а также фактов взлома разных ресурсов. То есть эдакий Wikileaks для хакеров.
О запуске HackerLeaks.tk объявил Commander X, который считается лидером подгруппы People's Liberation Front (Фронт народного освобождения) внутри Anonymous.
О запуске HackerLeaks.tk объявил Commander X, который считается лидером подгруппы People's Liberation Front (Фронт народного освобождения) внутри Anonymous.
Ненормальное программирование → Реверси на TCL в 64 строки
На хабре уже есть топики про написание игры Реверси (Отелло) на Python, Silverlight.
Изобретем велосипед на Tcl/Tk. Кроссплатформенно (работает даже на Windows Mobile при небольшой модификации), всего в 64 строки.

Код, небольшое описание и скрин с WinMobile под хабракатом.
Изобретем велосипед на Tcl/Tk. Кроссплатформенно (работает даже на Windows Mobile при небольшой модификации), всего в 64 строки.

Код, небольшое описание и скрин с WinMobile под хабракатом.
Lisp → GUI в Common Lisp — еще один миф
Бытует расхожее мнение, что в Common Lisp нет или же плохая поддержка графики. Это еще один миф из серии, что Lisp — это язык только для подсчета факториалов. На самом деле, как и в большинстве других прикладных сфер общего назначения (например, веб, форматы передачи данных, взаимодействие с БД и т.д.) в Lisp-среде есть полный спектр библиотек и тулкитов для всех основных платформ с разными уровнями абстракции.
Базовой библиотекой для графики из Common Lisp под Unix является CLX. Это аналог xlib, т.е. низкоуровневый клиент, напрямую общающийся по X-протоколу.
Кроме того, есть обертки для основных графических фреймворков разной степени зрелости: LTK, CL-GTK2, CommonQt, CL-CAIRO2. Лично мне доводилось иметь дело с LTK, и работа с ним тривиальна. Хороший пример приложения, его использующего — простой и удобный Lisp-редактор/REPL ABLE.

Кроме возможности использовать кросс-платформенные фреймворки из прошлого раздела, есть еще LispWorks CAPI, о котором только положительные отзывы. Единственная особенность заключается в том, что, как и большинство профессиональных сред разработки на любых языках под Windows, LispWorks стоит довольно дорого (ок. 1200 $), а CAPI доступна только в профессиональной версии. (Впрочем, попробовать его можно и в trial версии).
Также есть CL-OPENGL, которая, разумеется, кросс-платформенная.
Linux/Unix
Базовой библиотекой для графики из Common Lisp под Unix является CLX. Это аналог xlib, т.е. низкоуровневый клиент, напрямую общающийся по X-протоколу.
Кроме того, есть обертки для основных графических фреймворков разной степени зрелости: LTK, CL-GTK2, CommonQt, CL-CAIRO2. Лично мне доводилось иметь дело с LTK, и работа с ним тривиальна. Хороший пример приложения, его использующего — простой и удобный Lisp-редактор/REPL ABLE.

Windows
Кроме возможности использовать кросс-платформенные фреймворки из прошлого раздела, есть еще LispWorks CAPI, о котором только положительные отзывы. Единственная особенность заключается в том, что, как и большинство профессиональных сред разработки на любых языках под Windows, LispWorks стоит довольно дорого (ок. 1200 $), а CAPI доступна только в профессиональной версии. (Впрочем, попробовать его можно и в trial версии).
Также есть CL-OPENGL, которая, разумеется, кросс-платформенная.
Яндекс → Tcl/Tk: Загрузчик на Яндекс.Фотки из контекстного меню (preβ)
На относительно скорую руку сделал аплоадер картинок. Выкладываю его в таком состоянии, чтобы узнать, куда и как следует дорабатывать скрипт.


Персональные блоги → Занимательный .tk
Интересная вешь — если ввести в браузере любую абракадабру вида afsdgdfgs.tk то откроется сайт с соответствующим заголовком!
А по адресу my.dot.tk можно сократить любые ссылки до вида chto-to-tam.tk, причем если вы до этого ввели абрукадабру в браузере для проверки то домен окажется занятым =(
Разгадка, как мне кажется кроется что DNS сервер отвечающий за tk автоматически регит соответствующий домен и перекидывает на единый «абракадабра» сервер. Я прав?
А по адресу my.dot.tk можно сократить любые ссылки до вида chto-to-tam.tk, причем если вы до этого ввели абрукадабру в браузере для проверки то домен окажется занятым =(
Разгадка, как мне кажется кроется что DNS сервер отвечающий за tk автоматически регит соответствующий домен и перекидывает на единый «абракадабра» сервер. Я прав?
OS Inferno → Графика в Inferno.
Если писать распределённые приложения в стиле файловых серверов, то с
графикой в Inferno вы столкнётесь не раньше, чем захотите запустить
графический отладчик для отладки своего многопоточного приложения.
Но если вы пишете приложение с UI, которое должно работать на встроенных
устройствах или как плагин в браузере (кстати, сейчас вроде разрабатывают
аналог существующего Inferno-плагина для IE под Firefox), то сразу возникнет
вопрос «а как в Inferno писать графические приложения?».
графикой в Inferno вы столкнётесь не раньше, чем захотите запустить
графический отладчик для отладки своего многопоточного приложения.
Но если вы пишете приложение с UI, которое должно работать на встроенных
устройствах или как плагин в браузере (кстати, сейчас вроде разрабатывают
аналог существующего Inferno-плагина для IE под Firefox), то сразу возникнет
вопрос «а как в Inferno писать графические приложения?».

