# This file is part of QuTiP: Quantum Toolbox in Python.
#
# Copyright (c) 2011 and later, Paul D. Nation and Robert J. Johansson.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the QuTiP: Quantum Toolbox in Python nor the names
# of its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
 IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
###############################################################################
__all__ = ['liouvillian', 'liouvillian_ref', 'lindblad_dissipator',
'operator_to_vector', 'vector_to_operator', 'mat2vec', 'vec2mat',
'vec2mat_index', 'mat2vec_index', 'spost', 'spre', 'sprepost']
import scipy.sparse as sp
import numpy as np
from qutip.qobj import Qobj
from qutip.fastsparse import fast_csr_matrix, fast_identity
from qutip.sparse import sp_reshape
from qutip.cy.spmath import zcsr_kron
from functools import partial
[docs]def liouvillian(H, c_ops=[], data_only=False, chi=None):
"""Assembles the Liouvillian superoperator from a Hamiltonian
and a ``list`` of collapse operators. Like liouvillian, but with an
experimental implementation which avoids creating extra Qobj instances,
which can be advantageous for large systems.
Parameters
----------
H : Qobj or QobjEvo
System Hamiltonian.
c_ops : array_like of Qobj or QobjEvo
A ``list`` or ``array`` of collapse operators.
Returns
-------
L : Qobj or QobjEvo
Liouvillian superoperator.
"""
if isinstance(c_ops, (Qobj, QobjEvo)):
c_ops = [c_ops]
if chi and len(chi) != len(c_ops):
raise ValueError('chi must be a list with same length as c_ops')
h = None
if H is not None:
if isinstance(H, QobjEvo):
h = H.cte
else:
h = H
if h.isoper:
op_dims = h.dims
op_shape = h.shape
elif h.issuper:
op_dims = h.dims[0]
op_shape = [np.prod(op_dims[0]), np.prod(op_dims[0])]
else:
raise TypeError("Invalid type for Hamiltonian.")
else:
# no hamiltonian given, pick system size from a collapse operator
if isinstance(c_ops, list) and len(c_ops) > 0:
if isinstance(c_ops[0], QobjEvo):
c = c_ops[0].cte
else:
c = c_ops[0]
if c.isoper:
op_dims = c.dims
op_shape = c.shape
elif c.issuper:
op_dims = c.dims[0]
op_shape = [np.prod(op_dims[0]), np.prod(op_dims[0])]
else:
raise TypeError("Invalid type for collapse operator.")
else:
raise TypeError("Either H or c_ops must be given.")
sop_dims = [[op_dims[0], op_dims[0]], [op_dims[1], op_dims[1]]]
sop_shape = [np.prod(op_dims), np.prod(op_dims)]
spI = fast_identity(op_shape[0])
td = False
L = None
if isinstance(H, QobjEvo):
td = True
def H2L(H):
if H.isoper:
return -1.0j * (spre(H) - spost(H))
else:
return H
L = H.apply(H2L)
data = L.cte.data
elif isinstance(H, Qobj):
if H.isoper:
Ht = H.data.T
data = -1j * zcsr_kron(spI, H.data)
data += 1j * zcsr_kron(Ht, spI)
else:
data = H.data
else:
data = fast_csr_matrix(shape=(sop_shape[0], sop_shape[1]))
td_c_ops = []
for idx, c_op in enumerate(c_ops):
if isinstance(c_op, QobjEvo):
td = True
if c_op.const:
c_ = c_op.cte
elif chi:
td_c_ops.append(lindblad_dissipator(c_op, chi=chi[idx]))
continue
else:
td_c_ops.append(lindblad_dissipator(c_op))
continue
else:
c_ = c_op
if c_.issuper:
data = data + c_.data
else:
cd = c_.data.H
c = c_.data
if chi:
data = data + np.exp(1j * chi[idx]) * \
zcsr_kron(c.conj(), c)
else:
data = data + zcsr_kron(c.conj(), c)
cdc = cd * c
cdct = cdc.T
data = data - 0.5 * zcsr_kron(spI, cdc)
data = data - 0.5 * zcsr_kron(cdct, spI)
if not td:
if data_only:
return data
else:
L = Qobj()
L.dims = sop_dims
L.data = data
L.superrep = 'super'
return L
else:
if not L:
l = Qobj()
l.dims = sop_dims
l.data = data
l.superrep = 'super'
L = QobjEvo(l)
else:
L.cte.data = data
for c_op in td_c_ops:
L += c_op
return L
def liouvillian_ref(H, c_ops=[]):
"""Assembles the Liouvillian superoperator from a Hamiltonian
and a ``list`` of collapse operators.
Parameters
----------
H : qobj
System Hamiltonian.
c_ops : array_like
A ``list`` or ``array`` of collapse operators.
Returns
-------
L : qobj
Liouvillian superoperator.
"""
L = -1.0j * (spre(H) - spost(H)) if H else 0
for c in c_ops:
if c.issuper:
L += c
else:
cdc = c.dag() * c
L += spre(c) * spost(c.dag()) - 0.5 * spre(cdc) - 0.5 * spost(cdc)
return L
[docs]def lindblad_dissipator(a, b=None, data_only=False, chi=None):
"""
Lindblad dissipator (generalized) for a single pair of collapse operators
(a, b), or for a single collapse operator (a) when b is not specified:
.. math::
\\mathcal{D}[a,b]\\rho = a \\rho b^\\dagger -
\\frac{1}{2}a^\\dagger b\\rho - \\frac{1}{2}\\rho a^\\dagger b
Parameters
----------
a : Qobj or QobjEvo
Left part of collapse operator.
b : Qobj or QobjEvo (optional)
Right part of collapse operator. If not specified, b defaults to a.
Returns
-------
D : qobj, QobjEvo
Lindblad dissipator superoperator.
"""
if b is None:
b = a
ad_b = a.dag() * b
if chi:
D = spre(a) * spost(b.dag()) * np.exp(1j * chi) \
- 0.5 * spre(ad_b) - 0.5 * spost(ad_b)
else:
D = spre(a) * spost(b.dag()) - 0.5 * spre(ad_b) - 0.5 * spost(ad_b)
if isinstance(a, QobjEvo) or isinstance(b, QobjEvo):
return D
else:
return D.data if data_only else D
[docs]def operator_to_vector(op):
"""
Create a vector representation of a quantum operator given
the matrix representation.
"""
if isinstance(op, QobjEvo):
return op.apply(operator_to_vector)
q = Qobj()
q.dims = [op.dims, [1]]
q.data = sp_reshape(op.data.T, (np.prod(op.shape), 1))
return q
[docs]def vector_to_operator(op):
"""
Create a matrix representation given a quantum operator in
vector form.
"""
if isinstance(op, QobjEvo):
return op.apply(vector_to_operator)
q = Qobj()
q.dims = op.dims[0]
n = int(np.sqrt(op.shape[0]))
q.data = sp_reshape(op.data.T, (n, n)).T
return q
def mat2vec(mat):
"""
Private function reshaping matrix to vector.
"""
return mat.T.reshape(np.prod(np.shape(mat)), 1)
def vec2mat(vec):
"""
Private function reshaping vector to matrix.
"""
n = int(np.sqrt(len(vec)))
return vec.reshape((n, n)).T
def vec2mat_index(N, I):
"""
Convert a vector index to a matrix index pair that is compatible with the
vector to matrix rearrangement done by the vec2mat function.
"""
j = int(I / N)
i = I - N * j
return i, j
def mat2vec_index(N, i, j):
"""
Convert a matrix index pair to a vector index that is compatible with the
matrix to vector rearrangement done by the mat2vec function.
"""
return i + N * j
[docs]def spost(A):
"""Superoperator formed from post-multiplication by operator A
Parameters
----------
A : Qobj or QobjEvo
Quantum operator for post multiplication.
Returns
-------
super : Qobj or QobjEvo
Superoperator formed from input qauntum object.
"""
if isinstance(A, QobjEvo):
return A.apply(spost)
if not isinstance(A, Qobj):
raise TypeError('Input is not a quantum object')
if not A.isoper:
raise TypeError('Input is not a quantum operator')
S = Qobj(isherm=A.isherm, superrep='super')
S.dims = [[A.dims[0], A.dims[1]], [A.dims[0], A.dims[1]]]
S.data = zcsr_kron(A.data.T,
fast_identity(np.prod(A.shape[0])))
return S
[docs]def spre(A):
"""Superoperator formed from pre-multiplication by operator A.
Parameters
----------
A : Qobj or QobjEvo
Quantum operator for pre-multiplication.
Returns
--------
super :Qobj or QobjEvo
Superoperator formed from input quantum object.
"""
if isinstance(A, QobjEvo):
return A.apply(spre)
if not isinstance(A, Qobj):
raise TypeError('Input is not a quantum object')
if not A.isoper:
raise TypeError('Input is not a quantum operator')
S = Qobj(isherm=A.isherm, superrep='super')
S.dims = [[A.dims[0], A.dims[1]], [A.dims[0], A.dims[1]]]
S.data = zcsr_kron(fast_identity(np.prod(A.shape[1])), A.data)
return S
def _drop_projected_dims(dims):
"""
Eliminate subsystems that has been collapsed to only one state due to
a projection.
"""
return [d for d in dims if d != 1]
[docs]def sprepost(A, B):
"""Superoperator formed from pre-multiplication by operator A and post-
multiplication of operator B.
Parameters
----------
A : Qobj or QobjEvo
Quantum operator for pre-multiplication.
B : Qobj or QobjEvo
Quantum operator for post-multiplication.
Returns
--------
super : Qobj or QobjEvo
Superoperator formed from input quantum objects.
"""
if isinstance(A, QobjEvo) or isinstance(B, QobjEvo):
return spre(A) * spost(B)
else:
dims = [[_drop_projected_dims(A.dims[0]),
_drop_projected_dims(B.dims[1])],
[_drop_projected_dims(A.dims[1]),
_drop_projected_dims(B.dims[0])]]
data = zcsr_kron(B.data.T, A.data)
return Qobj(data, dims=dims, superrep='super')
from qutip.qobjevo import QobjEvo


© Copyright 2020 Thunz Graphics All Rights Reserved!
Discord.JS, HTML, PHP Developer.
Lore Discord Bot, Ticket Manager Discord Bot


