Full access to do take and monitor all actions in the app
Full access with restriction (can't delete entities)
Can browse the app and see it's content (Read Only)
Some description to be added later and stuff
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet, consectetuer adipiscing elit sit et justo amet. Suspendisse et justo.


We organized a first-of-its-kind online gameshow - a fun activity for our community to get together virtually and participate in a game show. This was very successful with 30 teams participating and overall 10 shows conducted, each show running for 2 - 3 hours. The semi-finals and finals were live-streamed on facebook and kept several viewers glued to the screens! Click on the below link to see teasers, highlights from preliminary rounds as well as the full length videos of semi-finals and finals.


Travis CI is a Continuous Integration platform for GitHub projects.
Travis CI can run the projects' tests automatically whenever new code is pushed to the repo. This ensures that existing functionality and features have not been broken by the changes.
The current Travis CI set up performs the following things whenever someone push code to the repo:
-
Runs the
./gradlew clean headless allTests coverage coveralls -i
command (see UsingGradle for more details on what this command means). -
Automatically retries the build up to 3 times if a task fails.
-
Renders documentation from asciidoc to html and automatically publishes them using GitHub Pages.
-
Runs additional repository-wide checks.
If you would like to customise your travis build further, you can learn more about Travis from Travis CI Documentation.
Setting up Travis CI
-
Fork the repo to your own organization.
-
Go to https://travis-ci.org/ and click
Sign in with GitHub
, then enter your GitHub account details if needed. -
Head to the Accounts page, and find the switch for the forked repository.
-
If the organization is not shown, click
Review and add
as shown below:This should bring you to a GitHub page that manages the access of third-party applications. Depending on whether you are the owner of the repository, you can either grant access
or request access
to Travis CI so that it can access your commits and build your code.
-
If repository cannot be found, click
Sync account
-
-
Activate the switch.
-
This repo comes with a
.travis.yml
that tells Travis what to do. So there is no need for you to create one yourself. -
To see the CI in action, push a commit to the master branch!
-
Go to the repository and see the pushed commit. There should be an icon which will link you to the Travis build.
-
As the build is run on a provided remote machine, we can only examine the logs it produces:
-
-
If the build is successful, you should be able to check the coverage details of the tests at Coveralls
-
Update the link to the 'build status' badge at the top of the
README.adoc
to point to the build status of your own repo.
Enabling auto-publishing of documentation
-
Ensure that you have followed the steps above to set up Travis CI.
-
On GitHub, create a new user account and give this account collaborator and admin access to the repo.
Using this account, generate a personal access token here.Personal access tokens are like passwords so make sure you keep them secret! If the personal access token is leaked, please delete it and generate a new one. We use a new user account to generate the token for team projects to prevent team members from gaining access to other team members' repos.
If you are the only one with write access to the repo, you can use your own account to generate the token.-
Add a description for the token. (e.g.
Travis CI - deploy docs to gh-pages
) -
Check the
public_repo
checkbox. -
Click
Generate Token
and copy your new personal access token.
We will use this token to grant Travis access to the repo.
-
-
Head to the Accounts page, and find the switch for the forked repository.
-
Click on the settings button next to the switch. In the Environment Variables section, add a new environment variable with
-
name:
GITHUB_TOKEN
-
value: personal access token copied in step 1
-
Display value in build log:
OFF
Make sure you set Display value in build log
toOFF
.
Otherwise, other people will be able to see the personal access token and thus have access this repo.
Similarly, make sure you do not print$GITHUB_TOKEN
to the logs in Travis scripts as the logs are viewable by the public. -
-
Now, whenever there’s a new commit to master branch, Travis will push the latest documentation to gh-pages branch.
To verify that it works,
-
Trigger Travis to regenerate documentation. To do so, you need to push a new commit to the master branch of the fork.
Suggested change: Remove the codacy badge fromREADME
. -
Wait for Travis CI to finish running the build on your new commit.
-
Go to the URL
https://<your-username-or-organization-name>.github.io/addressbook-level4/
. You should see yourREADME
file displayed.
Repository-wide checks
In addition to running Gradle checks, we also configure Travis CI to run some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.
These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:
./config/travis/run-checks.sh
Any warnings or errors will be printed out to the console.
Implementing new checks
Checks are implemented as executable check-*
scripts within the config/travis/
directory. The run-checks.sh
script will automatically pick up and run files named as such.
Check scripts should print out errors in the following format:
SEVERITY:FILENAME:LINE: MESSAGE
where SEVERITY
is either ERROR
or WARN
, FILENAME
is the path to the file relative to the current directory, LINE
is the line of the file where the error occurred and MESSAGE
is the message explaining the error.
Check scripts must exit with a non-zero exit code if any errors occur.


$ \newcommand{\abs}[1]{| #1 |} \newcommand{\bigabs}[1]{\left| #1 \right|} \newcommand{\R}{\mathbb{R}} \newcommand{\E}{\mathbb{E}} \newcommand{\B}{\mathcal{B}} \renewcommand{\Pr}{\mathbb{P}} \newcommand{\ip}[2]{\langle #1, #2 \rangle} \newcommand{\norm}[1]{\lVert #1 \rVert} $ Let $X_1, ..., X_n$ be i.i.d. $N(0, 1)$ random variables. In this post, we look at the upper and lower tails of the random variable $\max_{1 \leq i \leq n} \abs{X_i}$. Specifically, we will prove the following claim.
Lemma: Fix a $\delta \in (0, 1)$ and $X_1, ..., X_n$ be i.i.d. $N(0, 1)$. With probability at least $1-\delta$, $$ \sqrt{\frac{\pi}{2}} \sqrt{ \log(n/2) - \log\log(2/\delta) } \leq \max_{1 \leq i \leq n} \abs{X_i} \leq \sqrt{2} \left(\sqrt{\log(2n)} + \sqrt{\log(2/\delta)}\right) \:. $$
The fact that the two tails differ qualitatively should not be too surprising, as $\max_{1 \leq i \leq n} \abs{X_i}$ is bounded below by zero almost surely, but not from above by any fixed constant. To establish this lemma, we will prove concentration for the upper and lower tails separately, from which the claim follows by a simple union bound.
Upper tail
The upper tail can be deduced by either elementary considerations, or by standard concentration of measure for the suprema of Gaussian processes. See these excellent notes for a quick introduction. Since we will compute the lower tail by elementary arguments, let us use Gaussian process arguments here. The useful concentration inequality here is the following (in a simplified form suitable for our purposes). Letting $T \subseteq \R^n$ and $g \sim N(0, I)$, $$ \Pr\left\{ \sup_{t \in T} \ip{t}{g} - \E \sup_{t \in T} \ip{t}{g} > \tau \right\} \leq \exp\left\{ - \frac{\tau^2}{2 \sup_{t \in T} \E[\ip{t}{g}^2] } \right\} \:. $$ Seting $T = \{e_1, ..., e_n, -e_1, ..., -e_n\}$, for every $g$ we have $\sup_{t \in T} \ip{t}{g} = \max_{1 \leq i \leq n} \abs{g_i}$, and also $\E[\ip{t}{g}^2] = \E[g_i^2] = 1$. Therefore, we conclude that with probability at least $1-\delta$, $$ \begin{align*} \max_{1 \leq i \leq n} \abs{X_i} &\leq \E\max_{1 \leq i \leq n} \abs{X_i} + \sqrt{2\log(1/\delta)} \\ &\leq \sqrt{2\log(2n)} + \sqrt{2\log(1/\delta)} \:. \end{align*} $$ Above, the inequality follows from the standard fact that $\E\max_{1 \leq i \leq n} \abs{X_i} \leq \sqrt{2\log(2n)}$. We prove this below for completeness.
Proposition: Let $Z_1, ..., Z_n$ be $n$ random variables (not necessarily independent) with marginal distribution $N(0, 1)$. Then, $$ \E \max_{1 \leq i \leq n} Z_i \leq \sqrt{2 \log{n}} \:. $$
Proof: Fix any $\lambda > 0$. First, we observe that $$ \begin{align*} \E e^{\lambda \max_{1 \leq i \leq n} Z_i} = \E \max_{1 \leq i \leq n} e^{\lambda Z_i} \leq \sum_{i=1}^{n} \E e^{\lambda Z_i} = n \E e^{\lambda Z_i} = n e^{\lambda^2/2} \:. \end{align*} $$ The first equality holds because $x \mapsto e^x$ is an increasing function, and the inequality holds because $e^x \geq 0$. Taking logs on both sides, we conclude that $$ \log\E e^{\lambda \max_{1 \leq i \leq n} Z_i} \leq \log{n} + \frac{\lambda^2}{2} \:. $$ Now by Jensen's inequality, $$ \lambda \E\max_{1 \leq i \leq n} Z_i = \E \lambda \max_{1 \leq i \leq n} Z_i = \E \log e^{\lambda \max_{1 \leq i \leq n} Z_i} \leq \log \E e^{\lambda \max_{1 \leq i \leq n} Z_i} \leq \log{n} + \frac{\lambda^2}{2} \:. $$ Dividing by $\lambda$, $$ \E\max_{1 \leq i \leq n} Z_i \leq \frac{\log{n}}{\lambda} + \frac{\lambda}{2} \:. $$ Since this holds for any $\lambda > 0$, we can set $\lambda = \sqrt{2\log{n}}$ and conclude the result. $\square$
An immediate corollary is that $\E\max_{1 \leq i \leq n} \abs{X_i} \leq \sqrt{2\log(2n)}$. This follows since we just consider the $2n$ random variables $(X_1, ..., X_n, -X_1, ..., -X_n)$ and apply the proposition (recall we do not need to assume independence). A less obvious fact is that $$ \lim_{n \rightarrow \infty} \frac{\E\max_{1 \leq i \leq n} \abs{X_i}}{\sqrt{2 \log(2n)}} = 1 \:, $$ which shows that the upper bound in the proposition is asymptotically sharp in the independent case. In other words, dependent structure can only make the expected maxima smaller. An extreme example of this is when $X_1 = ... = X_n$, we have $\E\max_{1 \leq i \leq n} \abs{X_i} = \E\abs{X_1} = \sqrt{\frac{2}{\pi}}$.
Lower bound
We now work on the lower tail. Fix a positive $\tau > 0$. Then, $$ \begin{align*} \Pr\left\{ \max_{1 \leq i \leq n} \abs{X_i} \leq \tau \right\} &= \Pr( \abs{X_1} \leq \tau, ..., \abs{X_n} \leq \tau ) \\ &\stackrel{(a)}{=} \prod_{i=1}^{n} \Pr( \abs{X_i} \leq \tau ) \\ &= \mathrm{erf}(\tau/\sqrt{2})^n \\ &\stackrel{(b)}{\leq} \left(1 - e^{-\frac{2}{\pi} \tau^2} \right)^{n/2} \\ &\stackrel{(c)}{\leq} \exp\left( - \frac{n}{2} e^{-\frac{2}{\pi} \tau^2 } \right) \:. \end{align*} $$ Above, (a) uses independence, (b) uses the inequality $\mathrm{erf}(x)^2 \leq 1 - e^{-4x^2/\pi}$ which holds for all $x \geq 0$ (see here), and (c) uses the inequality $1 - x \leq e^{-x}$ for all $x \in \R$. Now setting $\exp( - \frac{n}{2} e^{-\frac{2}{\pi} \tau^2 } ) = \delta$ and solving for $\tau$, we conclude with probability at least $1-\delta$, $$ \begin{align*} \max_{1 \leq i \leq n} \abs{X_i} \geq \sqrt{ \frac{\pi}{2} \log(n/2) - \frac{\pi}{2} \log\log(1/\delta) } \:. \end{align*} $$


Ruby Classes
January 25, 2015
Classes are an extremely important Ruby topic since they allow the bundling of related information - including methods and variables, instance variables, that are able to cross over methods within a certain class.
Here is an example of when using Ruby classes is helpful:
class Person [used to represent multiple people] def initialize [initialize these variables] @name = name @age = age @gender = gender end def describe_person puts "This person's name is #{@name}, their age is #{@age}, and they are #{gender}." end end
This class is used to describe different people and is useful because it allows you to create a new instance of that class and specify certain descriptions of people and return describe_people for many different people. It could potentially be used for describing different people in a roster, such as an employment roster - saving time for the programmer of defining each person from scratch.


In this lab, we are going to analyze how a file system stores its data on disk. Modern file systems are relatively complicated, so we are going to look at how the old file system "FAT12" was used to store files on floppy disks. FAT12 is the predecessor of FAT16 and FAT32 (which is still widely used on USB sticks).
This document does not contain the full specification of FAT12. For a more detailed description of the various structures that are used throughout this filesystem, take a look at the following resources:
The file fat12.img contains the raw contents of a floppy disk. To view the contents of this file, open it in a hex editor. You can use the free hex editor xvi32, which is also available on the Programs disk (P:). Students with their own laptops can download xvi32, or can download an alternative such as Cygnus, Visual Studio, Hex Fiend, or 0xed.
Take a few moments to get used to your hex editor. In particular, notice that the values of the bytes (in hexadecimal notation) are show in the left column, and the corresponding ASCII value in the right column. The number that precedes the rows is the start offset of the first byte in the row.
A disk can be divided into multiple partitioned, with each partition having its own file system. For this course, we will ignore this possibility and just assume a disk contains one single partition which uses the FAT12 file system.
The disk is structured as follows:
We give a short description of each part:
Like any other partition, the first sector of a FAT12 volume is a special sector: the boot sector. It contains information about the partition. The boot sector (the first 512 bytes of the partition) is marked in yellow. The information stored in this sector is defined in the table below. Fill in the bytes values where asked.
| Offset | Length in bytes | Description | Bytes |
|---|---|---|---|
| 0x00 | 3 | Instruction(s) to jump to the bootstrap code | |
| 0x03 | 8 | Name of the formatting OS | |
| 0x0B | 2 | Bytes per sector | |
| 0x0D | 1 | Sectors per cluster | |
| 0x0E | 2 | Reserved sectors from the start of the volume | |
| 0x10 | 1 | Number of FAT copies | |
| 0x11 | 2 | Number of possible root entries | |
| 0x13 | 2 | Small number of sectors | |
| 0x15 | 1 | Media descriptor | |
| 0x16 | 2 | Sectors per FAT | |
| 0x18 | 2 | Sectors per track | |
| 0x1A | 2 | Number of heads | |
| 0x1C | 4 | Hidden sectors | |
| 0x20 | 4 | Large number of sectors (used when volume size exceeds 32MB) | |
| 0x24 | 1 | Drive number | |
| 0x25 | 1 | Reserved | |
| 0x26 | 1 | Extended boot signature (indicates that the next three fields are available) | |
| 0x27 | 4 | Volume serial number | |
| 0x2B | 11 | Volume label (should be the same as in the root directory) | |
| 0x36 | 8 | File system type (should be FAT12) | |
| 0x3E | 448 | Bootstrap code | |
| 0x1FE | 2 | Boot sector signature (should be 0xAA55) |
Use this table to verify the following properties:
MSDOS5.0
".FAT12
".Note that if a number is stored in 2 or 4 bytes, you should reverse these bytes!
For example, if you read the
bytes A4 70
, this actually represents the number
0x70A4. This is because the Intel processor stores integers as
little endian (the least-significant byte comes first).
Likewise, 11 22 33 44
corresponds to
0x44332211
.
Convert the following bytes to decimal values:
| Bytes | Decimal value |
|---|---|
01 |
|
FF 00 |
|
00 FF |
|
01 02 03 04 |
After the boot sector, a number of copies of the File Allocation Table (FAT) are stored. Having more than one copy can be useful if one of the copies gets corrupted due to bad disk blocks.
Each FAT has a certain size and thus requires a certain amount of space on disk.
After the FATs, the contents of the root directory is stored. This root directory contains references to the files and directories that are stored on the root of the partition (i.e. typically at A:\ in Windows). Each file or directory entry is 32 bytes. The root directory has a maximum size, which is preallocated (meaning it cannot grow or shrink, and is not part of the "normal" data area).
All the remaining sectors after the root directory can be used to store folder (or subdirectory) data. Now that you know how large each section is, you should be able to calculate the offsets of each section in the image. Note that each section immediately follows the previous (i.e. there is no wasted space in between).
| Boot sector | 0x0000 |
| FAT 1 | 0x0200 |
| FAT 2 | 0x |
| Root directory | 0x |
| Data section | 0x |
Each directory (including the root directory) consists of one or more sectors that contain directory entries. A directory entry contains information about a subdirectory or file that is contained in the directory. The structure of one such entry is shown below. Note that the size of an entry is 32 bytes.
| Offset | Length in bytes | Description |
|---|---|---|
| 0x00 | 8 | The filename |
| 0x08 | 3 | The file extension |
| 0x0B | 1 | File attributes |
| 0x0C | 1 | Reserved ofr Windows NT |
| 0x0D | 1 | Creation - Millsecond stamp (actual 100th of a second) |
| 0x0E | 2 | Creation time |
| 0x10 | 2 | Creation date |
| 0x12 | 2 | Last access date |
| 0x14 | 2 | Reserved for FAT32 |
| 0x16 | 2 | Last write time |
| 0x18 | 2 | Last write date |
| 0x1A | 2 | First logical cluster of the file |
| 0x1C | 4 | File size in bytes |
As an example take the following 32 bytes:
| 54 | 45 | 53 | 54 | 20 | 20 | 20 | 20 | 44 | 44 | 20 | 20 | 00 | 64 | 85 | 1B |
| 5A | 33 | 5A | 33 | 00 | 00 | 85 | 1B | 5A | 33 | 03 | 01 | B0 | 04 | 00 | 00 |
Interpreting these as a directory in the FAT12 filesystem gives us the following results.
| 54 | 45 | 53 | 54 | 20 | 20 | 20 | 20 | 44 | 44 | 20 | 20 | 00 | 64 | 85 | 1B |
| 5A | 33 | 5A | 33 | 00 | 00 | 85 | 1B | 5A | 33 | 03 | 01 | B0 | 04 | 00 | 00 |
The first 8 bytes contain the filename. We can look up the corresponding ASCII characters in an ASCII table.
The filename becomes "test
". The extension
(the following three bytes) will be "dd
". Spaces are used as padding, so the actual filename is
test.dd
.
The first byte of the filename is special and can have different meanings. The following rules apply:
0x00
is interpreted as "stop the search, there are no more entries in this directory".
0x20
(space).
0xE5
is interpreted as "the entry is free".
| 54 | 45 | 53 | 54 | 20 | 20 | 20 | 20 | 44 | 44 | 20 | 20 | 00 | 64 | 85 | 1B |
| 5A | 33 | 5A | 33 | 00 | 00 | 85 | 1B | 5A | 33 | 03 | 01 | B0 | 04 | 00 | 00 |
The next byte contains the attributes of the file or directory. A number of attributes can be set. If an attribute is set, a specific bit is set in the value of the byte (this is also called a bit vector). There are 8 possible bits that can be set in the byte, but only the first 6 bits have a specific meaning:
| Bit | Description |
|---|---|
| 0 | The file is read-only. |
| 1 | The file is hidden. |
| 2 | The file is a system file. |
| 3 | The directory entry contains a volume label. |
| 4 | The entry represents a directory (not a file). |
| 5 | The File should be archived (used for backup purposes). |
0x20
to binary:
The binary value of the byte 20 is 00100000
. Bit 0 is the rightmost bit, bit 7 is the leftmost bit.
In this case, only the archive attribute is set for the file.
| 54 | 45 | 53 | 54 | 20 | 20 | 20 | 20 | 44 | 44 | 20 | 20 | 00 | 64 | 85 | 1B |
| 5A | 33 | 5A | 33 | 00 | 00 | 85 | 1B | 5A | 33 | 03 | 01 | B0 | 04 | 00 | 00 |
A directory entry contains the creation time, creation date, last access date, last write time, and last write date. Both the time components and the date components use 2 bytes (or 16 bits) each. The bits are used as follows:
The time uses 5 bits to store the hours, 6 bits for the minutes and 5 for the seconds. Note that we
cannot store 60 values in the 5 bits that are allocated to the seconds component. This means that
we will only store even values, and that the calculated value should be doubled. In the example,
the bytes that store the last write time contain the values 85 1B
, which represents the number
0x1B85
or its binary value .
From this value, we extract
The 16 bits in the date component are distributed as follows: 7 bits for the amount of years since 1980, 4 bits for the month, and 5 bits for the day. In the example, if we extract the last write date you should get the date .
| 54 | 45 | 53 | 54 | 20 | 20 | 20 | 20 | 44 | 44 | 20 | 20 | 00 | 64 | 85 | 1B |
| 5A | 33 | 5A | 33 | 00 | 00 | 85 | 1B | 5A | 33 | 03 | 01 | B0 | 04 | 00 | 00 |
This 16-bit value contains the identification number of the first (logical) cluster that
contains the data of this file. If the directory entry is a subdirectory (i.e. has the "subdirectory"
attribute set), then it points to the first cluster that contains the directory entries of this subdirectory.
In the example, the bytes 03 01
represent the value 0x103
, thus the logical cluster 259 contains
the first chunk of the file.
| 54 | 45 | 53 | 54 | 20 | 20 | 20 | 20 | 44 | 44 | 20 | 20 | 00 | 64 | 85 | 1B |
| 5A | 33 | 5A | 33 | 00 | 00 | 85 | 1B | 5A | 33 | 03 | 01 | B0 | 04 | 00 | 00 |
The file size is stored in the last 4 bytes of the directory entry. This limits the maximum
file size on a partition to 232 bytes or 4Gb. The bytes B0 04 00 00
represent a filesize of
0x or bytes.
5A 57 41 52 54 4B 41 53 20 20 20 10 00 00 36 33 5A 33 5A 33 00 00 36 33 5A 33 40 01 00 00 00 00
Up until now, we have seen how we can find and interpret the contents of the root directory, and from there on find all the files and subdirectories on the partition. For each file, we know the start cluster, but since a cluster is only 512 bytes, most files will consist of more than one cluster. Hence, we need a mechanism to find the next clusters of a file, given its first cluster.
For this purpose, FAT12 stores a file allocation table at the beginning of the volume. This table is a list of 12-bit entries, with one entry for each cluster in the data section. Because our image consists of 2847 clusters, the file allocation table will contain 2847 12-bit entries, for a total size of 4269 bytes.
The entries in the FAT are actually pointers to the next logical cluster in the data section. Some values have a special meaning:
0x000
: Free cluster
0x001
, and 0xFF0
-0xFF6
: Reserved
0xFF7
: Bad cluster
0xFF8
-0xFFF
: This is the last cluster of the file
All other values (0x002
- 0xFEF
) are pointers to the next cluster of the file.
Consider the above figure where a user wants to read the file foobar.txt
. The operating
system finds the correct directory entry that stores the information of this file. From the directory
entry, we find that the first logical cluster of the file is cluster 0x5CA
. In order to find the second
cluster of the file, we go to the FAT and look up the value that is stored in the FAT entry with
index 0x5CA
. We find the value 0x13A
, which is the identification number of the second cluster of
the file. The third cluster can be found by looking up the value of FAT entry 0x13A
, which gives us
the cluster ID 0x2B0
. Finally, if we look up the value of FAT entry 0x2B0
, we find the value 0xFF8
.
This is one of the special values mentioned above, which indicates that this is the last cluster of the
file. Putting this all together, we can conclude that the file foobar.txt
consists of the logical clusters
0x5CA
, 0x13A
, 0x2B0
(in that order).
Every FAT entry is a 12-bit value. This means that one entry cannot be stored in one byte, yet it
also does not require the full capacity of two bytes. In order not to waste space, two FAT entries are
stored together in 3 bytes (or 24 bits). You can convert from the hexadecimal values of the three
bytes to the hexadecimal values of the two FAT entries using the following rule (pay attention to
the order!): UV WX YZ
becomes FAT entries 0xXUV
and 0xYZW
.
Imagine the first 12 bytes of a FAT are F0 FF FF 00 40 00 05 F0 FF 00 00 00
.
Every FAT entry is 12 bits long, which means these 12 bytes contain 8 FAT entries:
0xFF0
Clusters 0 and 1 are never used in the FAT, so you can ignore them. Which clusters are free? (List them in increasing order)
If the first cluster of a file is cluster 3, its data is spread among clusters , and . The file is at most bytes long. Say the file contains 1200 bytes, then bytes of the last cluster remain unused. This is called slack space and is actually lost space due to internal fragmentation.
Hint To find the correct bytes in the FAT that correspond to a certain cluster ID, you can use this simple formula: (Cluster / 2) × 3. This gives you the byte offset of the first of the three bytes that contain two FAT entries. Keep in mind that this is the byte offset from the start of the FAT; you need to add the offset of the FAT itself to this number as well! If Cluster ID is even, you need the first FAT entry, if it is odd you need the second FAT entry.
The cluster IDs that we have been using are logical clusters, meaning that they represent the cluster number starting from the beginning of the data section. The numbers 0 and 1 have a special meaning and are not used as cluster IDs. So the first cluster of the data section has cluster ID 2. If we want to know where exactly a logical cluster is stored on the disk, we need to it into a physical clusters.
We have already calculated that there are 33 clusters before the start of the data section (1 boot cluster, 9 clusters for each FAT, and 14 clusters for the root directory). Using this information, and knowing that the first valid cluster ID is 2, we can deduce the following formula to calculate the physical cluster ID from a given logical cluster ID: physicalID = 33 + logicalID - 2.
Once we know the physical cluster ID, we can calculate the physical location of that cluster on the disk by multiplying the ID with the cluster size (512 bytes).


Id: 303
Name: Samantha
Status: Alive
Species: Human
Type:
Gender: Female
OriginName: Earth (C-137)
OriginUrl: https://rickandmortyapi.com/api/location/1
LocationName: Earth (C-137)
LocationUrl: https://rickandmortyapi.com/api/location/1
Image: https://rickandmortyapi.com/api/character/avatar/303.jpeg
Episode: ['https://rickandmortyapi.com/api/episode/5']
Url: https://rickandmortyapi.com/api/character/303
Created: 2018-01-05T14:09:03.150Z


Name (required, at least 2 characters)
E-Mail (required)
URL (optional)
Your comment (required)
Firstname
Lastname
Username
Password
Confirm password
Email
Please agree to our policy
I'd like to receive the newsletter


Here you can view all images Lorem Picsum uses
Get a specific image by appending ?image to the end of the url
?image
https://picsum.photos/200/300?image=0


Introduction: Visualise your Messenger History
This website was made to visualise random findings from your Facebook Messenger history. To see these findings, follow the instructions below:
- Download your facebook message information.
(Settings -> Your Facebook Information -> Download Your Information)
Choose format as JSON (Will not work for HTML). - Unzip and choose the file below.
Note. Your data is run through the browser so your data does not go anywhere. If in doubt, you may cut the internet connection once the page loads or check the code here.
About You
Here is some basic information about you and your messaging habits.
- Your Name:Simba
- Total Num of Days:
- Avg Num of Words per Msg: 5.22
- Avg Num of Chars per Word: 5.20
- Avg Num of Msgs Received/Day:
- Avg Num of Texts Sent/Day:
- Avg Num of Stickers Sent/Day:
- Avg Num of Photos Sent per/Day:
Note. Msgs refers to Texts + Stickers + Photos.
Which chats do you message the most?
Find out who you message the most and how many messages you send to them! For details about name, and number of messages, hover over the bubbles.
Method:
- Messages are counted based on the title of the chat name rather than by person. So if a person messages you in chat1 and chat2, the messages count towards two different chat names.
- Note: If you have two chats with the same name, they will be considered one chat.
What type of media do you send?
Who sends you the most messages?
For details about the person, and number of messages, hover over the bubbles.
Method:
- Messages are counted based on the sender's name, and does not distinguish between the type of chat i.e. one-on-one or group messages.
Note: If you know two people with the same name, they will be considered one person.
What day do you send and receive the most messages?
Markov Chains: Generate Messages
Here we have a simple implementation of markov chains in order to generate random messages based off you, or your friend's message history. As our model does not take grammar into account, some messages may be questionable.
IINSTRUCTIONS
To generate a message for a given person, type their name into the textbox below and click the red button.
NOTE. The name of the sender must match the names as seen in the table at the bottom (case-sensitive), or how your name is written as seen in the 'About You' section.
Remark. Depending on the number of messages, and messaging style of a sender, the time taken to output sentences may vary - i.e. senders who write shorter messages will often have faster outputs. Periods (.) were added at the end of every message (for messages without a period) in order to ensure some rule for when a message is complete. So messages involving '...', or the like (so anything with periods) will be considered an end to the sentence in this model.
Further Information
The below table contains some details regarding your one-on-one interactions with your friends.
| Name | Rank by Number Received | Avg Word per Message | Avg Number of Characters per Message | Total Sent | Total Received | Messages Received | Stickers Received | Photos Received |
|---|


Testing¶
This middleware offers a variety of options for rate limiting and traffic shaping for an OpenStack API.
Whether the current configuration and behaviour matches the users expectations can be verified using siege - a load testing and benchmarking toolkit.
Install on OSX using homebrew brew install siege
.
Assuming that a valid token was issued by OpenStack Keystone and is available as OS_AUTH_TOKEN
:
# Obtain token.
export OS_AUTH_TOKEN=$(openstack token issue -c id -f value)
# Send 10 concurrent requests to an endpoint and benchmark.
siege --concurrent=1 --reps=10 --benchmark -header="X-AUTH-TOKEN:$OS_AUTH_TOKEN" https://$OpenStackURI
Example:
Test OpenStack Swift POST account/container
- Send 3 concurrent POST requests to update a Swift container using
siege
:
siege --concurrent=1 --reps=3 --benchmark --header="X-AUTH-TOKEN:$OS_AUTH_TOKEN" 'https://$OpenStackURI/v1/AUTH_$ProjectID/mycontainer POST'
The output for a rate of 1r/m
and max_delay_seconds=0
(nodelay) could look as follows:
The server is now under siege...
HTTP/1.1 204 0.20 secs: 0 bytes ==> POST https://$OpenStackURI/v1/AUTH_$ProjectID/mycontainer
HTTP/1.1 498 0.09 secs: 19 bytes ==> POST https://$OpenStackURI/v1/AUTH_$ProjectID/mycontainer
HTTP/1.1 498 0.11 secs: 19 bytes ==> POST https://$OpenStackURI/v1/AUTH_$ProjectID/mycontainer
Only the 1st request is processed and the 2 subsequent, almost concurrently issued, requests are rejected as the rate limit of 1r/m
is exceeded.
- Send 10 requests with a a random delay of 1s to 10s between each request:
siege --reps=10 --delay=10 --header="X-AUTH-TOKEN:$OS_AUTH_TOKEN" 'https://$OpenStackURI/v1/AUTH_$ProjectID/mycontainer POST'
The output for a rate of 2r/m
and max_delay_seconds=20
could look as follows:
The server is now under siege...

The 1st and 2nd request are successfully processed within the rate limit of 2r/m
.
The 3rd to 6th requests are rejected as the rate limit is exceeded and the request would need to be suspended for longer than max_delay_seconds
.
However, the 7th request still exceeds the rate limit but reaches the API just less than 20s before it could be successfully processed according to the rate limit.
Thus it is suspended for ~19 seconds and processed afterwards as indicated by the relatively long transaction time.


Laravel ships with a simple, convenient facility for validating data and retrieving validation error messages via the Validator
class.
$validator = Validator::make(
['name' => 'Dayle'],
['name' => 'required|min:5']
);
The first argument passed to the make
method is the data under validation. The second argument is the validation rules that should be applied to the data.
Multiple rules may be delimited using either a "pipe" character, or as separate elements of an array.
$validator = Validator::make(
['name' => 'Dayle'],
['name' => ['required', 'min:5']]
);
$validator = Validator::make(
[
'name' => 'Dayle',
'password' => 'lamepassword',
'email' =><EMAIL_ADDRESS>],
[
'name' => 'required',
'password' => 'required|min:8',
'email' => 'required|email|unique:users'
]
);
Once a Validator
instance has been created, the fails
(or passes
) method may be used to perform the validation.
if ($validator->fails())
{
// The given data did not pass validation
}
If validation has failed, you may retrieve the error messages from the validator.
$messages = $validator->messages();
You may also access an array of the failed validation rules, without messages. To do so, use the failed
method:
$failed = $validator->failed();
The Validator
class provides several rules for validating files, such as size
, mimes
, and others. When validating files, you may simply pass them into the validator with your other data.
The validator also allows you to attach callbacks to be run after validation is completed. This allows you to easily perform further validation, and even add more error messages to the message collection. To get started, use the after
method on a validator instance:
$validator = Validator::make(...);
$validator->after(function($validator)
{
if ($this->somethingElseIsInvalid())
{
$validator->errors()->add('field', 'Something is wrong with this field!');
}
});
if ($validator->fails())
{
//
}
You may add as many after
callbacks to a validator as needed.
Of course, manually creating and checking a Validator
instance each time you do validation is a headache. Don't worry, you have other options! The base App\Http\Controllers\Controller
class included with Laravel uses a ValidatesRequests
trait. This trait provides a single, convenient method for validating incoming HTTP requests. Here's what it looks like:
/**
* Store the incoming blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|unique|max:255',
'body' => 'required',
]);
//
}
If validation passes, your code will keep executing normally. However, if validation fails, an Illuminate\Contracts\Validation\ValidationException
will be thrown. This exception is automatically caught and a redirect is generated to the user's previous location. The validation errors are even automatically flashed to the session!
If the incoming request was an AJAX request, no redirect will be generated. Instead, an HTTP response with a 422 status code will be returned to the browser containing a JSON representation of the validation errors.
For example, here is the equivalent code written manually:
/**
* Store the incoming blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$v = Validator::make($request->all(), [
'title' => 'required|unique|max:255',
'body' => 'required',
]);
if ($v->fails())
{
return redirect()->back()->withErrors($v->errors());
}
//
}
If you wish to customize the format of the validation errors that are flashed to the session when validation fails, override the formatValidationErrors
on your base controller. Don't forget to import the Illuminate\Validation\Validator
class at the top of the file:
/**
* {@inheritdoc}
*/
protected function formatValidationErrors(Validator $validator)
{
return $validator->errors()->all();
}
For more complex validation scenarios, you may wish to create a "form request". Form requests are custom request classes that contain validation logic. To create a form request class, use the make:request
Artisan CLI command:
php artisan make:request StoreBlogPostRequest
The generated class will be placed in the app/Http/Requests
directory. Let's add a few validation rules to the rules
method:
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|unique|max:255',
'body' => 'required',
];
}
So, how are the validation rules executed? All you need to do is type-hint the request on your controller method:
/**
* Store the incoming blog post.
*
* @param StoreBlogPostRequest $request
* @return Response
*/
public function store(StoreBlogPostRequest $request)
{
// The incoming request is valid...
}
The incoming form request is validated before the controller method is called, meaning you do not need to clutter your controller with any validation logic. It has already been validated!
If validation fails, a redirect response will be generated to send the user back to their previous location. The errors will also be flashed to the session so they are available for display. If the request was an AJAX request, a HTTP response with a 422 status code will be returned to the user including a JSON representation of the validation errors.
The form request class also contains an authorize
method. Within this method, you may check if the authenticated user actually has the authority to update a given resource. For example, if a user is attempting to update a blog post comment, do they actually own that comment? For example:
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
$commentId = $this->route('comment');
return Comment::where('id', $commentId)
->where('user_id', Auth::id())->exists();
}
Note the call to the route
method in the example above. This method grants you access to the URI parameters defined on the route being called, such as the {comment}
parameter in the example below:
Route::post('comment/{comment}');
If the authorize
method returns false
, a HTTP response with a 403 status code will automatically be returned and your controller method will not execute.
If you plan to have authorization logic in another part of your application, simply return true
from the authorize
method:
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
If you wish to customize the format of the validation errors that are flashed to the session when validation fails, override the formatErrors
on your base request (App\Http\Requests\Request
). Don't forget to import the Illuminate\Validation\Validator
class at the top of the file:
/**
* {@inheritdoc}
*/
protected function formatErrors(Validator $validator)
{
return $validator->errors()->all();
}
After calling the messages
method on a Validator
instance, you will receive a MessageBag
instance, which has a variety of convenient methods for working with error messages.
echo $messages->first('email');
foreach ($messages->get('email') as $message)
{
//
}
foreach ($messages->all() as $message)
{
//
}
if ($messages->has('email'))
{
//
}
echo $messages->first('email', '
:message
');
Note: By default, messages are formatted using Bootstrap compatible syntax.
foreach ($messages->all('
:message
') as $message)
{
//
}
Once you have performed validation, you will need an easy way to get the error messages back to your views. This is conveniently handled by Laravel. Consider the following routes as an example:
Route::get('register', function()
{
return View::make('user.register');
});
Route::post('register', function()
{
$rules = [...];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
return redirect('register')->withErrors($validator);
}
});
Note that when validation fails, we pass the Validator
instance to the Redirect using the withErrors
method. This method will flash the error messages to the session so that they are available on the next request.
However, notice that we do not have to explicitly bind the error messages to the view in our GET route. This is because Laravel will always check for errors in the session data, and automatically bind them to the view if they are available. So, it is important to note that an $errors
variable will always be available in all of your views, on every request, allowing you to conveniently assume the $errors
variable is always defined and can be safely used. The $errors
variable will be an instance of MessageBag
.
So, after redirection, you may utilize the automatically bound $errors
variable in your view:
<?php echo $errors->first('email'); ?>
If you have multiple forms on a single page, you may wish to name the MessageBag
of errors. This will allow you to retrieve the error messages for a specific form. Simply pass a name as the second argument to withErrors
:
return redirect('register')->withErrors($validator, 'login');
You may then access the named MessageBag
instance from the $errors
variable:
<?php echo $errors->login->first('email'); ?>
Below is a list of all available validation rules and their function:
The field under validation must be yes, on, 1, or true. This is useful for validating "Terms of Service" acceptance.
The field under validation must be a valid URL according to the checkdnsrr
PHP function.
The field under validation must be a value after a given date. The dates will be passed into the PHP strtotime
function.
The field under validation must be entirely alphabetic characters.
The field under validation may have alpha-numeric characters, as well as dashes and underscores.
The field under validation must be entirely alpha-numeric characters.
The field under validation must be of type array.
The field under validation must be a value preceding the given date. The dates will be passed into the PHP strtotime
function.
The field under validation must have a size between the given min and max. Strings, numerics, and files are evaluated in the same fashion as the size
rule.
The field under validation must be able to be cast as a boolean. Accepted input are true
, false
, 1
, 0
, "1"
and "0"
.
The field under validation must have a matching field of foo_confirmation
. For example, if the field under validation is password
, a matching password_confirmation
field must be present in the input.
The field under validation must be a valid date according to the strtotime
PHP function.
The field under validation must match the format defined according to the date_parse_from_format
PHP function.
The given field must be different than the field under validation.
The field under validation must be numeric and must have an exact length of value.
The field under validation must have a length between the given min and max.
The field under validation must be formatted as an e-mail address.
The field under validation must exist on a given database table.
'state' => 'exists:states'
'state' => 'exists:states,abbreviation'
You may also specify more conditions that will be added as "where" clauses to the query:
'email' => 'exists:staff,email,account_id,1'
Passing NULL
as a "where" clause value will add a check for a NULL
database value:
'email' => 'exists:staff,email,deleted_at,NULL'
The file under validation must be an image (jpeg, png, bmp, gif, or svg)
The field under validation must be included in the given list of values.
The field under validation must have an integer value.
The field under validation must be formatted as an IP address.
The field under validation must be less than or equal to a maximum value. Strings, numerics, and files are evaluated in the same fashion as the size
rule.
The file under validation must have a MIME type corresponding to one of the listed extensions.
'photo' => 'mimes:jpeg,bmp,png'
The field under validation must have a minimum value. Strings, numerics, and files are evaluated in the same fashion as the size
rule.
The field under validation must not be included in the given list of values.
The field under validation must have a numeric value.
The field under validation must match the given regular expression.
Note: When using the regex
pattern, it may be necessary to specify rules in an array instead of using pipe delimiters, especially if the regular expression contains a pipe character.
The field under validation must be present in the input data.
The field under validation must be present if the field is equal to any value.
The field under validation must be present only if any of the other specified fields are present.
The field under validation must be present only if all of the other specified fields are present.
The field under validation must be present only when any of the other specified fields are not present.
The field under validation must be present only when all of the other specified fields are not present.
The given field must match the field under validation.
The field under validation must have a size matching the given value. For string data, value corresponds to the number of characters. For numeric data, value corresponds to a given integer value. For files, size corresponds to the file size in kilobytes.
The field under validation must be a string type.
The field under validation must be a valid timezone identifier according to the timezone_identifiers_list
PHP function.
The field under validation must be unique on a given database table. If the column
option is not specified, the field name will be used.
Occasionally, you may need to set a custom connection for database queries made by the Validator. As seen above, setting unique:users
as a validation rule will use the default database connection to query the database. To override this, do the following:
$verifier = App::make('validation.presence');
$verifier->setConnection('connectionName');
$validator = Validator::make($input, [
'name' => 'required',
'password' => 'required|min:8',
'email' => 'required|email|unique:users',
]);
$validator->setPresenceVerifier($verifier);
'email' => 'unique:users'
'email' => 'unique:users,email_address'
'email' => 'unique:users,email_address,10'
You may also specify more conditions that will be added as "where" clauses to the query:
'email' => 'unique:users,email_address,NULL,id,account_id,1'
In the rule above, only rows with an account_id
of 1
would be included in the unique check.
The field under validation must be formatted as an URL.
Note: This function uses PHP's
filter_var
method.
In some situations, you may wish to run validation checks against a field only if that field is present in the input array. To quickly accomplish this, add the sometimes
rule to your rule list:
$v = Validator::make($data, [
'email' => 'sometimes|required|email',
]);
In the example above, the email
field will only be validated if it is present in the $data
array.
Sometimes you may wish to require a given field only if another field has a greater value than 100. Or you may need two fields to have a given value only when another field is present. Adding these validation rules doesn't have to be a pain. First, create a Validator
instance with your static rules that never change:
$v = Validator::make($data, [
'email' => 'required|email',
'games' => 'required|numeric',
]);
Let's assume our web application is for game collectors. If a game collector registers with our application and they own more than 100 games, we want them to explain why they own so many games. For example, perhaps they run a game re-sell shop, or maybe they just enjoy collecting. To conditionally add this requirement, we can use the sometimes
method on the Validator
instance.
$v->sometimes('reason', 'required|max:500', function($input)
{
return $input->games >= 100;
});
The first argument passed to the sometimes
method is the name of the field we are conditionally validating. The second argument is the rules we want to add. If the Closure
passed as the third argument returns true
, the rules will be added. This method makes it a breeze to build complex conditional validations. You may even add conditional validations for several fields at once:
$v->sometimes(['reason', 'cost'], 'required', function($input)
{
return $input->games >= 100;
});
Note: The
$input
parameter passed to yourClosure
will be an instance ofIlluminate\Support\Fluent
and may be used as an object to access your input and files.
If needed, you may use custom error messages for validation instead of the defaults. There are several ways to specify custom messages.
$messages = [
'required' => 'The :attribute field is required.',
];
$validator = Validator::make($input, $rules, $messages);
Note: The
:attribute
place-holder will be replaced by the actual name of the field under validation. You may also utilize other place-holders in validation messages.
$messages = [
'same' => 'The :attribute and :other must match.',
'size' => 'The :attribute must be exactly :size.',
'between' => 'The :attribute must be between :min - :max.',
'in' => 'The :attribute must be one of the following types: :values',
];
Sometimes you may wish to specify a custom error messages only for a specific field:
$messages = [
'email.required' => 'We need to know your e-mail address!',
];
In some cases, you may wish to specify your custom messages in a language file instead of passing them directly to the Validator
. To do so, add your messages to custom
array in the resources/lang/xx/validation.php
language file.
'custom' => [
'email' => [
'required' => 'We need to know your e-mail address!',
],
],
Laravel provides a variety of helpful validation rules; however, you may wish to specify some of your own. One method of registering custom validation rules is using the Validator::extend
method:
Validator::extend('foo', function($attribute, $value, $parameters)
{
return $value == 'foo';
});
The custom validator Closure receives three arguments: the name of the $attribute
being validated, the $value
of the attribute, and an array of $parameters
passed to the rule.
You may also pass a class and method to the extend
method instead of a Closure:
Validator::extend('foo', 'FooValidator@validate');
Note that you will also need to define an error message for your custom rules. You can do so either using an inline custom message array or by adding an entry in the validation language file.
Instead of using Closure callbacks to extend the Validator, you may also extend the Validator class itself. To do so, write a Validator class that extends Illuminate\Validation\Validator
. You may add validation methods to the class by prefixing them with validate
:
<?php
class CustomValidator extends Illuminate\Validation\Validator {
public function validateFoo($attribute, $value, $parameters)
{
return $value == 'foo';
}
}
Next, you need to register your custom Validator extension:
Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
When creating a custom validation rule, you may sometimes need to define custom place-holder replacements for error messages. You may do so by creating a custom Validator as described above, and adding a replaceXXX
function to the validator.
protected function replaceFoo($message, $attribute, $rule, $parameters)
{
return str_replace(':foo', $parameters[0], $message);
}
If you would like to add a custom message "replacer" without extending the Validator
class, you may use the Validator::replacer
method:
Validator::replacer('rule', function($message, $attribute, $rule, $parameters)
{
//
});


| Properties' Summary |
::com::sun::star::beans::PropertyValues
StartRedline |
[ OPTIONAL ]
contains the properties of a redline at the start of the document.
The sequence contains the following properties
|
[ maybevoid ] ::com::sun::star::beans::PropertyValues
EndRedline |
[ OPTIONAL ]
contains the properties of a redline at the start of the document.
The sequence contains the following properties
|
| Exported Interfaces - Details |
::com::sun::star::container::XEnumerationAccess
- Description
- This is the factory for an enumeration of the paragraphs in this text.
This interface is mainly useful for exporting the text to a
data format.
|
|
XText
- Description
- provides a cursor factory and the possibility to insert and remove contents.
|
|
XTextRangeCompare
- Usage Restrictions
- optional
- Description
- optional interface to compare postions of TextRange
instances within this text.
|
|
XTextRangeMover
- Usage Restrictions
- optional
- Description
- makes it possible to change the position of paragraphs.
|
|
XRelativeTextContentInsert
- Usage Restrictions
- deprecated
- optional
- Deprecation Info
- hack
- Description
- makes it possible to insert a new text content, before or
after existing text contents.
|
|
| Properties' Details |
StartRedline
::com::sun::star::beans::PropertyValues StartRedline;
- Usage Restrictions
- optional
- Description
- contains the properties of a redline at the start of the document.
The sequence contains the following properties
string RedlineAuthor
com::sun::star::util::DateTime RedlineDate_Time
string RedlineComment
string RedlineType
string RedlineIdentifier
boolean IsCollapsed
boolean IsStart
boolean MergeLastPara
[maybevoid] com::sun::star::text::XText RedlineText (maybevoid)
com::sun::star::beans::PropertyValues RedlineSuccessorData
(contains the same properties except for the RedlineSuccessorData
- See also
- EndRedline
|
|
EndRedline
[ maybevoid ] ::com::sun::star::beans::PropertyValues EndRedline;
- Usage Restrictions
- optional
- Description
- contains the properties of a redline at the start of the document.
The sequence contains the following properties
string RedlineAuthor
com::sun::star::util::DateTime RedlineDate_Time
string RedlineComment
string RedlineType
string RedlineIdentifier
boolean IsCollapsed
boolean IsStart
boolean MergeLastPara
[maybevoid] com::sun::star::text::XText RedlineText (maybevoid)
com::sun::star::beans::PropertyValues RedlineSuccessorData
(contains the same properties except for the RedlineSuccessorData
- See also
- StartRedline
|
|
Top of Page
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


| 1 |
George Washington University |
Ecology of MERS-CoV in camels, humans, and wildlife in Ethiopia |
2,487,071 |
9,948,284 |
1 September 2018 |
31 August 2022 |
US |
| 2 |
Montana State University—Bozeman |
Dynamics of zoonotic systems: human-bat- pathogen interactions |
1,650,000 |
6,600,000 |
1 September 2017 |
31 August 2021 |
US |
| 3 |
Fred Hutchinson Cancer Research Center |
Realtime tracking of virus evolution for vaccine strain selection and epidemiological investigation |
409,400 |
2,047,000 |
23 August 2016 |
31 May 2021 |
US |
| 4 |
Erasmus Universitair Medisch Centrum Rotterdam |
Anticipating the global onset of novel epidemics |
3,670,585 |
18,352,925 |
1 November 2011 |
31 October 2016 |
EU |
| 5 |
National Institute of Infectious Diseases |
The survey of middle east respiratory syndrome coronavirus of the dromedary in Ethiopia |
137,800 |
413,400 |
1 April 2017 |
31 March 2020 |
JP |


{% extends "vpool/view.html" %} {% block page_title %} {{ super() }} {% endblock %} {% block menu %} {{ super() }} {% endblock %} {% block container %}
Are you sure you want to permanently delete pool {{ pool.name }}?


Singapore reports dengue increase in past 5 weeks
by News DeskBy NewsDesk @infectiousdiseasenews
Environmental officials in Singapore have reported a steady increase in dengue fever cases over the past five weeks.
Through Friday, 14,617 dengue cases have been report, including 20 deaths.
The adult Aedes aegypti mosquito population, determined by the Gravitraps deployed by the National Environment Agency (NEA), has increased by 32% in October, compared to in September. Notably, NEA has also observed a 55% increase in the rate of detection of Aedes aegypti larval habitats found in homes in October, compared to in September.
Taken together, these are indications that the number of dengue cases may continue to rise further. The increase in dengue cases observed at the end of the year has been noted before in previous years, particularly in 2013 and 2015; and on both occasions, Singapore entered the following year with an atypically high number of dengue cases.
amzn_assoc_placement = "adunit0"; amzn_assoc_tracking_id = "outbre-20"; amzn_assoc_ad_mode = "manual"; amzn_assoc_ad_type = "smart"; amzn_assoc_marketplace = "amazon"; amzn_assoc_region = "US"; amzn_assoc_linkid = "556fa6de8bb92fea2aaa3d823ac894f1"; amzn_assoc_design = "in_content"; amzn_assoc_title = "Paid links"; amzn_assoc_asins = "B072QLXK2T,B0727XJQLD";
- Malaysia Wolbachia trials: Battling dengue and other mosquito-borne viruses
- Norovirus news: Air Force Academy, Lego event and more
- Drexel University reports two mumps cases
- Plague: 4th case reported in China, according to Taiwan CDC
- Philippines: Health officials team with McDonald’s in polio vaccination campaign
- Samoa measles outbreak: 17 deaths reported, Gov’t issues compulsory vaccination orders
- Fiji reports 10th measles case, Vaccine shortages reported


Enoch Currie-Tetteh,C.E.O.
Enoch Currie-Tetteh is an accomplished Academician with over twenty years’ experience in the field of Software and app development. As a distinguished Leader, with expertise in research, mentoring, consultancy and investigative work, he has, over the years, provided scientific and innovative support to vital National projects.


THE UNDERENATH A film review by Christopher Null Copyright 1995 Christopher Null
THE UNDERNEATH opens with a surreally bizarre, green-tinted shot of Michael (Peter Gallagher), driving along the Austin, Texas backroads in an armored car.  These are also the perfect introduction to a film noir where you just *know* nothing is going to turn out right.
Michael is an ex-compulsive gambler, returned to his Austin hometown ostensibly to turn his life around and get a real job, but in reality having some less savory motives. His ex-wife, Rachel (Allison Elliott), is in town and attached to a local, small-time hood. When Michael tries to patch things up with Rachel, a plot suddenly (and quite inexplicably) develops between the three to rob the armored car that Michael drives. The plan is hatched, and the fun begins.
THE UNDERNEATH is director Steven Soderbergh's update of the 1949 noir CRISS CROSS. Tracking the story along three different timelines, it's a little difficult to get into, but once the action picks up, the film is fairly engrossing. As with any Soderbergh film, the camerawork is exemplary, especially in the use of color as a symbol for the pervading mood.
The major problem here is that Elliott doesn't have "the look" to pull off a Linda Fiorentino-style villain. Instead, she looks and acts more like a co-ed from the University down the street. The writers have also thrown in a few red herrings to keep you from figuring out the finale too soon--not that you could, because the movie has a tacked-on, inane ending that almost blows the whole film.
Fortunately, it doesn't. The movie's strong points (including some nice work by Gallagher) manage to outweigh the negatives. In the end, THE UNDERNEATH succeeds more on the virtue of its good production values than through a compelling or well-thought-out story.
RATING: ***1/2
|* Unquestionably awful | |** Sub-par on many levels | |*** Average quality, hits and misses | |**** Good, memorable film | |***** Perfection |
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Deprecated elements
contactevents\ContactEvent.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 16 | The wrapper class for a Maileon contact event. |
contactevents\ContactEventList.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 17 | The wrapper class for a Maileon contact event list. |
transactions\TransactionsService.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 198 | $name can be used as ID, @see getTransactionType() |
contactevents\AttributeType.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 14 | A maileon attribute type |
contactevents\ContactEventType.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 16 | Wrapper class for Maileon contact event types. |
reports\FieldBackup.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 15 | Backup instructions are no longer supported |
contactevents\DataType.php1
| Type | Line | Description |
|---|---|---|
| deprecated | 16 | A type descriptor class for attribute definitions. The supported data types are string, double, float, integer, boolean and timestamp. |


|
|
IFXAuthorMeshMap Class ReferenceDescribes the mapping between an author mesh and a modifier version of the mesh.
More...
Inheritance diagram for IFXAuthorMeshMap:
List of all members.
Detailed Description
Describes the mapping between an author mesh and a modifier version of the mesh.
This class is most commonly used to determine how the mesh has changed after it is scrubbed or compressed, or if a multi-resolution version of the mesh has been created (at the very least, these operations reorder the mesh elements.
For each attribute there is an array of U32. The array specifies the mapping. For example, if vertex #7 in the input mesh moves to position #3 in the output mesh, then array[7] = 3. If vertex #7 is not mapped to the output, then array[7] = IFX_NULL_INDEX32
Member Function Documentation
| virtual IFXRESULT IFXAPI IFXAuthorMeshMap::Allocate |
( |
IFXAuthorMesh * |
pMesh |
) |
[pure virtual] |
|
|
|
Allocates a map of sufficient size to fully describe the mapping of pMesh.
Initialized to the identity mapping.
- Parameters:
-
| pMesh | The mesh for which to allocate the mapping. |
- Returns:
- An IFXRESULT value
- Return values:
-
| IFX_OK | No error. |
| IFX_E_OUT_OF_MEMORY | Not enough memory to allocate map. |
Implemented in CIFXAuthorMeshMap. |
| virtual IFXRESULT IFXAPI IFXAuthorMeshMap::AllocateMaps |
( |
|
) |
[pure virtual] |
|
|
|
Constructs a full copy of this map.
- Returns:
- A pointer to an object of type IFXAuthorMeshMap
- Return values:
-
| NULL | The clone operation failed, most likely due to insufficient memory. |
| non-NULL | A pointer to the cloned IFXAuthorMeshMap. |
Implemented in CIFXAuthorMeshMap. |
| virtual IFXRESULT IFXAPI IFXAuthorMeshMap::Concatenate |
( |
IFXAuthorMeshMap * |
in_pMapB |
) |
[pure virtual] |
|
|
|
Combines two IFXAuthorMeshMaps into one equivalent map.
The map is modified in-place.
Before: inputMesh --> thisMap --> IntermediateMesh --> MapB --> resultMesh
After : inputMesh --> thisMap --> resultMesh
- Parameters:
-
| in_pMapB | The IFXAuthorMeshMap to merge into the current IFXAuthorMeshMap. |
- Returns:
- An IFXRESULT value
- Return values:
-
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetDiffuseMap |
( |
|
) |
[pure virtual] |
|
|
|
Describes the mapping of the diffuse vertex colors between the original mesh and this mesh.
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer to a mapping array |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetFaceMap |
( |
|
) |
[pure virtual] |
|
|
|
Describes the mapping of the faces between the original mesh and this mesh.
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer to a mapping array |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetMap |
( |
U32 |
mapIndex |
) |
[pure virtual] |
|
|
|
Recovers a mapping between the original mesh and this mesh by index.
- Parameters:
-
| mapIndex | The index of the map to return: 0=faces, 1=positions, 2=normals, 3=texure coordinates, 4=diffuse vertex colors, 5=specular vertex colors |
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32 IFXAPI IFXAuthorMeshMap::GetMapSize |
( |
U32 |
mapIndex |
) |
[pure virtual] |
|
|
|
Returns the size of the mapping between the original mesh and this mesh by index.
- Parameters:
-
| mapIndex | The index of the map whose size to return: 0=faces, 1=positions, 2=normals, 3=texure coordinates, 4=diffuse vertex colors, 5=specular vertex colors |
- Returns:
- A U32
- Return values:
-
| The | size of the map |
| 0 | if the map does not exist. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetNormalMap |
( |
|
) |
[pure virtual] |
|
|
|
Describes the mapping of the normals between the original mesh and this mesh.
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer to a mapping array |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetPositionMap |
( |
|
) |
[pure virtual] |
|
|
|
Describes the mapping of the vertex positions between the original mesh and this mesh.
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer to a mapping array |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetSpecularMap |
( |
|
) |
[pure virtual] |
|
|
|
Describes the mapping of the specular vertex colors between the original mesh and this mesh.
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer to a mapping array |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual U32* IFXAPI IFXAuthorMeshMap::GetTextureMap |
( |
|
) |
[pure virtual] |
|
|
|
Describes the mapping of the texture coordinates between the original mesh and this mesh.
- Returns:
- An array of U32
- Return values:
-
| A | valid pointer to a mapping array |
| NULL | if there is no mapping for the faces. |
Implemented in CIFXAuthorMeshMap. |
| virtual void IFXAPI IFXAuthorMeshMap::SetMapSize |
( |
U32 |
mapIndex, |
|
|
U32 |
value |
|
) |
[pure virtual] |
|
|
|
Sets the size of the mapping between the original mesh and this mesh by index.
- Parameters:
-
| mapIndex | The index of the map whose size to return: 0=faces, 1=positions, 2=normals, 3=texure coordinates, 4=diffuse vertex colors, 5=specular vertex colors |
| value | Actual size of the mapping |
- Returns:
- void
Implemented in CIFXAuthorMeshMap. |
© 1999 - 2006 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
|
|


A group of men sat slumped in plastic chairs watching television and awaiting their dinner of chili, carrots and rice. Later, they would be among a group of 30 to sleep crammed together on bunk beds or mats on the floor. At 8 a.m., they’d have to leave for another day on the street.
{% include '_components/_infobox.html' %}It was in front of that television that the men at Hospitality House, a homeless shelter in the Tenderloin, learned of a different sort of facility for people like themselves. The 15-month-old Navigation Center in San Francisco’s Mission District has been the talk of City Hall and nightly newscasts, leaving the men at Hospitality House to wonder why none of its relaxed rules and assistance in finding permanent housing had come their way.
“I’ve heard they pick up people off the streets, but they don’t think of the people already in the shelters,” said Ramon Thibodeaux, 44. “That’s what hurts the most. We’re homeless, too. It’s just that we’re in here.”
 Getting a bed in one of them is a time-consuming bureaucratic process that requires joining a waiting list. And they have many rules, including prohibitions on men and women sleeping together, and bringing along pets and belongings, that discourage many from using them.
But what if the city’s traditional homeless shelters, with their rigid rules, were run along the lines of the far-more-welcoming Navigation Center, which has case managers on hand to help shelter residents get their lives together? What if the city added hundreds more beds to accommodate those on its waiting list for shelters rather than making them pass the time on the streets until their names come up? What if the city considered shelters part of the answer to homelessness and not just way stations?
It is possible to make changes to shelters so men like Thibodeaux, stuck cycling endlessly in and out of them, could instead get help finding permanent housing quickly, say many city officials and those who operate the shelters.
It would mean turning the shelters for single adults — at 1,203 beds, they’re the vast majority of the system, which also has some separate facilities for families and youth — into places more like the Navigation Center, with case managers to offer intensive help, all-day staffing allowing for 24-hour access, and relaxed rules to allow partners to sleep together alongside their pets and belongings. The shelter system costs the city about $16 million a year. Doubling that amount could pay for such an overhaul, according to a city controller’s analysis.
In mid-June, the Board of Supervisors voted to create six more Navigation Centers over the next two years, including a second center that opened this week at Market and 12th streets.
The five additional centers would accommodate about 400 additional homeless people, a considerable proportion of the shelter waiting list, which fluctuates from 600 to 900 people. Building five new centers would cost around $10 million to $20 million — although the board’s action left open the possibility that converting some existing shelters into Navigation Centers would be acceptable. Operating them would cost upward of $20 million to $30 million a year.
If those centers were added to the two existing centers, which have 168 beds, and the city upgraded is traditional shelters, a combined 1,771 homeless people would have more than just a place to sleep at night. They would have a place to be during the day and get help figuring out how to live a life off the streets.
That number is far from the city’s entire homeless population — estimates for several years have varied from 6,400 people to more than twice that. The city’s most recent official biennial count, conducted during one night in January 2015, put the total at 6,686 people. Getting 1,771 people into improved shelters with case managers to help them move out of the shelters more quickly would unclog the current shelter system, freeing up space for others still on the street.
“It would really go a long way,” Sam Dodge, deputy director of Mayor Ed Lee’s new Department of Homelessness and Supportive Housing, said of improving the current shelters and adding 400 Navigation Center beds. “You start to make things efficient and you start to expand access and coordinate everything, and you start to make some progress.”
Broad support
The idea of retooling San Francisco’s homeless shelter system is gaining traction with everyone from the destitute people who live in the shelters to the people who operate them to President Obama’s homeless policy adviser.
“For too long, we have fallen into the mistake of thinking it’s either emergency shelter or permanent housing,” said Matthew Doherty, executive director of the U.S. Interagency Council on Homelessness. “We need to look at the role emergency shelters can play in helping people find permanent housing. It’s not one or the other.”
Hospitality House opened in 1967 as a Tenderloin neighborhood center. In 1982, it was converted into an overnight shelter after President Ronald Reagan cut funding for public housing and low-income housing vouchers, increasing the number of homeless people dramatically.
More shelters opened over the next decade, but in time they became afterthoughts in the city’s homelessness efforts. In 2004, Mayor Gavin Newsom promised to close the shelters as part of a 10-year plan to end homelessness. He said a shift to permanent, supportive housing would eliminate the need for them. “Shelters solve sleep. Housing solves homelessness,” he repeated throughout his tenure.
But rather than getting to the point where shelters could be closed, the city cut the number of beds by a third to save money. In 2004, there were 1,910 beds for single adults — now, there are 1,203. Another 100 or so beds are available for families. While there are a few dozen vacant shelter beds each night, often because people didn’t show up for a space they were granted, Dodge said earlier this year, “There’s a tremendous demand for shelter.”
The recession that hit in 2008 prompted more cuts, so the city closed shelters during the day. Since 2004, the city has also closed half of its daytime homeless drop-in centers, forcing indigent people outside, where they are more visible to residents and tourists.
Last year, Lee’s administration took a different approach. It opened the first Navigation Center in March 2015, near the 16th Street BART Station in the Mission District — and its popularity led quickly to plans for the second center that just opened at the Civic Center Hotel.
The centers are operated differently than typical homeless shelters. At a Navigation Center, homeless partners can sleep beside each other and have space for pets to sleep on the floor next to them. People can bring all of their belongings for safe storage.
Shelters don’t allow that. Instead, homeless people in traditional shelters can store their belongings at a facility on Jones Street, which is accessible only from 9 a.m. to 4 p.m. Monday through Friday and requires a state identification card, which many homeless people don’t have.
At the Mission Navigation Center, a courtyard with shaded picnic tables serves as an all-day gathering spot and animal play area. Homeless people can come and go as they please and eat whenever they want. Most shelters are closed during the day, have strict nightly curfews with no in-and-out privileges and stick to set meal times.
Many homeless people see shelter rules as so rigid, they won’t sleep in them. But they are eager to enter a Navigation Center.
Tony Roberson, 63, who’s been homeless for two years and has stayed in various shelters including Hospitality House, said those who score beds at a Navigation Center are lucky.
“The resources they’re putting into that one shelter is crazy when they have all these other shelters that need help,” he said. “It would be nice if 10 percent, 15 percent of what they send to the Navigation Center could be sent here to Hospitality House. It would make a big difference.”
Services are the biggest difference between the two models. Case managers at a Navigation Center help homeless people “navigate” into something else. They’ll work intensely with center residents to make medical appointments, get proper identification cards, qualify for government benefits, find permanent housing or secure a bus ticket home. And until there’s a solution beyond the center, residents are allowed to stay indefinitely.
Some shelters have a few social workers or nurses, but the ratio to residents is much higher at a Navigation Center. And the city’s scant permanent housing spaces are given first to Navigation Center residents, meaning there’s none left for those in shelters.
As of mid-June, 545 clients had been housed at the Mission Navigation Center since March 2015. Of those, 216 received a free bus ticket through the city’s Homeward Bound program, which pays to send people to their home cities or states as long as a willing relative or friend is waiting for them. An additional 206 moved into housing, 13 moved into the Civic Center Hotel, and the rest were still living there, had left or had been asked to leave, or went into other programs.
Dramatic differences
Perhaps nobody knows the inequities of Navigation Centers versus traditional shelters better than Ken Reggio, director of Episcopal Community Services, which manages the Mission District center as well as two traditional shelters, Sanctuary and Next Door.
At the 26-year-old Next Door Shelter, there are just two case managers to work with those who stay in its 334 beds. At the Mission Navigation Center, the ratio is 1 to 12.
Entering Next Door requires walking through a metal detector manned by a security guard.
“We always have weapons problems,” Reggio explained. When one homeless man appeared to pick a fight with another in the elevator, Reggio shrugged. “I’d be angry too if I was sleeping only 22 inches away from someone else and surrounded by 300 people,” he said.
In the lobby is a wall decorated with photographs of former shelter residents holding houseplants — the gift they receive when they leave. Compare that to the basket of sheets and towels, hot plate and microwave given to those who leave the Navigation Center, Reggio said.
There are other ways homeless people could benefit if the city retools the shelter system and increases the number of Navigation Centers.
A homeless person can gain access to a Navigation Center in a couple of hours. The city’s Homeless Outreach Team goes out knowing the daily number of beds available, finds people in tents to fill them and drives them, their pets and belongings there in a van. The center’s staff gives them a tour and teams them with a case manager.
Getting a shelter bed takes far more time. The homeless person must visit one of four reservation sites, complete a profile, get tested for tuberculosis and call 311 to get on the waiting list. Once the person’s name comes up, he or she gets a bed for 90 days. It’s possible to extend a stay by 30 to 60 days, but then the person must begin the process again. Emergency shelter beds can be obtained for a night, but only by visiting the same reservation sites and only if there are any available that day.
In a way, the system gives homeless people the incentive to stay on the street in hopes of being selected for a Navigation Center rather than bothering with the complexities of securing a shelter bed.
More help available
Thibodeaux, who was a Hospitality House resident for four months before relocating to the Sanctuary shelter, learned how different a Navigation Center was while watching TV one night.
“They help people get housing — we even saw it on the news,” he said. “A couple of people who were homeless went to the Navigation Center, and they got housing. I saw it on their faces, the relief.”
Thibodeaux wound up in city shelters after losing his job as a janitor, losing his South of Market studio apartment and falling into depression. When the shelters close during the day, he works on his resume in Hospitality House’s adjacent employment center.
He’d get more help finding a job and securing housing at a Navigation Center, but scoring one of its coveted beds would mean setting his progress in reverse.  Those who have been on the streets for six months without accessing a traditional shelter bed are given priority for a Navigation Center.
Jackie Jenks, executive director of Hospitality House, is co-chair of the city’s Homeless Emergency Service Providers Association, a group that has been calling for shelters to be given resources comparable to those at Navigation Centers. Lee responded this month by putting $900,000 into his proposed budget for a pilot program that would do just that, easing the association’s fears that shelters would be overlooked in favor of new Navigation Centers.
“We believe everyone should have housing, but as long as people have to stay in shelters they should have all the same services given now at Navigation Centers to help them exit into housing when it becomes available,” Jenks said.
Shelter operators have the city controller’s office on their side. In December, it published a report on the first six months of the Mission Navigation Center and recommended that “city leaders and service providers explore policy changes that will help make traditional shelters similarly welcoming for clients and foster a sense of working together toward tangible goals.” An update to that report last month reinforced that contention.
In a survey of Navigation Center clients, the controller’s office found that the top three reasons they had resisted going to traditional shelters were the crowded accommodations, curfews and the inability to sleep with partners.
City officials are mostly on board with improving shelters, but have taken little concrete action.
| Reason | Description | Number of mentions | |
|---|---|---|---|
| People | Too many people in general, as well as the "wrong types" of people | 24 | |
| Restrictions | Curfew, kicked out in the morning, rules and regulations | 23 | |
| Partners | Can't shelter with partner, or partner does not want to be in shelter | 19 | |
| Not connected | Did not know about shelter or could not get into shelter | 16 | |
| Violence or safety concerns | Experienced or heard of violence, afraid of violence or assault | 14 | |
| Poor service | Had poor experiences with shelter staff | 13 | |
| Stealing | Experienced theft or afraid of theft | 12 | |
| Not interested | "Prefer the streets" | 11 | |
| General environment | "Don't like shelters" | 10 | |
| Pets | Pets not allowed in shelters | 7 | |
| Cleanliness | Bed bugs, hygiene of others, afraid of illness | 7 | |
| Other | Using drugs, PTSD, homophobia | 4 |
Jeff Kositsky, head of the mayor’s new Department on Homelessness and Supportive Housing, said he hasn’t been on the job long enough to know how many additional shelter beds should exist, but endorses making shelters more welcoming places.
“I support the idea that shelters should be easy to access and that there are services available that can help people exit homelessness,” he said. “I think that’s a great idea, but it needs to be part of a bigger system.”
He said he wants to create a navigation system that encompasses the city’s entire response to homelessness and makes it easier for individual homeless people to receive targeted services and get off the streets quickly.
Supervisor Mark Farrell, the chairman of the board’s budget committee, said changing traditional shelters would “make a huge difference.”
“Most people think of our shelter system as an emergency place for people to get off the streets for the night, but in reality we have people staying in our shelters for two years at a time,” he said. “Our goal should not only be housing them, but getting them on their own two feet.”
Financial disparity
Cost is a major consideration. The controller’s report found that operating a Navigation Center bed for one night costs $69, compared with the average of $36 for a traditional shelter bed.
The adult shelters — there are separate, smaller facilities for families and those ages 16-24 — receive $13.8 million a year from the city, but cost $16 million to run. Private funding makes up the difference. To operate those shelters as Navigation Centers would mean roughly doubling the city’s annual outlay to $32 million.
Expanding the number of shelter beds to accommodate more homeless people would be a bigger expense because it would mean building new facilities. A May report from Harvey Rose, the Board of Supervisors’ budget and legislative analyst, estimated that one-time costs of opening five new Navigation Centers would range from $5 million to $15 million. Rose estimated the annual operating costs of those centers at $20 million to $32 million.
The first Navigation Center in the Mission opened thanks to an anonymous $3 million donation from someone in the tech field. To pay for expanded services, the mayor could ramp up efforts to raise more private money from tech titans or other philanthropists.
Regular homeless operations are paid for out of the city’s general fund, and passage of a potential sales tax in November to supplement that money could help pay for running the improved shelters and staffing them with case managers.
That all adds up. But it could be a strategic investment in a city with a $9 billion annual budget and a growing number of residents beyond frustrated with the proliferation of tent cities on their sidewalks.


David Leyonhjelm Forced To Pay $120,000 To Senator Sarah Hanson-Young Over Defamatory Comments
by Rachael ConaghanDuring his time in parliament, David Leyonhjelm seemed to revel in saying as many outrageous, offensive things as possible.
Now he’s being forced to put his money where his mouth is, after losing his defamation case against Greens Senator Hanson-Young.
He has been ordered to pay $120,000 for sexist, defamatory comments he made about her last year in parliament, and in subsequent interviews.
Senator Hanson-Young has praised the ruling, saying she took action for every women and girl who has ever been told to stay silent in the face of harassment.
Of course, it’s not just Hanson-Young who has borne the brunt of Leyonhjelm’s tantrums. He’s raged against Malcolm Turnbull. He’s raged against Angela Bishop. He’s even raged against journalists for calling him an “angry, white man“.
So as you can imagine, people are enjoying his comeuppance.
The former Senator quit federal politics in February to contest the NSW election, but failed to win a seat.
The matter will return to court in December to discuss who will pay legal costs.


Rockets that evolve based on their fitness scrore using genetic algorithm
This is a word processor application that perform genetic algorithm on population of random letters and characters until it finds the required phrase.
Implementation of neural networks as brain of birds and NEAT algorithm for the evolution of birds with each generations


>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Dictionary
20. Directed Graphs
A directed graph is a collection of nodes with
connections or arcs specified between certain pairs of nodes.
It can be used to specify matters such as the precedences
in a set of processes (stuffing of envelopes must precede sealing),
or the structure of a tree.
The connections can be specified by a boolean
connection matrix instead of by arcs, and the connection
matrix can be determined from the list of arcs.
The connection matrix is convenient for determining various
properties of the graph, such as the in-degrees
(number of arcs entering a node), the out-degrees,
immediate descendants, and the closure, or connection
to every node reachable through some path. For example:
from=: 3 7 2 5 5 7 1 5 5 5 2 6 1 2 3 7 7 4 7 2 7 4
to=: 5 6 0 2 6 2 7 6 0 7 3 3 2 1 7 0 4 2 3 0 0 3
$ arcs=: from,.to
22 2
|: arcs { nodes=: 'ABCDEFGH' Transposed for display
DHCFFHBFFFCGBCDHHEHCHE
FGACGCHGAHDDCBHAECDAAD
CM=: #. e.~ [: i. [ , [ Connection matrix from arcs
]cm=: (>:>./,arcs) CM arcs
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 1
1 1 0 1 0 0 0 0
0 0 0 0 0 1 0 1
0 0 1 1 0 0 0 0
1 0 1 0 0 0 1 1
0 0 0 1 0 0 0 0
1 0 1 1 1 0 1 0
(+/cm);(+/"1 cm); (+/+/cm);(#arcs);(#~.arcs)
+---------------+---------------+--+--+--+
|3 1 4 4 1 1 2 3|0 2 3 2 2 4 1 5|19|22|19|
+---------------+---------------+--+--+--+
The foregoing results are the in, out, and total degrees;
followed by the number of arcs, and the number of distinct arcs.
A boolean vector b may be used to represent the nodes,
and the inner product b +./ . *. cm gives the
same representation of the nodes reachable from them.
The immediate family (which includes the original points themselves)
is therefore given by the function imfam :
imfam=: [ +. +./ . *.
(b=: 1 0 0 0 0 0 0 1) imfam cm
1 0 1 1 1 0 1 1
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Voc
!:
Help
Dictionary


The RFEF ask for Tebas to be sacked
by BeSoccerThe war between the RFEF ans La Liga continues. This time it is the Spanish Federation that has asked for Javier Tebas to be dismissed as president of the LFP.
This Friday, it was made public that the justice will not let La Liga play the Villarreal-Atletico Madrid match in Miami. That is why, after the ruling, the RFEF asked for Javier Tebas to be sacked.
"It reiterates the request of the La Liga club members to engage in dialogue with the Federation and ask for the immediate dismissal of the La Liga President or for his immediate resignation," the RFEF wrote in a statement.
The game between Villarreal and Atletico Madrid was due to take place in Miami on 6 December, according to La Liga. However, the jury has given the go-ahead to the RFEF, so it will be played in Villarreal, to which the competition replied by changing the time of the match.
"The League wishes to express its utmost respect for a decision that does not prejudge the substance of the matter, which will be resolved at the final hearing next February 2020. It's a long-term strategy," La Liga said after the ruling was announced.
It was from then on that the Federation sent its statement. "As determined by the judge of the Mercantile No. 2 of Madrid on the subject of Friday and Monday and has again put it into evidence on the day, La Liga 'cannot act' outside the Federation," added the RFEF.
Featured links
- Ballon d'Or winner already been decided
- The latest football transfers news and rumours
- Possible 'Clasico' in the Spanish Supercup final
- Who has the most free-kicks goals: Messi or Cristiano?
It is remarkable the fact that La Liga has seen all the petitions that they have formed against the RFEF rejected in recent months," said the Federation, which pointed the finger to Javier Tebas.
"The president of the League, Javier Tebas, has filed all kinds of lawsuits and appeals against the RFEF, in what is considered a flight forward to justify their own mistakes," said the RFEF.
The statement did not stop there: "This way of proceeding has led two Spanish clubs to breach the rules of FIFA and UEFA, causing an interference of the legal-public system in aspects that FIFA and UEFA consider to be completely private".
"These clubs, which are subject to national and international football regulations, were aware at all times before the ruling that they were facing significant and serious sporting and/or economic sanctions for their actions contrary to FIFA's decisions and the most basic principles of international sporting regulations," he concluded.


Based on one's past experience, One is afraid of being a failure.
Because they want to.
They both need changing regularly - for exactly the same reason.
Because there wasn't a single person there.
Watching the mother-in-law reverse off a cliff driving your brand new car.


[ all classes ]
Overall Coverage Summary
| Package | Class, % | Method, % | Line, % |
|---|---|---|---|
| all classes | 78% (39/ 50) | 44.8% (141/ 315) | 31.5% (490/ 1557) |
Coverage Breakdown
| Package | Class, % | Method, % | Line, % |
|---|---|---|---|
| core.system | 100% (2/ 2) | 32% (8/ 25) | 18.1% (19/ 105) |
| core.statistics.balance.user | 0% (0/ 1) | 0% (0/ 7) | 0% (0/ 35) |
| core.statistics.balance.station | 100% (1/ 1) | 11.1% (1/ 9) | 7.9% (3/ 38) |
| core.setup | 0% (0/ 6) | 0% (0/ 13) | 0% (0/ 146) |
| core.rides.planning | 100% (1/ 1) | 50% (1/ 2) | 95.2% (20/ 21) |
| core.renting | 100% (1/ 1) | 80% (4/ 5) | 76.9% (40/ 52) |
| core.components.factories | 83.3% (5/ 6) | 37% (10/ 27) | 33.6% (39/ 116) |
| core.components | 93.3% (14/ 15) | 68.1% (96/ 141) | 57.9% (249/ 430) |
| core | 100% (1/ 1) | 50% (3/ 6) | 50% (4/ 8) |
| cli.commands | 100% (14/ 14) | 23.7% (18/ 76) | 20.9% (116/ 555) |
| cli | 0% (0/ 2) | 0% (0/ 4) | 0% (0/ 51) |


no news is good news
incedible projects for all the world to see!
About the Center:
The Transportation Safety Center (TSC) provides a foundation and mechanism to facilitate the development of sustainable systems to improve highway safety and achieve the goal of zero deaths on Florida’s roads.
The TSC was establish to promote the highway safety initiatives through applied and theoretical safety-related research projects; workforce development and training of current transportation professionals; academic program enhancements for college-attending students in transportation and safety-related disciplines; technical assistance about practical application of effective infrastructure and non-infrastructure safety countermeasures; collaboration with state and local highway safety professionals to address prioritized safety areas through coalitions; outreach to local government municipalities to promote funding programs that utilizes federal-aid funds for safety improvements on locally owned and maintained roads; and knowledge transfer support through technology to build a comprehensive program serving more stakeholders and customers.


The following should be taken into account when reviewing published pupil absence statistics.
The absence information reported in published releases is based on data returned by schools as part of the school census
This might include duplicates if schools have recorded duplicated pupils.
It does not include data which has been submitted by local authorities (LAs) or schools outside of the school census.
It's a school's responsibility to record absence data correctly in their school census return and the parent's responsibility to truthfully report the reason for a child's absence from school.
Only full-year absence statistics give a definitive view of pupil absence so figures presented in the interim termly publications should be treated with caution.
Caution is recommended when interpreting the data for Traveller of Irish Heritage and Gypsy/Roma children due to potential under-reporting for these ethnic classifications.


The header element increases accessibility significantly
The footer element gives additional info about the blog


{% extends "layout.html" %}
{% block navbar %}
Add Doctor
Add Technician
Add Receptionist
Logout
{% endblock navbar %}
{% block content %}
Manage Doctors
| ID |
Name |
SSN |
Salary |
Speciality |
Email |
Actions |
{% for row in doctors %}
| {{row.id}} |
{{row.name}} |
{{row.ssn}} |
${{row.salary }} |
{{row.speciality}} |
{{row.email}} |
D Patients |
{% endfor %}
Manage Technicians
| ID |
Name |
SSN |
Salary |
Email |
Address |
Actions |
{% for row in technicians %}
| {{ row.id }} |
{{ row.name }} |
{{ row.ssn }} |
${{row.salary }} |
{{ row.email }} |
{{ row.address }} |
T Patients |
{% endfor %}
Manage Receptionists
| ID |
Name |
SSN |
Salary |
Email |
Address |
Actions |
{% for row in receptionists %}
| {{ row.id }} |
{{ row.name }} |
{{ row.ssn }} |
${{row.salary }} |
{{ row.email }} |
{{ row.address }} |
R Patients |
{% endfor %}
{% endblock %}
{% block scripts %}
{% endblock scripts %}


Labels (or tags) are used to group multiple agents into one logical group. For example, if you have multiple Windows agents and you have a job that must run on Windows, then you could configure all your Windows agents to have the label windows, and then tie that job to this label. This would ensure that your job runs on one of your Windows agents, but not on any agents without this label.
Labels do not necessarily have to represent the operating system on the agent; you can also use labels to note the CPU architecture, or that a certain tool is installed on the agent.
Labels may contain any non-space characters, but you should avoid special
characters such as any of these: !&|<>()
, as other Jenkins features allow for
defining label expressions, where these characters may be used.
Note that you can only provide a single label in this box.


WebSiteName
Home
Page 1
Page 2
Page 3
Sign Up
Login
Registration Form
Enter first name:
Enter last name:
Enter password:
Select Gender:
Male
Female
Select City:
Mumbai
Indore
Pune
Enter Address:
Select your b'day:
Already Registered, Login here


hardware hacking with arduino for fun and profit!
Jonathan Younker & Tim Ribaric
Brock University
Agenda:
- What is it?
- What's it good for? And not?
- How does it work?
- Arduino in the Library
- Examples (show and tell)
- Let's make something!
What is it?
- A prototyping platform
- A 'single board microprocessor'
- Open source hardware
- Open source software
- Integrated Development Environment (IDE)
- Software: C or C++ (wait, don't leave!)
A Brief History of Arduino
- First built in 2005, in Ivrea, Italy
- Grew out of Wiring, a similar project
- Quickly became popular with makers/hobbyists
- Many different models, updates, features
How it works
Anatomy of an Arduino
What's it good for?
- "Internet of Things"
- Small, low-power, low-cost applications
- Same hardware, different software applications
-
Garduino
- Synthesizers
- Robotics
- Hacking
What it's not
- A personal computer
- High performance PC
- Raspberry Pi
Why would i use this in a library?
- Community engagement
- To solve problems
- Why not?
Real-World Library Examples
The Barcodinator
The Barcodinator
- Problem
- Initial request
- Proposed solution
- Prototype
- Issues encountered
- Revisions
- Lessons learned
- Statistics
The Tabulatron
src
The Tabulatron
- Problem
- Initial request
- Proposed solution
- Prototype
- Issues encountered
- Revisions
- Lessons learned
Other potential Library applications:
- Web-enabled gate counts
- Gathering data about the library
- Physical interfaces for sign-ups
- Self-check/mobile checkout/offline circulation device
- …
Let's make something!
How many laptops are left?
- Code it up
- Plug it in
- Upload the sketch
- Run it!
Thank You!
Now go make something cool
Made by hand with reveal.js


Contact Us Contact Information First Name Last Name Email Phone Questions? Please send me updates and information about upcoming events. Volunteer Information Would you like to be a volunteer? Yes No What size t-shirt do you wear? Small Medium Large X-Large XX-Large Please describe your experience.


In this tutorial, we are going to build a simple FM Radio receiver on a breadboard.
Since we will be creating a complicated project, we are going to need some cheap stuff
This is the screen we are going to use and its a bit complicated so just watch this video to set it up.
This is kinda important cause we are making a radio.
The chip uses the I2C interface, so it is straightforward to use with Arduino. On the module, we can also find an audio amplifier. Unfortunately, this is a headphone amplifier so we cannot connect a speaker to the output of the module directly since the audio signal is very weak. We need to amplify it first. Also, there is no way to control the volume that comes out of the module with software, so we are going to use a potentiometer later on.
Im to lazy to write out all the steps soo here is a schematic
The hard part is connecting the display so here are the ports you need to connected it too
Not gonna lie, I have no idea how the code works for the project soo you can just download is here
FMRadio.zipBy the end of this "tutorial" you probably have no idea what to do so here is a complete video I stole from youtube.