пятница, 14 марта 2014 г.

Использование grep

$cat  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log | grep -i -e ORA-12012 -e ORA-00942

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -i -e ORA-12012 -e ORA-00942  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$egrep -i "ORA-12012|ORA-00942" /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep 'ORA-12012\|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -w 'ORA-12012\|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$egrep -w 'ORA-12012|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$egrep -wi --color 'ORA-12012|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep 'ORA-12012\|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -E 'ORA-12012|ORA-00942' /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist
ORA-12012: error on auto execute of job "SYSMAN"."EM_ECM_VCPU_JOB"
ORA-00942: table or view does not exist


$grep -E 'log# 2 seq# 200'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771

$grep -E 'log# 2 seq# 20*'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 2 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 20 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 23 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 29 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771

$grep -E 'log# . seq# 20*'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 2 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 20 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 21 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771
  Current log# 1 seq# 22 mem# 0: +DATA/em12c_p/onlinelog/group_1.256.841573771
  Current log# 2 seq# 23 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 24 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771
  Current log# 1 seq# 25 mem# 0: +DATA/em12c_p/onlinelog/group_1.256.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 27 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771
  Current log# 1 seq# 28 mem# 0: +DATA/em12c_p/onlinelog/group_1.256.841573771
  Current log# 2 seq# 29 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 3 seq# 201 mem# 0: +DATA/em12c_p/onlinelog/group_3.259.841573771




$grep -E 'log# 2 seq# 20*|ORA-0094*'  /u01/app/oradb/diag/rdbms/em12c_p/em12c/trace/alert_em12c.log

  Current log# 2 seq# 2 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 20 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 23 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 26 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
  Current log# 2 seq# 29 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
ORA-00942: table or view does not exist
ORA-00942: table or view does not exist
  Current log# 2 seq# 200 mem# 0: +DATA/em12c_p/onlinelog/group_2.263.841573771
ORA-00942: table or view does not exist




суббота, 22 февраля 2014 г.

PowerShell

 Найдем все команды  PowerShell и приложения Windows со словом process :

PS C:\Users\angor> Get-Command *process*

CommandType     Name                                               ModuleName       
-----------     ----                                               ----------       
Cmdlet          Debug-Process                                      Microsoft.Power...
Cmdlet          Get-Process                                        Microsoft.Power...
Cmdlet          Start-Process                                      Microsoft.Power...
Cmdlet          Stop-Process                                       Microsoft.Power...
Cmdlet          Wait-Process                                       Microsoft.Power...
Application     qprocess.exe                                                        

PS C:\Users\angor>


Далее, по интересующему нас командлету можно получить справку:

PS C:\Users\angor> Get-Help Stop-Process

детальную информацию:

PS C:\Users\angor> Get-Help Stop-Process -Detailed


или полную информацию:

PS C:\Users\angor> Get-Help Stop-Process -Full


для некоторых командлетов можно увидеть и примеры:

PS C:\Users\angor> Get-Help Stop-Process -Examples



Командлеты работают с объектами.
Например командлет Get-ChildItem выдает объекты File и Folder для всех папок и файлов в текущем каталоге.

Вывод командлета можно перенаправить в файл ( используя символ > )  или в канал на вход другого командлета
( используя символ | ).

Если нет перенаправлений, то PowerShell форматирует список объектов в текст и выводит его на экран.


Пример:

PS C:\projects> Get-ChildItem


    Directory: C:\projects


Mode                LastWriteTime     Length Name                                   
----                -------------     ------ ----                                   
d----          1/4/2014   2:03 AM            old                                    
-a---         2/14/2014   2:29 AM      11884 install_oracle                         
-a---         2/14/2014   4:46 AM      10314 install_oracle_2                       
-a---          1/4/2014   2:12 AM       1309 neuro.py                               
-a---          1/4/2014   6:02 AM       1876 neuro1.py                              


Этот командлет возвратил пять объектов ( один типа  System.IO.DirectoryInfo и четыре типа  System.IO.FileInfo )

Эти объекты обладают многочисленными методами и свойствами, но в заголовке таблицы командлет по умолчанию вывел всего пять свойств
(Mode, LastWriteTime, Length, Name)

Чтобы узнать все остальные свойства и методы  объектов данного типа, необходимо передать эти объекты на вход другого командлета Get-Member:


PS C:\projects> Get-ChildItem | Get-Member


   TypeName: System.IO.DirectoryInfo