In Linux world, disk management is an important area. To know how to use the disk, there are a few basic concepts need to be well understood. The key tool to administrate disk is fdisk.
Basic concepts
1. naming conventions
Linux has the different naming conventions for IDE drives, SCSI Disks, SD card.
IDE drives: device names are like /dev/hda, /dev/hdb.
SCSI Drives: device names would be /dev/sda, /dev/sdb.
SD card: device names would be /dev/mmcblk0, /dev/mmcblk1.
Note: USB storage device is detected as SCSI drives.
Also there is a special device file /dev/loop[0-7], which can be used to link to a disk file. we will cover it in another post.
2. partitioning
There are two different partition types: primary and extended partition. On one physical disk, it can have up to 4 primary partitions only. In order to have more partitions to be created, extended partition is introduced. Inside the extended partition, the logical partition can be created. There is no limit of number of logical partitions to be created inside an extended partition.
3. file systems
A filesystem is the methods and data structures that an operating system uses to keep track of files on a partition. In Linux, there are a number of different file systems supported for disk: FAT, ext2, ext3, ext4. To find what are all supported file systems in a running linux, do “cat /proc/filesystems”.
weng@weng-u1604:~$ cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cpuset
nodev cgroup
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev pipefs
nodev devpts
ext3
ext2
ext4
nodev hugetlbfs
vfat
nodev ecryptfs
fuseblk
nodev fuse
nodev fusectl
nodev pstore
nodev mqueue
nodev autofs
nodev vboxsf
weng@weng-u1604:~$
There are many disk administrating tools to edit disk partitions: most popular tool is fdisk.
GParted is a fancy tool, can create, resize partitions. Here we focus on “fdisk” tool as it is avaiable in most linux enviroment.
1. Find the list of existing hard disks
Below is output from my ubuntu 16.04 VM running inside VirtualBox.
weng@weng-u1604:~$ sudo fdisk -l
Disk /dev/sda: 200 GiB,<PHONE_NUMBER>00 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disklabel type : dos
Disk identifier: 0x6bd39d03
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 411043839 411041792 196G 83 Linux
/dev/sda2 411045886 419428351 8382466 4G 5 Extended
/dev/sda5 411045888 419428351 8382464 4G 82 Linux swap / Solaris
weng@weng-u1604:~$
In this case, the majority space is allocated in primary parition “/dev/sda1”, and “/dev/sda2” is created as a extended partition, which has a logical partition “/dev/sda5” used as swap space.
Another example below from a centos box, which has a 1 T SCSI hard drive and a 1GB USB memory stick inserted.
[ root@sg-centos-hv1 scratch]# fdisk -l
Disk /dev/sda: 1000.2 GB,<PHONE_NUMBER>016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0x000afcd6
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
/dev/sda2 64<PHONE_NUMBER>48832 8e Linux LVM
Disk /dev/mapper/vg_sgcentoshv1-lv_root: 53.7 GB,<PHONE_NUMBER>0 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_sgcentoshv1-lv_swap: 25.3 GB,<PHONE_NUMBER>8 bytes
255 heads, 63 sectors/track, 3080 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_sgcentoshv1-lv_home: 920.6 GB,<PHONE_NUMBER>96 bytes
255 heads, 63 sectors/track, 111928 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 10584 978943+ 6 FAT16
[ root@sg-centos-hv1 scratch]# fdisk -l /dev/sdb
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 10584 978943+ 6 FAT16
[ root@sg-centos-hv1 scratch]#
Some explanantions: there are two physical disks detected as “/dev/sda”, and “dev/sdb”.
"/dev/sda" is the 1T SCSI hard drive, it has one primary partition "/dev/sda1" which is marked bootable; there is second primary partition, which is configured to be usd by Logical Volume Manager (LVM). Inside this partition, there is one Volume Group, which has three Logical Volume created. See next post for details regarding LVM.
[ root@sg-centos-hv1 scratch]# vgdisplay
--- Volume group ---
VG Name vg_sgcentoshv1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read /write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 931.02 GiB
PE Size 4.00 MiB
Total PE 238341
Alloc PE / Size 238341 / 931.02 GiB
Free PE / Size 0 / 0
VG UUID 3CQarS-xJz8-rzmI-2nxh-j4pK-qUFr-wrRXki
[ root@sg-centos-hv1 scratch]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_sgcentoshv1/lv_root
LV Name lv_root
VG Name vg_sgcentoshv1
LV UUID ebnL5k-Gmac-6gqE-PPF5-9925-qRUM-VH24Co
LV Write Access read /write
LV Creation host, time sg-centos-hv1.cisco.com, 2014-10-02 14:50:57 -0700
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/vg_sgcentoshv1/lv_home
LV Name lv_home
VG Name vg_sgcentoshv1
LV UUID qZYut3-A0vR-uKrO-fNR6-22Jp-oa0z-NqmfKy
LV Write Access read /write
LV Creation host, time sg-centos-hv1.cisco.com, 2014-10-02 14:51:23 -0700
LV Status available
# open 1
LV Size 857.42 GiB
Current LE 219499
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
--- Logical volume ---
LV Path /dev/vg_sgcentoshv1/lv_swap
LV Name lv_swap
VG Name vg_sgcentoshv1
LV UUID BpTs4P-7cIH-C1ee-tajj-lqx2-I2Pq-A9gy3s
LV Write Access read /write
LV Creation host, time sg-centos-hv1.cisco.com, 2014-10-02 14:58:08 -0700
LV Status available
# open 1
LV Size 23.60 GiB
Current LE 6042
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
[ root@sg-centos-hv1 scratch]#
"/dev/sdb" is 1GB USB memory stick, which has FAT16 file system. It will be used in the following to do some fdisk exercise.
2. Create partitions interactively
2.1 First delete the existing partition which takes all the space.
[ root@sg-centos-hv1 scratch]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command ' c') and change display units to
sectors (command ' u').
Command (m for help): p
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 10584 978943+ 6 FAT16
Command (m for help): d
Selected partition 1
Command (m for help): p
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
2.2 Create three primary partitions and one extended partition
Command ( m for help ) : n
Command action
e extended
p primary partition ( 1-4)
p
Partition number ( 1-4) : 1
First cylinder ( 1-10948, default 1) :
Using default value 1
Last cylinder, +cylinders or +size{ K,M,G} ( 1-10948, default 10948) : +100M
Command ( m for help ) : p
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 1108 102489+ 83 Linux
Command ( m for help ) : n
Command action
e extended
p primary partition ( 1-4)
p
Partition number ( 1-4) : 2
First cylinder ( 1109-10948, default 1109) :
Using default value 1109
Last cylinder, +cylinders or +size{ K,M,G} ( 1109-10948, default 10948) : +200M
Command ( m for help ) : n
Command action
e extended
p primary partition ( 1-4)
p
Partition number ( 1-4) : 3
First cylinder ( 3324-10948, default 3324) :
Using default value 3324
Last cylinder, +cylinders or +size{ K,M,G} ( 3324-10948, default 10948) : +100M
Command ( m for help ) : n
Command action
e extended
p primary partition ( 1-4)
e
Selected partition 4
First cylinder ( 4432-10948, default 4432) :
Using default value 4432
Last cylinder, +cylinders or +size{ K,M,G} ( 4432-10948, default 10948) :
Using default value 10948
Command ( m for help ) : p
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 1108 102489+ 83 Linux
/dev/sdb2 1109 3323 204887+ 83 Linux
/dev/sdb3 3324 4431 102490 83 Linux
/dev/sdb4 4432 10948 602822+ 5 Extended
2.3 Create one logical partition inside extended partition
Command ( m for help ) : n
First cylinder ( 4432-10948, default 4432) :
Using default value 4432
Last cylinder, +cylinders or +size{ K,M,G} ( 4432-10948, default 10948) : +100M
Command ( m for help ) : p
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 1108 102489+ 83 Linux
/dev/sdb2 1109 3323 204887+ 83 Linux
/dev/sdb3 3324 4431 102490 83 Linux
/dev/sdb4 4432 10948 602822+ 5 Extended
/dev/sdb5 4432 5539 102489+ 83 Linux
Command ( m for help ) : n
First cylinder ( 5540-10948, default 5540) :
Using default value 5540
Last cylinder, +cylinders or +size{ K,M,G} ( 5540-10948, default 10948) :
Using default value 10948
Command ( m for help ) : p
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 1108 102489+ 83 Linux
/dev/sdb2 1109 3323 204887+ 83 Linux
/dev/sdb3 3324 4431 102490 83 Linux
/dev/sdb4 4432 10948 602822+ 5 Extended
/dev/sdb5 4432 5539 102489+ 83 Linux
/dev/sdb6 5540 10948 500332 83 Linux
2.4 Save the partition tables and recheck the table
Command ( m for help ) : w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[ root@sg-centos-hv1 scratch]# fdisk -l /dev/sdb
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
185 heads, 1 sectors/track, 10948 cylinders
Units = cylinders of 185 * 512 = 94720 bytes
Sector size ( logical/physical) : 512 bytes / 512 bytes
I/O size ( minimum/optimal) : 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 1108 102489+ 83 Linux
/dev/sdb2 1109 3323 204887+ 83 Linux
/dev/sdb3 3324 4431 102490 83 Linux
/dev/sdb4 4432 10948 602822+ 5 Extended
/dev/sdb5 4432 5539 102489+ 83 Linux
/dev/sdb6 5540 10948 500332 83 Linux
[ root@sg-centos-hv1 scratch]#
3. Create partitions through shell script
Soemtimes it is needed to do disk partition in an automatic way. See below that all above steps can be automated:
[ root@sg-centos-hv1 scratch]# D = "p \n d \n p \n "
[ root@sg-centos-hv1 scratch]# P1 = "n \n p \n 1 \n\n +100M \n "
[ root@sg-centos-hv1 scratch]# P2 = "n \n p \n 2 \n\n +100M \n "
[ root@sg-centos-hv1 scratch]# P3 = "n \n p \n 3 \n\n +100M \n "
[ root@sg-centos-hv1 scratch]# P4 = "n \n e \n\n\n "
[ root@sg-centos-hv1 scratch]# P5 = "n \n\n +100M \n "
[ root@sg-centos-hv1 scratch]# P6 = "n \n\n\n "
[ root@sg-centos-hv1 scratch]# FINAL = "p \n w \n q \n "
[ root@sg-centos-hv1 scratch]# echo -e $D$P1$P2$P3$P4$P5$P6$FINAL | fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command ' c') and change display units to
sectors (command ' u').
Command (m for help):
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
32 heads, 62 sectors/track, 1020 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 104 103137 83 Linux
Command (m for help): Selected partition 1
Command (m for help):
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
32 heads, 62 sectors/track, 1020 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
Command (m for help): Command action
e extended
p primary partition (1-4)
Partition number (1-4): First cylinder (1-1020, default 1): Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1020, default 1020):
Command (m for help): Command action
e extended
p primary partition (1-4)
Partition number (1-4): First cylinder (105-1020, default 105): Using default value 105
Last cylinder, +cylinders or +size{K,M,G} (105-1020, default 1020):
Command (m for help): Command action
e extended
p primary partition (1-4)
Partition number (1-4): First cylinder (209-1020, default 209): Using default value 209
Last cylinder, +cylinders or +size{K,M,G} (209-1020, default 1020):
Command (m for help): Command action
e extended
p primary partition (1-4)
Selected partition 4
First cylinder (313-1020, default 313): Using default value 313
Last cylinder, +cylinders or +size{K,M,G} (313-1020, default 1020): Using default value 1020
Command (m for help): First cylinder (313-1020, default 313): Using default value 313
Last cylinder, +cylinders or +size{K,M,G} (313-1020, default 1020):
Command (m for help): First cylinder (417-1020, default 417): Using default value 417
Last cylinder, +cylinders or +size{K,M,G} (417-1020, default 1020): Using default value 1020
Command (m for help):
Disk /dev/sdb: 1037 MB,<PHONE_NUMBER> bytes
32 heads, 62 sectors/track, 1020 cylinders
Units = cylinders of 1984 * 512 = 1015808 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 1 104 103137 83 Linux
/dev/sdb2<PHONE_NUMBER>68 83 Linux
/dev/sdb3<PHONE_NUMBER>68 83 Linux
/dev/sdb4 313 1020 702336 5 Extended
/dev/sdb5<PHONE_NUMBER>37 83 Linux
/dev/sdb6 417 1020 599137 83 Linux
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@sg-centos-hv1 scratch]#
4. Make file system on the partition
Now the disk /dev/sdb has been partitioned nicely. To use the parition, first we need make a file system on the partition, let’s pick partition /dev/sdb2 t be ext2 file system; /dev/sdb3 to be ext3 file system, and /dev/sdb5 to be ext4 file system.
[ root@sg-centos-hv1 scratch]# mkfs.ext2 /dev/sdb2
mke2fs 1.41.12 ( 17-May-2010)
Filesystem label =
OS type : Linux
Block size = 1024 ( log = 0)
Fragment size = 1024 ( log = 0)
Stride = 0 blocks, Stripe width = 0 blocks
25792 inodes, 103168 blocks
5158 blocks ( 5.00%) reserved for the super user
First data block = 1
Maximum filesystem blocks = 67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1984 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[ root@sg-centos-hv1 scratch]# mkfs.ext3 /dev/sdb3
mke2fs 1.41.12 ( 17-May-2010)
Filesystem label =
OS type : Linux
Block size = 1024 ( log = 0)
Fragment size = 1024 ( log = 0)
Stride = 0 blocks, Stripe width = 0 blocks
25792 inodes, 103168 blocks
5158 blocks ( 5.00%) reserved for the super user
First data block = 1
Maximum filesystem blocks = 67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1984 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Creating journal ( 4096 blocks) : done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[ root@sg-centos-hv1 scratch]# mkfs.ext4 /dev/sdb5
mke2fs 1.41.12 ( 17-May-2010)
Filesystem label =
OS type : Linux
Block size = 1024 ( log = 0)
Fragment size = 1024 ( log = 0)
Stride = 0 blocks, Stripe width = 0 blocks
25792 inodes, 103136 blocks
5156 blocks ( 5.00%) reserved for the super user
First data block = 1
Maximum filesystem blocks = 67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1984 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Creating journal ( 4096 blocks) : done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[ root@sg-centos-hv1 scratch]# mkfs.ext4 /dev/sdb4
mke2fs 1.41.12 ( 17-May-2010)
mkfs.ext4: inode_size ( 128) * inodes_count ( 0) too big for a
filesystem with 0 blocks, specify higher inode_ratio ( -i )
or lower inode count ( -N ) .
[ root@sg-centos-hv1 scratch]#
Remeber here that /dev/sdb4 is an extended partition, It can not be formated to certain file system.
[ root@sg-centos-hv1 scratch]# mkfs.ext4 /dev/sdb4
mke2fs 1.41.12 ( 17-May-2010)
mkfs.ext4: inode_size ( 128) * inodes_count ( 0) too big for a
filesystem with 0 blocks, specify higher inode_ratio ( -i )
or lower inode count ( -N ) .
[ root@sg-centos-hv1 scratch]# mkfs.ext2 /dev/sdb4
mke2fs 1.41.12 ( 17-May-2010)
mkfs.ext2: inode_size ( 128) * inodes_count ( 0) too big for a
filesystem with 0 blocks, specify higher inode_ratio ( -i )
or lower inode count ( -N ) .
[ root@sg-centos-hv1 scratch]#
5. Mount the partition for OS to use
Now the partitions /dev/sdb2 , /dev/sdb3, /dev/sdb5 are formatted with ext2, ext3, ext4 file system, they can be mounted and used.
[ root@sg-centos-hv1 scratch]# mkdir /mnt/usb2 /mnt/usb3 /mnt/usb5
[ root@sg-centos-hv1 scratch]# mount /dev/sdb2 /mnt/usb2
[ root@sg-centos-hv1 scratch]# mount /dev/sdb3 /mnt/usb3
[ root@sg-centos-hv1 scratch]# mount /dev/sdb5 /mnt/usb5
[ root@sg-centos-hv1 scratch]# touch /mnt/ubs2/readme2.txt
[ root@sg-centos-hv1 scratch]# touch /mnt/usb2/readme2.txt
[ root@sg-centos-hv1 scratch]# touch /mnt/usb3/readme3.txt
[ root@sg-centos-hv1 scratch]# touch /mnt/usb5/readme5.txt
[ root@sg-centos-hv1 scratch]# ls -l /mnt/usb2/readme2.txt
-rw-r--r-- . 1 root root 0 Aug 8 16:13 /mnt/usb2/readme2.txt
[ root@sg-centos-hv1 scratch]# ls -l /mnt/usb3/readme3.txt
-rw-r--r-- . 1 root root 0 Aug 8 16:13 /mnt/usb3/readme3.txt
[ root@sg-centos-hv1 scratch]# ls -l /mnt/usb5/readme5.txt
-rw-r--r-- . 1 root root 0 Aug 8 16:13 /mnt/usb5/readme5.txt
[ root@sg-centos-hv1 scratch]# umount /mnt/usb[235]
[ root@sg-centos-hv1 scratch]#


