Береги здоровье смолоду

Причина написания этого топика – это личный опыт и желание поделиться своими мыслями на тему здоровья.
Большинство из нас вынуждено или по желанию работают сидя перед компьютером. Мало того бывает, что после такого рабочего дня, приходишь домой, ужинаешь, и опять туда же. Такой образ жизни приносит свои последствия, и я их ощутил на себе. В этом топике хочу рассказать, что может быть и как это предотвратить.
Немного о своем образе жизни. С утра на работу, сижу перед компом, во время обеда выхожу поесть на кухню, изредка на улицу прогуляться. После обеда опять перед компом. Приезжаю домой и опять та же песня.
Когда ничего не болит, то не задумываешься об этом. Но стоило раз неудачно нагнуться перед клавиатурой, то почувствовал резкий дискомфорт в районе спины. Раньше такого не было, что, естественно, это меня немного напугало.
Первое что решил сделать – это лечь на спину на ковер. Лечь на колючки из пластмассы. Ложился на голое тело. Первый раз было довольно неприятно, но эффект это дало – приток крови к спине отпустил боль, стало немного легче, но осадок остался. После чего боль периодически возникала, пытался спастись турником, горячим душем. Помогало, но ненадолго.
Так продолжалось неделю, когда в конце недели прихватило так, что даже заснуть не мог: принять комфортную позу не удавалось никак. Довольно неприятно я вам скажу.
Были выходные, постоянная боль в спине, становилось невыносимо. Нужно было действовать и прямо сейчас.
Благо, в телефонной книге оказался номер хорошего человека, профессионала своего дела. Он делает массаж. Созвонился, поехал к нему домой, объяснил ситуацию.
Массаж продолжался около 40-50 минут, после чего я почувствовал небывалое ощущение легкости. По словам профи, это стало причиной моего образа жизни. Из-за недостаточной подвижности спинных мышц и неправильной осанки получилось защемление. Понятное дело, что такая ситуация не исправляется за один сеанс массажа, таких нужно пять-десять, в зависимости от запущенности ситуации.
Когда ехал домой после сеанса вспомнил, как мы с ребятами в универе проходили медосмотр у хирурга. Тогда она, посмотрев на наши спины, порекомендовала спать на спине, на жесткой кровати и без подушки.
До этого были попытки спать без подушки, но мышцы спины зажимались так, что продолжать стимула не было вообще. Пройдя минимальный курс массажа можно вправить осевшие хребцы на место, размять проблемные участки. Конечно, это должен делать профи.
Также вспомнился недавний визит к офтальмологу. Также рекомендовала делать хотя бы раз в месяц массаж воротниковой зоны. Смысл состоит в том, чтобы улучшить кровообращение, это влияет на все, включая зрение.

Выводы
  • Показаться доктору, возможно он назначит курс массажа.
  • Сон на жесткой кровати без подушки и на спине.
  • Способ жизни. Если работа сидячая, то нужны перерывы. Толковая программа, которая может помочь. Кстати мульти-платформенная.
  • Здоровое питание. По возможности избегать фастфуд. И еще: не ешьте в метро, серьезно.
Послесловие
Выбирая массажиста, поинтересуйтесь есть ли у него медицинское образование. Это важно.
Я поинтересовался причиной периодической боли в руках, а точнее в локтях. Причина та же – плохое кровообращение.

Mysql: проблема букв "И" и "ш"

После неудачной конвертации из одной кодировки в другую, может случится ситуация, при которой вместо заглавной буквы “И” и строчной “ш” отображаются знаки “�?”, при этом остальные символы отображаются правильно. Например “Андру�?ко �?рина”.

По-умолчанию phpmyadmin коннектится к БД, используя UTF-8. В полях с кириллицей можно увидеть кракозябры, похожие на “РђРЅРґСЂСѓС?РєРѕ Р?СЂРёРЅР°”.

Проверить наличие знаков “�?” в тексте можно с помощью запроса:

1
2
3
4
SELECT
    convert(name USING BINARY)
FROM
    `MyTable`;

Как исправить?

  • создаем таблицу аналогичную по структуре той, которая хранится в неправильной кодировке.
  • получаем структуру исходной таблицы:
1
SHOW CREATE TABLE `MyTable`;
  • задаем другое имя, напр. `New_MyTable`; прописываем UTF-8 кодировку;
  • в стобцах исходной таблицы содержащих кириллицу делаем замену:
1
2
3
4
5
6
7
8
9
10
UPDATE `New_MyTable`
    SET `my_column` = REPLACE (`my_column`,
        CONCAT(CHAR(209), CHAR(63)),
        CONCAT(CHAR(209), CHAR(136))
    );
