Category: it

Category was added automatically. Read all entries about "it".

flow

(no subject)

В MySQL есть опция open-files-limit, она нужна если innodb_file_per_table=1. Тут написано, как её правильно выставлять.
Кратко:

В /etc/security/limits.conf пишем
mysql hard nofile 102400
mysql soft nofile 102400

В /etc/mysql/my.cnf пишем
[mysqld]
open-files-limit=10000

Чего там не написано, так это что нужно сходить в файл /etc/pam.d/su и посмотреть, раскомменчена ли там строка
session required pam_limits.so
потому что в бубунте например она закомменчена, из-за этого limits.conf тупо не используется.

Окда. Затем рестартуем сервис mysql поглядывая в /var/log/mysql/error.log. Если там нет варнингов на тему Could not increase number of max_open_files to more than 1024 (request: 10000), то мы всё сделали правильно.

На закуску, просто чтоб знали. MySQL 5.6 от производителя волшебным образом создаёт два my.cnf. Один - где положено, другой в /usr/, и там подло прописывает sql_mode=STRICT_TRANS_TABLES. Второй желательно удалить.
flow

Case-insensitive xpath / регистронезависимый xpath

Пусть у нас есть html, который мы хотим проанализировать на наличие заданного тега. Проще всего привести его к xml и выполнить поиск в нём с помощью xpath. Однако xpath регистрозависим, а теги могут быть написаны в любом регистре, хоть <tAbLe>...</tAbLe>, и браузер их опознает, а простой поиск
//table
такую вычурную ноду не найдёт. 
Решение (для имён нод):
//*[translate(local-name(), "TABLE", "table")="table"]
(для имён аттрибутов)
//nodename[translate(local-name(@*), "ATR", 'atr')="attr"]
(для значений атрибутов что-то вроде)
//nodename[translate(@attributename, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")="your text here"]
(для имён атрибутов и соответствия этого атрибута определённому значению)
//nodename[translate(local-name(@*), "ATR", 'atr')="attr" and @*="value"]