пятница, 17 января 2014 г.

Расхождение между показаниями 'du' и 'df'



$df -h /u01
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c1d0p8      39G  5.8G   31G  16% /u01

$du -sh /u01
5.2G    /u01



$ /usr/sbin/lsof |grep /u01 |grep deleted |awk '{print $7,$2,$4,$9}' | sort -n | tail

1614001 10421 9w /u01/oracle/admin/art/adump/ora_10421.xml
1691210 17139 9w /u01/oracle/admin/art/adump/ora_17139.xml
1967865 28646 9w /u01/oracle/admin/art/adump/ora_28646.xml
2441753 28344 9w /u01/oracle/admin/art/adump/ora_28344.xml
2629109 5405 9w /u01/oracle/admin/art/adump/ora_5405.xml
3430422 8253 9w /u01/oracle/admin/art/adump/ora_8253.xml
7629320 8288 9w /u01/oracle/admin/art/adump/ora_8288.xml
8703518 8993 9w /u01/oracle/admin/art/adump/ora_8993.xml
104262556 8051 9w /u01/oracle/admin/art/adump/ora_8051.xml
320712351 25992 9w /u01/oracle/admin/art/adump/ora_25992.xml


Далее необходимо перезапустить процесс.

Как временное решение, можно освободить место так:


$ ls -latr /proc/25992/fd/ | grep ora_25992.xml

l-wx------ 1 oracle oinstall 64 Jan 17 10:49 9 -> /u01/oracle/admin/art/adump/ora_25992.xml (deleted)


$ cat /dev/null > /proc/25992/fd/9


$df -h /u01
Filesystem            Size  Used Avail Use% Mounted on
/dev/cciss/c1d0p8      39G  5.5G   31G  16% /u01

$du -sh /u01
5.2G    /u01

понедельник, 13 января 2014 г.

Process IO Top utility with Solaris DTrace


Скрипт из блога:

http://lserinol.blogspot.ru/2009/04/process-io-top-utility-with-solaris.html


#!/usr/bin/bash
# process_io_top -  show procesess by top read/write KB I/O per file
#            Written by Levent Serinol (lserinol@gmail.com)
#            http://lserinol.blogspot.com
# Apr/14/2009
#
# USAGE: process_io_top [-s interval] [-p pid]
#    
#     -s interval     # gather and show statistics in given interval (seconds)
#     -p pid        # show read/write KB I/O just for given PID
#     -h         # show usage information
#
# eg:
#    process_io_top    -s 10   
#
#
#
####################################################################################
interval=5
show_pid=0
pid=0

function usage()
{
echo "
USAGE: io.sh [-s interval] [-p pid]
         -s             # set interval, default is 5 seconds
         -p pid         # pid
  eg,
         io -p 630                # io activity of pid 630
         io -s 10                 # refresh output in every 10 seconds";
}

while getopts h:p:s:a name
do
        case $name in
        p)         show_pid=1; pid=$OPTARG ;;
        s)         interval=$OPTARG ;;
        h|?)    usage;
                  exit 1
        esac
done

/usr/sbin/dtrace -Cws <( cat <
 inline int PID        = $pid;
 inline int SHOW_PID    = $show_pid;
 inline int INTERVAL    = $interval;


#pragma D option quiet
#pragma D option aggsortrev


dtrace:::BEGIN
{
  secs = INTERVAL;
  printf("Please wait....\n");
}

io:::start
/ (SHOW_PID == 1) && ( pid == PID) /
{
    self->rw=args[0]->b_flags & B_READ ? "R" : "W";
    @files[pid,execname,self->rw,args[2]->fi_pathname] = sum (args[0]->b_bcount);
    @total_blks[self->rw]=count();
    @total_bytes[self->rw]=sum (args[0]->b_bcount);
    self->rw=0;
}

io:::start
/ SHOW_PID == 0 /
/* SHOW_PID == 0 && args[2]->fi_pathname != "" */
{
    self->rw=args[0]->b_flags & B_READ ? "R" : "W";
    @files[pid,execname,self->rw,args[2]->fi_pathname] = sum (args[0]->b_bcount);
    @total_blks[self->rw]=count();
    @total_bytes[self->rw]=sum (args[0]->b_bcount);
    self->rw=0;
}

profile:::tick-1s
{
        secs--;
}


profile:::tick-1s
/secs == 0/
{

    trunc(@files,30);
    normalize(@files,1024);
    system("/usr/bin/clear");
    printf("%Y ",walltimestamp);
    printa("%s %@11d blocks, ",@total_blks);
    printa("%s %@11d bytes, ",@total_bytes);
    printf("\n%6s %-12s %3s %8s %3s\n", "PID", "CMD","R/W", "KB", "FILE");
    printa("%6d %-12.12s %1s %@10d %s\n",@files);
    secs = INTERVAL;

}
dtrace:::END
{
        trunc(@files);
}
EOF
)


