Пароль mysql в командной строке

Чтобы безопасно не интерактивно передавать пароль (а попутно и другие данные) в mysql, нужно поступить так.

  1. Создаём файл в недоступной по http директории; в примере назовём его def.cnf
  2. Добавляем в него такие строки:
    [client]
    user = имя_пользователя
    password = пароль
    host = хост_бд
    [mysql]
    database = имя_бд

    (Можно дополнить файл и другими директивами.)

  3. Даём файлу минимальные права, например 400 или 600.
  4. Используем вместо такой записи
    mysql --host=хост_бд \
    --user=имя_пользователя \
    --password=пароль имя_бд \
    --execute="SELECT NOW();"

    такую:

    mysql --defaults-extra-file="/path/def.cnf" \
    --execute="SELECT NOW();"

    Важно: --defaults-extra-file должен быть первым ключом.

  5. Хинт. Добавляем путь к файлу def.cnf в переменную окружения, и нам больше не нужно вводить его при наборе команды, например:
    mysql --defaults-extra-file=$DEF \
    --execute="SELECT NOW();"

По материалам man mysqld_safe и http://www.opennet.ru/tips/info/1313.shtml

Считывание переменных из файла в Bash

Вместо

for var in $(cat file.txt) # или for var in `cat file.txt`
do

done

можно (и часто удобнее) использовать

cat file.txt | while read var
do

done

Особенности:

1. Во втором варианте применение пайпа изменяет область видимости переменных. В приведённом примере за пределами цикла while переменная var не будет видна, т.к. она выполняется в новом процессе.

2. При использовании варианта с пайпом (вариант 2) в переменную будет писаться вся строка, даже если в ней есть пробельные символы. Такое же поведение в варианте 1 можно спровоцировать, установив переменную окружения IFS=" " (равной пробелу; хотя на своём опыте я убедился, что использование в качестве разделителя пробельных символов может повлечь за собой массу неудобств).

Android: как установить два одинаковых приложения на один телефон

Стол заказов — в конце статьи.

Для установки двух (или больше) одинаковых приложений на один телефон нужно сменить значение package в файле AndroidManifest.xml, находящемся внутри apk-билда.
Например, имеем:

<manifest
android:versioncode="20110420"
android:versionname="1.8.0"
package="ru.e_num"
xmlns:android="http://schemas.android.com/apk/res/android">

Для того, чтобы установить это приложение ещё раз, нужно сделать примерно следующее:

<manifest
android:versioncode="20110420"
android:versionname="1.8.0"
package="ru.e_num.test"
xmlns:android="http://schemas.android.com/apk/res/android">

После такого изменения заново собранный apk-файл придётся подписать сертификатом. Информацию о том, как распаковывать, запаковывать и подписывать apk-файлы, можно найти в любом поисковике по запросу SmartApkTool. Вот ссылка на приложение: v.2.2 (распакуйте содержимое архива в пустую директорию). А вот более правильный способ работы с apk-файлами: Использование apktool.

Совет. Устанавливайте одну из копий неизменённой, чтобы знать об обновлениях в Маркете.

Под катом описаны некоторые встречающиеся проблемы, а также находится Стол Заказов. Читать далее Android: как установить два одинаковых приложения на один телефон