2019-2023 UCC Business Information Systems Student
I am BIS student.
- I have successfully been selected to be first year rep on the BIS Society.
- I acheived a 2:1 in my first semester results.
2013-2019 Scoil Mhuire College Cork
-I acheived 520 points in my Leaving Cert
-Business - H2
-Economics - H2
-Biology - H2
-Home Economics - H2
-Maths - H4
-English - H3
Return To Home


Introduction
Pagination Framework supports Spring Framework version 3.x. Our example application is using Spring Framework 3.2.3.RELEASE.
Implementation is mostly identical to using Spring Framework 4.x.
Please refer to my other blog post "Pagination with Spring Framework 4.x" on
http://paginationspring.blogspot.com.
Running our example
Click "Download Zip" button on this page
https://github.com/paginationspring/pagination-example-spring3.
The zip file included full source code in this document. Make sure you have Maven and JDK installed. Open command prompt and type run.bat (for window OS) or ./run.sh (for linux OS). Choose your application server and wait around 30 seconds for the server to startup. After server started, go to url http://localhost:8080/pagination-example-spring3
Help improve this document
You can help improve this document by "fork" this repository
https://github.com/paginationspring/pagination/tree/master/doc.
After making changes to this document, you can submit a pull request and I will change this document accordingly.
To report bugs, please use
https://github.com/paginationspring/pagination/issues.


Upload Google Maps location history JSON or enter details manually to start tracing.
File uploaded successfully!
{{showMessage()}}
| Date | {{element.date}} | User Location | {{element.loc}} | User Time | {{element.time}} | Patient Location | {{element.ploc}} | Patient Time | {{element.ptime}} |
|
|
|---|


#include “syscalls.h” /* getchar: simple buffered version */ int getchar(void) { static char buf[BUFSIZ]; static char *bufp = buf; static int n = 0; if (n == 0) { /* buffer is empty */ n = read(0, buf, sizeof buf); bufp = buf; } return (–n >= 0) ? (unsigned char) *bufp++ : EOF; }
The vim keybindings are enabled by including keymap/vim.js and setting the keyMap
option to "vim"
. Because CodeMirror’s internal API is quite different from Vim, they are only a loose approximation of actual vim bindings, though.


Base to convert from:
Number to convert:
Base to convert to:
Result of the conversion:
Convert
Note: for converting hexadecimal numbers to any other system use only lowercase letters.