пятница, 3 января 2014 г.

Простой перцептрон


Простой перцептрон состоит из нескольких входов inp_t[1], inp_t[2] ... inp_t[n].
Каждому входу соответствует некий вес  w[1], w[2] ... w[n].
Также имеется вход активации inp_b с весом w_b.
На вход активации постоянно подается единица,  а вес на входе активации задает порог срабатывания перцептрона.

На выходе перцептрона  может быть либо единица 1 либо -1 в зависимости от входных сигналов и весовых коэффициентов.

Условие срабатывания перцептрона ( когда на выходе появляется единица) :

w_b +   w[1] *  inp_t[1] + w[2] *  inp_t[2] + ...+ w[n] *  inp_t[n]  > 0

Но можно и не различать входы inp_t и inp_b, а просто предположить, что у перцептрона  есть еще один вход inp_t[0], на который всегда подается единица, а w_b записать как w[0].
Тогда условие срабатывания перцептрона можно записать так:

w[0] *  inp_t[0] + w[1] *  inp_t[1] + w[2] *  inp_t[2] + ...+ w[n] *  inp_t[n]  > 0

Обучение перцептрона сводится к такому подбору весов w[0]...w[n] , при которых для всех
входных наборов данных  (inp_t[1], inp_t[2] ... inp_t[n]),  (inp_t[1], inp_t[2] ... inp_t[n]) ... (inp_t[1], inp_t[2] ... inp_t[n]), на выходе появлялось бы требуемое целевое значение out_t , соответствующее каждому входному набору.

Если реальное выходное значение перцептрона  out_r  отличается от требуемого целевого значения out_t,  то необходимо подправить веса w[0]....w[n] перцептрона.

На каждом шаге обучения веса w[0]....w[n] должны изменяться в соответствии с правилом:

w[i] += t * (out_t - out_r) * inp_t[i]

где  t - это небольшая константа (обычно  0,05 - 0,2) , которая задает скорость обучения.

Например обучим перцептрон логической функции дизъюнкции (операции ИЛИ).

 inp_t[1]  inp_t[2]  out_t

0    0   -1
0    1    1
1    0    1
1    1    1

На вход алгоритму подаем скорость обучения t = 0,1
и входной вектор из четырех тестовых наборов [[0,0,-1],[0,1,1],[1,0,1],[1,1,1]]
в соответствии с таблицей истинности логической операции ИЛИ.
на выходе должны получить вектор весовых коэффициентов w[0]....w[n]



Алгоритм обучения простого перцептрона:

import random

def PerTrain(t, v):

    w = []

    # инициализируем начальные веса маленькими случайными значениями
    for i in range(len(v[0])):
        w.append((random.randrange(-5,5))/50.0)

    chw = True
    while (chw == True):

       chw = False
      
       for tst_n in v:
           
            # получаем входные значения из тесового набора
            # единицу добавляем для входа активации  ( inp_t[0] = 1)
            inp_t = [1] + tst_n[0:len(tst_n) - 1]
          
            # получаем целевое выходное значение из тестового набора
            out_t = tst_n[len(tst_n) - 1]
          
            # реальное выходное значение будет вычислено позже
            out_r = 0

            # вычисляем выходное значение перцептрона (out_r)
            for i in range(len(w)):
                out_r += w[i] * inp_t[i]

            if out_r > 0:
                out_r = 1
            else:
                out_r = -1

           
            if (out_r != out_t):
                chw = True
                # если на каком либо тестовом наборе перцептрон не сработал, то пересчитываем веса
                for i in range(len(w)):
                    w[i] += t * (out_t - out_r) * inp_t[i]
                   
                break  

    return w