Name                      MemberType     Definition                                 
----                      ----------     ----------                                 
Mode                      CodeProperty   System.String Mode{get=Mode;}              
Create                    Method         void Create(), void Create(System.Securit...
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjR...
CreateSubdirectory        Method         System.IO.DirectoryInfo CreateSubdirector...
Delete                    Method         void Delete(), void Delete(bool recursive) 
EnumerateDirectories      Method         System.Collections.Generic.IEnumerable[Sy...
EnumerateFiles            Method         System.Collections.Generic.IEnumerable[Sy...
EnumerateFileSystemInfos  Method         System.Collections.Generic.IEnumerable[Sy...
PSParentPath              NoteProperty   System.String PSParentPath=Microsoft.Powe...
PSPath                    NoteProperty   System.String PSPath=Microsoft.PowerShell...
PSProvider                NoteProperty   System.Management.Automation.ProviderInfo...
Attributes                Property       System.IO.FileAttributes Attributes {get;...
CreationTime              Property       datetime CreationTime {get;set;}           
CreationTimeUtc           Property       datetime CreationTimeUtc {get;set;}        
Exists                    Property       bool Exists {get;}                         
BaseName                  ScriptProperty System.Object BaseName {get=$this.Name;}   
.....

   TypeName: System.IO.FileInfo

Name                      MemberType     Definition                                 
----                      ----------     ----------                                 
Mode                      CodeProperty   System.String Mode{get=Mode;}              
AppendText                Method         System.IO.StreamWriter AppendText()        
CopyTo                    Method         System.IO.FileInfo CopyTo(string destFile...
Create                    Method         System.IO.FileStream Create()              
CreateObjRef              Method         System.Runtime.Remoting.ObjRef CreateObjR...
CreateText                Method         System.IO.StreamWriter CreateText()        
Decrypt                   Method         void Decrypt()
Delete                    Method         void Delete()                            
ToString                  Method         string ToString()                          
PSChildName               NoteProperty   System.String PSChildName=g                
PSDrive                   NoteProperty   System.Management.Automation.PSDriveInfo ...
PSIsContainer             NoteProperty   System.Boolean PSIsContainer=False         
PSParentPath              NoteProperty   System.String PSParentPath=Microsoft.Powe...
PSPath                    NoteProperty   System.String PSPath=Microsoft.PowerShell...
PSProvider                NoteProperty   System.Management.Automation.ProviderInfo...
Attributes                Property       System.IO.FileAttributes Attributes {get;...
CreationTime              Property       datetime CreationTime {get;set;}           
Name                      Property       string Name {get;}                         
BaseName                  ScriptProperty System.Object BaseName {get=if ($this.Ext...
VersionInfo               ScriptProperty System.Object VersionInfo {get=[System.Di...
.....


PS C:\projects>



Так так данные типы объектов обладают методом  Delete, то его можно использовать для удаления файлов и папок из указанного каталога:


Например:

PS C:\projects> Get-ChildItem c:\temp


    Directory: C:\temp


Mode                LastWriteTime     Length Name                                   
----                -------------     ------ ----                                   
d----         2/23/2014   4:31 AM            aa                                     
d----         2/23/2014   4:31 AM            bb                                     
-a---         2/23/2014   4:31 AM          1 cc                                     
-a---         2/23/2014   4:31 AM          1 dd                                     


PS C:\projects> (Get-ChildItem c:\temp).Delete()
PS C:\projects> Get-ChildItem c:\temp

PS C:\projects>

Все объекты были удалены.


Все хорошо, но существует несколько командлетов выполняющих универсальные действия:

Remove-Item
Move-Item
Rename-Item
Copy-Item

которые могут быть использованы с файловыми объектами для удаления, перемещения, переименования и копирования.

С данными командлетами можно использовать дополнительные опции:

Remove-Item -WhatIf
реально файлы удаляться не будут, но вывод покажет какие файлы были бы удалены без этой опции.

Remove-Item -Confirm
а эта опция потребует подтвердить удаление файлов.


Пример:

PS C:\projects> Get-ChildItem c:\temp


    Directory: C:\temp


Mode                LastWriteTime     Length Name                                   
----                -------------     ------ ----                                   
d----         2/23/2014   4:21 AM            aa                                     
d----         2/23/2014   4:21 AM            bb                                     
-a---         2/23/2014   4:21 AM          1 cc                                     
-a---         2/23/2014   4:21 AM          1 dd                                     



PS C:\projects> Get-ChildItem c:\temp | Remove-Item -WhatIf
What if: Performing the operation "Remove Directory" on target "C:\temp\aa".
What if: Performing the operation "Remove Directory" on target "C:\temp\bb".
What if: Performing the operation "Remove File" on target "C:\temp\cc".
What if: Performing the operation "Remove File" on target "C:\temp\dd".

PS C:\projects>

Ничего реально не удалилось.



PS C:\projects>
PS C:\projects> Get-ChildItem c:\temp | Remove-Item -Confirm

Потребовала подтверждения


PS C:\projects> Get-ChildItem c:\temp
PS C:\projects>

Объекты удалены, после подтверждения.











пятница, 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.
Но её можно сменить на любую другую в настройках.