Aggregator Pattern
The aggregator pattern supports writing actors that aggregate data from multiple other actors and updates its state based on those responses. It is even harder to optionally aggregate more data based on the runtime state of the actor or take certain actions (sending another message and get another response) based on two or more previous responses.
A common thought is to use the ask pattern to request information from other actors. However, ask creates another actor specifically for the ask. We cannot use a callback from the future to update the state as the thread executing the callback is not defined. This will likely close-over the current actor.
The aggregator pattern solves such scenarios. It makes sure we're acting from the same actor in the scope of the actor receive.
Introduction
The aggregator pattern allows match patterns to be dynamically added to and removed from an actor from inside the message handling logic. All match patterns are called from the receive loop and run in the thread handling the incoming message. These dynamically added patterns and logic can safely read and/or modify this actor's mutable state without risking integrity or concurrency issues.
Usage
To use the aggregator pattern, you need to extend the Aggregator trait. The trait takes care of receive and actors extending this trait should not override receive. The trait provides the expect, expectOnce, and unexpect calls. The expect and expectOnce calls return a handle that can be used for later de-registration by passing the handle to unexpect.
expect is often used for standing matches such as catching error messages or timeouts.
expect {
case TimedOut ⇒ collectBalances(force = true)
}
expectOnce is used for matching the initial message as well as other requested messages
expectOnce {
case GetCustomerAccountBalances(id, types) ⇒
new AccountAggregator(sender(), id, types)
case _ ⇒
sender() ! CantUnderstand
context.stop(self)
}
def fetchCheckingAccountsBalance() {
context.actorOf(Props[CheckingAccountProxy]) ! GetAccountBalances(id)
expectOnce {
case CheckingAccountBalances(balances) ⇒
results += (Checking → balances)
collectBalances()
}
}
unexpect can be used for expecting multiple responses until a timeout or when the logic dictates such an expect no longer applies.
val handle = expect {
case Response(name, value) ⇒
values += value
if (values.size > 3) processList()
case TimedOut ⇒ processList()
}
def processList() {
unexpect(handle)
if (values.size > 0) {
context.actorSelection("/user/evaluator") ! values.toList
expectOnce {
case EvaluationResults(name, eval) ⇒ processFinal(eval)
}
} else processFinal(List.empty[Int])
}
As the name eludes, expect keeps the partial function matching any received messages until unexpect is called or the actor terminates, whichever comes first. On the other hand, expectOnce removes the partial function once a match has been established.
It is a common pattern to register the initial expectOnce from the construction of the actor to accept the initial message. Once that message is received, the actor starts doing all aggregations and sends the response back to the original requester. The aggregator should terminate after the response is sent (or timed out). A different original request should use a different actor instance.
As you can see, aggregator actors are generally stateful, short lived actors.
Sample Use Case - AccountBalanceRetriever
This example below shows a typical and intended use of the aggregator pattern.
final case class InitialRequest(name: String)
final case class Request(name: String)
final case class Response(name: String, value: String)
final case class EvaluationResults(name: String, eval: List[Int])
final case class FinalResponse(qualifiedValues: List[String])
/**
* An actor sample demonstrating use of unexpect and chaining.
* This is just an example and not a complete test case.
*/
class ChainingSample extends Actor with Aggregator {
expectOnce {
case InitialRequest(name) ⇒ new MultipleResponseHandler(sender(), name)
}
class MultipleResponseHandler(originalSender: ActorRef, propName: String) {
import context.dispatcher
import collection.mutable.ArrayBuffer
val values = ArrayBuffer.empty[String]
context.actorSelection("/user/request_proxies") ! Request(propName)
context.system.scheduler.scheduleOnce(50.milliseconds, self, TimedOut)
val handle = expect {
case Response(name, value) ⇒
values += value
if (values.size > 3) processList()
case TimedOut ⇒ processList()
}
def processList() {
unexpect(handle)
if (values.size > 0) {
context.actorSelection("/user/evaluator") ! values.toList
expectOnce {
case EvaluationResults(name, eval) ⇒ processFinal(eval)
}
} else processFinal(List.empty[Int])
}
def processFinal(eval: List[Int]) {
// Select only the entries coming back from eval
originalSender ! FinalResponse(eval map values)
context.stop(self)
}
}
}
class AggregatorSpec extends TestKit(ActorSystem("AggregatorSpec")) with ImplicitSender with FunSuiteLike with Matchers with BeforeAndAfterAll {
override def afterAll(): Unit = {
shutdown()
}
test("Test request 1 account type") {
system.actorOf(Props[AccountBalanceRetriever]) ! GetCustomerAccountBalances(1, Set(Savings))
receiveOne(10.seconds) match {
case result: List[_] ⇒
result should have size 1
case result ⇒
assert(false, s"Expect List, got ${result.getClass}")
}
}
test("Test request 3 account types") {
system.actorOf(Props[AccountBalanceRetriever]) !
GetCustomerAccountBalances(1, Set(Checking, Savings, MoneyMarket))
receiveOne(10.seconds) match {
case result: List[_] ⇒
result should have size 3
case result ⇒
assert(false, s"Expect List, got ${result.getClass}")
}
}
}
final case class TestEntry(id: Int)
class WorkListSpec extends FunSuiteLike {
val workList = WorkList.empty[TestEntry]
var entry2: TestEntry = null
var entry4: TestEntry = null
test("Processing empty WorkList") {
// ProcessAndRemove something in the middle
val processed = workList process {
case TestEntry(9) ⇒ true
case _ ⇒ false
}
assert(!processed)
}
test("Insert temp entries") {
assert(workList.head === workList.tail)
val entry0 = TestEntry(0)
workList.add(entry0, permanent = false)
assert(workList.head.next != null)
assert(workList.tail === workList.head.next)
assert(workList.tail.ref.get === entry0)
val entry1 = TestEntry(1)
workList.add(entry1, permanent = false)
assert(workList.head.next != workList.tail)
assert(workList.head.next.ref.get === entry0)
assert(workList.tail.ref.get === entry1)
entry2 = TestEntry(2)
workList.add(entry2, permanent = false)
assert(workList.tail.ref.get === entry2)
val entry3 = TestEntry(3)
workList.add(entry3, permanent = false)
assert(workList.tail.ref.get === entry3)
}
test("Process temp entries") {
// ProcessAndRemove something in the middle
assert(workList process {
case TestEntry(2) ⇒ true
case _ ⇒ false
})
// ProcessAndRemove the head
assert(workList process {
case TestEntry(0) ⇒ true
case _ ⇒ false
})
// ProcessAndRemove the tail
assert(workList process {
case TestEntry(3) ⇒ true
case _ ⇒ false
})
}
test("Re-insert permanent entry") {
entry4 = TestEntry(4)
workList.add(entry4, permanent = true)
assert(workList.tail.ref.get === entry4)
}
test("Process permanent entry") {
assert(workList process {
case TestEntry(4) ⇒ true
case _ ⇒ false
})
}
test("Remove permanent entry") {
val removed = workList remove entry4
assert(removed)
}
test("Remove temp entry already processed") {
val removed = workList remove entry2
assert(!removed)
}
test("Process non-matching entries") {
val processed =
workList process {
case TestEntry(2) ⇒ true
case _ ⇒ false
}
assert(!processed)
val processed2 =
workList process {
case TestEntry(5) ⇒ true
case _ ⇒ false
}
assert(!processed2)
}
test("Append two lists") {
workList.removeAll()
0 to 4 foreach { id ⇒ workList.add(TestEntry(id), permanent = false) }
val l2 = new WorkList[TestEntry]
5 to 9 foreach { id ⇒ l2.add(TestEntry(id), permanent = true) }
workList addAll l2
@tailrec
def checkEntries(id: Int, entry: WorkList.Entry[TestEntry]): Int = {
if (entry == null) id
else {
assert(entry.ref.get.id === id)
checkEntries(id + 1, entry.next)
}
}
assert(checkEntries(0, workList.head.next) === 10)
}
test("Clear list") {
workList.removeAll()
assert(workList.head.next === null)
assert(workList.tail === workList.head)
}
val workList2 = WorkList.empty[PartialFunction[Any, Unit]]
val fn1: PartialFunction[Any, Unit] = {
case s: String ⇒
val result1 = workList2 remove fn1
assert(result1 === true, "First remove must return true")
val result2 = workList2 remove fn1
assert(result2 === false, "Second remove must return false")
}
val fn2: PartialFunction[Any, Unit] = {
case s: String ⇒
workList2.add(fn1, permanent = true)
}
test("Reentrant insert") {
workList2.add(fn2, permanent = false)
assert(workList2.head.next != null)
assert(workList2.tail == workList2.head.next)
// Processing inserted fn1, reentrant adding fn2
workList2 process { fn ⇒
var processed = true
fn.applyOrElse("Foo", (_: Any) ⇒ processed = false)
processed
}
}
test("Reentrant delete") {
// Processing inserted fn2, should delete itself
workList2 process { fn ⇒
var processed = true
fn.applyOrElse("Foo", (_: Any) ⇒ processed = false)
processed
}
}
}
Sample Use Case - Multiple Response Aggregation and Chaining
A shorter example showing aggregating responses and chaining further requests.
final case class InitialRequest(name: String)
final case class Request(name: String)
final case class Response(name: String, value: String)
final case class EvaluationResults(name: String, eval: List[Int])
final case class FinalResponse(qualifiedValues: List[String])
/**
* An actor sample demonstrating use of unexpect and chaining.
* This is just an example and not a complete test case.
*/
class ChainingSample extends Actor with Aggregator {
expectOnce {
case InitialRequest(name) ⇒ new MultipleResponseHandler(sender(), name)
}
class MultipleResponseHandler(originalSender: ActorRef, propName: String) {
import context.dispatcher
import collection.mutable.ArrayBuffer
val values = ArrayBuffer.empty[String]
context.actorSelection("/user/request_proxies") ! Request(propName)
context.system.scheduler.scheduleOnce(50.milliseconds, self, TimedOut)
val handle = expect {
case Response(name, value) ⇒
values += value
if (values.size > 3) processList()
case TimedOut ⇒ processList()
}
def processList() {
unexpect(handle)
if (values.size > 0) {
context.actorSelection("/user/evaluator") ! values.toList
expectOnce {
case EvaluationResults(name, eval) ⇒ processFinal(eval)
}
} else processFinal(List.empty[Int])
}
def processFinal(eval: List[Int]) {
// Select only the entries coming back from eval
originalSender ! FinalResponse(eval map values)
context.stop(self)
}
}
}
Pitfalls
The current implementation does not match the sender of the message. This is designed to work with ActorSelection as well as ActorRef. Without the sender(), there is a chance a received message can be matched by more than one partial function. The partial function that was registered via expect or expectOnce first (chronologically) and is not yet de-registered by unexpect takes precedence in this case. Developers should make sure the messages can be uniquely matched or the wrong logic can be executed for a certain message.
The sender referenced in any expect or expectOnce logic refers to the sender() of that particular message and not the sender() of the original message. The original sender() still needs to be saved so a final response can be sent back.
context.become is not supported when extending the Aggregator trait.
We strongly recommend against overriding receive. If your use case really dictates, you may do so with extreme caution. Always provide a pattern match handling aggregator messages among your receive pattern matches, as follows:
case msg if handleMessage(msg) ⇒ // noop // side effects of handleMessage does the actual match
Sorry, there is not yet a Java implementation of the aggregator pattern available.
Contents


08 Oct 2013
Enterprise Mobile App Store for effective Mobile App Management
App Stores - We have become familiar with AppStore due to the famous Apple Appstore and Google Play Store. AppStore’s have become a lifestyle need for consumers and the increasing reliance of app stores for discovery of interesting apps, books etc brings about the requirement to have an Enterprise AppStore.
If we take an organization that facilitates mobile-savvy users - it will have many mobile applications built for internal use and external apps provisioned by the Enterprise (where the Enterprise reimburse the user for the app).
When you want to manage Mobile Applications better and provision them to devices and have the same Apple AppStore experience for users of the Enterprise - WSO2Mobile Mobile Application Management suite provides the tools necessary for it.
The business user will log into the Enterprise AppStore and view the apps that interest him. He will install the applications to his preferred device (this requires WSO2Mobile MDM integration) with in the comfort of the browser. Also he can install the corporate sanctioned public App Store apps from the Enterprise AppStore itself.
WSO2Mobile MAM solution also integrates with the Apple Volume Purchase Program to facilitate provisioning of bulk purchased apps to users. An example would be - bulk purchasing 100 licenses of Enterprise Sales automation app from the Apple AppStore and provisioning devices through the Enterprise AppStore.
On the context of the application lifecycle - WSO2Mobile MAM provides a similar developer ecosystem (as Apple AppStore and Google Play Store). The Developer will log into the Publisher console and submit his application for review purpose. A reviewer will log into the Publisher and review the application and publish it to the App Store. The Store front will only display the applications that are reviewed via a reviewer.
Till next time mate,
Dulitha
at 23:29


{% block css_extra %} {% endblock %}
You are seeing this because you have JavaScript disabled. The maps won't work without JavaScript, and there is not much that can be done about that. This is an open source project, so feel free to inspect the source. I promise it isn't mean!


Queries can be refined using a collection of chainable helper functions. Let’s filter our query to the administrator subset.


George Bailey to become national selector for Australia
by PTIFormer limited-overs captain George Bailey is set to be Australia’s new selector alongside coach Justin Langer and chairman Trevor Hohns.
Bailey, 37, is still an active cricketer and plies his trade in the Big Bash League for Hobart Hurricanes and in the Sheffield Shield for Tasmania.
According to a report in The Sydney Morning Herald and The Age, Bailey will not be the first active cricketer to be a national selector. Don Bradman and Michael Clarke have enjoyed the post while being captain of the national team.


Keyboard Shortcuts
- Up/Down arrow: blend from selected color to the next set color above or below
- Left: generates shadow gravitating towards the shadow color set in options
- Right: generates highlight gravitating towards the highlight color set in options
- T: brings up a menu for quick actions to take on the selected block
- L: lightens the current color
- B: brightens the current color
- D: darkens the current color
- S: saturates the current color
- E: desaturates the current color
- H: shifts the hue by 10 for the current color
Color blending with the up/down arrow requires that you select a color and that there is another color somewhere
above or below the selected color. It will blend from one to the other filling in all the blocks in between.
If you press the "Show Options" button you can select the background color and the shadow/highlight color that
is used when pressing right/left to generate shadows and highlights.