UPDATE `New_MyTable`
    SET `my_column` = REPLACE (`my_column`,
        CONCAT(CHAR(208), CHAR(63)),
        CONCAT(CHAR(208), CHAR(152))
    );
  • вставляем в таблицу `New_MyTable` данные, перекодируя на ходу нужные столбцы:
1
2
3
4
5
6
7
8
INSERT INTO
    `New_MyTable`(id, my_column, third_column)
    SELECT
        id,
        convert(my_column using binary),
        third_column
    FROM
        `MyTable`;
  • Таблица `New_MyTable` готова к использованию.

Источник: Античат.ру

UPDATE вместе с JOIN

Если нужно обновить поле или несколько полей в таблице при заданном условии, то есть интересный способ:

1
2
3
4
5
6
7
8
9
10
11
UPDATE
    table1 AS T1INNER
JOIN table2 AS T2
    ON
        T2.param1 = T1.param1
    AND
        T2.param2 = T1.param2
    AND
        T2.param3 = 'value'
SET
    T1.date_param = 'date_value'

Этот запрос обновит “date_param” в таблице `table1` в тех записях, которые удовлетворяют условиям, указанных в JOIN.

Вставка новых данных, обновление существующих

Есть замечательная конструкция в MySQL, которая позволяет при вставке существующих первичных ключей, обновлять эту строку, иначе вставляется новая запись.

1
2
3
4
5
6
7
8
INSERT INTO
    table_name(id, name, pass)
VALUES
    ('111', 'myname', 'mypass')
ON DUPLICATE KEY
    UPDATE
        name = VALUES(name),
        pass = VALUES(pass)

Если в таблице table_name существует первичный ключ id, то обновятся name и pass, в другом случае произойдет вставка новой записи.

Пользовательские функции в объектно-ориентированном PHP

В PHP есть множество функций, которые позволяют в качестве параметра использовать имя так называемой user defined function — функция, написанная для собственных нужд. Все было хорошо, пока не перешел на ООП.

Как указать в ООП имя собственной функции? Очень просто.

Допустим, мы хотим использовать функцию array_walk(). В процедурном стиле мы бы написали следующее:

1
array_walk($array_values, 'myFunction');

В ООП эта конструкция не сработает, но есть выход:

1
array_walk($array_values, array($this, 'myFunction'));

Указав массив array($this, ‘myFunction’) мы указываем, что нужно использовать метод “myFunction” из текущего класса.

P.S. По ходу работы пришлось вспомнить использование этой конструкции. Благо, давным-давно интересовался этим вопросом и результат оказался в песочнице.

Samba – запретить удаление файлов

Столкнулся с задачей настройки Samba таким образом, чтобы пользователи могли записывать файлы, но удалять не могли. Реализация под linux.

Припустим, у нас есть директория-шара. В smb.conf прописано:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Files]
comment = Files
path = /home/samba/Files
valid users = +UserGroup
read list = +UserGroup
write list = +UserGroup
inherit permissions = yes
browseable = yes
guest ok = no
create mask = 664
directory mask = 775

Нам интересны две последние строчки. Create mask означает маску для создаваемых файлов, directory mask — для директорий.

После этого нужно перезагрузить сервис самбы:

1
$ service smb restart

Далее нужно поставить бит стойкости, который не даст удалить файлы созданные другими пользователями. Свои же удаляться без проблем. Также в чужих директориях можно будет создавать/удалять свои и только свои.

1
$ chmod -R 1775 Files/

Пакетное удаление файлов

Задача: найти все файлы tar в текущем каталоге и удалить, размер которых равен нулю.

1
$ find . -name '*.tar' -size 0 | xargs sudo rm -f

Потребуется ввести пароль, если нужно удалить файлы вне своего домашнего каталога, при этом пользователь должен быть внесен в sudoers. В других случаях, команду sudo указывать не нужно.

Добавить samba пользователя в Linux

Добавить Samba пользователя очень просто. Для начала нужно создать его. Если он есть, то пропускаем этот пункт:

1
# useradd valera -s /sbin/nologin

Последний параметр запрещает ему логиниться в шелл. В принципе, можно этот параметр опустить, без пароля командой passwd в шелл все-равно не пустит.

Далее добавляем пользователя, указывая SAMBA пароль:

1
# smbpasswd -a valera

Система запросит ввести пароль, два раза, для надежности. Обычно после этого нужно добавить пользователя в группу Samba. Это зависит от настоек:

1
# usermod -G mygroup1,testgroup valera

После этого нужно рестартонуть сервис:

1
# /etc/init.d/smb restart