Skip to content


Создание swap-файла в файле :)

Уж простите за тавтологию, но иногда создавать новый дисковый раздел под раздел подкачки (swap) не представляется возможным. В таких случаях можно создать его в виде файла в файловой системе. Для примера рассмотрим создание дополнительного swap-файла размером 8ГБ:

Дополнительный swap-файл в linux

Создание дополнительного файла подкачки

# dd if=/dev/zero of=/swapfile bs=1M count=8192
8192+0 records in
8192+0 records out
8589934592 bytes (8,6 GB) copied, 13,2861 s, 647 MB/s
 
# ls -l /swapfile 
-rw-r--r--. 1 root root 8589934592 Май 12 11:13 /swapfile
 
# mkswap /swapfile 
mkswap: /swapfile: warning: dont erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=278eca1b-2af8-4e42-be11-5025ba0f3d8d

Обратите внимание на размер свободного swap-а после первой и второй команд free:

# free; swapon /swapfile ; free
             total       used       free     shared    buffers     cached
Mem:      32867736   30405392    2462344          0     153196    8790844
-/+ buffers/cache:   21461352   11406384
Swap:      8388600       7596    8381004
             total       used       free     shared    buffers     cached
Mem:      32867736   30411360    2456376          0     153196    8790844
-/+ buffers/cache:   21467320   11400416
Swap:     16777200       7596   16769604
 
# echo '/swapfile none swap sw 0 0' >> /etc/fstab

Posted in *nix.

Tagged with , .


MySQL 5.6 и sql_mode

После переезда с версии MySQL 5.5.13 на 5.6.10 стали вылезать странные грабли.

Симптом №1:

Caused by: java.sql.SQLException: Incorrect string value: '\xE6\xAF\x94FOX...' for column 'parameter_value' at row 4
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)

Симптом №2:

Data truncation: Data too long for column 'channel' at row 1
org.hibernate.exception.DataException: could not execute native bulk manipulation query

Так как "раньше всё работало" и в код приложения никто изменений не вносил, закралось подозрение, что новый mysql работает в каком-то более строгом режиме. Гугление вывело на глобальную переменную sql_mode.

mysql> show global variables like 'sql_mode';
+--------------------------+--------------------------------------------+
| Variable_name            | Value                                      |
+--------------------------+--------------------------------------------+
| sql_mode                 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------+--------------------------------------------+

Читаем официальное руководство и видим:

STRICT_TRANS_TABLES
If a value could not be inserted as given into a transactional table, abort the statement. For a nontransactional table, abort the statement if the value occurs in a single-row statement or the first row of a multiple-row statement.

На основе этой инфы приходит в голову мысль, что надо этот режим STRICT_TRANS_TABLES попробовать отключить:

mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
 
mysql> show global variables like 'sql_mode';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| sql_mode      | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+

И таки да, после этого запросы, ранее выполнявшиеся с ошибками, стали отрабатывать нормально, как и было на версии 5.5.13. Чтобы сохранить изменения навсегда, в /etc/my.cnf я добавил в секции [mysqld]

sql-mode="NO_ENGINE_SUBSTITUTION"

Однако далее меня ждала еще одна засада – после рестарта mysql-сервера я опять увидел знакомую картину, несмотря на внесенные в /etc/my.cnf изменения:

mysql> show global variables like 'sql_mode';
+--------------------------+--------------------------------------------+
| Variable_name            | Value                                      |
+--------------------------+--------------------------------------------+
| sql_mode                 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------+--------------------------------------------+

Это было непостижимо и удивительно. Я уже и еще раз проверил hostname у сервера, дабы убедиться, что всё ранее сделанное происходило именно на том сервере, где и должно было происходить. Почесав пару минут репу, решил проверить наличие других конфигов mysql-сервера в системе. И таки нашёл один такой в /usr/my.cnf:

$ cat /usr/my.cnf | grep -vE "^#" | sed -r "/^$/ d"
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Вот он, вражеский конфиг, который переопределял моё значение sql_mode! Что самое прикольное, больше ничего в этом конфиге не было. Как будто его специально всунули, чтобы добавить мне головняка. После удаления файла /usr/my.cnf и рестарта mysql-сервера я уже раз и навсегда получил возможность наслаждаться значением sql_mode без STRICT_TRANS_TABLES.

Posted in Howto.

Tagged with .


О нестандартном мышлении

О применении барометров в народном хозяйстве

Хозяйке на заметку: как можно использовать барометр

Однажды к Эрнеcту Резерфорду, президенту Королевской академии, обратился коллега за помощью. Он собирался поставить самую низкую оценку по физике одному из своих студентов, в то время как тот утверждал, что заслуживает высшего балла. Оба — преподаватель и студент — согласились положиться на суждение третьего лица, незаинтересованного арбитра. Выбор пал на Резерфорда. Экзаменационный вопрос гласил: «Объясните, каким образом можно измерить высоту здания с помощью барометра?».

Ответ студента был таким: «Нужно подняться с барометром на крышу здания, спустить барометр вниз на длинной верёвке, а затем втянуть его обратно и измерить длину верёвки, которая и покажет точную высоту здания».

Случай был и впрямь сложный, так как ответ был абсолютно полным и верным! С другой стороны, экзамен был по физике, а ответ имел мало общего с применением знаний в этой области. Резерфорд предложил студенту попытаться ответить ещё раз. Дав ему шесть минут на подготовку, он предупредил его, что ответ должен демонстрировать знание физических законов. По истечении пяти минут студент так и не написал ничего в экзаменационном листе. Резерфорд спросил его, сдаётся ли он, но тот заявил, что у него есть несколько решений проблемы, и он просто выбирает лучшее.