Hamilton should be acknowledged with knighthood – Motorsport UK chief Richards
Hamilton won his sixth Formula One world championship earlier this month.
Motorsport UK chairman David Richards has said he will be disappointed if Lewis Hamilton is not recognised with a knighthood in the New Year honours list.
Former Labour minister Lord Hain has written to Downing Street, calling on Hamilton, who earlier this month closed out his sixth Formula One world championship, to be rewarded with an upgrade on the MBE he received 11 years ago.
Hamilton’s sporting contemporaries Andy Murray, the three-time Grand Slam champion, and Mo Farah, who won double Olympic gold at the 2012 and 2016 Games, have both been knighted in recent times.
“Motor racing has had its fair share of accolades over the years. Lewis is our latest hero and he has surpassed anything we have ever had in the sport. It is only right that he should be acknowledged, too.”
Hamilton, 34, has broken down racial barriers on his remarkable journey to move within one of Michael Schumacher’s record haul of seven world championships.
Lewis is our latest hero and he has surpassed anything we have ever had in the sport. It is only right that he should be acknowledged, tooDavid Richards
From the humble beginnings of a Stevenage council estate, Hamilton, who will start his title parade at this weekend’s Brazilian Grand Prix, remains Formula One’s only black driver.
Hamilton is also outspoken on the environment and here in Interlagos, vowed to work alongside F1 bosses in their ambitious goal to make the sport carbon neutral by 2030.
“I have watched Lewis mature and develop as an individual and he has become a great ambassador for the sport,” added Richards.
“As a youngster, we all go through difficult periods, but he has come out of it now as a very mature and robust young man who is going to be a great ambassador for motorsport, for the environment, and for under-privileged children in the UK for a long time to come.”


Comédie-Français Theater in Paris
Drag the slider to look at theather information from various years.
Year:


Paste your HTML here to minify the markup, inline JS and CSS, apply LZ compression, and leave absolute-url scripts in the clear. About this.


This site looks up a channel's follower list and sorts them by ascending by date followed
Be warned, the look ups take place in your browser. Since beam rate-limits requests to its API on a per IP basis excessive use of this may result in you being unable to access the API for upto an hour.


Myanmar ethnic rebels release Indians held in Rakhine after one dies
YANGON: Ethnic rebels in Myanmar have detained and interrogated a lawmaker and several Indian nationals, one of whom died, the rebels said on Monday (Nov 4), in the latest escalation of violence in the restive western state of Rakhine.
Tens of thousands of people have been displaced across Rakhine since clashes began in December, bringing fresh chaos to the region, from which more than 730,000 Rohingya Muslims fled a military crackdown in 2017.
Sunday's incident was the first time foreigners have been abducted in the fighting between government troops and the Arakan Army, an ethnic armed group that recruits from the mostly Buddhist local majority in its quest for greater state autonomy.
A spokesman for the group said it stopped two speedboats carrying the men on Sunday and took them for interrogation, but one died of exhaustion en route to shore.
"Our medics tried their best to save him, but he died within a very short time," the Arakan Army spokesman, Khine Thu Kha, told Reuters, adding that the group was deeply sorry for the family, and freed the survivors.
In a statement, the group identified the dead man as Vinoo Gopal, but gave no details of where the men were being taken at the time, or what they were to have been interrogated about.
The lawmaker remains in custody, however.
Authorities in Myanmar's capital did not immediately respond to telephone calls from Reuters to seek comment. State authorities could not immediately be contacted for comment.
Officials of India's embassy in Yangon reached on social media did not immediately respond to questions from Reuters.
The Indians were working on a road being built in an area on the border between the neighbours, said Narinjara, a media outlet based in Rakhine.
Last month, the Arakan Army said Myanmar’s army sank several boats carrying dozens of soldiers and police officers taken hostage by the ethnic group, adding that many had died.
Troops opened fire on three vessels in Rathedaung township, where the group was holding more than 50 people, most of them members of the security forces it had abducted a day earlier sinking two and damaging one, it added.
Earlier that month, suspected rebels disguised as sports players boarded a bus in the state and took dozens of firefighters and civilians hostage.


