branfuck - это такой простейший язык программирования который реализует некую "полную машину Тьюринга", подробнее в википедии, там же и подробное описание команд. Кому лень - пример, выводящий традиционное Hello world:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
Для тех, кто видит в первый раз это кажется диким. Ну разе lisp не страшнее?)
Coding
Programming and everything around
node.js: установка модулей через npm
Вот и моя очередь настала попробовать этот чудо-сервер и словить первые грабли :)
Debian: php-fpm в Squeeze
Ах эти мейнтейнеры Дебиана! Обещали оставить в сквизе php-fpm, но опять появились баги тараканы в голове - вэб разработчики и сисадмины как и прежде используют глючные сборки от dotdeb, если вообще не пересобирают руками весь php.
Процедура миграции на Яндекс.Почту
Появилась задача сделать почти 300 ящиков на Яндекс.Почте для домена.
Изначально пост имел название "Чекер почтовых ящиков" - это часть миграции, но получился о шагах миграции корпоративной почты с левых, глючых почтовых служб на нормальный Яндекс)
Изначально стояла задача создать ящики с уже имеющмися адресами, с новыми паролями. Перенос содержимого ящиков также не требуется. Общий список ящиков находился на странице админки бывшего почтового сервиса
Пришлось много парсить :) Фактически это руководство о том, как переезжать на Яндекс.почту
Android: информация о устройстве
Иногда требуется получить общую информацию о мобильном устройстве программно: Какой производитель? Название устройства? Версия ОС?
Может быть полезно как для статистики использования, так и для, например, формирования уникального идентификатора устройства (очевидно, что не все поля для этого подойдут)
Java: кодировка в Hibernate
Возникла ситуация, в которой при сохранении не-англоязычного текста в базу сохранялись вопросики. Понятно что дело в кодировке подключения к БД (хотя так же может быть и кодировка таблиц, если не юникод). Используется Hibernate 3 из-под бинов Spring 3.0.2
Кусок конфигурации из applicationContext.xml, где устанавливается DataSource (в нём и задаются настройки подключения)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/dbname"></property>
<property name="username" value="_user_"></property>
<property name="password" value="_pass_"></property>
</bean>
1с-битрикс: Ошибка в типе содержимого
При переносе сотого сайта страндартными средствами битрикса (через restore.php) на спейсвеб возникла следующая ошибка:
Что такое?
Одна из проблем - лишние символы в /bitrix/php_interface/ в файлах init.php, dbconn.php.
Также эта гадкая ошибка возникает из за сбоя в компрессии, проверить пытался ли битрикс отдавать сжатый контент можно посмотрев заголовки:
Content-Encoding: gzip Content-Length:4663
В этом случае решением будет принудительное отключение компрессии - в файле /bitrix/php_interface/init.php добавить константу
<?php
define('BX_COMPRESSION_DISABLED',true);
function getRealLink($ID = 0)
.....
Сколько же времени ушло на
решение этой проблемы :-/
Синхронизация времени по cron
Облачный хостер стал давай сбой - иногда сбивается время. Потребовалось хоть какой то workaround - в виде периодической синхронизации времени
Делается всё очень просто! Разумеется, требуются права администратора
$ cd /etc/cron.hourly
$ cat > date-sync.sh
/вставляем сюда/
#!/bin/sh
ntpdate pool.ntp.org
/жмём ctrl-d/
$ chmod a+x date-sync.sh
На этом всё :) Теперь каждый час будет синхронизироваться время. По вкусу можно выбрать другой серевер времени.
php trick: вариант обхда open_basedir restriction
Задача: нужно перечислить файлы не в директории сайта
Проблема: действуют ограничения, например:
Warning: dir() [function.dir]: open_basedir restriction in effect.
File(/etc/awstats) is not within the allowed path(s): (.) in /var/www/site/path/index.php on line 22
Warning: dir(/etc/awstats/) [function.dir]: failed to open dir: Operation not permitted
in /var/www/site/path/index.php on line 22
Есть вариант обойти это, при условии что разрешенно выполнять приложения через exec() и это unix-система
Android: ListView в сложном layout
Если есть потребность совместить ListView с какми-либо ещё View в одном Activity, то требуется соблюсти несколько правил:
- Обязательно наследовать активити от ListActivity, а не от Activity
- В onCreate() Activity поместить установку разметки, навроде setContentView(R.layout.chat);
- Поместить в корень layout пустой ListView c android:id="@android:id/list"
- Для адаптера списка вызывать setListAdapter(mUidsAdapter);