Заинтересовавшись, Резерфорд попросил молодого человека приступить к ответу, не дожидаясь истечения отведённого срока. Новый ответ на вопрос гласил: «Поднимитесь с барометром на крышу и бросьте его вниз, замеряя время падения. Затем, используя формулу, вычислите высоту здания».

Тут Резерфорд спросил своего коллегу преподавателя, доволен ли он этим ответом. Тот, наконец, сдался, признав ответ удовлетворительным. Однако студент упоминал, что знает несколько ответов, и его попросили открыть их.

— Есть несколько способов измерить высоту здания с помощью барометра, — начал студент. — Например, можно выйти на улицу в солнечный день и измерить высоту барометра и его тени, а также измерить длину тени здания. Затем, решив несложную пропорцию, определить высоту самого здания.
— Неплохо, — сказал Резерфорд. — Есть и другие способы?
— Да. Есть очень простой способ, который, уверен, вам понравится. Вы берёте барометр в руки и поднимаетесь по лестнице, прикладывая барометр к стене и делая отметки. Сосчитав количество этих отметок и умножив его на размер барометра, вы получите высоту здания. Вполне очевидный метод.
— Если вы хотите более сложный способ, — продолжал он, — то привяжите к барометру шнурок и, раскачивая его, как маятник, определите величину гравитации у основания здания и на его крыше. Из разницы между этими величинами, в принципе, можно вычислить высоту здания. В этом же случае, привязав к барометру шнурок, вы можете подняться с вашим маятником на крышу и, раскачивая его, вычислить высоту здания по периоду прецессии.
— Наконец, — заключил он, — среди множества прочих способов решения данной проблемы лучшим, пожалуй, является такой: возьмите барометр с собой, найдите управляющего и скажите ему: «Господин управляющий, у меня есть замечательный барометр. Он ваш, если вы скажете мне высоту этого здания».

Тут Резерфорд спросил студента, неужели он действительно не знал общепринятого решения этой задачи. Он признался, что знал, но сказал при этом, что сыт по горло школой и колледжем, где учителя навязывают ученикам свой способ мышления, который не всегда приемлет нестандартных решений.

Студента звали Нильс Бор (1885–1962), датский физик, лауреат Нобелевской премии 1922 г.

Posted in Fun.


С 01.04.2014 планируется повышение стоимости регистрации украинских доменов

По информации компании Hosting Ukraine, 1 апреля 2014 года планируется повышение стоимости регистрации, продления и трансфера доменных имен в украинских зонах. Повышение обусловлено резким скачком курса доллара к гривне, из-за которого администраторы доменных зон приняли решение о внеочередной индексации стоимости услуг. В среднем стоимость регистрации увеличится на 15-20%. Точные данные по новым ценам будут публиковаться по мере поступления официальных документов от администраций доменных зон.

Кроме того, с 20 марта 2014 года минимальный срок регистрации доменов .УКР снижается с 10 до 5 лет. Заказать регистрацию доменного имени .УКР может любой желающий, при этом не потребуется предоставлять какие-либо документы, как это было во время приоритетной регистрации. Зарегистрировать домен на 1 год можно будет уже с 4 апреля.

Тем временем, по информации ООО "Хостмастер", домен .UA в феврале возобновил рост. По итогам февраля 2014 года в домене .UA зарегистрировано 681 тыс. доменных имен, по сравнению с январем их количество увеличилось на 0,2%. Таким образом, домен возобновил рост после 4%-ного спада, зафиксированного в минувшем году.

Численность доменных имен второго уровня составила 17,05 тыс. что на 12,6% больше, чем в минувшем году. Прирост замедлился, в минувшем году аналогичный показатель составлял 14,5%. Все остальные имена - третьего уровня, для регистрации доступен 61 публичный домен: 54 географических и 7 общего назначения. Самый массовый публичный домен com.ua насчитывает 315 тыс. доменных имен (рост 13%). Почти 89% доменных имен используются, то есть имеют IP-адрес. Количество доменных адресов в самом популярном географическом публичном домене kiev.ua за год уменьшилось на 5%, - до 61,2 тыс. имен.

Домен Всего, шт. Прирост*, % к Продление, % % от общего количества Наличие IP-адреса, %
01.03.2013 01.02.2014
UA, всего 680887 -3,75 (+11,60) +0,22 (+0,48) - 100 -
UA, 2ld 17049 +12,58 (+14,53) +0,86 (+1,17) 93,79 2,50 89
COM.UA 315317 +13,13 (+14,60) +0,62 (+1,79) 79,22 46,31 89
KIEV.UA 61170 -5,38 (+21) -0,26 (+1,88) 76,9 8,98 88

*В скобках указаны показатели прироста в 2013 году

В феврале общее количество кириллических имен уменьшилось по отношению к январю на 3,3%, до 17,2 тыс.

Домен IDN, шт. Прирост, % к
01.03.2013 01.02.2014
UA, всего 17280 +4,49 -3,35
COM.UA 9325 +4,66 -3,72
KIEV.UA 3412 -6,31 -4,16
IN.UA 1520 +7,11 -1,11

Услуги регистрации доменов в домене .UA предоставляют 176 регистраторов, из которых 118 используют технологию EPP. Суммарная доля рынка, которую по итогам февраля контролируют пять крупнейших регистраторов, составляет 61,5%, не изменившись по сравнению с аналогичным показателем января.

Posted in Misc.

Tagged with .