Добавить 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

 

Генерация SQL запросов в Экселе

Бывает нужно быстро из экселя импортнуть данные в таблицу БД. Эти запросы можно сгенерировать прямо в Эксель.

Открываем файл с данными. В свободной верхней ячейке напротив первой строчки данных вводим следующее:

1
="INSERT INTO MyTable(id, name) VALUES("&A1&"," &B1&");"

После этого в этой ячейке появится строка со ссылкой на данные в ячейках А и В. Далее выделяем нашу ячейку и тянем ее за правую нижню точку вниз, ячейки клонируются с данными ее строки.

Спасибо Глебу, очень классный способ. Надеюсь после этого поста я наконец-то запомню как это делается.

Спаси Землю — выключи свет.

Сегодня пройдет всемирная акция против глобального потепления. Суть ее такова: в 20:30 по киевскому времени (GMT+2) нужно выключить свет ровно на час. Радует то, что у нас в центре Киева отключат значимые строения от электричества.

Онлайн тестирование

Всегда мечтал об русско-язычком онлайн тестировании. Есть Тесты по популярным языкам программирования, в том числе и PHP. Только вот засада, можно пройти только пять тестов в сутки. Есть система поощрений, за каждый вклад начисляются баллы, с помощью которых можно вскоре получить сертификат при прохождении определенных тестов. Желаю успехов!

Посмотреть можно по адресу http://www.quizful.net/

P.S. За публикацию ссылки обещались вознаградить, ждемс 🙂

PHP песочница

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

UPD:
Недавно нашел сайтец, где можно онлайн протестировать код, в том числе и на PHP. Попробуйте https://eval.in/

$_COOKIE не входит в $_REQUEST

Оказывается в PHP 5.3.0 по умолчанию массив $_COOKIE не входит в массив $_REQUEST. это может вызвать проблемы с переходом от версии 5.2.х.
Решение:
В файле настроек php.ini указать в директиве request_order букву С. Например: request_order=GPC

приJOINить и удалить

Есть две таблицы EMP (схема SCOTT) и EMP_2. Последнюю сделаем путем копирования из EMP и удаление/добавление нескольких записей.
Задача такова: нужно удалить все записи из таблицы EMP_2, которые встречаются в EMP.

Итак, если таблица EMP_2 еще не создана:

1
CREATE TABLE EMP_2 AS (SELECT * FROM EMP);

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

1
INSERT INTO EMP_2 SELECT * FROM EMP;

Удаляем несколько записей и можно добавить свои уникальные.

Решение 1:

1
2
3
4
5
6
7
8
DELETE FROM
    EMP_2 E2
WHERE
    E2.EMPNO IN (
        SELECT
            E.EMPNO
        FROM EMP E
    );

Здесь хочу сразу оговориться, что количество операторов во множестве IN не может превышать тысячу с лишним, поэтому этот вариант нас несколько ограничивает.

Решение 2: (требует особого внимания)

1
2
3
4
5
6
7
8
9
10
DELETE FROM (
    SELECT
        *
    FROM
        EMP_2 E2
    INNER JOIN
        EMP E ON (
            E2.EMPNO=E.EMPNO
            )
    );

Если в таблице EMP не имеется ни одного первичного ключа, то получим ошибку ORA-01752:cannot delete from view without exactly one key-preserved table
Поэтому создаем первичный ключ EMPNO для таблицы EMP. Выполняем запрос — получилось!
В документации написано что удаление в таком случае будет происходить из таблицы, первой в приджойной, т.е. в нашем случае это EMP_2. Сделаем маленькую хитрость: поменяем таблицы:

1
2
3
4
5
6
7
8
9
10
11
DELETE FROM (
    SELECT
        *
    FROM
        EMP E
    INNER JOIN
        EMP_2 E2
        ON (
            E2.EMPNO=E.EMPNO
            )
);

Получаем тот же результат, что-то здесь не то. Созданим-ка первичный ключ и для таблицы EMP_2 и заново сделаем запрос.
Ура, изменения прошли в EMP, а не в EMP_2. Получается чтобы слова из документации имели силу, джоинить нужно таблицы обязательно с первичными ключами.

Другими словами: удаление будет происходить только из одной таблицы. Приоритет имеет та, у которой установлен первичный ключ. Если же обе таблицы имеют первичный ключ, то удаление произойдет из первой в конструкции JOIN.

Ссылки:
ограничение для WHERE … IN
Интересности JOIN’a (в конце статьи)
Форум

Проблема с SQL Developer: не работает Enter, Backspace и пр.

Сегодня столкнулся с проблемой в редакторе SQL запросов. Текст можно набрать, но отредактировать нельзя: ни энтер, ни бекспейс, ни клавиши управления курсором не работают.

Решение элегантное:
идем по пути Tools -> Preferences -> Accelerators -> Load Preset -> Default -> OK

Источник

Oracle: первый и последний день месяца

Намедни столкнулся с проблемой узнать первый и последний день месяца определенной даты.
Для того чтобы узнать последний день месяца есть встроенная в Oracle функция LAST_DAY().
Интереснее узнать первый день месяца.
Понравилось следующее решение:

1
add_months(last_day(to_date(:p_date_from,'dd-mm-yyyy'))+1,-1)

по сути мы к заданной дате применяем функцию LAST_DAY(), прибавляем один день и автоматически перешли на следующий месяц. Далее с помощью ADD_MONTHS() отнимаем один месяц от получившейся даты.

Ссылки по теме:
Статья о работе с датой
Форум Oracle

Oracle: to_date()

>Буквально пару дней назад потребовалось использоваться расширенные возможности функции TO_DATE(). В моем случае задача ставилась следующей:
Входным параметром является дата в формате день-месяц-год (dd-mm-yyyy)
Вернуть нужно в формате День недели, число Месяц год (Dy, dd Mon yyyy).
Дело в том, что название дня недели (напр. Sunday) Dy зависит от региональных настроек оракла. Соответственно полагаться на правильные установки не приходится. Вот здесь приходит на помощь доп параметры, так называемые NLS Params.
Для парсинга pubDate в RSS мне понребовался NLS_DATE_LANGUAGE равным ‘american’.

Результат:

1
to_date(:p_date,'Dy, dd Mon yyyy hh24:mi:ss', 'NLS_DATE_LANGUAGE = ''american'' ')

Примечательно, что третий параметр TO_DATE() заключается в кавычки, а если нужно указать кавычки в кавычках, то употребляют две одинарные кавычки.

Ссылки по теме:
Оракловый FAQ по NSL_LANG