rez = PerTrain(0.1,[[0,0,-1],[0,1,1],[1,0,1],[1,1,1]])

print(rez)



Например получили такие веса:

[-0.1, 0.14, 0.16]

Проверяем:

print(1*-0.1 + 0*0.14 + 0*0.16)
print(1*-0.1 + 0*0.14 + 1*0.16)
print(1*-0.1 + 1*0.14 + 0*0.16)
print(1*-0.1 + 1*0.14 + 1*0.16)

в результате получаем:

-0.1
0.06
0.04000000000000001
0.2

что действительно соответствует дизъюнкции:

-1
 1
 1
 1



воскресенье, 22 декабря 2013 г.

Горячие клавиши в FireFox

Навигация

Команда Сочетание клавиш
Назад Alt +
Backspace
Вперёд Alt +
Shift + Backspace
Домашняя страница Alt + Home
Открыть файл Ctrl + O
Обновить F5
Ctrl + R
Обновить (не используя кэш) Ctrl + F5
Ctrl + Shift + R
Остановить Esc

Текущая страница

Команда Сочетание клавиш
Перейти в конец страницы End
Перейти в начало страницы Home
Переместиться в следующий фрейм (на страницах с фреймами) F6
Переместиться в предыдущий фрейм (на страницах с фреймами) Shift + F6
Печать Ctrl + P
Сохранить страницу как Ctrl + S
Увеличить масштаб Ctrl + +
Уменьшить масштаб Ctrl + -
Вернуть исходный масштаб Ctrl + 0

Редактирование

Команда Сочетания клавиш
Копировать Ctrl + C
Вырезать Ctrl + X
Удалить Del
Вставить Ctrl + V
Вставить (как простой текст) Ctrl + Shift + V
Повторить Ctrl + Y
Выделить всё Ctrl + A
Отменить последнее действие Ctrl + Z

Поиск

Команда Сочетания клавиш
Найти Ctrl + F
Найти ещё раз F3
Ctrl + G
Найти предыдущее совпадение Shift + F3
Ctrl + Shift + G
Быстрый поиск только в тексте ссылок по мере ввода '
Быстрый поиск текста по мере ввода /
Закрыть панель поиска или быстрого поиска Esc - когда фокус находится в панели поиска или быстрого поиска
Панель поиска Ctrl + K
Ctrl + E
Выбор или управление поисковыми системами Alt +
Alt +
F4
- когда фокус находится в строке поиска

Окна и вкладки

Для работы некоторых из этих сочетаний клавиш необходимо, чтобы выбранная в данный момент вкладка была "в фокусе". В настоящее время единственный способ сделать это заключается в выборе соседнего объекта и "переключения" на выбранную в данный момент вкладку, например, нажав Alt + D для выбора строки адреса, а затем дважды нажав Shift + Tab.
Команда Сочетания клавиш
Закрыть вкладку Ctrl + W
Ctrl + F4
- за исключением закреплённых вкладок
Закрыть окно Ctrl + Shift + W
Alt + F4
Переместить вкладку влево (когда фокус на вкладке) Ctrl + Shift + Page Up
Переместить вкладку вправо (когда фокус на вкладке) Ctrl + Shift + Page Down
Переместить вкладку в начало (когда фокус на вкладке) Ctrl + Home
Переместить вкладку в конец (когда фокус на вкладке) Ctrl + End
Новая вкладка Ctrl + T
Новое окно Ctrl + N
Новое приватное окно Ctrl + Shift + P
Перейти к следующей вкладке Ctrl + Tab
Ctrl + Page Down
Открыть адрес в новой вкладкеAlt + Enter - из адресной строки или панели поиска
Перейти к предыдущей вкладке Ctrl + Shift + Tab
Ctrl + Page Up
Восстановить закрытую вкладку Ctrl + Shift + T
Восстановить закрытое окно Ctrl + Shift + N
Выбрать вкладку по её порядковому номеру (от 1 до 8) Ctrl + 1по8
Выбрать последнюю вкладку Ctrl + 9
Вид групп вкладок Ctrl + Shift + E
Закрыть вид групп вкладок Esc
Следующая группа вкладок Ctrl + ` - только для некоторых раскладок клавиатуры
Предыдущая группа вкладок Ctrl + Shift + ` - только для некоторых раскладок клавиатуры