-
Experience the power of a bookbook™
www.youtube.com
At only 8mm thin, and weighing in at less than 400g, the 2015 IKEA Catalogue comes pre-installed with thousands of home furnishing ideas. Join the ...
-
Kevin Durant ENTIRE MVP AWARDS CEREMONY SPEECH
www.youtube.com
Kevin Durant MVP Awards Speech after receiving his first Most Valuable Player Award.
-
The 3 Ps of Entrepreneurs (and ‘Permission’ Isn't One of Them)
www.linkedin.com
New York City is a fascinating place, but especially during UN Week. Lots of interesting people doing interesting work on behalf of the world. I was ...
-
The Valuable Data in Your Gut
www.linkedin.com
The best business decisions take into account all the numbers and facts on the table, and then something from beyond the table: the brain’s total ...
-
The Art of Fast Failure
www.linkedin.com
Perhaps Silicon Valley's best-articulated attribute on the way to the success is a striking lack of fear of failure. Failure, it is frequently said, ...
-
The Beginning of A New Chapter in India-China Relations
www.linkedin.com
Friends,Very recently I got an opportunity to welcome President Xi Jinping to India. It was a great opportunity to host him within months of the ...
-
A Drone Captured This Photo Of Huge Shark Swimming A Few Hundred Feet Away ...
www.businessinsider.com
There’s no confirmation yet on what type of shark it is.
-
Michael Dell Opens Up, A Year After Buying Back His Company
www.linkedin.com
It was a wide-ranging interview for CNBC Squawk Alley. I sat down with Dell founder and CEO Michael Dell a year after shareholders approve his bid, ...
-
A Dozen Things I've Learned from Henry Ellenbogen
25iq.com
The investments of Henry Ellenbogen' s New Horizons Fund are particularly interesting since they span both public and late-state private markets. ...
-
Gurus, goals and mindfulness
www.linkedin.com
I remember my 24th birthday very clearly. It was 1990. I had just finished working as the associate to the executive producer on the film The Indian ...
-
Can big data solve veteran unemployment?
www.washingtonpost.com
Many veterans are looking for work. And many employers have committed to hiring them. So why is veteran unemployment still high?
-
Top 10 Things I Learned at Linkedin Sales Connect 2014
www.linkedin.com
I attended Linkedin's first global user conference called Sales Connect, in San Francisco. The focus of the conference was to bring together the ...
-
DonorsChoose.org: Teachers ask. You choose.
www.donorschoose.org
DonorsChoose.org is an online charity that makes it easy to help students in need through school donations
-
Most Leadership Advice Is Useless. Here's What I Really Learned in Running ...
www.linkedin.com
They fired me. They fired me as CEO. Then they fired me as a board member. Then they took away my shares. And now none of them ever talk to me.I ...
-
3 Things I've Learned from Interns
www.linkedin.com
I’m a big believer in the value of internships, that’s why IDEO runs a substantial program every year. As well as getting experience working on real ...
-
Peter Thiel, Marc Andreessen, And Marissa Mayer Want To Teach You 'How To ...
www.businessinsider.com
A free course worth checking out.
-
Welcome onboard
www.linkedin.com
It’s an easy mistake to make to think the main part of hiring new talent is the initial candidate attraction phase, followed by the job acceptance ...
-
Venture Capitalist Sounds Alarm on Startup Investing
online.wsj.com
Silicon Valley may have taken on more risk than it can handle, according to prominent venture capitalist Bill Gurley, who cited potential cracks in ...
-
How LinkedIn, Nike, and Apple Tell Inspiring Stories
blog.newscred.com
By Jen Cohen Crompton • NewsCred Blog • Jul 30, 2014
-
The Best Entrepreneurs Don't Know When to Quit
www.linkedin.com
Would you have funded Grace & Lace? Tell us in the comments.I sit in a privileged seat as a Shark/investor on the Emmy-winning reality show Shark ...
-
Twitter Media Boss Katie Jacobs Stanton Wants More Partners in More ...
recode.net
But she also needs to convince them that Twitter is an ally, not a competitor.
-
An Open Letter to the President: Why We Need Immigration Reform
www.linkedin.com
Dear President Obama,Eleven years ago, I took a flight from India to the “land of opportunity” — America. I was 17 then, and it was the first time I ...
-
Internet Brands acquires High Gear Media, grows automotive audience to 35 ...
pando.com
Internet Brands (IB) has acquired High Gear Media, the companies announced today. The deal, which will see the six-year-old automotive publisher ...
-
Giving Our Members More Control
blog.linkedin.com
At LinkedIn, our members always come first. We know you take your safety and privacy very seriously. We are starting to roll out three new tools to ...
-
Design Night Gone Good: Social Solutions & Cocktails | Autodesk Gallery
sf.funcheap.com
Design isn’t just streamlined furniture, shiny gadgets, and sleek cars. It also has the capacity to have a deep and profound impact on peoples’ ...
-
Vice Media Stakes Future on A&E Networks Deal - NYTimes.com
www.nytimes.com
After spending the summer flirting with various suitors, Vice Media said on Friday that it was close to choosing a partner: A&E Networks.
-
The Changing Face of Temporary Employment
www.nytimes.com
The number of temps has reached a new high, and many are working in more dangerous situations than full-time workers.
-
The Best Weekend Goal Ever
www.linkedin.com
I just bought a couple of Johnnie-O shirts, and stopped by to read their blog, which included the below winner of their Awesome Dad Hall of Fame ...
-
Déjà Vu All Over Again
www.linkedin.com
Earlier this week I posted about the efforts of George Washington University to restrict the choices (or at least the knowledge that they do have ...
-
The System is Rigged Against the Student.
www.linkedin.com
I’ve been the CEO of Chegg for more than four years, and in that time the most important lesson I’ve learned is that the system is built to support ...


This is a paragraph.
This is another paragraph. This will be used in many exercises.
This is, Jquery
Exerciseto.


OnDeviceAI vision is to run any AI models on any devices efficiently. We explore state of the arts deep neural nets, generative and reinforcement learnings to embed machine intelligence on Smartphones, IoTs, and Robots. We focus on cutting edge use cases to improve human productivities in any industries.
OnDeviceAI mission is to reach human level intelligence on "basic recognition" for images, texts and voices. We expand those basic capabilities to generate synthetic data samples from estimated real data distributions. Later, we enable natural learning from data with reinforcement paradigm. All capabilities can run efficiently on devices.


{% extends "blog/base_blog.html" %} {% block title %}Entries in category "{{ object.title }}"{% endblock %} {% block headlinks %} {{ block.super }} {% endblock %} {% block content %} {% load static typogrify_tags %}
{{ entries.count }} entr{{ entries.count|pluralize:"y,ies" }} in this category. See also: feed of entries in this category, list of all entry categories.
Entry published {{ entry.pub_date|date:"F j, Y" }}. Read full entry.


Griddles
Column Count
Choose a Grid Type
Static Grid-960 Based
Fluid Grid-960 Based
Column Width
Max Width (0 for full):
Gutter Width
Download PS
Download FW
Download CSS
View Source
Close Source


| Interface | Description |
|---|---|
| IKandyGroup |
Contains the group's information
|
| IKandyGroupDestroyed |
Interface which represents the group's destroy action.
|
| IKandyGroupMessage |
Interface represent the KandyMessage for group messaging
|
| IKandyGroupParticipantJoined |
Interface which represents the participant's join action.
|
| IKandyGroupParticipantKicked |
Interface which represents the participant's kick action.
|
| IKandyGroupParticipantLeft |
Interface which represents the participant's left action.
|
| IKandyGroupService |
Interface represents the actions for group and group's participants management
|
| IKandyGroupUpdated |
Interface which represents the group's update action.
|
| KandyGroupServiceNotificationListener |
Listen to group Service notifications
|
| Class | Description |
|---|---|
| KandyGroup |
Contains the group's data
|
| KandyGroupParams |
Contains the
KandyGroup params that could be updated and used for updating the group
by passing parameters to the server |
| KandyGroupParticipant |
Represents the group chat participants with properties
|
| KandyGroupResponseListener |
Listen to the
KandyGroup actions(callbacks) and handles the responses |
| KandyGroupSettings |
The settings object to configure service specific configurations
|
| KandyGroupsResponseListener |
Listen to the
KandyGroup actions(callbacks) and handles the responses |
Copyright © 2014 GENBAND, Inc. All Rights Reserved.


| 1 |
| h01 |
| CS16 M18 |
| Name: | ||||
|---|---|---|---|---|
| (as it would appear on official course roster) | ||||
| Umail address: | @umail.ucsb.edu | |||
| Optional: name you wish to be called if different from name above. | ||||
| Optional: name of "homework buddy" (leaving this blank signifies "I worked alone" |
h01: Computer systems, introduction to C++
| ready? | assigned | due | points |
|---|---|---|---|
| true | Sun 06/24 08:00AM | Tue 07/03 11:00AM |
You may collaborate on this homework with AT MOST one person, an optional "homework buddy".
MAY ONLY BE TURNED IN IN THE LECTURE LISTED ABOVE AS THE DUE DATE,
OR IF APPLICABLE, SUBMITTED ON GRADESCOPE. There is NO MAKEUP for missed assignments;
in place of that, we drop the four lowest scores (if you have zeros, those are the four lowest scores).
Reading: Computer systems, introduction to C++, Chapter 1: pages 2 - 10 and 18 - 27
- (10 pts) Fill in the information in the header. The following are required to get the 10 "participation" points.
- Filling in your name and umail address.
- Also: For paper submission PLEASE submit on ONE SHEET OF PAPER, double-sided if at all possible. If you must submit on two printed sheets write name on BOTH sheets and no staples, paperclips, or folded corners.
- Filling in your name and umail address.
- (10 pts) Before you come to your first discussion section (lab), PLEASE visit this website and create your College of Engineering account (unless you already have one). Then write your College of Engineering username below. (DO NOT WRITE YOUR PASSWORD!!!!!  Just your username!) Website: https://accounts.engr.ucsb.edu/create. Write your username here:
- (5 pt) What is the size of the smallest data item in main memory that has a memory address? You may provide your answer in bits or bytes.
- (10 pts) The book talks about the five important hardware components of a computer i) input devices ii) output devices iii) processor iv) main memory and v) secondary memory. It also talks about two important pieces of software: compilers and operating systems. Which of the above is primarily responsible for each of the following tasks? Write 'none' if none of the options apply. i. Converts a program from a high-level language to machine language. ii. Executes a program stored in main memory. iii. Allocates the computer's resources to the different tasks that the computer must accomplish. iv. Stores a program while it is being executed. v. Converts a program from one high-level language to another high-level language.
- (4 pts) Not including any comments that may appear, what are the first two lines that typically begin a C++ program that is going to either output on the screen, and/or read input from the keyboard?
- (6 pts) As you discovered when you read the textbook, for the most basic kind of input and output, C++ uses two words, and two symbols, along with variables and quoted strings. Unlike in some other languages (e.g. Python), quoted strings must always use double quote marks
"like this"
, never single quotes'like this'
. (Single quotes are used for another purpose in C++.) Inside a quoted string,'\n'
means newline. Quoted strings can only be output, while the value of a variable can be either output to the screen, or read in from the keyboard. Variable names are not put inside quotation marks. Also remember that every line of C++ that does input or output must end in a semicolon. Assuming the variableint age;
has already been declared and initialized with a value, write a C++ statement that will print outMy age is:
followed by the value of the variableage
, followed by a newline. (For full credit, be sure to end your line with a semicolon.) - (5 pts) The textbook describes C++11 on p.27. Briefly, what is C++11? (A one sentence answer is good enough. Note that if your textbook doesn't describe C++11 on p. 27, then you may have the wrong edition. You need the ninth or tenth edition.)


GAME is available in Google Play now! Please click the button or scan the QR code to purchase.
Where we are all about making games we like to play.


Contributing¶
Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
You can contribute in many ways:
Types of Contributions¶
Report Bugs¶
Report bugs at https://github.com/CADWRDeltaModeling/vtools3/issues.
If you are reporting a bug, please include:
Your operating system name and version.
Any details about your local setup that might be helpful in troubleshooting.
Detailed steps to reproduce the bug.
Fix Bugs¶
Look through the GitHub issues for bugs. Anything tagged with “bug” and “help wanted” is open to whoever wants to implement it.
Implement Features¶
Look through the GitHub issues for features. Anything tagged with “enhancement” and “help wanted” is open to whoever wants to implement it.
Write Documentation¶
vtools could always use more documentation, whether as part of the official vtools docs, in docstrings, or even on the web in blog posts, articles, and such.
Submit Feedback¶
The best way to send feedback is to file an issue at https://github.com/CADWRDeltaModeling/vtools3/issues.
If you are proposing a feature:
Explain in detail how it would work.
Keep the scope as narrow as possible, to make it easier to implement.
Remember that this is a volunteer-driven project, and that contributions are welcome :)
Get Started!¶
Ready to contribute? Here’s how to set up vtools for local development.
Fork the vtools3 repo on GitHub.
Clone your fork locally:
$ git clone git@github.com:your_name_here/vtools.git
Install your local copy into a conda. Assuming you have conda installed, this is how you set up your fork for local development:
$ conda create -y -n dev_vtools3 $ conda install -y -n dev_vtools3 -c cadwr-dms -c defaults numpy pandas scipy beautifulsoup4 xlrd $ # for dev environment $ conda install -y -c cadwr-dms -c defaults -c conda-forge -n dev_vtools3 pytest pytest-runner versioneer $ # for docs generation $ conda install -y -c cadwr-dms -c defaults -c conda-forge -n dev_vtools3 sphinx nbsphinx matplotlib sphinx-argparse numpydoc $ cd vtools3/ $ conda activate dev_vtools3 $ pip install -e .
Create a branch for local development:
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
When you’re done making changes, check that your changes the tests:
$ pytest tests
Commit your changes and push your branch to GitHub:
$ git add . $ git commit -m "Your detailed description of your changes." $ git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website.
Pull Request Guidelines¶
Before you submit a pull request, check that it meets these guidelines:
The pull request should include tests.
If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.
The pull request should work for Python 3.7, and for conda build. Check and make sure that the tests pass for all supported Python versions.
Deploying¶
A reminder for the maintainers on how to deploy. Make sure all your changes are committed (including an entry in HISTORY.rst). Then edit __init__.py version tag and run:
$
$ git push
$ git push --tags


BRScanResultsDelegate
Objective-C
@protocol BRScanResultsDelegate <NSObject>
Swift
protocol BRScanResultsDelegate : NSObjectProtocol
Implement this protocol to receive callbacks from a scanning session
-
Indicates that the scanning session has ended
Declaration
Objective-C
- (void)didFinishScanning:(UIViewController *)cameraViewController withScanResults:(BRScanResults *)scanResults;
Swift
optional func didFinishScanning(_ cameraViewController: UIViewController!, with scanResults: BRScanResults!)
Parameters
cameraViewController
The subclass of
BRCameraViewController
to dismissscanResults
The results of the scanning session
-
Indicates that the scanning session has been cancelled
Declaration
Objective-C
- (void)didCancelScanning:(UIViewController *)cameraViewController;
Swift
optional func didCancelScanning(_ cameraViewController: UIViewController!)
Parameters
cameraViewController
The subclass of
BRCameraViewController
to dismiss -
If
BRScanOptions.returnRawText
was enabled, this callback will be invoked after each scanned frame with raw OCR resultsDeclaration
Objective-C
- (void)didOutputRawText:(NSString *)rawText;
Swift
optional func didOutputRawText(_ rawText: String!)
Parameters
rawText
The raw OCR results
-
This callback indicates an error occurred during scanning
Declaration
Objective-C
- (void)scanningErrorOccurred:(NSError *)error;
Swift
optional func scanningErrorOccurred(_ error: Error!)
Parameters
error
The error that occurred during scanning
-
This callback provides encrypted debugging information that can be used to help identify crashes. For example, if the client app uses Firebase Crashlytics, this can be passed along as follows:
[[FIRCrashlytics crashlytics] log:debugInfo];
Declaration
Objective-C
- (void)didOutputDebugInfo:(NSString *)debugInfo;
Swift
optional func didOutputDebugInfo(_ debugInfo: String!)
Parameters
debugInfo
The encrypted debugging information
-
This callback provides debugging information as key value pairs. For example, if the client app uses Firebase Crashlytics, this can be passed as a custom attribute as follows:
[[FIRCrashlytics crashlytics] setCustomValue:val forKey:key];
Declaration
Objective-C
- (void)didOutputDebugKey:(NSString *)key withValue:(id)val;
Swift
optional func didOutputDebugKey(_ key: String!, withValue val: Any!)
Parameters
key
Description of the type of debugging information
val
The information itself


--- categories: [] date: 2013-10-29T14:58:53Z status: publish tags: [] title: Mmm. Apfelstrudel layout: post url: /2013/10/29/mmm-apfelstrudel/ ---


Self sufficient developer and bodybuilder. In any free time I code or workout. Love been around people and also I am super outgoing person.
I want to be working on really hard things that matter with people smarter than me.
View Resume
(907)- 888- 0695
Send Email


