Архив рубрики: Программирование

Lua

«Католицизм — это круто». Кевин Смит, «Догма».

Lua — это язык программирования, написанный подразделением технологий компьютерной графики Папского Католического университета Рио-Де-Жанейро. Все-таки католики знают толк в миссионерстве — о языке Lua нет даже нейтральных отзывов, только восторженные. И восторг этот, как оказалось, вполне оправдан.

Lua («луна» по-португальски) проектировался — и до сих пор является непревзойденным в этом своем качестве — как встраиваемый язык сценариев. Он компактен — всего 300 кило(!)байт; он прост — изучается без преувеличения за час; однако простота не синоним ограниченности, он мощен — поддерживает императивный, функциональный, объектно-ориентированный подходы, в нем даже есть многопоточность.

И он быстр — об этом говорит успешное применение в графике вообще и в видеоиграх в частности. В простеньком Angry Birds и в «навороченном» World of Warcraft, во вполне коммерческом Adobe Lightroom и в полностью свободном GIMP, в системном OpenWRT и прикладном SciTe — то есть везде, где быстрая низкоуровневая платформа нуждается в удобной и гибкой логической надстройке.

Lua работает везде. От мобильных устройств на Android, iOS и Symbian (и даже проще — игрушечных роботов Lego Mindstorm тоже можно программировать на Lua) до мейнфреймов. Впрочем, на мейнфрейме можно запустить все, что угодно, это не особенно интересно. Зато интересна поддержка всех разновидностей Windows, Linux и UNIX. Да, и MacOS с WindowsPhone тоже.

Определенно, Бог создал мир за шесть дней потому, что написал его на Lua.

Метки:

PHP это джинн…

… а джинн не должен покидать лампы.

Всякое использование PHP вне LAMP — это попытка устроить грузчика на работу в детский сад воспитателем. Или наоборот.

Метки: ,

Android

Android — это Linux. Ядро, драйвера — все то, что называется абстракцией между программным обеспечением и оборудованием — это Linux, простой и понятный.

Android — это С++. Стандартные BSD-библиотеки и библиотеки работы с оборудованием это возможность писать на С++. Подробности не столь важны, главное — можно самому дописать все, чего недостает.

Android — это Java. Написанные пакеты надо особым образом «готовить», потом они выполняются «в кэш», который загружается и выгружается сборщиком мусора во что-то вроде файла подкачки, но в основе всего этого лежит виртуальная машина Java. Особенная, непохожая, но все-таки Java.

Android — это фреймворк. Все компоненты нового приложения встраиваются в уже работающую среду и начинают играть в этом оркестре свои партии. И тут важно не сбивать с такта соседей, иначе за провальное исполнение нарушитель будет выставлен из зала — зависший процесс останавливается и дальше система продолжает работать уже без него.

Android — это приложения. Каждое приложение работает в собственном, изолированном потоке, но это не мешает ему обращаться к компонентам любого другого приложения. На переднем плане может исполняться только одно приложение — такова архитектура — остальные приложения останавливаются, а при необходимости даже могут быть выгружены сборщиком мусора. Но очередной вызов может вернуть его обратно, как если бы оно никуда не девалось.

Все это надо просто держать в голове и тогда умение думать как Android и программировать под Android придет быстрее и проще.

Метки: ,

6 закон программирования

Сложность программы растет до тех пор, пока не превысит способности программиста.

Как это верно.

Метки:

Не phpMyAdmin-ом единым…

Кто не знает phpMyAdmin? Наверное, только тот, кому не приходилось работать с SQL. Многие предпочитают этот веб-интерфейс даже «настольным» приложениям — официальным и не очень, бесплатным или «ломанным». Секрет этого продукта в том, что его достаточно «вылить» в любую директорию сервера и… и все. Вводите логин-пароль — и делаете все, что нужно.

На самом деле, он может гораздо больше и множество дополнительных возможностей требует настройки конфигурационных файлов. Но нам-то — кому требуется по-быстрому создать нужную структуру, выполнить запрос или исправить одну-две строки в таблице — всего это не требуется. Полностью настроенный интерфейс со всеми возможностями может быть востребован — и в большинстве случаев используется! — хостинг-провайдерами, которые предоставляют своим клиентам базы mySQL. Остальным же функционал в 17 мегабайт (в архиве 3,5) сильно избыточен. Что же делать?

Например, использовать Adminer. Один-единственный php-файл размером от 158 (английская версия для mySQL) до 381 (многоязычная версия для mySQL, Postgres, SQLite, MS SQL и Oracle) килобайт. Который может… ну, в общем, мне не потребовались функции, которыми не обладает этот продукт. Есть еще рекордно малый (30 килобайт) PHP Mini Admin for MySQL, но сильно проще — не умеет редактировать записи прямо на странице и работает только с mySQL. Продукт либо не завершен и будет еще активно дорабатываться, либо отражает отношение создателя, для которого возможности выполнять запрос достаточно, а всякие «интерфейсные красивости» избыточны и бесполезны.

В общем, остановился на Adminer. Лаконичный, удобный и достаточный инструмент. «Must have!»

Метки: , , ,

JSON_encode своими силами

Вот все упрекают php-шников в «велосипедостроении». А что, блин, делать-то? Чтобы добиться нормальной работы json_encode с обратной косой чертой и одиночной кавычкой, провозился целый день. И так и не добился. Потом за полчаса написал свою функцию, которая еще и не переводит unicode-символы в мнемоники и структурно форматирует текст.

[sourcecode language=»php»]
<?php
function encodeJSON ($data, $level = 0) {
if (is_scalar($data))
return """.addslashes ($data).""";
$token = array();
$indent = str_repeat(‘ ‘, $level);
if (is_array($data) && (array_values($data) === $data)) {
foreach ($data as $val)
$token[] = encodeJSON ($val, $level + 1);
return "[n {$indent}". implode(",n {$indent}", $token)."n{$indent}]";
}
if (is_array($data) || is_object($data)) {
foreach ($data as $key => $val)
$token[] = encodeJSON ($key)." : ".encodeJSON ($val, $level + 1);
return "{n {$indent}". implode(",n {$indent}", $token)."n{$indent}}";
}
}
?>
[/sourcecode]
PHP ненавижу…

Метки: ,

Плагины для GlotPress

И очень даже просто. Создаете файл в plugins, а дальше — все как в WordPress. Активируется всегда, служебные заголовки не нужны. Потому что админки, где они будут читаться для включения и отключения, просто нет.

[sourcecode language=»php»]
<?php
function sayHello() {
echo "<p>Hello dolly,… well, hello, dolly.</p>;";
}
add_action(‘after_hello’, ‘sayHello’);
?>
[/sourcecode]

Метки: , ,