История

Команда Сочетания клавиш
Боковая панель журнала Ctrl + H
Окно Библиотеки (История) Ctrl + Shift + H
Удалить недавнюю историю Ctrl + Shift + Del

Закладки

Команда Сочетания клавиш
Добавить все вкладки в закладки Ctrl + Shift + D
Добавить страницу в закладки Ctrl + D
Боковая панель закладок Ctrl + B
Ctrl + I
Окно Библиотека (Закладки) Ctrl + Shift + B

Инструменты

Команда Сочетания клавиш
Загрузки Ctrl + J
Дополнения Ctrl + Shift + A
Переключить Инструменты разработчика F12
Ctrl + Shift + I
Веб-консоль Ctrl + Shift + K
Инспектор Ctrl + Shift + C
Отладчик Ctrl + Shift + S
Редактор стилей Shift + F7
Профайлер Shift + F5
Сеть Ctrl + Shift + Q
Панель разработки Shift + F2
Режим адаптивного дизайна Ctrl + Shift + M
Простой редактор JavaScript Shift + F4
Исходный код страницы Ctrl + U
Консоль браузера Ctrl + Shift + J

Просмотр PDF

Команда Сочетания клавиш
Следующая страница n или k или
Предыдущая страница p или j или
Увеличить масштаб Ctrl + +
Уменьшить масштаб Ctrl + -
Автоматический масштаб Ctrl + 0
Повернуть документ по часовой стрелке r
Повернуть документ против часовой стрелки Shift + r

Разное

Команда Сочетания клавиш
Дополнить адрес доменным суффиксом .com Ctrl + Enter
Дополнить адрес доменным суффиксом .net Shift + Enter
Дополнить адрес доменным суффиксом .org Ctrl + Shift + Enter
Удалить строку из списка автозаполнения адресов Del
Переключить полноэкранный режим F11
Показать панель меню (когда скрыта) Alt
F10
Скрыть/Показать панель дополнений Ctrl + \
Режим активного курсора F7
Выделить весь текст в панели адреса F6
Alt + D
Ctrl + L
Остановить анимацию GIF Esc - после того, как страница будет полностью загружена

Сочетания клавиш для медиа (только видео в формате Ogg и WebM)


Команда Сочетания клавиш
Переключение между воспроизведением и паузой Пробел
Уменьшить громкость
Увеличить громкость
Выключить звук Ctrl +
Включить звук Ctrl +
Прокрутить назад на 15 секунд
Прокрутить назад на 10 % Ctrl +
Прокрутить вперёд на 15 секунд
Прокрутить вперёд на 10 % Ctrl +
Прокрутить в начало Home
Прокрутить в конец End



Горячие клавиши VirtualBox


Действие Клавиша по умолчанию Действие
TakeSnapshot Host key + T сделать снимок
TakeScreenshot Host key +E сделать скриншот
MouseIntegration Host key +I переключение интеграции мыши
TypeCAD Host key +Del ввод Ctrl+Alt+Del
TypeCABS Host key +Backspace ввод Ctrl+Alt+Backspace
Pause Host key +P пауза VM
Reset Host key +R жёсткий сброс гостевой OS
SaveState
сохранить состояние ВМ и завершить
Shutdown Host key +H кнопка питания ACPI - выключение гостевой OS
Close Host key +Q показать диалог ЗАКРЫТЬ VM
FullscreenMode Host key +F переключение в полноэкранный режим
SeamlessMode Host key +L переключить VM в режиме интеграции
ScaleMode Host key +C переключить VM в режим масштабирования
GuestAutoResize Host key +G автоматически изменять размер окна гостевой OS
WindowAdjust Host key +A немедленно изменить размер окна гостевой
PopupMenu Host key +Home показать контекстное меню в полноэкранном  режиме
SettingsDialog Host key +S открыть диалог настроек VM
InformationsDialog Host key +N показать информационное окно
NetworkAdaptersDialog
показать диалоговое окно сетевых интерфейсов
SharedFoldersDialog
показать диалоговое окно виртуальной машины с общим папкам
InstallGuestAdditions Host key +D смонтировать ISO содержащий гостевые дополнения