class: center, middle # Review of Yesterday! ## Data Analysis! --- ## Data Analysis What is Data Analysis?
-- Data analysis is a process of inspecting, cleansing, transforming, and modeling data with the goal of discovering useful information, informing conclusions, and supporting decision-making * Why? -- * Identify trends over time * Make predictions and projections * Make informed decisions * Support hypothesis * Facilitate research * Reduce personal bias when evaluating research / decisions. --- ## Data Analysis Lifecycle **7 steps to the data analysis** -- * Discovery / Requirements -- * Collection -- * Data Prep / Cleaning -- * Exploration / Planning -- * Modeling / Algorithms -- * Automation / Computation -- * Findings / Review / Repeat --- ## Data Analysis Methods ### Qualitative vs Quantitative **Qualitative Data Analysis** * Analyzing data that is typically 'Spoken Word' data. * Interviews * Transcripts * Surveys * Videos * Images * Social Media (assuming permission is granted) * Impressions and interpretation of data by the researchers. * Key themes, * Contextual clues * Contradictions * lauguage ---
Process for analyzing Qualitative Data
* Read through the data several times. * Identifying small trends, themes and topics. * From small trends, identify basic themes. * Next identify larger, more broad themes. ---
Process for analyzing Qualitative Data
** Survey data of children in developing countries about education** After reading all of the survey responses, here is a list of small trends discovered. * No uniform * No Textbooks * High School Costs * No / Low Family income * Worry * Distracted * Tired * Headaches ---
Process for analyzing Qualitative Data
### Group those small trends into larger trends. * Cannot afford to go to school * No uniform * No Textbooks * High School Costs * No / Low Family income * Children are stressed * Worry * Distracted * Tired * Headaches ---
Process for analyzing Qualitative Data
** Group these larger trends into an even larger trend** * Children need help with education. --- ## Quantitative Data Analysis ** Numerical Data** * This is what you have been looking at with the weather and census data.
**Common types of quantitative data**
* Units (number of things) * Prices * Proportions / Percentages * Rate of change over time * Ratios * Scoring / Rankings
Statistical analysis is commonly used to summarize data and graphs can be used to render it to researchers. ---
Common quantitative data sources
* Surveys / Questionaires * Multiple choice * Ranking questions * Measurements * Records of data * Usage Data --- ## Types of Quantitative Data ** Two main types of data**
* Categorical Data * gender * Yes / No * Ratings (Good / Average / Poor) * Numerical Data * counts * percentages * measurements --- ## Sampling ** The act of choosing who to include in your data**
Commonly, your dataset is too big to analyze all of the data. * Remember the temperature data, or census data from earlier this week
Sampling allows you to narrow that down to a good representation of that data without having to analyze the whole thing.
--- ##Types of Sampling * Random sampling * ensure that every response or data point has an equal chance of being chosen. * Extreme sampling * Focus on unusual / extreme responses * Typical sampling * Focus on the average responses * Snowball Sampling * Respondants identify other respondants worth talking to / interviewing. * At end, ask "Is there anyone else we should get input from?" --- ## Bias Bias is when data is skewed by outside influences the data set. * Sampling Bias is caused when some indiciduals have a greater chance of being chosen for analysis * Self Selection / Non Response Bias is found with voluntary surveys. * Only people that are passionate or worked up will reply to surveys. * someone who is neutral or middle ground will probably not respond. * As a result, your results will be skewed towards the extremes --- ## Review: **Qualitative vs Qualitative data**
* What is it? * Common Data Sources? * How to analyze?
**Sampling** * What is it? * Sampling methods
**Bias** * What is it? * Types of bias --- ## Update to bar chart exercise I was not happy with how we were echo-ing data from PHP directly into Javascript.
**Problems:** * slightly hacky * messy * muddling server side (PHP) with client side (JS)
**Solution:** * Write a browser cookie in PHP * Read and parse the cookie in JS.


{%extends 'registration/base.html'%} {% block title %}Password changed!{% endblock %} {%block head%} {%endblock%} {%block content%}
Your password has been set.You may go ahead and sign in now.


Jose Mourinho's Tottenham appointment feels as alien as George Graham's 1998 arrival
Jose Mourinho has replaced Mauricio Pochettino as Tottenham Hotspur manager, but his appointment is one that is difficult to fathom
by John Cross, https://www.facebook.com/johncrossmirror/The famous motto “To Dare Is To Do” is emblazoned all around Tottenham’s magnificent new £1billon stadium.
It is supposed to conjure up memories of the club’s glorious past when they would win with style.
The fans demand stylish football, it is written in their DNA.
And it is at odds with Jose Mourinho’s pragmatic attitude towards football.
Mourinho is certainly not a manager who dares. He is happier playing safe.
That is why Mourinho’s appointment is so difficult to fathom. His approach is winning is all that counts. Nothing else matters.
Maybe that is what Tottenham chairman Daniel Levy wants.
Maybe he has had enough near misses with Mauricio Pochettino, feels good football is not enough and now he wants a proven winner to help them take the final step towards silverware.
Except it did not play out like that for Mourinho at Manchester United where he won trophies - the League Cup and Europa League in his first season - but it was not enough for the supporters who demanded both.
The allure of Mourinho soon wore off and it ended in bitterness, acrimony and perceived failure.
He was left behind by Pep Guardiola and Jurgen Klopp whose energy and style left Mourinho looking like a busted flush.
If Tottenham get the early Mourinho then it could be an entertaining thrill ride which brings entertainment in its own way.
He is of course already talking a good game, mentioning the academy.
"I really like this squad and looking to the young players there is not one manager in the world that doesn't like to play young players and to help young players develop."
But he does not have a particular track record of promoting young players.
This feels nearly as alien as when George Graham, former Arsenal manager and player, got the Spurs job all those years ago.
It was the Arsenal links which Tottenham could never forgive - even though he won the League Cup - but actually they hated the idea of his football.
Now, all these years later, they have a manager who is renowned for winning trophies - but without much style on or off the pitch.
And that is unlikely to keep the supporters happy.


00001 /* 00002 Copyright (c) 1999 - 2010, Vodafone Group Services Ltd 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 00006 00007 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 00008 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 00009 * Neither the name of the Vodafone Group Services Ltd nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 00010 00011 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00012 */ 00013 00014 #ifndef WFAPI_NAVIGATION_INTERFACE_H 00015 #define WFAPI_NAVIGATION_INTERFACE_H 00016 00017 #include "WFAPIConfig.h" 00018 #include "Interface.h" 00019 #include "SynchronousStatus.h" 00020 00021 namespace WFAPI { 00022 00023 // Forward declarations 00024 class NavigationInfoUpdateListener; 00025 class Nav2APIImpl; 00026 class NavigationInterfaceImpl; 00027 00032 class NavigationInterface : public Interface 00033 { 00034 00035 public: 00036 00040 virtual ~NavigationInterface(); 00041 00050 void addNavigationInfoUpdateListener( 00051 NavigationInfoUpdateListener* listener); 00052 00060 void removeNavigationInfoUpdateListener( 00061 NavigationInfoUpdateListener* listener); 00062 00071 SynchronousStatus soundPrepared(wf_uint32 duration); 00072 00080 SynchronousStatus soundPlayed(); 00081 00085 NavigationInterfaceImpl* getImpl(); 00086 00087 private: 00091 NavigationInterface(Nav2APIImpl* nav2APIimpl); 00092 00096 NavigationInterface(const NavigationInterface&); 00097 const NavigationInterface& operator=(const NavigationInterface&); 00098 00099 friend class Nav2APIImpl; 00100 00101 struct impl; 00102 00103 impl* m_impl; 00104 }; 00105 00106 } // End namespace WFAPI 00107 00108 #endif // End WFAPI_NAVIGATION_INTERFACE_H


We're sorry but typedex doesn't work properly without JavaScript enabled. Please enable it to continue.


\
Custom HTML content
Some HTML with one small centered picture
$('#s').zenith({ layout: 'slider', slideSpeed: 750 });


Kinome Overlay
About
Contact
Upload Data
Scaling
Coefficient
Threshold
Inhibitor
Activator
Color
Opacity
Inhibitor
Activator
Labels
Show Labels
siRNA Demo
Fold Change Only
Fold Change + P-Value
Export
Export to PDF
×
Kinome PNG


