CodeCamp 2011

14-15 мая 2011 года в СПб прошёл первый баркемп для разработчиков софта. Баркемп - формат конференции, в котором любой участник может предложить тему доклада прямо на конференции. Ориентация на общение, а не молчаливое поглащение информации.

Цель конференции: дать разработчикам ПО обменятся опытом, узнать про новые технологии и подходы к решению задач разработки, получить обзоры инструментов

Read more

Android: информация о устройстве

Иногда требуется получить общую информацию о мобильном устройстве программно: Какой производитель? Название устройства? Версия ОС?

Может быть полезно как для статистики использования, так и для, например, формирования уникального идентификатора устройства (очевидно, что не все поля для этого подойдут)

Read more

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>

Read more

Переехал в облако

До сего поста блок хостился исключительно на фрихостингах - такая была задумка с момента создания.

Последним бесплатным хостинг, который исправно служил целых два года был byethost. Надо сказать, что возможности, которые он предоставлял сравнимы с отечественными платными хостингами, например: до 50 баз данных на общий размер до 50мб, файловое прстранство - до 5.6гб, а трафик - 208гб/месяц. Не плохо, да? :)

Read more

1с-битрикс: Ошибка в типе содержимого

При переносе сотого сайта страндартными средствами битрикса (через restore.php) на спейсвеб возникла следующая ошибка:
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.

Что такое?

Одна из проблем - лишние символы в /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)
.....

Сколько же времени ушло на
решение этой проблемы :-/

tar: Скачать, разпаковывая

Админам или околоадминам давно приелись комманды

$ wget http://site.com/files/file.tar.gz
$ tar vxf file.tar.gz

Всё здорово, привычно, но...

  • Как часто нужен скачанный архив? Конечно зависит от специфики работы. Мне например не часто, т.е. добавляем удаление:

    $ rm file.tar.gz
  • А как быть в случае, когда по отдельности архив и распакованный архив умещаются на диске, но одновременно нет? Ну тупо места не хватает. Бывает, да :)

И есть решение! :)

Read more

Синхронизация времени по cron

Облачный хостер стал давай сбой - иногда сбивается время. Потребовалось хоть какой то workaround - в виде периодической синхронизации времени

Делается всё очень просто! Разумеется, требуются права администратора

$ cd /etc/cron.hourly
$ cat > date-sync.sh
/вставляем сюда/
#!/bin/sh
ntpdate pool.ntp.org
/жмём ctrl-d/
$ chmod a+x date-sync.sh

На этом всё :) Теперь каждый час будет синхронизироваться время. По вкусу можно выбрать другой серевер времени.

Read more

sendmail: не доходит почта свой домен

Интересная ситуация: будь то хардкорный sendmail или exim - почта уходит в интернеты на ура - на разные домены, кроме своего. Предполагается, что вы используете чужую почту, будь то гугл или яндекс, или что нить ещё, привязанную на ваш домен.

Возникает обычно ошибка наподобие:

Feb 8 22:14:54 domain sendmail[14575]: p18JEqq8014575: to=rux@domain.com,
ctladdr=www-data (33/33), delay=00:00:02, xdelay=00:00:01,
mailer=relay, pri=30937, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown
Feb 8 22:14:55 domain sm-mta[14580]: p18JEstD014580: <rux@domain.com>... User unknown

А в чём собственно проблема? Почему не работает из каробки?

Read more

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-система

Read more

Android: ListView в сложном layout

Если есть потребность совместить ListView с какми-либо ещё View в одном Activity, то требуется соблюсти несколько правил:

  • Обязательно наследовать активити от ListActivity, а не от Activity
  • В onCreate() Activity поместить установку разметки, навроде setContentView(R.layout.chat);
  • Поместить в корень layout пустой ListView c android:id="@android:id/list"
  • Для адаптера списка вызывать setListAdapter(mUidsAdapter);

Read more