Host key - это клавиша правый CTRL.
Но её можно сменить на любую другую в настройках.

четверг, 24 октября 2013 г.

Редактор EMACS

Команды:

CONTROL-F и CONTROL-B

перемещают курсор вперед и назад по символам.


META-f и META-b

перемещают курсор вперед и назад по словам.


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

META--

Чтобы изменить шаг перемещения, этим командам должна предшествовать, другая команда, которая и задает этот шаг.

CONTROL-U 5

Если шаг отрицательный, то направление перемещения меняется:

CONTROL-U -3


Команда:

CONTROL-D

удаляет символ под курсором


META-d

стирает символы от курсора до конца текущего слова.


META-t

меняет местами слово до указателя со словом после него.


CONTROL-A

переместить курсор к началу строки


CONTROL-E

переместить курсор к концу строки


CONTROL-K

стирает символы от курсора до конца текущей строки
(она не удаляет символ перевода строки, указатель ставит перед ним)


META-a

перемещает курсор к началу предложения


META-e

перемещает курсор к концу предложения


META-k

стирает текст от текущего положения курсора до конца предложения.


Редактор emacs распознает концы предложений, обращаясь к регулярному выражению,
которое содержится в переменной по имени sentence-end.

Чтобы отобразить значение этой переменной, нужно ввести команду:

CONTROL-H v sentence-end ВВОД


 Абзацы отделены пустыми строками и строками, команды форматирования текста,
а сам абзац начинается со строки, имеющей отступ.
Распознавание абзаца основывается на регулярных выражениях, хранящихся в переменных:

paragraph-separate
paragraph-start

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

Команда

META-{

перемещает курсор назад на начало самого последнего пройденного абзаца


META-}

перемещает курсор вперед на конец следующего абзаца


META-h

помечает абзац, на котором находится курсор, как область, или помечает
следующий абзац, если курсор находился между абзацами.

(то есть она помещает указатель на начало, а метку - на конец этого абзаца)


Заполнение

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

Команда

META-x auto-fill-mode

включает и выключает режим автозаполнения.

 Когда этот режим включен, emacs автоматически разбивает строки, когда
вы вводите пробел или нажимаете клавишу ВВОД и оказываетесь за
пределами указанной ширины строки. Это свойство полезно при вводе
нового текста.


 Режим автозаполнения не занимается автоматическим перезаполнением
всего абзаца, с которым вы работаете в данный момент.  Если текст
добавляется в середине абзаца, режим автозаполнения разбивает новый
текст по мере его ввода, но не занимается перезаполнением всего
абзаца.

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

META-q

для перезаполнения текущего абзаца либо команду:

META-x fill-region

для перезаполнения каждого абзаца в области.


 Можно изменить установленную по умолчанию ширину заполнения, имеющую
значение 70, присвоив новое значение переменной:

fill-column

Чтобы установить значение переменной fill-column на текущую позицию
курсора, нужно ввести команду:

CONTROL-X f

а чтобы установить значение переменной fill-column равным числу nnn,
где число 0 указывает на левую границу, нужно ввести команду:

CONTROL-U nnn CONTROL-X f










воскресенье, 29 сентября 2013 г.

Homebrew в Mac OS


Для начала нужно установить XCode.

Далее устанавливаем homebrew командой:
 
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

Проверяем, что все установилось правильно:

brew doctor


Для PowerPC (Mac OS Tiger или Leopard):

ruby -e "$(curl -fsSkL raw.github.com/mistydemeo/tigerbrew/go)"

В ~/.bash_profile:

пропишем пути

export PATH=/usr/local/sbin:/usr/local/bin:$PATH