Software has the ability to check for software updates automatically.
When in a MitM position, tools can check for this traffic and force a response that an update IS available...your evil upgrade.
[evilgrade](https://github.com/infobyte/evilgrade) | Malicious software update MitM exploit kit. Includes support for JRE, WinZip, OpenOffice, iTunes, Notepad++ and more
See Tools > MitM > Evilgrade for example attack scenario


TIFFCP
Section: User Commands (1)Updated: February 24, 2007
Index Return to Main Contents
NAME
tiffcp - copy (and possibly convert) a TIFF fileSYNOPSIS
tiffcp [ options ] src1.tif ... srcN.tif dst.tifDESCRIPTION
tiffcp combines one or more files created according to the Tag Image File Format, Revision 6.0 into a single TIFF file. Because the output file may be compressed using a different algorithm than the input files, tiffcp is most often used to convert between different compression schemes.By default, tiffcp will copy all the understood tags in a TIFF directory of an input file to the associated directory in the output file.
tiffcp can be used to reorganize the storage characteristics of data in a file, but it is explicitly intended to not alter or convert the image data content in any way.
OPTIONS
- -b image
- subtract the following monochrome image from all others processed. This can be used to remove a noise bias from a set of images. This bias image is typically an image of noise the camera saw with its shutter closed.
- -B
- Force output to be written with Big-Endian byte order. This option only has an effect when the output file is created or overwritten and not when it is appended to.
- -C
- Suppress the use of ``strip chopping'' when reading images that have a single strip/tile of uncompressed data.
- -c
- Specify the compression to use for data written to the output file: none for no compression, packbits for PackBits compression, lzw for Lempel-Ziv & Welch compression, jpeg for baseline JPEG compression, zip for Deflate compression, g3 for CCITT Group 3 (T.4) compression, and g4 for CCITT Group 4 (T.6) compression. By default tiffcp will compress data according to the value of the Compression tag found in the source file.
- The CCITT Group 3 and Group 4 compression algorithms can only be used with bilevel data.
- Group 3 compression can be specified together with several T.4-specific options: 1d for 1-dimensional encoding, 2d for 2-dimensional encoding, and fill to force each encoded scanline to be zero-filled so that the terminating EOL code lies on a byte boundary. Group 3-specific options are specified by appending a ``:''-separated list to the ``g3'' option; e.g. -c g3:2d:fill to get 2D-encoded data with byte-aligned EOL codes.
- LZW compression can be specified together with a predictor value. A predictor value of 2 causes each scanline of the output image to undergo horizontal differencing before it is encoded; a value of 1 forces each scanline to be encoded without differencing. LZW-specific options are specified by appending a ``:''-separated list to the ``lzw'' option; e.g. -c lzw:2 for LZW compression with horizontal differencing.
- -f
- Specify the bit fill order to use in writing output data. By default, tiffcp will create a new file with the same fill order as the original. Specifying -f lsb2msb will force data to be written with the FillOrder tag set to LSB2MSB, while -f msb2lsb will force data to be written with the FillOrder tag set to MSB2LSB.
- -i
- Ignore non-fatal read errors and continue processing of the input file.
- -l
- Specify the length of a tile (in pixels). tiffcp attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.
- -L
- Force output to be written with Little-Endian byte order. This option only has an effect when the output file is created or overwritten and not when it is appended to.
- -M
- Suppress the use of memory-mapped files when reading images.
- -p
- Specify the planar configuration to use in writing image data that has one 8-bit sample per pixel. By default, tiffcp will create a new file with the same planar configuration as the original. Specifying -p contig will force data to be written with multi-sample data packed together, while -p separate will force samples to be written in separate planes.
- -r
- Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value 0 is specified), tiffcp attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip. If you specify special value -1 it will results in infinite number of the rows per strip. The entire image will be the one strip in that case.
- -s
- Force the output file to be written with data organized in strips (rather than tiles).
- -t
- Force the output file to be written with data organized in tiles (rather than strips). options can be used to force the resultant image to be written as strips or tiles of data, respectively.
- -w
- Specify the width of a tile (in pixels). tiffcp attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile. tiffcp attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.
- -x
- Force the output file to be written with PAGENUMBER value in sequence.
- -,=character
- substitute character for `,' in parsing image directory indices in files. This is necessary if filenames contain commas. Note that -,= with whitespace immediately following will disable the special meaning of the `,' entirely. See examples.
EXAMPLES
The following concatenates two files and writes the result using LZW encoding:-
tiffcp -c lzw a.tif b.tif result.tif
To convert a G3 1d-encoded TIFF to a single strip of G4-encoded data the following might be used:
-
tiffcp -c g4 -r 10000 g3.tif g4.tif
To extract a selected set of images from a multi-image TIFF file, the file name may be immediately followed by a `,' separated list of image directory indices. The first image is always in directory 0. Thus, to copy the 1st and 3rd images of image file ``album.tif'' to ``result.tif'':
-
tiffcp album.tif,0,2 result.tif
A trailing comma denotes remaining images in sequence. The following command will copy all image with except the first one:
-
tiffcp album.tif,1, result.tif
Given file ``CCD.tif'' whose first image is a noise bias followed by images which include that bias, subtract the noise from all those images following it (while decompressing) with the command:
-
tiffcp -c none -b CCD.tif CCD.tif,1, result.tif
If the file above were named ``CCD,X.tif'', the -,= option would be required to correctly parse this filename with image numbers, as follows:
-
tiffcp -c none -,=% -b CCD,X.tif CCD,X%1%.tif result.tif
SEE ALSO
pal2rgb(1), tiffinfo(1), tiffcmp(1), tiffmedian(1), tiffsplit(1), libtiff(3TIFF)Libtiff library home page: http://www.remotesensing.org/libtiff/
Index
This document was created by man2html, using the manual pages.
Time: 05:29:11 GMT, December 24, 2015


Kiwi.Plugins.Text Class
Text is a GameObject that is used when you are wanting to render text onto the current State.
Text has width/height and a hitbox, but because text is difficult to measure, these may not be 100% accurate. It does not have an "Input" component either, although you may choose to add one. Be aware of these limitations.
Constructor
Kiwi.Plugins.Text
-
params
Parameters:
-
params
ObjectComposite parameter object
-
[addToState=true]
Boolean optionalWhether the Text object should be automatically added to the State upon creation
-
[alignment="left"]
String optionalText alignment. May be "left", "right", "center",
Kiwi.Plugins.Text.TEXT_ALIGN_CENTER
,Kiwi.Plugins.Text.TEXT_ALIGN_LEFT
, orKiwi.Plugins.Text.TEXT_ALIGN_RIGHT
. -
[alpha=1]
Number optionalObject opacity
-
[anchorNormalX=0]
Number optionalHorizontal anchor point as a ratio of width
-
[anchorNormalY=0]
Number optionalVertical anchor point as a ratio of height
-
[anchorPointX=0]
Number optionalHorizontal anchor point coordinate
-
[anchorPointY=0]
Number optionalVertical anchor point coordinate
-
[color="#000000"]
String optionalText color
-
[fontFamily="sans-serif"]
String optionalFont family to be used when rendering
-
[fontSize=32]
Number optionalSize of the text in pixels; equivalent to and overrides
size
-
[lineHeight="1em"]
String optionalHeight of lines, defined in pixels or ems
-
[lineHeightNormalized=1]
Number optionalHeight of lines in ems. Takes priority over
lineHeight
during creation. -
[maxHeight=Infinity]
Number optionalMaximum pixel height of text.
-
[maxLines=Infinity]
Number optionalMaximum number of text lines to render.
-
[maxWidth=Infinity]
Number optionalMaximum pixel width of text lines.
-
[rotation=0]
Number optionalInitial rotation
-
[scale=1]
Number optionalScale, before X and Y axes
-
[scaleX=1]
Number optionalHorizontal scale
-
[scaleY=1]
Number optionalVertical scale
-
[size=32]
Number optionalSize of the text in pixels; equivalent to and overridden by
fontSize
. Deprecated. -
state
Kiwi.StateState that this Text belongs to
-
[text="text"]
String optionalText to be displayed
-
[weight="normal"]
String optionalWeight of the text
-
[x=0]
Number optionalHorizontal coordinate
-
[y=0]
Number optionalVertical coordinate
-
Item Index
Methods
Properties
- _anchorNormalX
- _anchorNormalY
- _baseline
- _canvas
- _ctx
- _fontColor
- _fontFamily
- _fontSize
- _fontWeight
- _lineHeight
- _maxHeight
- _maxLines
- _maxWidth
- _pool
- _tempDirty
- _text
- _textAlign
- alignment
- anchorNormalX
- anchorNormalY
- box
- color
- fontFamily
- fontSize
- fontWeight
- glRenderer
- lineHeight
- lineHeightNormalized
- maxHeight
- maxLines
- maxWidth
- name
- size deprecated
- text
- TEXT_ALIGN_CENTER static
- TEXT_ALIGN_LEFT static
- TEXT_ALIGN_RIGHT static
- textAlign
- version
Methods
_createPool
()
private
Create a pool of objects to be used during rendering.
create
-
game
Execute when Kiwi Game that has been told to use this plugin reaches the boot stage of the game loop.
Parameters:
-
game
Kiwi.GameGame that is current in the boot stage
objType
()
String
Returns the type of object that this is.
Returns:
"Text"
render
-
camera
Called by the Layer to which this Game Object is attached
Parameters:
-
camera
Kiwi.CameraCurrent camera
renderGL
-
gl
-
camera
-
params
Renders the GameObject using WebGL.
Parameters:
-
gl
WebGLRenderingContextTarget WebGL rendering context
-
camera
Kiwi.CameraCurrent camera
-
params
ObjectComposite parameter object
renderText
()
This method is used to render the text to an offscreen-canvas which is held in a TextureAtlas (which is generated upon the instanitation of this class). This is so that the canvas doesn't render it every frame as it can be costly and so that it can be used in WebGL with the TextureAtlasRenderer.
You should not need to call this function. It will automatically be invoked during the render cycle. In the event that you need to get up-to-date metrics, however, you should use this method before accessing object properties to ensure they are updated.
Properties
_anchorNormalX
Number
private
Horizontal anchor normal. This defines anchorPointX
as a proportion
of width
. If anchorNormalX
is defined, it will update anchorPointX
when the dimensions of the rendered image change.
Default: undefined
_anchorNormalY
Number
private
Vertical anchor normal. This defines anchorPointY
as a proportion
of height
. If anchorNormalY
is defined, it will update anchorPointY
when the dimensions of the rendered image change.
Default: undefined
_baseline
String
private
The baseline of the text to be rendered.
_canvas
HTMLCanvasElement.
private
Canvas element onto which the text is rendered
_ctx
CanvasRenderingContext2D
private
Context for the canvas element. Used while rendering text.
_fontColor
Kiwi.Utils.Color
private
The color of the text.
_fontFamily
String
private
The font family that is to be rendered.
Default: "sans-serif"
_fontSize
Number
private
The size of the font.
Default: 32
_fontWeight
String
private
The weight of the font.
Default: "normal"
_lineHeight
String
private
Main storage of line height.
_maxHeight
Number
private
Maximum pixel height of text. If undefined, an infinite number of lines will be permitted. Note that only the first 2048 pixel rows will display.
Default: Infinity
_maxLines
Number
private
Maximum number of text lines. If undefined, an infinite number of lines will be permitted. Note that only the first 2048 pixel rows will display.
Default: Infinity
_maxWidth
Number
private
Maximum pixel width of text lines. If undefined, lines may be infinite in length. Note that only the first 2048 pixel columns will display.
Default: Infinity
_pool
Object
private
Composite pool object
_tempDirty
Boolean
private
If the temporary canvas is dirty and needs to be re-rendered.
_text
String
private
The text that is to be rendered.
_textAlign
String
private
The alignment of the text. This can either be "left", "right" or "center"
Default: "center"
alignment
String
Alignment of text. You can either use the static TEXT_ALIGN constants or pass a string.
Alias of textAlign
.
anchorNormalX
Number
Horizontal anchor normal. This defines anchorPointX
as a proportion
of width
. If anchorNormalX
is defined, it will update anchorPointX
when the dimensions of the rendered image change.
Default: undefined
anchorNormalY
Number
Vertical anchor normal. This defines anchorPointY
as a proportion
of height
. If anchorNormalY
is defined, it will update anchorPointY
when the dimensions of the rendered image change.
Default: undefined
box
Kiwi.Components.Box
public
Hitbox component
color
String
The color of the font that is contained in this textfield. May be set with a string, or an array of any valid Kiwi.Utils.Color arguments.
Returns a hex string prepended with "#".
fontFamily
String
The font family that is being used to render the text.
fontSize
Number
The size on font when being displayed onscreen.
fontWeight
String
The weight of the font.
glRenderer
Kiwi.Renderers.Renderer
GL renderer for this text object's internal canvas
lineHeight
String
Height of individual text lines. Measured in pixels or ems. For example, "100px" or "1.3em".
lineHeightNormalized
Number
Height of individual text lines, determining separation between lines. Measured in ems relative to font size.
maxHeight
Number
Maximum pixel height of text. If undefined, an infinite number of lines will be permitted. Note that only the first 2048 pixel columns will display.
Default: Infinity
maxLines
Number
Maximum number of text lines. If undefined, an infinite number of lines will be permitted. Note that only the first 2048 pixel rows will display.
Default: Infinity
maxWidth
Number
Maximum pixel width of text lines. If undefined, lines may be infinite in length. Note that only the first 2048 pixel columns will display.
Default: Infinity
name
String
The name of this plugin.
Default: "Text"
size
Number
deprecated
The size on font when being displayed onscreen.
Alias for fontSize
.
text
String
The text that you would like to appear in this textfield.
TEXT_ALIGN_CENTER
String
public
final
static
A static property that contains the string to center align the text.
TEXT_ALIGN_LEFT
String
public
final
static
A static property that contains the string to left align the text.
TEXT_ALIGN_RIGHT
String
public
final
static
A static property that contains the string to right align the text.
textAlign
String
Alignment of the text. You can either use the static TEXT_ALIGN constants or pass a string.
version
String
The version of this plugin.
Default: "0.0.1"


AP Top Business News at 6:13 a.m. EST
by EndPlayUS regulators bar govt telecom funds for Huawei, ZTE
Top lawmakers reach agreement on spending as deadline nears
S&P 500 snaps 6-week string of gains even as stocks rise
Stainless steel, broken glass and buzz, Tesla makes a pickup
UK Labour Party leader Corbyn defends neutral Brexit stance
Boeing settles half of lawsuits tied to Indonesian crash
Italian premier: ArcelorMittal will negotiate on steel mill
In a first, IBM's computer debater faces off against itself
Amazon sues Pentagon over $10B contract awarded to Microsoft
Trump hears opposing viewpoints in debate over youth vaping


You can see your child's activities by using some simple methods looks like you have not linked with your clils
About . Contact us . Facebook . Twitter . Instagram
Primescore Ⓒ 2020