14.5. keepalived¶
14.5.1. 准备工作¶
主要是selinux 、firewalld和时间同步问题，这些这里就不写了。
14.5.2.  Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server <IP_ADDRESS>
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_mcast_group4 <IP_ADDRESS>
}
vrrp_instance VI_1 {
state MASTER
interface ens37
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
<IP_ADDRESS>/16
}
}
# 复制到远程主机并修改
[root@centos-151 keepalived]# cp keepalived.conf <IP_ADDRESS>:/etc/keepalived/
cp: cannot create regular file ‘<IP_ADDRESS>:/etc/keepalived/’: No such file or directory
[root@centos-151 keepalived]# scp keepalived.conf <IP_ADDRESS>:/etc/keepalived/
The authenticity of host '<IP_ADDRESS> (<IP_ADDRESS>)' can't be established.
ECDSA key fingerprint is SHA256:CCHUJxa/IGrB0CXKtvPHaiVK+pJAp3xY0djGwCkmQVM.
ECDSA key fingerprint is MD5:54:dd:11:2f:d4:8d:31:18:39:15:5a:ec:9a:9a:43:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<IP_ADDRESS>' (ECDSA) to the list of known hosts.
<EMAIL_ADDRESS>password:
keepalived.conf
[root@centos-154 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server <IP_ADDRESS>
smtp_connect_timeout 30
router_id LVS_DEVEL_2
vrrp_mcast_group4 <IP_ADDRESS>
}
vrrp_instance VI_1 {
state BACKUP
interface ens37
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
<IP_ADDRESS>/16
}
}
# 启动服务并抓包
# 启动151
[root@centos-151 keepalived]# systemctl restart keepalived
[root@centos-154 keepalived]# systemctl restart keepalived
# 抓包
[root@centos-151 ~]# tcpdump -i ens37 -nn host <IP_ADDRESS>
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens37, link-type EN10MB (Ethernet), capture size 262144 bytes
09:56:45.609383 IP <IP_ADDRESS> > <IP_ADDRESS>: igmp v2 report <IP_ADDRESS>
09:56:46.609380 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:47.613899 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:48.508630 IP <IP_ADDRESS> > <IP_ADDRESS>: igmp v2 report <IP_ADDRESS>
09:56:48.615603 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:49.617331 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:50.619132 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:51.620877 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:52.621399 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:53.398894 IP <IP_ADDRESS> > <IP_ADDRESS>: igmp v2 report <IP_ADDRESS>
09:56:53.623045 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:54.624785 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:54.902075 IP <IP_ADDRESS> > <IP_ADDRESS>: igmp v2 report <IP_ADDRESS>
09:56:55.626201 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:56.628140 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:57.630579 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:58.632492 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:56:59.633962 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:00.636156 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:01.637809 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:02.397616 IP <IP_ADDRESS> > <IP_ADDRESS>: igmp v2 report <IP_ADDRESS>
09:57:02.639238 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:03.640875 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:04.642235 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:05.643316 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:06.645263 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:57:07.647454 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
# 关闭151
[root@centos-151 keepalived]# systemctl stop keepalived
# 抓包，可以看到主动关闭151发送0优先级， 154机器的优先级是80，就占有ip了。
[root@centos-151 ~]# tcpdump -i ens37 -nn host <IP_ADDRESS>
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens37, link-type EN10MB (Ethernet), capture size 262144 bytes
09:59:34.884048 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:35.885537 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:36.887106 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:37.888805 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:38.890461 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:39.892321 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:40.893758 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:41.895278 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:59:42.195050 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 0, authtype simple, intvl 1s, length 20
09:59:42.884235 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 80, authtype simple, intvl 1s, length 20
09:59:43.886181 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 80, authtype simple, intvl 1s, length 20
09:59:44.887932 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 80, authtype simple, intvl 1s, length 20
09:59:45.889441 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 80, authtype simple, intvl 1s, length 20
09:59:46.891284 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 80, authtype simple, intvl 1s, length 20
09:59:47.892750 IP <IP_ADDRESS> > <IP_ADDRESS>: VRRPv2, Advertisement, vrid 51, prio 80, authtype simple, intvl 1s, length 20
14.5.3. 启动日志功能¶
# 修改日志设置
[root@centos-154 ~]# vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 3"
# 配置特定local
[root@centos-154 ~]# vim /etc/rsyslog.conf
# 添加一行
local3.* /var/log/keepalived.log
# 重启服务
[root@centos-154 ~]# systemctl keepalived
[root@centos-154 ~]# systemctl restart keepalived
# 查看日志信息
[root@centos-154 ~]# cat /var/log/keepalived.log
Mar 20 10:06:05 centos-154 Keepalived[3097]: Starting Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
Mar 20 10:06:05 centos-154 Keepalived[3097]: Unable to resolve default script username 'keepalived_script' - ignoring
Mar 20 10:06:05 centos-154 Keepalived[3097]: Opening file '/etc/keepalived/keepalived.conf'.

Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: Registering Kernel netlink reflector
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: Registering Kernel netlink command channel
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: Registering gratuitous ARP shared channel
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: Opening file '/etc/keepalived/keepalived.conf'.
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) removing protocol VIPs.
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: Using LinkWatch kernel netlink reflector...
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) Entering BACKUP STATE
Mar 20 10:06:05 centos-154 Keepalived_vrrp[3100]: VRRP sockpool: [ifindex(3), proto(112), unicast(0), fd(10,11)]
Mar 20 10:06:09 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) Entering MASTER STATE
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) setting protocol VIPs.
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens37 for <IP_ADDRESS>
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:10 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:15 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:15 centos-154 Keepalived_vrrp[3100]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on ens37 for <IP_ADDRESS>
Mar 20 10:06:15 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:15 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:15 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
Mar 20 10:06:15 centos-154 Keepalived_vrrp[3100]: Sending gratuitous ARP on ens37 for <IP_ADDRESS>
# 查看vip是不是回到151机器上面来了。
[root@centos-154 ~]# ip a show ens37
14.5.4. 状态切换脚本通知¶
# 准备脚本
[root@centos-151 ~]# cd /root/
[root@centos-151 ~]# vim notify.sh
[root@centos-151 ~]# cat notify.sh
#!/bin/bash
contact='root@localhost'
notify() {
mailsubject="$(hostname) to be $1, vip floating"
mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
# 添加权限
[root@centos-154 ~]# chmod 755 notify.sh
# 测试脚本
[root@centos-151 ~]# /root/notify.sh master
[root@centos-151 ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Tue Mar 20 10:43 22/1043 "centos-151.linuxpanda.tech to be master, vip floating"
& quit
# 添加通知
[root@centos-154 ~]# vim /etc/keepalived/keepalived.conf
[root@centos-151 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server <IP_ADDRESS>
smtp_connect_timeout 30
router_id LVS_DEVEL_2
vrrp_mcast_group4 <IP_ADDRESS>
}
vrrp_instance VI_1 {
state BACKUP
interface ens37
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
<IP_ADDRESS>/16
}
notify_master "/root/notify.sh master"
notify_backup "/root/notify.sh backup"
notify_fault "/root/notify.sh fault"
}
# 删除邮件，危险
[root@centos-151 ~]# rm -rf /var/spool/mail/root
# 重启151的keepalived服务，发现收到邮件通知。
[root@centos-151 ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Tue Mar 20 10:54 22/1043 "centos-151.linuxpanda.tech to be master, vip floating"
& q
Held 1 message in /var/spool/mail/root
[root@centos-151 ~]# amil
bash: amil: command not found
[root@centos-151 ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 unread
>U 1 root Tue Mar 20 10:54 23/1053 "centos-151.linuxpanda.tech to be master, vip floating"
& 1
Message 1:
From<EMAIL_ADDRESS>Tue Mar 20 10:54:14 2018
Return-Path<EMAIL_ADDRESS>X-Original-To<EMAIL_ADDRESS>Delivered-To<EMAIL_ADDRESS>From: root<EMAIL_ADDRESS>Date: Tue, 20 Mar 2018 10:54:08 +0800
To<EMAIL_ADDRESS>Subject: centos-151.linuxpanda.tech to be master, vip floating
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
Status: RO
2018-03-20 10:54:08: vrrp transition, centos-151.linuxpanda.tech changed to be master
14.5.5. lvs+keepalived配合使用¶
<IP_ADDRESS>. 拓扑图¶
<IP_ADDRESS>. 配置2个lvs¶
# 151机器的
[root@centos-151 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server <IP_ADDRESS>
smtp_connect_timeout 30
router_id LVS_DEVEL_1
vrrp_mcast_group4 <IP_ADDRESS>
}
vrrp_instance VI_1 {
state MASTER
interface ens37
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
<IP_ADDRESS>/16
}
notify_master "/root/notify.sh master"
notify_backup "/root/notify.sh backup"
notify_fault "/root/notify.sh fault"
}
virtual_server <IP_ADDRESS> 80{
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server <IP_ADDRESS> 80
real_server <IP_ADDRESS> 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server <IP_ADDRESS> 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
# 154机器的
[root@centos-154 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server <IP_ADDRESS>
smtp_connect_timeout 30
router_id LVS_DEVEL_2
vrrp_mcast_group4 <IP_ADDRESS>
}
vrrp_instance VI_1 {
state BACKUP
interface ens37
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
<IP_ADDRESS>/16
}
notify_master "/root/notify.sh master"
notify_backup "/root/notify.sh backup"
notify_fault "/root/notify.sh fault"
}
virtual_server <IP_ADDRESS> 80{
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server <IP_ADDRESS> 80
real_server <IP_ADDRESS> 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server <IP_ADDRESS> 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
# 安装ipvsadm
[root@centos-151 keepalived]# yum install ipvsadm
[root@centos-154 keepalived]# yum install ipvsadm
# 重启keepalived
[root@centos-151 keepalived]# systemctl restart keepalived
[root@centos-154 keepalived]# systemctl restart keepalived
# 查看keepalived自动生成的规则
[root@centos-151 keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP <IP_ADDRESS>:80 rr persistent 50
-> <IP_ADDRESS>:80 Masq 1 0 0
-> <IP_ADDRESS>:80 Masq 1 0 0
<IP_ADDRESS>. 配置2个RS¶
# 在152上执行脚本
[root@centos-152 ~]# rz
[root@centos-152 ~]# ls
anaconda-ks.cfg lvs_dr_rs.sh
[root@centos-152 ~]# vim lvs_dr_rs.sh
[root@centos-152 ~]# chmod a+x lvs_dr_rs.sh
[root@centos-152 ~]# bash lvs_dr_rs.sh start
The RS Server is Ready!
[root@centos-152 ~]# cat lvs_dr_rs.sh
#!/bin/bash
#Author:wangxiaochun
#Date:2017-08-13
vip=<IP_ADDRESS>
mask='<IP_ADDRESS>'
dev=lo:1
case $1 in
start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
echo "The RS Server is Ready!"
;;
stop)
ifconfig $dev down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "The RS Server is Canceled!"
;;
*)
echo "Usage: $(basename $0) start|stop"
exit 1
;;
esac
# 在153上也执行下
[root@centos-152 ~]# scp lvs_dr_rs.sh <IP_ADDRESS>:/root
The authenticity of host '<IP_ADDRESS> (<IP_ADDRESS>)' can't be established.
ECDSA key fingerprint is SHA256:CCHUJxa/IGrB0CXKtvPHaiVK+pJAp3xY0djGwCkmQVM.
ECDSA key fingerprint is MD5:54:dd:11:2f:d4:8d:31:18:39:15:5a:ec:9a:9a:43:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<IP_ADDRESS>' (ECDSA) to the list of known hosts.
<EMAIL_ADDRESS>password:
lvs_dr_rs.sh
[root@centos-153 ~]# bash lvs_dr_rs.sh start
The RS Server is Ready!
# 配置nginx服务
[root@centos-152 ~]# yum install nginx
[root@centos-153 ~]# yum install nginx
[root@centos-152 ~]# systemctl restart nginx
[root@centos-153 ~]# systemctl restart nginx
[root@centos-152 ~]# echo "rs152" > /usr/share/nginx/html/index.html
[root@centos-153 ~]# echo "rs153" > /usr/share/nginx/html/index.html
[root@centos-151 keepalived]# curl <IP_ADDRESS>
rs152
[root@centos-151 keepalived]# curl <IP_ADDRESS>
rs153
<IP_ADDRESS>. 测试¶
[root@localhost ~]# for i in {1..100} ; do sleep 2 ; curl <IP_ADDRESS>; done
rs152
rs153
rs152
rs153
rs152
rs153
rs152
rs153
rs152
rs153
rs152
rs153
rs152
rs153
rs152
rs153
rs152
^C
# 停掉151的keepalived服务
[root@localhost ~]# for i in {1..100} ; do sleep 1 ; curl <IP_ADDRESS>; done
rs152
rs153
rs152
rs153
rs152
rs153
^C
# 继续停掉152的nginx服务，
[root@localhost ~]# for i in {1..10} ; do sleep 1 ; curl <IP_ADDRESS>; done
rs153
curl: (7) Failed connect to <IP_ADDRESS>:80; Connection refused
rs153
curl: (7) Failed connect to <IP_ADDRESS>:80; Connection refused
rs153
curl: (7) Failed connect to <IP_ADDRESS>:80; Connection refused
rs153
rs153
rs153
rs153
# 继续停掉153的nginx服务后测试
[root@localhost ~]# for i in {1..10} ; do sleep 1 ; curl <IP_ADDRESS>; done
sorry page
sorry page
sorry page
sorry page
sorry page
sorry page
sorry page
sorry page
sorry page
sorry page
上面的测试，出现连接拒绝问题，是因为我们停掉了nginx服务，keepalived没有及时发现， 需要3次确认才下线。


Cerise Beauty Therapy offers you quality services in a relaxing
environment.
You can escape and unwind from daily life with a caring touch.
Cerise offers a wide range of skin treatments, waxing options, massage treatments, beauty treatments including makeup and tinting as well as pedicures and manicures.
Cerise hosts a clean, private environment. You can feel safe in the hands of experienced beautician Kristina Verschoor, with any treatment you select.
Cerise Beauty operates in a shared space with Chonel Hairdressing in the
Old Fire Station complex, corner of Guyton Street and Wilson Street Wanganui.
Free, off street parking is available for clients in the courtyard of the Old Fire Station Building complex.
139 Guyton Street
Old Fire Station Building
Wanganui
4500


{% extends "baseexam.html" %} {% block styles %} {% endblock %} {% block content %}
List/Add Goals Section
List/Add Templates
Assign Goals to Team Members
My Goals - Login
View/Approve/Return
Summary For Managers
GoalSheets by Status-Not tested
----------Empty and recreate the DB
Are you sure you want to Recreate Database?


Aspirant : Data Scientist
I am fond of creative coding, building softwares, data analysis and problem solving using Computer Programming. Apart from being a Qualified Engineer, I am a Experienced Software Professional with around 2 years of demonstrated history of working in the information technology and services industry.


ShackStats
Group by:
Day
Week
Month
Year
Period:
Day
Week
Month
Year
Overall
Date:
Start date:
End date:
User filter:
10+ posts only
All new users
Author:
Moderation flag:
On-topic
Not work safe
Stupid
Political/religious
Tangent
Informative
Display as:
Scatter plot
Line graph
Data table
Loading...
© 2016
Brian Luft
•
GitHub project
•
Documentation


There is a pressing need to improve Doncaster Council’s support for schools, Ofsted said today.
Ofsted inspected the local authority’s arrangements for supporting primary and secondary schools because more than half of pupils in the borough attend a school that is inadequate or requires improvement. The area is in the bottom fifth of local authorities across England in terms of exam results.It was as a consequence of these problems that Ofsted went in to see how the local authority was supporting the 124 schools in the area.
Ofsted inspectors met councillors, senior local authority officials, governors and school leaders. They looked at the local authority’s plans to improve education and analysed pupils’ exam results.
Having considered these carefully Ofsted finds that Doncaster Council’s systems for collecting and analysing schools’ performance data are not fit for purpose. Ofsted also finds that the local authority school improvement service does not keep formal records of how well governors are managing and supporting schools. Moreover, it does not use its powers to intervene in failing schools in a consistent way. It is for these reasons and others that Ofsted today finds that the local authority’s school improvement support is ineffective.
More positively, Ofsted finds that the local authority has worked well to reduce pupil exclusions, while some headteachers said that there had been an improvement in the way good and outstanding schools help those that are not giving their pupils a good or better education.
Nick Hudson, Ofsted Director for North-East, Yorkshire and Humber, said:
We have undertaken a thorough inspection of Doncaster Council’s arrangements for supporting schools and found that they are ineffective.
A local authority needs to have a grip on data about how its pupils are doing. That Doncaster’s systems for analysing school data are not fit for purpose is a matter for concern.
Pupils in Doncaster do not get a good deal compared to other children and young people elsewhere in the region or in England. More than half of pupils in Doncaster are in schools that are either inadequate or require improvement. They and their parents deserve better.
To solve any problem you must identify it first. So I believe that this report is a significant step towards better education for pupils in Doncaster. We have set forward a clear way by which Doncaster Council can do better for its young people, and give them a better start in life.
I know there are some good schools in Doncaster and many people are working hard to rectify the problems. But pupils have yet to benefit from their intentions. Before next summer we will check on what progress has been made.
Ofsted says that the local authority must:
-
intervene early when schools show signs of failing their pupils by, for example, replacing senior staff and governors
-
improve the way it collects data about pupils’ exam results, and use that data properly
-
encourage schools to work together to share how best to improve teaching quality in the area
-
tell the Department for Education promptly if academies are failing
Inspectors will go back in within a year.
The report is on Doncaster’s page
.
Notes to Editors:
-
Of the 124 schools in Doncaster, 92 are maintained (local authority-run) and 32 are academies.


Documentation
YASQE extends the CodeMirror Library. For a complete overview of the functionality they offer (such as event hooks), check out the CodeMirror Documentation. Below we elaborate on the functionality YASQE offers (in addition to the CodeMiror API).Note: Where CodeMirror provides
CodeMirror
in the global namespace, we provide YASQE
.
Getting Started
Initialize YASQE via its constructor, or via the command fromTextArea
. Both return in instance of YASQE, from now on referred to as yasqe
(lowercase). Both function take as argument a config object. See the section on defaults for more information on this config object.
YASQE(parent: DOM-Element, settings: Object) → YASQE instance: yasqe
Main YASQE constructor. Pass a DOM element as argument to append the editor to, and (optionally) pass along config settings (see the YASQE.defaults object below, as well as the regular CodeMirror documentation, for more information on configurability)
YASQE.fromTextArea(textArea: DOM element, config: Object) → YASQE instance: yasqe
Initialize YASQE from an existing text area (see CodeMirror for more info)
Examples
API
API methods accessible via theyasqe
instance
yasqe.setValue(query: String)
Set query value in editor (see also)
yasqe.getValue() → query: String
Get query value from editor (see also)
yasqe.query(function|object)
Execute query. Pass a callback function, or a configuration object (see the sparql settings in the configuration object for possible values) I.e., you can change the query configuration by either changing the default settings, changing the settings of this document, or by passing query settings to this function
yasqe.getQueryMode() → string:
Fetch the query mode: 'query' or 'update'
yasqe.getQueryType() → string:
Fetch the query type (e.g. SELECT, ASK, DESCRIBE, CONSTRUCT etc)
yasqe.getPrefixesFromQuery() → object:
Fetch defined prefixes from query string
yasqe.addPrefixes(prefixes: object)
Add prefixes to the query. The prefixes are defined as {"rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#"}
yasqe.removePrefixes(prefixes: object)
Remove prefixes from query. The prefixes are defined as {"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#"}
yasqe.setSize(width: Number|string, height: Number|string)
Set size. Use null value to leave width or height unchanged. To resize the editor to fit its content, see http://codemirror.net/demo/resize.html
yasqe.enableCompleter(completerName: String)
Enable an autocompleter with this name. Only makes sense if you've programatically disabled this completer before, as a plugin is automatically enabled when registering it (see this function)
yasqe.disableCompleter(completerName: String)
Disable an autocompleter with this name.
yasqe.storeBulkCompletions(type: String)
Store bulk completions in memory as trie, and in localstorage as well (if enabled). The argument should be a key from the autocompletion settings
yasqe.setBackdrop(show: boolean)
Hide or show gray backdrop
yasqe.collapsePrefixes(collapse: boolean)
Collapsing prefixes if there are any. Use false to expand them.
Statics
Static functions YASQEYASQE.registerAutocompleter(name: String, autocompleter: function)
Register an autocompleter in YASQE. This automatically enables the completer as well
YASQE.consumeShareLink(doc: yasqe, urlArgs: object)
Consume the share link, by parsing the document URL for possible yasqe arguments, and setting the appropriate values in the YASQE doc
YASQE.createShareLink(doc: yasqe) → object:
Create a share link
YASQE.determineId(doc: yasqe)
Determine unique ID of the YASQE object. Useful when several objects are loaded on the same page, and all have 'persistency' enabled. Currently, the ID is determined by selecting the nearest parent in the DOM with an ID set
YASQE.fetchFromLov(doc: yasqe, partialToken: Object, type: "properties" | "classes", callback: Function)
Fetch property and class autocompletions the Linked Open Vocabulary services. Issues an async autocompletion call
YASQE.fetchFromPrefixCc(doc: yasqe)
Fetch prefixes from prefix.cc, and store in the YASQE object
YASQE.getAcceptHeader(doc: yasqe)
Get accept header for this particular query. Get JSON for regular queries, and text/plain for update queries
YASQE.getAllVariableNames(doc: yasqe, token: Object) → variableNames: Array
Fetch all the used variables names from this query
YASQE.getCompleteToken(doc: yasqe, token: Object, cursor: Object) → token: Object
When typing a query, this query is sometimes syntactically invalid, causing the current tokens to be incorrect This causes problem for autocompletion. http://bla might result in two tokens: http:// and bla. We'll want to combine these
YASQE.hideCompletionNotification(doc: yasqe, autocompletionType: String)
Hide completion notification
YASQE.showCompletionNotification(doc: yasqe, autocompletionType: String)
Show notification
Configuration
This configuration object is accessible/changeable viaYASQE.defaults
and yasqe.options
, and you can pass these along when initializing YASQE as well.
Other than the configuration we describe here, check the CodeMirror documentation for even more options you can set, such as disabling line numbers, or changing keyboard shortcut keys.
Defaults
value: String (default: "SELECT * WHERE {\n ?sub ?pred ?obj .\n} \nLIMIT 10")
Query string
autocompleters: array (default: ["prefixes", "properties", "classes", "variables"])
The list of enabled autocompletion plugins (See this section on how to write your own)
syntaxErrorCheck: boolean (default: true)
Whether to validate the SPARQL syntax
collapsePrefixesOnLoad: boolean (default: false)
Collapse prefixes on page load
backdrop: boolean|integer (default: false)
Enable a gray backdrop on the YASQE instance when a query is being executed. Setting the value to an integer will influence the 'hide' and 'show' animation of the backdrop (set to zero to disable animation)
extraKeys: object
Extra shortcut keys. Check the CodeMirror manual on how to add your own
Note: To avoid colissions with other browser shortcuts, these shortcuts only work when the YASQE editor is selected (has 'focus').
The list of shortcuts provided by YASQE:
[Ctrl|Cmd]-Space
: Trigger Autocompletion[Ctrl|Cmd]-D
and[Ctrl|Cmd]-D
: Delete current/selected line(s)[Ctrl|Cmd]-/
: Comment or uncomment current/selected line(s)[Ctrl|Cmd]-Alt-Down
: Copy line down[Ctrl|Cmd]-Alt-Up
: Copy line up[Ctrl|Cmd]-Shift-F
: Auto-format/indent selected lines[Ctrl|Cmd]-]
: Indent current/selected line(s) more[Ctrl|Cmd]-[
: Indent current/selected line(s) less[Ctrl|Cmd]-S
: Save current query in local storage[Ctrl|Cmd]-Enter
: Execute QueryF11
: Set query editor full-screen (or leave full-screen)Esc
: Leave full-screen
createShareLink: function (default: YASQE.createShareLink)
Show a button with which users can create a link to this query. Set this value to null to disable this functionality. By default, this feature is enabled, and only the query value is appended to the link. This function should return an object which is parseable by jQuery.param
createShortLink: function(string:url, function:callback) (default: null)
Allow users to create a short-link, for the URL generated in the previous function. The callback takes as argument a possible error string, and the shortened URL
consumeShareLink: function (default: YASQE.consumeShareLink)
The callback for consuming the arguments of the current URL
persistent: function|string
Change persistency settings for the YASQE query value. Setting the values
to null, will disable persistancy: nothing is stored between browser
sessions. Setting the values to a string (or a function which returns a
string), will store the query in localstorage using the specified string.
By default, the ID is dynamically generated using the YASQE.determineId
function, to avoid collissions when using multiple YASQE instances on one
page
sparql: object
Settings for querying sparql endpoints
showQueryButton: boolean (default: false)
Show a query button. You don't like it? Then disable this setting, and create your button which calls the query() function of the yasqe document
endpoint: String|function (default: "http://dbpedia.org/sparql")
Endpoint to query
requestMethod: String|function (default: "POST")
Request method via which to access the SPARQL endpoint
acceptHeaderSelect: String|function (default: "application/sparql-results+json,*/*;q=0.9")
Accept header for regular SELECT
queries
acceptHeaderGraph: String|function (default: "text/turtle,*/*;q=0.9")
Accept header for queries returning a graph (e.g. CONSTRUCT
)
acceptHeaderUpdate: String|function (default: "text/plain,*/*;q=0.9")
Accept header for update queries
namedGraphs: array (default: [])
Named graphs to query.
defaultGraphs: array (default: [])
Default graphs to query.
args: array (default: [])
Additional request arguments. Add them in the form: {name: "name", value: "value"}
headers: array (default: {})
Additional request headers
getQueryForAjax: function(doc: yasqe) → string (default: null)
Modify the query before it is send via ajax request.
queryName: string | function(doc: yasqe) → string
A SPARQL query string is usually send with ?query=
is the payload for SELECT
queries, and ?update=
for update queries. By default, YASQE changes this behaviour dynamically depending on the query type.
This setting enables you to change this behaviour, by e.g. always sending queries with a ?query=
in the payload, even for update queries.
callbacks: object
Set of ajax callbacks
beforeSend: function (default: null)
See jQuery.ajax for more information
complete: function (default: null)
See jQuery.ajax for more information
error: function (default: null)
See jQuery.ajax for more information
success: function (default: null)
See jQuery.ajax for more information
Writing an Autocompletion Plugin
To register an autocompletion, one needs to execute theYASQE.registerAutocompleter
function.
Below, we describe the autocompletion function in more detail, and the object it should return.
constructor(doc: yasqe) → configurationObject: Object
Autocompleter constructor, which should return the object described below
get: function|array
Required
Get the autocompletions. Either a function which returns an array, or an actual array. The array should be in the form ["<completionsString1>", "<completionsString2>"].
If used as a function, the parameters it receives are
token: object
If 'bulk' loading is disabled, use this token to return the appropriate list of suggestions forcallback: function
If 'async' is enabled, return the suggestions by passing it on to this callback
isValidCompletionPosition: function() → boolean
Required
Check whether the cursor is in a proper position for this autocompletion.
preProcessToken: function(token: object|string) → token: object
Optional
Preprocesses the codemirror token before matching it with the autocompletions list. Use this for e.g. autocompleting prefixed resources when your autocompletion list contains only full-length URIs E.g., foaf:name -> http://xmlns.com/foaf/0.1/name
postProcessToken: function(token: object|string, suggestion: string) → string
Optional
Postprocesses the autocompletion suggestion. Use this for e.g. returning a prefixed URI based on a full-length URI suggestion E.g., http://xmlns.com/foaf/0.1/name -> foaf:name
async: boolean
Required
Specifies that the get function is asynchronous
bulk: boolean
Required
Use bulk loading of completions: all completions are retrieved onLoad using the get() function. Alternatively, disable bulk loading, to call the get() function whenever a token needs autocompletion (in which case the completion token is passed on to the get() function). whenever you have an autocompletion list that is static, and that easily fits in memory, we advice you to enable bulk for performance reasons (especially because the autocompletions are stored in a trie)
autoShow: boolean
Optional
Auto-show the autocompletion dialog. Disabling this requires the user to press [ctrl|cmd]-space to summon the dialog. Note: this only works when completions are not fetched asynchronously
persistent: string|function
Optional
Automatically store autocompletions in localstorage. This is
particularly useful when the get() function is an expensive ajax
call. Autocompletions are stored for a period of a month. Set
this property to null to disable persistency. Otherwise, set a string value (or a function
returning a string val), returning the key in which to store the
data.
Note: this feature only works when completions are
loaded in memory (i.e. bulk
: true)
validPosition: function
Optional
Fires when a codemirror change occurs in a position where we can show this particular type of autocompletion
invalidPosition: function
Optional
Fires when a codemirror change occurs in a position where we can not show this particular type of autocompletion
Configuring Autocompletion Plugins
To modify how autocompletion plugins work, you can simply overwrite the settings and/or function that are explained in the section above. To e.g. modify theautoShow
setting for the prefix autocompleter, set `YASQE.Autocompleters.prefixes.autoShow = false` before you initialize YASQE.
Some plugins may come with extra configuration options such as the prefix autocompleter, that allows you to change the url from where the prefix json is fetched:
YASQE.Autocompleters.prefixes.fetchFrom: string (default: //prefix.cc/popular/all.file.json)
Where to fetch the prefix json from. Change this when you'd like to host the json yourself. This might be useful when you run YASQE on an `https` site, considering that prefix.cc currently does not support `https`


[
next
] [
prev
] [
prev-tail
] [
tail
] [
up
]
5
An example: One-dimensional electrostatic simulation
5.1
Vlasov equation
5.2
Poisson’s equation
5.3
Equilibrium state
5.4
δf
evolution
5.5
Normalization
5.6
Boundary condition for ﬁeld
5.7
Boundary condition for particles
5.8
Evaluation of particle number density
5.9
FFT solver for Poisson equation
5.10
Finite diﬀerence solver for Poisson equation
5.11
Interpolate the ﬁeld to particle markers
5.12
Integration of orbit and weight of markers
5.13
Initial perturbations
5.14
Veriﬁcation of the code by using analytic results of Landau damping
5.15
Methods of identifying resonant particles
5.16
Energy conservation (check!)
5.17
Numerical results for two-stream instability
[
next
] [
prev
] [
prev-tail
] [
front
] [
up
]


IVY-DRY SUPER- benzyl alcohol, camphor (synthetic) and menthol spray
Ivy-Dry, Inc.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Active Ingredients
Benzyl Alcohol 10%
Camphor 0.5%
Menthol 0.25%
Purpose
External Analgesic
Uses
- for the temporary relief of itching associated with insect bites and minor skin irritations
For external use only.
Do not use
- on face or genital areas
- on areas of blistered or broken skin
- with a compress after application
When using this product
- do not get into eyes
- if contact occurs, flush eyes with water
Stop use and ask a doctor if
- condition worsens
- symptoms last more than 7 days or clear up and occur again within a few days.
If pregnant or breast-feeding,
ask a doctor before use.
Keep out of reach of children.
If swallowed, get medical help or contact Poison Control Center right away.
Directions
- Apply to affected area not more than 3 times daily.
- Children under 6 years of age: do not use, ask a doctor.
- Severe reactions to Urushiol (the chemical released by the plant, which causes the irritation) can look like chemical burns and have a thick leathery appearance. Additional applications may be necessary.
- Test product on small patch of skin before applying to the entire body.
Other information
Store at room temperature
You may report a serious adverse reaction to Report Reaction, LLC PO Box 22 Plainsboro, NJ 08536-0222
Inactive Information
Water, Isopropanol, Zinc Acetate, Isoceteth-20, Zinc Lactate.
Package Labeling
Sprays at any angle!
Ivy-Dry Super
Continuous Spray
TEMPORARY RELIEF OF PAIN AND ITCHING
External Analgesic
Manufactured for:
Ivy-Dry, Inc.
299-B Fairfield Avenue
Fairfield, NJ 07070
Made In Canada
©2012 Ivy-Dry, Inc.
Questions or Comments
www.ivydry.com
Ivy-Dry, Inc.


| Zookeper Monitoring Need this userparameter in zabbix_agentd.conf: UserParameter=echo2nc[*],echo $1 | nc $2 $3 |
| UserParameter=echo2nc[*],echo $1 | nc $2 $3 |
Patrick Fouquet
| Name | Description | Default | Type |
|---|---|---|---|
| {$ZOO_IP} |
-
 | <IP_ADDRESS> |
Text macro |
| {$ZOO_PORT} |
-
 | 2181 |
Text macro |
There are no template links in this template.
There are no discovery rules in this template.
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| zk - $1 |
zk_approximate_data_size is the approximate memory consumption for all znodes stored in the ZooKeeper ensemble
 | Dependent item |
zookeeper[Approximate Data Size]
Update: 0
 |
| zk - $1 |
Number of file descriptors open by the ZooKeeper process.
 | Dependent item |
zookeeper[Open File Descriptor Count]
Update: 0
 |
| zk - $1 |
Maximum latency
 | Dependent item |
zookeeper[Latency (max)]
Update: 0
 |
| zk - $1 |
Number of watches currently set on the local ZooKeeper process.
 | Dependent item |
zookeeper[Watch Count]
Update: 0
 |
| zk - $1 |
Number of ephemeral znodes.
 | Dependent item |
zookeeper[Ephemerals Count]
Update: 0
 |
| zk - $1 |
Number of ZooKeeper network packets sent by second
 | Dependent item |
zookeeper[Packets Sent / second]
Update: 0
 |
| zk - $1 |
Minimum latency
 | Dependent item |
zookeeper[Latency (min)]
Update: 0
 |
| zk - $1 |
Maximum number of file descriptors allowed for the ZooKeeper process.
 | Dependent item |
zookeeper[Max File Descriptor Count]
Update: 0
 |
| zk - $1 |
-
 | Dependent item |
zookeeper[Server State]
Update: 0
 |
| zk - $1 |
-
 | Zabbix agent (active) |
echo2nc[ruok,{$ZOO_IP},{$ZOO_PORT}]
Update: 1m
 |
| zk - $1 |
Number of connections to ZooKeeper that are currently alive.
 | Dependent item |
zookeeper[Alive Connections]
Update: 0
 |
| zk - $1 |
zk_znode_count is the total count of znodes stored in the ZooKeeper ensemble. Every time a client creates a new znode, this counter will increment. Every time a client deletes a new znode (either explicitly or by dropping its ephemeral znodes after disconnection), this counter will decrement.
 | Dependent item |
zookeeper[Znode Count]
Update: 0
 |
| zk - $1 |
-
 | Dependent item |
zookeeper[Version]
Update: 0
 |
| zk - $1 |
Average latency between ensemble hosts
 | Dependent item |
zookeeper[Latency (avg)]
Update: 0
 |
| zk - $1 |
-
 | Zabbix agent (active) |
echo2nc[mntr,{$ZOO_IP},{$ZOO_PORT}]
Update: 5m
 |
| zk - $1 |
Number of ZooKeeper network packets received by second
 | Dependent item |
zookeeper[Packets Received / second]
Update: 0
 |
| zk - $1 |
Number of outstanding requests that need to be processed by the cluster.
 | Dependent item |
zookeeper[Outstanding requests]
Update: 0
 |
There are no triggers in this template.
| Zookeper Monitoring Need this userparameter in zabbix_agentd.conf: UserParameter=echo2nc[*],echo $1 | nc $2 $3 |
| UserParameter=echo2nc[*],echo $1 | nc $2 $3 |
Patrick Fouquet
| Name | Description | Default | Type |
|---|---|---|---|
| {$ZOO_IP} |
-
 | <IP_ADDRESS> |
Text macro |
| {$ZOO_PORT} |
-
 | 2181 |
Text macro |
There are no template links in this template.
There are no discovery rules in this template.
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| zk - $1 |
Number of outstanding requests that need to be processed by the cluster.
 | Dependent item |
zookeeper[Outstanding requests]
Update: 0
 |
| zk - $1 |
Maximum number of file descriptors allowed for the ZooKeeper process.
 | Dependent item |
zookeeper[Max File Descriptor Count]
Update: 0
 |
| zk - $1 |
Minimum latency
 | Dependent item |
zookeeper[Latency (min)]
Update: 0
 |
| zk - $1 |
-
 | Dependent item |
zookeeper[Version]
Update: 0
 |
| zk - $1 |
-
 | Zabbix agent (active) |
echo2nc[ruok,{$ZOO_IP},{$ZOO_PORT}]
Update: 1m
 |
| zk - $1 |
zk_approximate_data_size is the approximate memory consumption for all znodes stored in the ZooKeeper ensemble
 | Dependent item |
zookeeper[Approximate Data Size]
Update: 0
 |
| zk - $1 |
Number of ZooKeeper network packets sent by second
 | Dependent item |
zookeeper[Packets Sent / second]
Update: 0
 |
| zk - $1 |
Maximum latency
 | Dependent item |
zookeeper[Latency (max)]
Update: 0
 |
| zk - $1 |
Number of ZooKeeper network packets received by second
 | Dependent item |
zookeeper[Packets Received / second]
Update: 0
 |
| zk - $1 |
Number of connections to ZooKeeper that are currently alive.
 | Dependent item |
zookeeper[Alive Connections]
Update: 0
 |
| zk - $1 |
Number of ephemeral znodes.
 | Dependent item |
zookeeper[Ephemerals Count]
Update: 0
 |
| zk - $1 |
-
 | Zabbix agent (active) |
echo2nc[mntr,{$ZOO_IP},{$ZOO_PORT}]
Update: 5m
 |
| zk - $1 |
Number of watches currently set on the local ZooKeeper process.
 | Dependent item |
zookeeper[Watch Count]
Update: 0
 |
| zk - $1 |
-
 | Dependent item |
zookeeper[Server State]
Update: 0
 |
| zk - $1 |
Number of file descriptors open by the ZooKeeper process.
 | Dependent item |
zookeeper[Open File Descriptor Count]
Update: 0
 |
| zk - $1 |
Average latency between ensemble hosts
 | Dependent item |
zookeeper[Latency (avg)]
Update: 0
 |
| zk - $1 |
zk_znode_count is the total count of znodes stored in the ZooKeeper ensemble. Every time a client creates a new znode, this counter will increment. Every time a client deletes a new znode (either explicitly or by dropping its ephemeral znodes after disconnection), this counter will decrement.
 | Dependent item |
zookeeper[Znode Count]
Update: 0
 |
There are no triggers in this template.
| Zookeper Monitoring Need this userparameter in zabbix_agentd.conf: UserParameter=echo2nc[*],echo $1 | nc $2 $3 |
| UserParameter=echo2nc[*],echo $1 | nc $2 $3 |
Patrick Fouquet
| Name | Description | Default | Type |
|---|---|---|---|
| {$ZOO_IP} |
-
 | <IP_ADDRESS> |
Text macro |
| {$ZOO_PORT} |
-
 | 2181 |
Text macro |
There are no template links in this template.
There are no discovery rules in this template.
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| zk - $1 |
Number of outstanding requests that need to be processed by the cluster.
 | Dependent item |
zookeeper[Outstanding requests]
Update: 0
 |
| zk - $1 |
Maximum number of file descriptors allowed for the ZooKeeper process.
 | Dependent item |
zookeeper[Max File Descriptor Count]
Update: 0
 |
| zk - $1 |
Minimum latency
 | Dependent item |
zookeeper[Latency (min)]
Update: 0
 |
| zk - $1 |
-
 | Dependent item |
zookeeper[Version]
Update: 0
 |
| zk - $1 |
-
 | Zabbix agent (active) |
echo2nc[ruok,{$ZOO_IP},{$ZOO_PORT}]
Update: 1m
 |
| zk - $1 |
zk_approximate_data_size is the approximate memory consumption for all znodes stored in the ZooKeeper ensemble
 | Dependent item |
zookeeper[Approximate Data Size]
Update: 0
 |
| zk - $1 |
Number of ZooKeeper network packets sent by second
 | Dependent item |
zookeeper[Packets Sent / second]
Update: 0
 |
| zk - $1 |
Maximum latency
 | Dependent item |
zookeeper[Latency (max)]
Update: 0
 |
| zk - $1 |
Number of ZooKeeper network packets received by second
 | Dependent item |
zookeeper[Packets Received / second]
Update: 0
 |
| zk - $1 |
Number of connections to ZooKeeper that are currently alive.
 | Dependent item |
zookeeper[Alive Connections]
Update: 0
 |
| zk - $1 |
Number of ephemeral znodes.
 | Dependent item |
zookeeper[Ephemerals Count]
Update: 0
 |
| zk - $1 |
-
 | Zabbix agent (active) |
echo2nc[mntr,{$ZOO_IP},{$ZOO_PORT}]
Update: 5m
 |
| zk - $1 |
Number of watches currently set on the local ZooKeeper process.
 | Dependent item |
zookeeper[Watch Count]
Update: 0
 |
| zk - $1 |
-
 | Dependent item |
zookeeper[Server State]
Update: 0
 |
| zk - $1 |
Number of file descriptors open by the ZooKeeper process.
 | Dependent item |
zookeeper[Open File Descriptor Count]
Update: 0
 |
| zk - $1 |
Average latency between ensemble hosts
 | Dependent item |
zookeeper[Latency (avg)]
Update: 0
 |
| zk - $1 |
zk_znode_count is the total count of znodes stored in the ZooKeeper ensemble. Every time a client creates a new znode, this counter will increment. Every time a client deletes a new znode (either explicitly or by dropping its ephemeral znodes after disconnection), this counter will decrement.
 | Dependent item |
zookeeper[Znode Count]
Update: 0
 |
There are no triggers in this template.


1 reference to CreateCommandProcessorForScript
System.Management.Automation (1)
engine\CommandDiscovery.cs (1)
369
return
CreateCommandProcessorForScript
(scriptInfo, Context, useLocalScope, sessionState);


2.1 Manual maximum likelihood estimation
As was done in class for the beaver
dataset, we will look at manual specification of the likelihood. While it is straightforward in principle to maximize the latter for ARMA models, the numerous restrictions that are imposed on the parameters make it hard, if not impossible, to manually code one’s own function. Maximum likelihood estimation is implemented typically via the state-space representation, which we will cover later in the semester.
For simple models, it is easily done however, and should shed some light on the various functions that are part of R for optimization, the definition of a function, the use of nlm
and optim
for optimization purposes, etc.
We first load a dataset of UBS and Credit Suisse stock prices from 2000 until 2008. The data is splitted in three parts for the analysis, since the data is heteroscedastic, and there appears (visually) to be two changepoints. We look at the adequacy of fitted AR(1) model for the mean and an ARCH(1) for the variance.
# devtools::install_github('nickpoison/astsa')
# devtools::install_github('joshuaulrich/xts')
library(xts)
library(lubridate)
# read data and examine it
UBSCreditSuisse <- read.csv("http://sma.epfl.ch/~lbelzile/math342/UBSCSG.csv",
stringsAsFactors = FALSE)
names(UBSCreditSuisse)
[1] "Date" "UBS_OPEN" "UBS_HIGH" "UBS_LOW" "UBS_LAST"
[6] "UBS_VOLUME" "CSG_OPEN" "CSG_HIGH" "CSG_LOW" "CSG_LAST"
[11] "CSG_VOLUME"
head(UBSCreditSuisse)
Date UBS_OPEN UBS_HIGH UBS_LOW UBS_LAST UBS_VOLUME CSG_OPEN CSG_HIGH
1 1/1/00 NA NA NA NA NA NA NA
2 1/2/00 NA NA NA NA NA NA NA
3 1/3/00 NA NA NA NA NA NA NA
4 1/4/00 31.13 31.17 30.32 30.32 11526322 72.01 72.13
5 1/5/00 30.06 31.06 29.73 30.32 17142124 67.51 69.01
6 1/6/00 30.29 30.80 30.25 30.47 9509228 68.09 68.55
CSG_LOW CSG_LAST CSG_VOLUME
1 NA NA NA
2 NA NA NA
3 NA NA NA
4 69.13 69.24 5336924
5 67.40 68.44 4419160
6 67.74 68.55 2585800
# create time series, accounting for missing values at weekends and 251.25
# values/year this is correct for analysis, but only provides approximate
# locations for plotting
UBS <- ts(UBSCreditSuisse$UBS_LAST, start = c(2000, 1), frequency = 365.25)
UBS <- ts(UBS[!is.na(UBS)], start = c(2000, 1), frequency = 251.625)
# Irregular time series
UBS_xts <- with(UBSCreditSuisse, xts(UBS_LAST, mdy(Date)))
Objects of class ts
store the dates from the vector start with observations as \((i-1)/\omega\). Thus, we specified in the above a vector encoded as 2000, 2000+1/365.25, This means that missing values are not handled. In contrast, xts
objects keep the time stamps from a Date
object. The function with
is equivalent to attach
, but has a limited scope and is used to avoid writing UBSCreditSuisse$Date
, etc. The function mdy
transforms the string Date
as month, day and year. The string is coerced into an object of class Date
.
# Analysis for UBS returns, 2000-2008
UBS_ret <- 100 * diff(log(UBS_xts))
plot.zoo(UBS_ret, xlab = "Time", ylab = (ylab <- "Daily returns (in %)"), main = "Percentage daily growth rate of UBS stock")
# compute log returns
UBS.ret <- 100 * diff(log(UBS))
# split into 3 homogeneous(?) parts, and plot using the same vertical axis
# on the graphs
# with the xts object
par(mfrow = c(1, 3))
lims <- range(UBS.ret)
plot.zoo(UBS_ret[paste0(index(first(UBS_ret)), "/", as.Date("2003-01-01") +
100)], ylim = lims, xlab = "Time", ylab = ylab)
# with window and the ts object
y1 <- window(UBS.ret, end = c(2003, 100))
# plot(y1, ylim = lims)
y2 <- window(UBS.ret, start = c(2003, 101), end = c(2007, 200))
plot(y2, ylim = lims, ylab = ylab, main = "UBS daily growth rate (in %)")
y3 <- window(UBS.ret, start = c(2007, 201))
plot(y3, ylim = lims, ylab = ylab)
# analysis of first part, first just plotting ACF and PACF for data and for
# abs(data)
y <- y1
# (Partial) correlograms for the series
par(mfrow = c(2, 2))
TSA::acf(y, lag.max = 100, main = "Daily log returns (%)")
pacf(y, lag.max = 100, , main = "")
TSA::acf(abs(y), lag.max = 100, main = "Absolute daily log returns (%)")
pacf(abs(y), lag.max = 100, main = "")
The residuals look pretty much white noise, but the variance has residual structure. Recall the implicit definition of the AR(1) process \(Y_t\), \[Y_t=\mu+\phi(Y_{t-1}-\mu)+\varepsilon_t,\] where \(\varepsilon_t \stackrel{\mathrm{iid}}{\sim} \mathcal{N}(0,\sigma^2)\). The joint distribution of the observations conditional on the first is multivariate normal. Here is a simple function for the likelihood, which only requires specifying the conditional mean.
# analysis using AR(1) model for means conditional likelihood
nll_AR1 <- function(th, y) {
n <- length(y)
condit.mean <- th[1] + th[3] * (y[-n] - th[1])
-sum(dnorm(y[-1], mean = condit.mean, sd = th[2], log = TRUE))
}
init1 <- c(0, 1, 0.5)
# fit1 <- nlm(f = nll_AR1, p = init1, iterlim = 500, hessian = TRUE, y = y)
fit1 <- optim(init1, nll_AR1, y = y, hessian = TRUE, method = "Nelder-Mead")
We obtain the parameter estimates and the standard errors from the observed information matrix, estimated numerically. Incidently, one can easily that the problem is equivalent to a linear Gaussian model where the regressor is a lagged vector of observations. The parameter estimates differ slightly, but this is due to the optimization routine.
#Parameter values (MLEs)
fit1$par
#Standard errors from inverse of Hessian matrix at MLE
#If you code the optimization routine yourself, you can still obtain the Hessian via
#hessian <- numDeriv::hessian(func = nll_AR1, y = y, x = fit1$par)
#Standard errors
sqrt(diag(solve(fit1$hessian)))
#Conditional likelihood using lm
#dynlm is a wrapper around lm for `ts` and `zoo` objects, L means lag and you can add e.g. trend(y)
fit1_ols <- dynlm::dynlm(y ~ L(y, 1))
coefficients(fit1_ols)
sd(residuals(fit1_ols))
Incidently, the situation is analogous for the ARCH(1) process, which has a conditional variance that changes over time. The latter is defined implicitly as \[\begin{align*} Z_t &= \mu + \sigma_t\epsilon_t\\ \sigma_t^2 &=\alpha_0+\alpha_1(Z_{t-1}-\mu)^2 \end{align*}\] with \(\epsilon_t \stackrel{\mathrm{iid}}{\sim} \mathcal{N}(0, 1)\).
The variance \(\sigma^2\) here is included as \(\sigma^2=\alpha_0\) and the parameter appearing in the likelihood is \(\alpha_1/\sigma^2\) corresponds to \(\theta_3\), or th[3]
.
# analysis using ARCH(1) model for variances
nll_ARCH1 <- function(th, y) {
n <- length(y)
condit.mean <- th[1]
condit.var <- th[2] * (1 + th[3] * (y[-n] - th[1])^2)
-sum(dnorm(y[-1], mean = condit.mean, sd = sqrt(condit.var), log = TRUE))
}
init2 <- c(0, 1, 0.5)
fit2 <- nlm(f = nll_ARCH1, p = init2, iterlim = 500, hessian = TRUE, y = y)
## fit2 <- optim(init2, nll_ARCH1, y = y, hessian = TRUE)
The function nlm
performs minimization, but may return warnings because some of its steps because the conditional variance can be negative for some combinations of the variable, so the corresponding moves of the Newton algorithm are rejected. These are typically steps that are not in the neighborhood of the final solution, so can be ignored if the output is valid. The minimum
corresponds to the negative log-likelihood at the maximum likelihood estimates. The MLE is given by estimate
and the standard errors by the square root of the diagonal entries of the inverse Hessian (here already negated because we work with the negative of the log-likelihood). Since the residuals have a varying variance, we need to adjust them by dividing each by their respective variance. Same would have occured for the AR(1) process, but it is easier for the mean.
fit2$minimum
[1] 1860.386
fit2$estimate
[1] 0.02691498 3.31180313 0.11770094
sqrt(diag(solve(fit2$hessian)))
[1] 0.06843004 0.24664944 0.02908274
make_resid_ARCH1 <- function(y, fit) {
th <- fit$estimate
n <- length(y)
condit.mean <- th[1]
condit.var <- th[2] * (1 + th[3] * (y[-n] - th[1])^2)
res <- (y[-1] - condit.mean)/sqrt(condit.var)
ts(res)
}
res2 <- make_resid_ARCH1(y, fit2)
We now proceed with diagnostic plots to check the model adequacy. Recall that the Kolmogorov–Smirnov test statistic associated with the cumulative periodogram tests the hypothesis of white noise (and ARCH(1) is white noise).
par(mfrow = c(2, 2))
plot(y, main = "Raw returns")
plot(res2, main = "ARCH(1) residuals")
cpgram(res2, main = "Cumulative periodogram")
par(pty = "s")
qqnorm(res2, panel.first = {
abline(0, 1, col = "red")
})
2.1.1 Exercise 1: UBS stock returns
- Create a function that fits an AR(1)-ARCH(1) model by modifying the code provided above and apply it to
y
. The latter is defined as \[Y_t-\mu = \phi(Y_{t-1}-\mu)+\sigma_t\varepsilon_t, \quad \sigma^2_t = \alpha_0+\alpha_1(Y_{t-1}-\mu)^2, \quad \varepsilon_t \stackrel{\mathrm{iid}}{\sim} \mathcal{N}(0,\sigma^2)\] - Obtain the maximum likelihood estimates using
nlm
oroptim
as well as the standard errors - Plot the residuals. Comment on the fit using standard diagnostic plots (Q-Q plot, ((P)ACF, cumulative periodogram).
- Fit an AR(2) model using a conditional likelihood for the mean and obtain the standard errors of your estimated coefficients.
- Perform a likelihood ratio test to test whether the AR(2) coefficient is significative.


“I Stand With Yuendumu”: More Than $65,000 Raised To Help The Warlpiri Seek Justice
by Rachael ConaghanThousands of dollars has been raised for the Yuendumu community as they fight for an independent investigation into the death of Kumanjayi Walker.
It took less than two days for $65,000 to be raised on GoFundMe, which will help pay for lawyers and other experts.
While people are mourning the death of the 19-year-old, for many the shooting is also a symptom of the institutionalised racism that still exists in Australia. Kumanjayi Walker was shot by police in his home last Saturday after they came to arrest him for breaching parole.
The Warlpiri people of Yuendumu hope an independent investigation will ensure this never happens again.
“This is the time to address the broader systemic issues that so deeply affect our Aboriginal communities,” the campaign reads.
“The families and communities affected will be better served having separate legal representation as there is clearly a need for system change; especially around policing and other broader issues that have come to the forefront as a result of this tragic event.”
While many of the lawyers will be working for free, the community still needs to cover the costs of airfares, transport, and “forensic expertise”.
The campaign also refers to the teachings of the Palm Island case, referring to the 2003 riots which were sparked after the death of 36-year-old Cameron Doomadgee, who was arrested then later died in custody with massive internal injuries.
The officer in that case was charged with murder but later acquitted of manslaughter.
To donate to the campaign click here.


9
1 The gloom will be dispelled from her who was in anguish.
In an earlier time he humiliated
the land of Zebulun and the land of Naphtali,
but in the later time he will make it glorious, the way to the sea, beyond the Jordan, Galilee of the nations.
2 The people who walked in darkness have seen a great light;
those who have lived in the land of the shadow of death, the light has shone on them.
3 You have multiplied the nation, you have increased their joy;
they rejoice before you like the joy at harvest time,
as men rejoice when they divide the plunder.
4 For the yoke of his burden, the beam across his shoulder,
the rod of his oppressor, you have shattered as on the day of Midian.
5 For every boot treading in the tumult
and the garments rolled in blood
will be burned, fuel for the fire.
6 For to us a child has been born, to us a son has been given;
and the rule will be on his shoulder;
and his name will be called Wonderful Counselor,
Mighty God, Everlasting Father,
Prince of Peace.
7 Of the increase of his government and of peace there will be no end,
as he rules on the throne of David, and over his kingdom,
to establish it and sustain it
with justice and with righteousness from this time onward and for evermore.
The zeal of Yahweh of hosts
will do this.
8 The Lord sent a word against Jacob, and it fell on Israel.
9 All the people will know, even Ephraim and the inhabitants of Samaria, who say in pride and with an arrogant heart,
10 "The bricks have fallen, but we will rebuild with chiseled stone; the sycamores have been cut down, but we will put cedars in their place."
11 Therefore Yahweh will raise up against him, Rezin, his adversary, and will stir up his enemies,
12 the Arameans on the east, and the Philistines on the west. They will devour Israel with open mouth.
For in his anger Yahweh will
not stop, but his hand will still be raised to strike.
13 Yet the people will not turn to him who struck them, nor will they seek Yahweh of hosts.
14 Therefore Yahweh will cut off from Israel head and tail, palm branch and reed, in one day.
15 The leader and the noble man are the head; and the prophet that teaches lies is the tail.
16 Those who lead this people lead them astray, and those who are led by them are swallowed up
17 Therefore the Lord will not rejoice over their young men nor will he have compassion on their fatherless and widows,
since every one is godless and an evildoer, and every mouth speaks foolish things.
Because of all this his anger does not subside, but his
hand will still be raised to strike.
18 Wickedness burns like a fire; it devours the briers and thorns;
it even burns the thickets of the forest, which rise in a column of smoke.
19 Through the overflowing anger of Yahweh of hosts the land is scorched, and the people are like fuel for the fire.
No man spares his
brother.
20 They will slice meat off the right hand and still be hungry; they will eat meat off the left hand but will not be satisfied.
Each will even eat the flesh of his own arm.
21 Manasseh will devour Ephraim, and Ephraim, Manasseh; and they together will attack Judah.
For all this Yahweh's anger will not subside,
but his hand will still be raised to strike.


AWT Viewer PreviewDialog and PreviewPanel.
The PreviewPanel allows users to embed FOP previews in their own applications. The PreviewDialog is the default viewer for the -awt switch and surrounds the PreviewPanel with a bunch of controls, menu items etc.


Star Wars: Episode 1 - The Phantom Menace (1999) * * 1/2 A movie review by Serdar Yegulalp Copyright 1999 by Serdar Yegulalp
Let me start by stating the obvious. "Star Wars, Episode 1: The Phantom Menace" is wonderful to look at. Every scene is littered with activity: ships flitting across the horizon, people and creatures scurrying from hither to thither. One of the major characters, the splendidly-goofy-bordering-on-annoying Jar Jar Binks, is entirely a creation of computer graphics, and we're never less than convinced that he's there in front of us at all times. This is one of the hallmarks of the "Star Wars" universe: things that would be the centerpiece of another movie will simply insert themselves casually into the frame. The movie is exploding with sights and sounds.
And that's the problem. Here is a film that was created with the most magnificent of panoramas, and one of the most flimsy of screenplays. It's full, but not fulfilling. It does everything... except tell a story that engages us emotionally. Friends of mine have said that the movie improves on repeat viewings -- but shouldn't a movie like this just work the first time around, period?
Twenty years, it seems, have made all the difference, in both us and George Lucas. "Star Wars" exploded out of nowhere and changed the level of expectations for moviegoers everywhere, permanently. "The Phantom Menace" is evolutionary, not revolutionary, and for that reason is not as remarkable a movie. But it's also hampered by a muddled, one- dimensional drama and a gallery of characters who engage everything except our sympathies. "Star Wars" was about adventure; this movie is about people talking at each other and occasionally fighting. No one is REALLY put to the test. The movie is worse than soulless -- it is gutless.
In the abstract, there's plenty of story to work with: a brutal blockade of a planet that could turn into a full-out war; light-saber duels; closed-chamber politicking; a forbidden attraction between a queen and a young slave; a father-and-son apprenticeship; a deadly and mysterious assassin with vicious weapons. But somehow, Lucas and his team of compatriots haven't spun these elements together in a compelling fashion. The film drags. There are far too many scenes of people explaining everything to each other, again and again; there are endless moments where we HEAR about what's going on instead of SEEING it, or its consequences. For a "kid's movie", as Lucas has billed it, it's distressingly complex, static and talky. There is no one person we are carried through the whole of the story with -- and no suspense. Nothing ever really seems to be at stake; it all just seems to be a rather large inconvenience.
Some examples. Part of the movie's major lack of empathy is found with Natalie Portman's character, Queen Padme.  Lucas goes to great effort to present her to us as a queen, but all of her sympathy for her people is verbal, not tangible. We admire her, but we don't care about her. (PLOT SPOILER!) There's some tedious bait-and-switchery with one of her handmaidens that's less fun than it should be -- probably because we're not privy to it until it's too late to delight in the subversion.
Then there are our two Jedi, who feel obligatory without feeling neccesary. Ewan McGregor is excellent as the young Obi-Wan Kenobi; he inhabits the part with great grace and unforced style. He is fun to watch. Liam Neeson, as Qui-Gon Jinn, however, seems vaguely bored and dissatisfied with the whole thing; his expression always seems to be saying, "As soon as I can get out of here and have me a Guinness..."
I also mentioned Jar-Jar Binks, who is so convincing as a digital creation that it only makes him all the more insufferable. He is a comic relief whose lifespan was extended far beyond any reasonable amount. And then there is Jake Lloyd, as the young Anakin Skywalker. He is possibly one of the few totally unproblematic things in the movie -- he is simply nine years old, nothing more than that, and we accept that on face value. The problem is the movie often exploits that for developments that aren't even internally consistent -- such as when he strikes a blow for the heroes by accident... again and again.
Another problem is that watching all these characters deal with each other is a chore. Lucas has written his own script, and the dialogue is cheesy without ever being enjoyably so. It doesn't have the fun and frolic of a high-camp adventure. Instead, it's just pained and forced. There's none of that kidding by-play we all loved. When Leia said, "Will someone get this big walking carpet out of my way?" we all laughed. Nothing is that spontaneous and unforced here.
The high points, of course, are when the movie's set-pieces kick in. Here is the only time "The Phantom Menace" actually feels like a "Star Wars" movie. The action centerpiece of the movie is a high-tech race sequence that borrows freely from "Ben Hur", "Bullitt", and even the speeder chase from "Return of the Jedi"; apparently Lucas's creative exhaustion has extended to the point of autocannibalization. Yes, the chase is exhilarating and excellently done -- but because it's not hooked into anything we really care about, it's disposable. It's just another random something to look at.
My criticism of "The Phantom Menace" is not with its surfaces, but with its core. The original "Star Wars" movies possessed a kind of cultural telepathy, a power to tap directly into a silent sense of wonder and possibilities. Yes, it WAS possible for a farm boy from Tatooine to become a Jedi knight (and have Darth Vader for a father), and for a band of rebels to strike a blow for freedom against the all-powerful Empire. Goofy and hokey as it was, we bought it.
The new trilogy, judging from its opening chapter, is full of images, but somehow none of the wonder and the narrative gravity. In place of wonder, we have comings and goings, explanations and justifications, and never a quiet moment when we are allowed to have it all sink in. In place of narrative, we have picaresqueness without impact. We go a lot of places, but we never really get out of the bus.
Roger Ebert reported in his own review of the movie: "We are standing at the threshold of a new age of epic cinema, I think, in which digital techniques mean that budgets will no longer limit the scope of scenes; filmmakers will be able to show us just about anything they can imagine." True. But digital filmmaking technology is like the movie camera itself. Point it at something and all of its attributes are magnified, good and bad. "The Phantom Menace"'s visual splendor explodes tenfold when given a CGI treatment, but so does the thinness of its underlying story.
Epic movies like "Lawrence of Arabia" were full of intriguing people and conflicts; "The Phantom Menace" is little more than a glossy tour booklet, all setup and no payoff. Presumably, that's by design, but the original "Star Wars" movies also worked magnificently as standalones. I re-watched them before seeing "The Phantom Menace" and felt like I was revisiting old friends at a party. "The Phantom Menace" plays more like a noisy Shriner's convention where nobody really wants to talk to anyone else.
One more thing. There is a single moment in the original "Star Wars" where Luke Skywalker stands outside his house and watches a dual sunset. The suns bathe Luke's face in red; the music swells; we feel his need to escape. It's an elementally simple moment, unadorned and moving, and it works. "The Phantom Menace", too perpetually busy to be really interesting, never lets itself have a moment like that.
--== Sent via Deja.com http://www.deja.com/ ==-- ---Share what you know. Learn what you don't.---
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


StatusPage
Toggle navigation
Home
More
About
Mission
Contact
Log In
Sign Up
Subscribe to updates
All Systems Operational
Website
Operational
API
Operational
Incidents in the past
May 24, 2020
No incidents reported
May 23, 2020
1 incident reported
Affected Time: 5 Mins
Affected Services: API
History


What time is The Crown season 3 released on Netflix
The countdown until we can watch season 3 of The Crown is almost over, with the latest instalment of the show due to land on Netflix today.
This third instalment of the hit series sees Oscar winner Olivia Colman taking over from Golden Globe winner Claire Foy to play Queen Elizabeth, and offers a fictionalised account of real-life events centring around the Royal Family between 1964 and 1977.
As we get closer and closer to the release of the season, here’s exactly what time the third season of The Crown will be available to stream on Netflix.
What time does The Crown season 3 come out on Netflix?
Season 3 of The Crown will be landing at 8am on Sunday, 17 November.
To tune in to the whole season, all you need is a Netflix subscription.
The streaming giant is also offering fans the chance to watch episode one of season 3 for free.
Advertisement Advertisement
All you’ll need to do is go to netflix.com/thecrown when the episode is released – no subscription necessary.
Anyone out there who’s new to Netflix can also set up an account and reap the benefits of the one-month free trial offered by the company.
A spokesperson for Netflix told Yahoo Movies: ‘The Crown has become a globally renowned British success story since it first launched on Netflix three years ago.
‘We want to give as many people as possible a flavour of the great content Netflix is creating here in the UK, by offering the first instalment of the new series without signing up.
‘Until December 15, anyone can watch episode one simply by visiting netflix.com/thecrown.’
On the subject of how she prepared to play the Queen, Olivia told Graham Norton on the set of his chat show: ‘I did nothing, though I did have a movement coach, but still I walked like me, or rather like a farmer!’
Advertisement Advertisement
Helena Bonham Carter, who plays Princess Margaret in The Crown season 3 and joined Olivia on Graham’s red sofa, quipped: ‘I do everything to prepare and Olivia does nothing, and she ends up being completely brilliant.’
As if we weren’t excited about the new series enough as it is!
The third season of The Crown lands on Netflix on 17 November.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


{% extends "global/Base.html" %} {% load staticfiles otree_tags %} {% block title %} Solution to Understanding Question {{ num_q }} of {{ total_q }} {% endblock %} {% block content %} {% if player.is_training_question_1_my_payoff_correct %}
Your answer {{player.training_question_1_my_payoff}} for yourself was correct.
{% else %}Your answer {{player.training_question_1_my_payoff}} for yourself was incorrect
{% endif %} {% if player.is_training_question_1_other_payoff_correct %}Your answer {{player.training_question_1_other_payoff}} for the other participant was correct.
{% else %}Your answer {{player.training_question_1_other_payoff}} for the other participant was incorrect.
{% endif %}Suppose that you went for a stag and the other participant went for a hare. What would be your payoffs respectively?
Solution: Payoffs for you would be 0 points and for the other participant 100 points.
{% next_button %} {% include 'stag_hunt/Instructions.html' %} {% endblock %}


ISP Outage Monitor
Status not sure, waiting for good data...
Online
Offline
Date / Time
Duration (s)
-
-
Prev
Next


Test Online Form on W3School
After submitting the App loads W3School.com and fills in this form:
Fist name:
Last name:


|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
MIT License
Copyright (c) 2017 Embedded Artistry
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
musl as a whole is licensed under the following standard MIT license:
Copyright © 2005-2014 Rich Felker, et al.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
Authors/contributors include:
Alex Dowad Alexander Monakov Anthony G. Basile Arvid Picciani Bobby Bingham Boris Brezillon Brent Cook Chris Spiegel Clément Vasseur Daniel Micay Denys Vlasenko Emil Renner Berthing Felix Fietkau Felix Janda Gianluca Anzolin Hauke Mehrtens Hiltjo Posthuma Isaac Dunham Jaydeep Patil Jens Gustedt Jeremy Huntwork Jo-Philipp Wich Joakim Sindholt John Spencer Josiah Worcester Justin Cormack Khem Raj Kylie McClain Luca Barbato Luka Perkov M Farkas-Dyck (Strake) Mahesh Bodapati Michael Forney Natanael Copa Nicholas J. Kain orc Pascal Cuoq Petr Hosek Pierre Carrier Rich Felker Richard Pennington Shiz sin Solar Designer Stefan Kristiansson Szabolcs Nagy Timo Teräs Trutz Behn Valentin Ochs William Haddon
Portions of this software are derived from third-party works licensed under terms compatible with the above MIT license:
The TRE regular expression implementation (src/regex/reg* and src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed under a 2-clause BSD license (license text in the source files). The included version has been heavily modified by Rich Felker in 2012, in the interests of size, simplicity, and namespace cleanliness.
Much of the math library code (src/math/* and src/complex/*) is Copyright © 1993,2004 Sun Microsystems or Copyright © 2003-2011 David Schultz or Copyright © 2003-2009 Steven G. Kargl or Copyright © 2003-2009 Bruce D. Evans or Copyright © 2008 Stephen L. Moshier and labelled as such in comments in the individual source files. All have been licensed under extremely permissive terms.
The ARM memcpy code (src/string/arm/memcpy_el.S) is Copyright © 2008 The Android Open Source Project and is licensed under a two-clause BSD license. It was taken from Bionic libc, used on Android.
The implementation of DES for crypt (src/crypt/crypt_des.c) is Copyright © 1994 David Burren. It is licensed under a BSD license.
The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was originally written by Solar Designer and placed into the public domain. The code also comes with a fallback permissive license for use in jurisdictions that may not recognize the public domain.
The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 Valentin Ochs and is licensed under an MIT-style license.
The BSD PRNG implementation (src/prng/random.c) and XSI search API (src/search/*.c) functions are Copyright © 2011 Szabolcs Nagy and licensed under following terms: "Permission to use, copy, modify, and/or distribute this code for any purpose with or without fee is hereby granted. There is no warranty."
The x86_64 port was written by Nicholas J. Kain and is licensed under the standard MIT terms.
The mips and microblaze ports were originally written by Richard Pennington for use in the ellcc project. The original code was adapted by Rich Felker for build system and code conventions during upstream integration. It is licensed under the standard MIT terms.
The mips64 port was contributed by Imagination Technologies and is licensed under the standard MIT terms.
The powerpc port was also originally written by Richard Pennington, and later supplemented and integrated by John Spencer. It is licensed under the standard MIT terms.
All other files which have no copyright comments are original works produced specifically for use as part of this library, written either by Rich Felker, the main author of the library, or by one or more contibutors listed above. Details on authorship of individual files can be found in the git version control history of the project. The omission of copyright and license comments in each file is in the interest of source tree size.
In addition, permission is hereby granted for all public header files (include/* and arch/*/bits/*) and crt files intended to be linked into applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit the copyright notice and permission notice otherwise required by the license, and to use these files without any requirement of attribution. These files include substantial contributions from:
Bobby Bingham John Spencer Nicholas J. Kain Rich Felker Richard Pennington Stefan Kristiansson Szabolcs Nagy
all of whom have explicitly granted such permission.
This file previously contained text expressing a belief that most of the files covered by the above exception were sufficiently trivial not to be subject to copyright, resulting in confusion over whether it negated the permissions granted in the license. In the spirit of permissive licensing, and of not having licensing issues being an obstacle to adoption, that text has been removed.


Dry, white, and slightly fishy: canned tuna or my new Twitter bio?
8/16/2015, 12:41:49 PM
Favs: 1
Retweets: 0
link--- layout: tweet ---
Dry, white, and slightly fishy: canned tuna or my new Twitter bio?
8/16/2015, 12:41:49 PM
Favs: 1
Retweets: 0
link


Tags Management
The app should help the user use the fewest tags possible while still being descriptive. We address this problem in the following ways:
- Providing autocompletion for tags based on the prefix.
- Suggesting related tags based on previous usage patterns.
Near Neighbor Search in Tags Graph
Given the tags used by a user in their cards, we construct an undirected graph of tags where an edge between tag #A and #B indicate that tags #A and #B have appeared on the same card together. The weight of the
Level 2
I can also provide some naive suggestions based on how similar/related tags are. There are two ways of determining this.
I can infer similarity based on how tags have been used in the past, e.g. if the user types trees
, and there's already a card that has trees, data_structures, search
as tags, I should recommend data_structures
and search
as well. This looks like a graph problem.
It's also possible to build a graph of words based on an external dataset. Such a graph would have nodes like markov_chain
and probability
connected by an edge with a greater weight than say markov_chain
-->poisson
. This approach can suggest tags that have not been used before. However, this 'knowledge graph' isn't readily available. I might have to make it myself.


Mellow
Convert Trello export to MindMap file for Coggle.
How to use: On Trello board, go to settings/export. Pick JSON. You can either save the result as a file or copy the text to clipboard. Either way, give what you want here and press convert. You'll receive a file to download. Save it and fire up Coggle. Create a new diagram and then drag and drop the saved file to it. That's it.


Happy Birthday Miika!
I hope it's a good one filled with joy
Click here to see a message from none other than Santa Claus himself! He's been busy making presents and playing with his reindeer (some of them are Finnish!), but I got him to wish you well ;)


{% load staticfiles %}
Topics Any technical papers
Team 2members only
Duration 5minutes
Rules Should explain both students
Event Hall Seminar Hall
Topics C,C++,Java,Python,Data Structures,looping,error spotting
Team 2members only
Duration 30minutes
Rules Don't use mobilephones
Hall IT Lab
What do Search and find wifi-hotspot
Team 2 or 3 members
Duration 20minutes
Rules Don't ask our team
Hall No 30
Topics General and technical
Team two members per team
Duration 20 minutes
RulesDon't use mobilephones
Hall No 31
Contact Us:infesto team


Sikh Temple, Kathmandu
The gurudwara was founded in 1976 by the Sikh sangat of Kathmandu. There are in all five historical Gurudwaras here. The most famous being "Nanak Math" situated on the bank of river Bishnumati. It is said that Guru Nanak Sahib actually stayed here for sometime and mediated at this serene sight. Community services include Sangat Langer on Saturday afternoons. There are about 400 members of the sikh community in the area.
Address: Kupandole, Kathmandu (Nepal)
The Forgotten Shrine of the Sikhs
Books on Kathmandu are silent about the shrine. It is not on the tourist map. No coaches park below the small forested hill by the river on the road to Balaju. The temple is left to bird song and the occasional visitor who either knows it is there or by chance comes upon the small weathered sign which says, “Guru Nanak Math” (27°43'31"N 85°18'19"E).
An arching stairway leads through trees and bamboo to the small building which from the outside looks like any Nepali farmhouse. The climb up the stairs is refreshing. The city, which now encroaches on the fields about the hill, is so screened by greenery that one can almost forget its existance. The busy sound of traffic trails further and further behind. Through openings in the trees can be seen the river and a high mountain. A small grassy clearing just before the house is just the kind of place a weary traveler would have welcomed. Cool. Quiet. Undisturbed.
A stone slab with two carved feet marking the spot where Guru Nanak lay in meditation at the shrine The doorway to the lime-washed house is plastered with ochre earth. The black painted door is small in the way of old Nepal, so one stoops to enter. In a verandah are steep stairs which we climb to enter into a small dark room. At the centre, under a canopy, is an altar draped in red.
Guru Nanak's shrine at Gurdawara Nanak Muth
It seems a Malla king of the early sixteenth century suffered a disturbed mind. His brothers, alarmed by his behaviour, banished him to India. Roaming forlornly through the holy city of Benaras he came upon the saint Guru Nanak and begged him to cure his affliction. After many visits and much beseeching, the guru advised the king to return to his kingdom where his health would be restored.
Miraculously, the saint preceded the king to Kathmandu for there he was, meditating under a pipal tree on a hill beside the river. The king visited him at once, begging the guru to return him to the palace. Guru Nanak refused to do so, saying that in this serene spot he had all he wanted. So the king had a temple built for his guru and a small shrine for himself where he often came to meditate. When the king died, some of his ashes were buried in the shrine according to his last wishes.
A later king, Rana Bahadur Shah, also of unsound mind, is said to have found solace at the Guru Nanak Math. He gifed considerable land to the temple so it might never want for support. Perhaps the records have long since perished because slowly the gurdwara lands have been encroached upon until only the hill remains. It would be tragedy if modern hungers consume the trees and push concrete within reach of the peaceful old building.
Obviously the lovely, lonely Guru Nanak Math is in need of a Sikh Scholar to unravel its truths and legends. Until then it will remain a half-forgotten temple on a wooded hill threatened by the brick and concrete advances of Kathmandu.


10.17 Random Number Generator—library(random)
This library module provides a random number generator using
algorithm AS 183 from the Journal of Applied Statistics
as the basic algorithm.
The state of the random number generator corresponds to a term
random(
X,
Y,
Z,
B)
where
X is an integer in the range [1,30268],
Y is an integer in the range [1,30306],
Z is an integer in the range [1,30322], and
B is a nonzero integer.
Exported predicates:
getrand(
-RandomState)
-
returns the random number generator's current state
setrand(
+RandomState)
-
sets the random number generator's state to RandomState.
If RandomState is not a valid random state, it reports
an error, and then fails.
maybe
-
succeeds determinately with probability 1/2,
fails with probability 1/2. We use a separate "random bit"
generator for this test to avoid doing much arithmetic.
maybe(
+Probability)
- succeeds determinately with probability Probability,
fails with probability 1-Probability.
Arguments =< 0 always fail, >= 1 always succeed.
maybe(
+P,
+N)
- succeeds determinately with probability P/N,
where 0 =< P =< N and P and N are integers.
If this condition is not met, it fails.
It is equivalent to
random(0, N, X), X < P
, but is somewhat faster.
random(
-Uniform)
-
unifies Uniform with a new random number in [0.0,1.0)
random(
+L,
+U,
-R)
- unifies R with a random integer in [L,U)
when L and U are integers (note that U will never be generated),
or to a random floating number in [L,U) otherwise.
random_member(
-Elem,
+List)
-
unifies Elem with a random element of List, which must be proper.
Takes O(N) time (average and best case).
random_select(
?Elem,
?List,
?Rest)
-
unifies Elem with a random element of List and Rest with all the
other elements of List (in order). Either List or Rest should
be proper, and List should/will have one more element than Rest.
Takes O(N) time (average and best case).
random_subseq(
+List,
-Sbsq,
-Cmpl)
-
unifies Sbsq with a random sub-sequence of List, and Cmpl with its
complement. After this,
subseq(List, Sbsq, Cmpl)
will be true.
Each of the 2**|List| solutions is equally likely. Like its
name-sake subseq/3
, if you supply Sbsq and Cmpl it will interleave
them to find List. Takes O(N) time. List should be proper.
random_permutation(
?List,
?Perm)
-
unifies Perm with a random permutation of List. Either List or Perm
should be proper, and they should/will have the same length. Each of
the N! permutations is equally likely, where
length(List, N)
.
This takes O(N lg N) time and is bidirectional.
random_perm2(
A,
B,
X,
Y)
-
unifies X,Y = A,B or X,Y = B,A, making the choice at random,
each choice being equally likely. It is equivalent to
random_permutation([A,B], [X,Y])
.
random_numlist(
+P,
+L,
+U,
-List)
-
where P is a probability (0..1) and L=<U are integers
unifies List with a random subsequence of the integers L..U,
each integer being included with probability P.
Send feedback on this subject.


(a) XRD patterns of Y(OH) 3:7.5% Eu 3+ phosphors prepared at various reaction times: 5, 15, 45, and 60 min, (b) schematic presentation of the unit cell of Y(OH) 3 lattice, (c) general HAADF-STEM micrographs of the Y(OH) 3:(7.5% Eu 3+) particles prepared at 5 min showing the presence agglomerated nanocrystals, and (d) the photoluminescence (PL) spectrum of Y(OH) 3:7.5% Eu 3+ phosphors.