24 For who will hearken unto you in this matter? but as his part is that goeth down to the battle, so shall his part be that tarrieth by the stuff: they shall part alike.
25 And it was so from that day forward, that he made it a statute and an ordinance for Israel unto this day.
26 And when David came to Ziklag, he sent of the spoil unto the elders of Judah, even to his friends, saying, Behold a present for you of the spoil of the enemies of the LORD;
27 To them which were in Bethel, and to them which were in south Ramoth, and to them which were in Jattir,
28 And to them which were in Aroer, and to them which were in Siphmoth, and to them which were in Eshtemoa,
29 And to them which were in Rachal, and to them which were in the cities of the Jerahmeelites, and to them which were in the cities of the Kenites,
30 And to them which were in Hormah, and to them which were in Chorashan, and to them which were in Athach,
31 And to them which were in Hebron, and to all the places where David himself and his men were wont to haunt.
1 Now the Philistines fought against Israel: and the men of Israel fled from before the Philistines, and fell down slain in mount Gilboa.
2 And the Philistines followed hard upon Saul and upon his sons; and the Philistines slew Jonathan, and Abinadab, and Malchishua, Saul's sons.
3 And the battle went sore against Saul, and the archers hit him; and he was sore wounded of the archers.
4 Then said Saul unto his armourbearer, Draw thy sword, and thrust me through therewith; lest these uncircumcised come and thrust me through, and abuse me. But his armourbearer would not; for he was sore afraid. Therefore Saul took a sword, and fell upon it.
5 And when his armourbearer saw that Saul was dead, he fell likewise upon his sword, and died with him.
6 So Saul died, and his three sons, and his armourbearer, and all his men, that same day together.
7 And when the men of Israel that were on the other side of the valley, and they that were on the other side Jordan, saw that the men of Israel fled, and that Saul and his sons were dead, they forsook the cities, and fled; and the Philistines came and dwelt in them.
8 And it came to pass on the morrow, when the Philistines came to strip the slain, that they found Saul and his three sons fallen in mount Gilboa.
9 And they cut off his head, and stripped off his armour, and sent into the land of the Philistines round about, to publish it in the house of their idols, and among the people.
10 And they put his armour in the house of Ashtaroth: and they fastened his body to the wall of Bethshan.
11 And when the inhabitants of Jabeshgilead heard of that which the Philistines had done to Saul;
12 All the valiant men arose, and went all night, and took the body of Saul and the bodies of his sons from the wall of Bethshan, and came to Jabesh, and burnt them there.
13 And they took their bones, and buried them under a tree at Jabesh, and fasted seven days.
| << Ruth | Contents | 2 Samuel >> |


Sun Feb 20, 2000
On board the train to Victoria Falls…
Waiting for the train to leave… and hoping I get a whole booth to myself…

Let me backtrack a bit: (by the way, seriously doubt this thing is going to leave on time)
Got to Bulawayo last night just in time to make dinner. Unfortunately, there’s this English guy living in the dorm and I’m not kidding - he is such a prick, he literally makes my hair stand on end. I’ll probably have to deal with him again when I get back from the falls.
I read Hideous Kinky today - took about four hours. I don’t think I’ve ever just picked up a book and read it from cover to cover - it’s like watching a movie.
Well, the train is supposed to leave now, I knew it wouldn’t. Flashbacks to our train trips in Europe, oh my god - nothing could top those - we were even sleeping on the floor in a Spanish train once.
I got a 2nd-class ticket - just been kicked out of my cabin, now crammed in a small one with five other guys. Shit.
This journal entry has been transcribed from the handwritten original. For more information about this transcription project, see this blog post.


Why choose us?
Earn money
When you partner with us, you get to earn money
Work efficiently
All ticketing and other issues are hanlded by us
No surprise costs
You only pay us when you earn
When you partner with us, you get to earn money
All ticketing and other issues are hanlded by us
You only pay us when you earn


Convex polyhedra collision test (GJK Algorithm)
Let’s talk about a cool and efficient way make collision tests between (convex) polyhedra. The approach here though, is a little different from the usual geometric predicates, here we will use something called the Minkowski sum.
If we interpret a polyhedron as a set of points, two polyhedra represented by sets \(A\) and \(B\), for example, collide if \(A \cap B \neq \emptyset\). The intersection set \(A \cap B\) represents all pairs of points between \(A\) and \(B\) which have distance \(0\) between them, because well… each of these pairs is composed by the same point (shared by \(A\) and \(B\)).
With both sets (representing our polygons) in hands, we will use an algorithm called GJK to compute the distance between two polygons. This algorithm operates on top of a point set operation called the Minkowski Sum. So let me present the Minkowsk operation first and then the GJK algorithm.
The Minkowski Sum⌗
Let \(A\) and \(B\) be two point sets. The Minkowski sum \(A \oplus B\) is defined as the set $$A \oplus B = { a + b : a \in A, b \in B}.$$ The Minkowski difference is obtained by \(A \ominus B = A \oplus (-B) \).
$$distance(A, B) = min { \parallel c\parallel : c \in A \ominus B }.$$
The Euclidian distance between two polyhedra is equivalent to the distance between their Minkowski difference and the origin.
For two convex polyhedra, \(A\) and \(B\), the Minkowski Sum \(C = A \oplus B\) has the following properties:
- \(C\) is a convex polyhedron;
- The vertices of \(C\) are sums of vertices of \(A\) and \(B\).
Thus, the collision exists if and only if \(C\) contains the origin. The red region bellow represents the Minkowski difference set of the two shapes, play around with the vertices to visualize the final set, notice the origin point.
Gilbert - Johnson - Keerthi Algorithm⌗
In short, the GJK algorithm tests if two objects \(A\) and \(B\) are colliding by checking if \(0 \in A \ominus B\) is true (simply \(distance(A, B)\)). Although it seems very straightforward (and it is indeed), the real magic and beauty of the GJK algorithm is how \(distance\) is implemented (A very good description of the algorithm is given by Casey Muratori), but first, a simple observation:
The resulting Minkowski Sum of two convex polyhedra is also a convex polyhedron. Since all we care about is to check if \(0\) belongs to the final set, we only need to focus on the vertices of these geometric shapes (the convex hull), because any operation with interior points will lead to interior points of the resulting shape.
The brute force algorithm would be to compute all pairs of vertices between the two polyhedra, which leaves us with quadratic complexity. In the GJK algorithm on the other hand, instead of computing the entire set \(C = A \ominus B\) explicitly, it only computes points necessary to find the point in \(C\) that is closest to the origin. The GJK algorithm samples these points using a support mapping of \(C\).
Briefly, here a support mapping is a function that maps a given direction \(d\) into a supporting point for the convex polyhedron \(A\). $$S_A(d) = max \{ d^Tp, p \in A \}.$$
In the 2D case, we implement this way:
struct ConvexPolygon {
vec2 support(vec2 d) {
// for all vertices, find which index the value
// of dot(vertices[i], d) is greater
...
// instead of a O(n) algorithm here, we can use hill climbing
// search. Assuming our vertex list is topologically sorted
return vertices[max_dot_i];
}
// suppose vertices form a convex shape
std::vector< vec2 > vertices;
};
Since \(A \ominus B\) is a linear operation, we have
$$S_{A \ominus B}(d) = max \{d^Tp, p \in A \ominus B\}$$
$$= max \{ d^Ta - d^Tb, a \in A, b \in B \}$$
$$= max \{ d^Ta, a \in A \} - max \{ -d^Tb, b \in B \}$$
$$= S_A(d) - S_B(-d)$$
It means that the support function of the Minkowski difference can be computed from the supporting points of the individual polyhedra \(A\) and \(B\). Remember, the support function will help the algorithm to “walk” towards the origin, which is our point of interest, so we will choose the direction \(d\) based on this goal. But how do we know the right direction to pick? This theorem will help us answering this question:
Carathéodory’s theorem⌗
For a convex body \(H\) of \( \mathbb{R}^d \) each point of \(H\) can be expressed as the convex combination of no more than \(d + 1\) points from \(H\).
Ok, it didn’t answered directly our question, but soon thing will get clear. The message behind the theorem is that each point of a polyhedron needs no more than 4 points of that polyhedron to be expressed by, in fact this sub-set of \(d + 1\) points has a name:
Suppose \(d + 1\) points \(p_0, \dots, p_d \in \mathbb{R}^d \) are affinely independent, than the set of points $$ S = { \theta_0 p_0 + \dots + \theta_d p_d \mid \theta_i \geq 0, 0 \leq i \leq d, \sum_{0}^{d} \theta_i = 1}$$ is named k-Simplex. In other words, the simplex is the simplest polygon of its dimension, here are the 0-Simplex, 1-Simplex, 2-Simplex and 3-Simplex in order:
Since our Minkowski difference is a convex body it means that we can split it into a set of simplices (plural of simplex) and search for the origin inside them.
However, we don’t need to do this explicitly, otherwise we would need to compute the Minkowski difference set explicitly too. The strategy is to iteratively create a new simplex, at each step, that contains points closer to the origin than the step before until the origin happens to be inside the current simplex or be proved to be outside. We start with a 0-Simplex and keep updating with new points (creating a 1-Simplex, then a 2-Simplex and so on (up to \(d\)-Simplex)) until the process is finished.
Before my text get even more confuse lets take a look at some code (2-dimensional case) to have a more general idea of the whole process.
bool testCollision(const ConvexPolygon& a, const ConvexPolygon& b) {
// start with an arbitrary direction for the support mapping
vec2 d(1, 0);
// create simplex vertices (since it is 2D, we have at most 3 vertices)
vec2 s[3];
// set the number of vertices of the current simplex, initially an empty simplex
int k = 0;
while(1) {
// sample a new point from the Minkowski difference set
vec2 p = a.support(d) - b.support(-d);
// check if the origin is outside the set
if(dot(p, d) < 0)
return false;
// build and test the new simplex and compute the new direction d
if(buildAndTestSimplex(s, p, k, d))
return true;
}
}
As you may notice, the code is quite simple (and it really is!), each step we “jump” in the
direction of the origin to a new simplex of our set of simplicies that exists implicitly and look for the origin point (not exactly,
since there is more than one possible set of simplicies we are jumping between different simplicies of different sets… but that is not important here).
The real magic though, is inside buildAndTestSimplex
, each step we need to decide what direction to take using the current simplex, here is
how it happens:
first step (\(k = 1\))⌗
First we start with a single point \(p\) of our \(A \ominus B\) set. There is not much to do here. The new direction to take is \(-p\).
second step (\(k = 2\))⌗
Now we have a 1-Simplex (an edge). The plane can be divided into 4 regions (just like the figure above) where we can look for the origin. The first observation is that regions
1
and 4
don’t contain the origin because the vertices were found by the support function in each direction of each of these regions, it means that
there are no more points of the \(A \ominus B\) set there. If the origin was in region 1
or
4
then the algorithm would had stopped at line 12
.
So the origin is certainly or in region 2 or in region 3 and the new direction is
$$d = \begin{cases} & (-v_y, v_x), & (v \times -S_0)_z > 0\\ & (v_y, -v_x), & (v \times -S_0)_z < 0,\end{cases}$$
where $$v = \overline{S_0S_1}.$$
\(n^{th}\) step (\(k = n, n > 2\))⌗
As the same case above, we observe our plane divided:
If we keep the order of our vertices and use the same logic we used to exclude the regions 1 and 4 in the second step, then we can exclude regions 1 , 2 , 3 and 7 here. To save some computations, we can verify first if the origin is in region 5 and 6 , and if is not then certainly is in region 4 .
Defining $$v_{02} = \overline{S_0S_2}, v_{12} = \overline{S_1S_2}$$
If \((v_{02} \times -S_2).z > 0 \) then the origin is in 5 and the new direction is \((-v_{02}.y, v_{02}.x)\).
If \((v_{12} \times -S_2).z < 0\) then the origin is in 6 and the new direction is \((v_{12}.y, -v_{12}.x)\).
Otherwise we return true
.
Note:
- remember to arrange the order of the vertices conveniently so these equations work properly.
Here is a very simple example of the algorithm in action:
The code:
// the z coordinate of the cross product of vectors (a.x, a.y, 0)
// and (b.x, b.y, 0)
float cross2D(const vec2& a, const vec2& b) {
return a.x * b.y - a.y * b.x;
}
bool buildAndTestSimplex(vec2 s[], vec2 p, int &k, vec2 &d) {
k = std::min(k + 1, 3);
s[k - 1] = p;
if(k == 1) {
D = -s[0];
return false;
}
if(k == 2) {
vec2 a = s[1] - s[0];
if(cross(a,-s[0]) < 0) {
s[2] = s[1];
s[1] = s[0];
s[0] = s[2];
D = a.right();
}
else D = a.left();
return false;
}
vec2 a = s[2] - s[0];
if(cross(a, -s[0]) > 0) {
D = a.left();
s[1] = s[2];
k--;
return false;
}
vec2 b = s[2] - s[1];
if(cross(b, -s[1]) < 0) {
D = b.right();
s[0] = s[2];
k--;
return false;
}
return true;
}
The 3D case follows the same idea, the difference is that in case \(k = 3\), we have to check which side of the triangle plane the origin is and construct a tetrahedron. The cross products for the other cases must be adapted as well.


No schools yet.
No |
School Name |
phone No |
Pincode |
Starting Date |
Stream |
Total labs |
Total Students |
Status |
Requirements |
Edit |
Delete |
|---|---|---|---|---|---|---|---|---|---|---|---|
{{i+1}} |
{{s.schoolName}} |
{{s.phoneNumber}} |
{{s.pincode}} |
{{s.startingDate | date:'mediumDate'}} |
{{s.stream}} |
{{s.totalLabs}} |
{{s.totalStudent}} |
GoodBetterUnder construction |
{{s.requirements}}- |
|
|


--- title: Let's get started! author: Stefan Schliebs date: '2018-03-20' slug: let-s-get-started categories: [] tags: [] ---
After years of working in academic and commercial environments, I really came to value best practice. Being immersed in the process of solving complex problems with tools that are both elegant and efficient to use is still one of the most rewarding activities in my day-to-day work as a data scientist. Obviouly there is more than one approach to a problem, but in this blog we will share our experience about the tools, practices and workflows that we think to be the most useful for everyday use.
Unfortunately there isn’t a concrete definition of what best practice means and there is a myriad of tools in the market that make it difficult to decide which one to use. Our approach to teaching is highly opionated. We recommend best practices that are battle tested and have worked for us in a fast-paced modern analytics environment. It is our mission to make data deliverables fully reproducible, decrease manual labor and consequently reduce errors and improve productivity of data professionals.


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
Zend_Http_Cookie is a class describing an HTTP cookie and all it's parameters.
Zend_Http_Cookie is a class describing an HTTP cookie and all it's parameters. The class also enables validating whether the cookie should be sent to the server in a specified scenario according to the request URI, the expiry time and whether session cookies should be used or not. Generally speaking cookies should be contained in a Cookiejar object, or instantiated manually and added to an HTTP request.
See http://wp.netscape.com/newsref/std/cookie_spec.html for some specs.
__construct(
string $name, string $value, string $domain, int $expires
=
null, string $path
=
null, bool $secure
=
false
)
:
void
Cookie object constructor
| Name | Type | Description |
|---|---|---|
| $name | string | |
| $value | string | |
| $domain | string | |
| $expires | int | |
| $path | string | |
| $secure | bool |
__toString(
)
:
string
Get the cookie as a string, suitable for sending as a "Cookie" header in an HTTP request
| Type | Description |
|---|---|
| string |
fromString(
string $cookieStr, \Zend_Uri_Http|string $refUri
=
null, boolean $encodeValue
=
true
)
:
\Zend_Http_Cookie
Generate a new Cookie object from a cookie string (for example the value of the Set-Cookie HTTP header)
| Name | Type | Description |
|---|---|---|
| $cookieStr | string | |
| $refUri | \Zend_Uri_Http|string | Reference URI for default values (domain, path) |
| $encodeValue | boolean | Whether or not the cookie's value should be passed through urlencode/urldecode |
| Type | Description |
|---|---|
| \Zend_Http_Cookie | A new Zend_Http_Cookie object or false on failure. |
getExpiryTime(
)
:
int|null
Get the expiry time of the cookie, or null if no expiry time is set
| Type | Description |
|---|---|
| intnull |
isExpired(
int $now
=
null
)
:
boolean
Check whether the cookie has expired
Always returns false if the cookie is a session cookie (has no expiry time)
| Name | Type | Description |
|---|---|---|
| $now | int | Timestamp to consider as "now" |
| Type | Description |
|---|---|
| boolean |
isSecure(
)
:
boolean
Check whether the cookie should only be sent over secure connections
| Type | Description |
|---|---|
| boolean |
isSessionCookie(
)
:
boolean
Check whether the cookie is a session cookie (has no expiry time set)
| Type | Description |
|---|---|
| boolean |
match(
string|\Zend_Uri_Http $uri, boolean $matchSessionCookies
=
true, int $now
=
null
)
:
boolean
Checks whether the cookie should be sent or not in a specific scenario
| Name | Type | Description |
|---|---|---|
| $uri | string|\Zend_Uri_Http | URI to check against (secure, domain, path) |
| $matchSessionCookies | boolean | Whether to send session cookies |
| $now | int | Override the current time when checking for expiry time |
| Type | Description |
|---|---|
| boolean |
matchCookieDomain(
string $cookieDomain, string $host
)
:
boolean
Check if a cookie's domain matches a host name.
Used by Zend_Http_Cookie and Zend_Http_CookieJar for cookie matching
| Name | Type | Description |
|---|---|---|
| $cookieDomain | string | |
| $host | string |
| Type | Description |
|---|---|
| boolean |


gif2webp − Convert a GIF image to WebP
gif2webp [options] input_file.gif −o output_file.webp
This manual page documents the gif2webp command.
gif2webp converts a GIF image to a WebP image.
The basic
options are:
−o string
Specify the name of the output WebP file. If omitted, gif2webp will perform conversion but only report statistics. Using "−" as output name will direct output to ’stdout’.
−h, −help
Usage information.
−version
Print the version number (as major.minor.revision) and exit.
|
−lossy |
Encode the image using lossy compression. | ||
|
−mixed |
Mixed compression mode: optimize compression of the image by picking either lossy or lossless compression for each frame heuristically. |
−q float
Specify the compression factor
for RGB channels between 0 and 100. The default is 75.
In case of lossless compression (default), a small factor
enables faster compression speed, but produces a larger
file. Maximum compression is achieved by using a value of
100.
In case of lossy compression (specified by the −lossy
option), a small factor produces a smaller file with lower
quality. Best quality is achieved by using a value of
100.
|
−m int |
Specify the compression method to use. This parameter controls the trade off between encoding speed and the compressed file size and quality. Possible values range from 0 to 6. Default value is 4. When higher values are used, the encoder will spend more time inspecting additional encoding possibilities and decide on the quality gain. Lower value can result is faster processing time at the expense of larger file size and lower compression quality. |
−min_size
Encode image to achieve smallest size. This disables key frame insertion and picks the dispose method resulting in smallest output for each frame. It uses lossless compression by default, but can be combined with −q, −m, −lossy or −mixed options.
−kmin int
−kmax int
Specify the minimum and maximum
distance between consecutive key frames (independently
decodable frames) in the output animation. The tool will
insert some key frames into the output animation as needed
so that this criteria is satisfied.
A ’kmin’ value of 0 will turn off insertion of
key frames. A ’kmax’ value of 0 will result in
all frames being key frames. Typical values are in the range
3 to 30. Default values are kmin = 9, kmax = 17 for lossless
compression and kmin = 3, kmax = 5 for lossy compression.
These two options are relevant only for animated images with
large number of frames (>50).
When lower values are used, more frames will be converted to
key frames. This may lead to smaller number of frames
required to decode a frame on average, thereby improving the
decoding performance. But this may lead to slightly bigger
file sizes. Higher values may lead to worse decoding
performance, but smaller file sizes.
Some restrictions:
(i) kmin < kmax,
(ii) kmin >= kmax / 2 + 1 and
(iii) kmax - kmin <= 30.
If any of these restrictions are not met, they will be
enforced automatically.
−metadata string
A comma separated list of metadata to copy from the input to the output if present. Valid values: all, none, icc, xmp. The default is xmp.
|
−f int |
For lossy encoding only (specified by the −lossy option). Specify the strength of the deblocking filter, between 0 (no filtering) and 100 (maximum filtering). A value of 0 will turn off any filtering. Higher value will increase the strength of the filtering process applied after decoding the picture. The higher the value the smoother the picture will appear. Typical values are usually in the range of 20 to 50. | ||
|
−mt |
Use multi-threading for encoding, if possible. This option is only effective when using lossy compression. | ||
|
−v |
Print extra information. | ||
|
−quiet |
Do not print anything. |
Please report
all bugs to the issue tracker:
https://bugs.chromium.org/p/webp
Patches welcome! See this page to get started:
http://www.webmproject.org/code/contribute/submitting-patches/
gif2webp
picture.gif −o picture.webp
gif2webp −q 70 picture.gif −o picture.webp
gif2webp −lossy −m 3 picture.gif −o
picture_lossy.webp
gif2webp −lossy −f 50 picture.gif −o
picture.webp
gif2webp −q 70 −o picture.webp −−
−−−picture.gif
gif2webp
is a part of libwebp and was written by the WebP team.
The latest source tree is available at
https://chromium.googlesource.com/webm/libwebp
This manual page was written by Urvang Joshi<EMAIL_ADDRESS>for the Debian project (and may be used by others).
cwebp(1),
dwebp(1), webpmux(1)
Please refer to http://developers.google.com/speed/webp/ for
additional information.


{% extends 'emails/base.html' %} {% block content %}
Dear {{ name }} leaders,
As we wrap up the 2021-2022 academic year, we would like to remind you all to please update permissions to your club on Penn Clubs for new club leaders. You can navigate to {{ url }} to update club permissions.
If you are graduating, it is important that you pass on permission to the club so that access is not lost.
If you have any questions or problems updating member permissions, feel free to reply to this email.
{% endblock %}


Week One
Introduction to Web Development
The first week of class we learned basic html. We are
assigned two assignments: Basic HTML Page-Movie Description and
First Web Page-Resume.
Week Two
Links, Formatting and Images
During the second week of the quarter we begin to go over how to post links,
how to format the pages, and inputting images. There were also some in-class assignments
that I missed during this week but I will see if I can make up for those somehow.
Week Three
CSS and HTML5
In week three we begin to explore Cascading Style Sheets or CSS for short, and HTML5.
HTML5 is the latest version of HTML, which provides stucture and a cleaner look for the page.
CSS is where you would enter the code to style the page. You can control the colors, size, layout
and structure of the page. In this section are the Resume Github Pages and Git New Repo.
Week Four
Forms and More CSS
In week four, we are introduced to more styling methods and the button feature.
The button feature is useful when creating forms for inputting and recording data, for example
filling out an application online or signing up for some type of membership. On the CSS side we
explore more styling features like borders and creating themes for webpages.
We also learn about cloud 9 and amazon web services.
Week Five
Images, Styles and Page Structure
This week we work with images , more styling and focus on the the structure of our web pages.
I,ve provided links to three assignments within my repository on github. More styling features are discovered
using css for the listbutton assignment. We learn how to go into a bit more detail with styling the
buttons and changing the overall appearance. In page structure we are given examples of what makes
the page look a little more organized. We practice this to make the appearance cleaner
and makes the page more readable to the user.
Week Six
Box Model and Aside, Code Academy, Navigation and Midterm. This week we start to really increase the workload beginning with the box model and aside assignment. For the box model and aside assignment we focus on how to edit borders around the different structures and features of the page. The aside feature can be used to provide side notes or more information depending on its placement. In navigation, we learn how to navigate to specific areas of our website and webpages using a redirect element both for internal and external navigation. Code Academy is an external website we use to expand our learning and practice in web developement. There are many courses one could take offered from website but we are only required to take the HTML, CSS and JavaScript courses. Lastly, the midterm, which is basically what you are viewing now. This home page contains the majority of my assignments.


1. Motivation, Learning Goals und Requirements
The up coming modular web is a big game changer. Our own implementation of the modular web is our own framework
Client-side Component
Model, shortly ccm. With ccm, you can compose web apps from already
existing web components, just like Lego brick building. Each web component that is published under a free software
license increases the functionality of the web as a whole, not a single platform only. In other words: The browser
is the platform and web components extend the powerful capabilities of the browser. So if you build web components,
you build it for potentially 3 billion people. Such kind of web components are embeddable in any web-based content
and can simply be used via a custom HTML tag. There are no restrictions in complexity and application domain.
ccm allows to develop such kind of web components. This learning unit gives you a quick overview what
ccm is about and what it is used for. Then we see how you can work with ccm-based web components without
programming skills.
1.1 Learning Goals
- I know what ccm is and what it is used for.
- I know how I can work with ccm-based web components.
1.2 Requirements
- It's useful but not mandatory to already know the markup language
HTML and its modern successor HTML5.
- It is required to know that JavaScript has improved and
cross-browser incompatibility is no more a reason for exclusion.
2. Content:
2.1 Client-side Component Model (ccm)
Hello, my name is André Kless. I'am the developer of ccm and in this video I want to give you a quick
overview, what is ccm about. This is my GitHub page, where you can
find the code stuff. ccm stands for Client-side Component
Model and is a model for composing, embedding and running web components inside the browser. Our
implementation consists of a single JavaScript framework ccm and many ccm-based web components.
2.2 Web Component Cloud (W2C)
Here you see our ready to use ccm-based web components. We are currently working on places where you can
find, publish and rate components and where you can construct and compose web apps from them. We call these places
Web Component Cloud (W2C).
2.3 Component Informations
Choose a component to try out a demo and get informations about it. In the near future you can rate and comment and
create apps out of it directly.
2.4 Creation of an App
This is another Component for creating an app out of the component we looked at before. Notice, that we choose
competition as the guiding principle here, so many different ranked components may be offered here for the same
thing, so that users can find their best choice according to their needs.
2.5 Using created Apps
Now we have created an app. So where can we use it? The answer is: Everywhere! As a result we get a HTML-based
embed code, which contains only a script tag and a custom tag. This embed code is now usable in any web-based
content. You know embed code from Youtube videos. With our embed code we can embed not only videos, but any kind of
web component. Let's show this inside the german learning platform
ILIAS.
2.6 Declarative Creation
Instead of using an input mask for creating an app out of components, you can also create a ccm-based app
on-the-fly in HTML. Here is an example for creating a quiz.
To use a ccm-based web component, you only have to know the public URL of it's JavaScript file. After that
file is loaded, the corresponding custom HTML tag is ready to use. As you see we can now create HTML-based
Domain-specific languages (DSL). For example
we can create such an embedded DSL for digital learning.
2.7 Cross-platform Realtime Collaboration
Here is another example of a ccm-based app. The difference is that this app has collaborative elements.
Let's use the same app in another learning platform. As you see, this results in a cross-platform realtime
collaboration.
The point is, that you can use web components inside a platform, even if the platform doesn't know about it. If you
switch to a higher platform version or a different platform the components are working directly without any
reengineering and migration effort.
2.8 More complex Apps
We have experimented with combining web components into more complex web apps.
This is an example of a web app for a complete semester
course, where we have reused components for menu, news, chat, forum and many more like video, quiz and rating.
2.9 Provide as a Mobile Web App
Each ccm-based app can also be deployed on any mobile devices as mobile web app. This has the advantage that
people that use our course app could access it inside the learning platform, but also as stand-alone mobile web
app. Remember: The collaboration works between all instances, no matter from which platform it is accessed.
2.10 Packaging Content as App
Let's clarify some terms. In the field of digital learning we distinguish between digital learning content,
applications and platforms. In case of ccm the platform is the browser. The applications are made up of
ccm-based web components. But what about the content? We have a content component which allows for packaging
any web-based content into a ccm-based app. For example: This video is a part of an
Open Education Resource (OER), packaging
both, contents and software as well.
Because the content of this learning unit is packaged as ccm-based app, it can now be reused in any
web-based content.
2.11 icOER and ECL
Notice that interactive and collaborative OERs (icOER) can be built with ccm-based web components. These
icOERs can be used from any access points. Together with cross-platform collaboration this leads to Embedded
Collaborative Learning (ECL), as defined in our paper1.
1 Kaul, M.; Kless, A.; Bonne, T.; Rieke, A.: Game Changer for Online Learning Driven by Advances in Web Technology; in: Proc. E-Learning 2017, Multi Conference on Computer Science and Information Systems (MCCSIS), Lisboa, Portugal, 20 – 22 July, 2017.
2.12 Ask us
This short video cannot address all aspects. There is much more to talk about. For example data management, user
authentication, availability and versioning. We have comprehensive concepts for all these aspects. Please contact
us, if you are interested and want more details. Nevertheless, we want to advance the state of the art of Embedded
Collaborative Learning and are searching for support to finish our work.
Contact: André Kless<EMAIL_ADDRESS>Developer of ccm, https://github.com/akless


Home
About
Extra Study
Credits
Extra study
Want More to do with git? Look no further. Here are some links to help you on your way
Command line tutorial
(Git is primarily a command line tool so command line knowledge is essential)
Git tutorial


Create and grant roles
You must log into the database as Pat before proceeding with this page.
The data in table 'credit_card' is accessible to all employees of J.K.Avro superstore.
To protect sensitive information stored in table 'credit_card' and provide ease of data access management, SECADM Pat uses database roles.
Operation
To prevent access to sensitive data (like credit card number, CCV, card holder name) in the table 'credit_card' by any employee
in the company, SECADM Pat creates and grants roles to users as defined below.
- Create roles 'Mgr' and 'custService'.
- Grant role 'Mgr' to Joe, manager of customer service department.
- Grant role 'custService' to Bob, an employee of the customer service department.
- Grant SELECT, INSERT, UPDATE, and DELETE privileges to role 'Mgr' on table 'credit_card'.
- Grant SELECT, INSERT, and UPDATE privileges to role 'custService' on table 'credit_card'.
Solution
The query results on the right pane show that SECADM Pat creates roles and grants them to Joe and Bob.


Sahi Pro - What is new in Sahi Pro v6.0.1
abstract
Sahi Pro v6.0.1 is a bugfix release.
warning
WARNING related to Upgrades
-
Upgrade from SahiPro versions older than 6.0.0
Please do NOT upgrade to Sahi Pro 6.0.1 from an existing installation whose version is earlier than 6.0.0.
There were significant changes in userdata folder introduced in 6.0.0 which would cause problems.
Please do a fresh installation of Sahi Pro 6.0.1 in another folder and copy over your older userdata/scripts folder to the new installation.
Also selectively copy changes from userdata/config files to the new installation.
-
It is OK to upgrade to Sahi Pro 6.0.1 from Sahi Pro 6.0.0.
A few files are different in Sahi Pro 6.0.1.
-
If you have not changed any xsls in the
userdata/config/reports
folder, just copy over the contents fromconfig/userdata_template/config/reports
. Else, merge the differences manually.
-
Merge the contents of
config/userdata_template/config/donot_download_urls.txt
touserdata/config/donot_download_urls.txt
folder.
-
Copy over
config/userdata_template/scripts/global_include.sah
touserdata/scripts/global_include.sah
-
Copy over
subject.sah
andnoise.sah
fromconfig/userdata_template/scripts/demo/load
touserdata/scripts/demo/load
folder
-
If you have previously created ANT xmls with Retry targets using the
Editor
, regenerate the ANT xmls fromEditor | Playback | Create Ant Target
, since the Retry targets have changed. If your ANT xmls do not contain Retry targets, you do not need to regenerate the ANT xmls.
-
If you have not changed any xsls in the
Bug Fixes
- Scripts were running slower because Sahi was waiting for uninitiated XmlHttpRequest objects also. Fixed
- Highlighting matching brackets in Editor and Controller was broken. Fixed
- URL encoding query parameters in REST APIs
- Editor was saving files with \n as line separator. Fixed to use the file's original line ending.
- windowAction APIs which were experimental in Mac, are temporarily disabled.
- When _setStrictVisibilityCheck is true, elements inside frames were returning false for _isVisible. Fixed.
- Object Repository is renamed to Accessor Repository to better convey its usage and meaning. File endings will now default to _AR.sah. Existing _OR.sah will continue to work.
- Added props parameter in _assertSnapShot API which allows specifying additional attributes like delay, trim, image type etc.
- Property java.ntlm.transparent_authentication.enabled in sahi.properties was doing the opposite. Fixed.
- In a data driven suite, if the header column size and row column size did not match, there were failures on a single machine as well as distributed run. Fixed.
- In a distributed run with a data driven suite, if a row had a blank value in an intermediate column, the script execution would fail and the run would go into an infinite loop. Fixed.
- After the execution on first node was aborted, when scripts were re-executed on another node, offline logs were not getting generated. Fixed.
- When a node goes offline, master would sometimes hang waiting for a response and retry would never be invoked. Fixed.
- Fix to sync the scripts to the correct machine in case of Distributed Run with a different master
- In a distributed run, if the nodes are unavailable (browser is not supported or Master cannot communicate with the node), the run would never terminate. Fixed.
- Trimming contents in Import CSV in Editor. The untrimmed spaces was causing scenarios to fail. Fixed.
- Fixed UI issues in ddcsv editor - Copy paste, editing etc. were broken
- Optimizing getAssociatedLabel. Look only in current window object and only upto 8 parents. Was using too much CPU for pages with lots of nested iframes and containing lots of elements.
- In some cases, _takePageScreenShot showed double images when the page size was less than the browser window size. Fixed
- _assertEqualImages and _compareImages was failing when any of the file paths had a space in them. Fixed.
- Running an empty suite returns success now
- Optimized fetching of suites list in Logs
- Incorrect information in junit reports removed
- dload.bat would not terminate after running the load tests. Fixed.
- Documentation added for APIs _startHarLogging and _stopHarLogging
- Load testing documentation updated
- When testing an ANT target generated from
Editor > Playback > Create Ant Target
, in case of a Retry, the Retry status was not considered as the final status. Fixed. - Dload ANT target has been fixed
Features
- _mouseOverNative added for native mouse events
- subjectRepeatCount can be passed to dload. subject.sah will be run that many times at each load level. This helps average out any abnormal behaviour during that moment of execution.


A B C D E F
leading newline
leading newline and spaces
leading newlines
without spaces
with spaces
newline after leading space


Summary
This tab should be auto-calculated by the time you arrive here. To force
a manual re-calculation press the 'Calculate the Maths' button.
You cannot edit this data directly. In order to make changes to this data
return to previous tabs and edit the source data there.
When you have completed this section move on to the Adventures Attended section.


phot
An App for Avid Admirers of the Arts
Framed is a personal project created for the average museum-goer to digitally collect and curate artwork that they’ve seen. Users can scan a QR code posted near the work to add it to their digital collection, along with relevant information about the piece. Then they can create their own galleries of works they’ve saved, or work to complete precurated categories of collections.
Scroll through the screens
Framed started as an organic exploration of the beginning of the design process.
Framed demonstrates the very beginning of the UX design process. I wanted to experiment with building from scratch and instinctive creation. The concept of collecting and sorting visual information isn't very common in popular apps, so I took the opportunity to prototype organically, without the influence of familiar designs. The two main actions are scanning a work and viewing your saved works. The landing page of the app contains both, where the majority of the screen is a button to access the QR scanner. The records of saved works are housed right below it with two different displays optioned by a non-traditional toggle button. The display of the works strays from convention in layout, but the information shown still follows a hierarchy through opacity, with features like the artist's name brighter than the medium.
On the top left of the home page is access to the profile. This doesn't house as much user information as it does user interaction with the works. It displays the personal galleries and created collections up to the third most recent followed by a "see more" to avoid clutter and unnecessary visuals. When a piece in a curated collection hasn't been saved by the user, I have chosen to leave most of the information blacked out. I want it to be somewhat like a scavenger hunt, where the user is only told the artist name and the location of the work, encouraging them to visit the museum so they can find it in order to complete the collection.


29 November 2011 - The Ministry of Health and Population of Egypt has notified WHO of one case of human infection with avian influenza A (H5N1) virus.
The case is a 31 year-old female from Meet Salseel district, Dakahlia governorate. She developed symptoms on 10 November 2011 and was hospitalized on 16 November 2011. She is in critical condition and is provided with ventilation support.
Investigations into the source of infection revealed that the case had exposure to sick and dead poultry in her backyard.
The case was confirmed by the Egyptian Central Public Health Laboratories, a National Influenza Center of the WHO Global Influenza Surveillance Network on 21 November 2011.
Of the 153 cases confirmed to date in Egypt, 52 have been fatal.


Generate Data¶
skedm comes with both 1D and 2D test data. These built in functions allow you to quickly explore the behavior of different systems.
1 Dimensional¶
-
skedm.data.
logistic_map
(sz=256, A=3.99, seed=36, noise=0)¶ Logistic map.
X(t+1) = rX(t)(1 - X(t)) + random
Parameters: - sz (int) – Length of the time series.
- A (float) – Parameter for the logistic map. Values beyond 3.56995 exhibit chaotic behaviour.
- seed (int) – Sets the random seed for the logistic map.
- noise (float) – Amplitude of noise to add to the logistic map.
Returns: X – Logistic map of size (sz).
Return type: 1D array
-
skedm.data.
noisy_periodic
(sz=256, freq=52, seed=36, noise=0.5)¶ A simple periodic equation with a a specified amplitude of noise.
X = sin(x) + .5cos(x) + random
Parameters: - sz (int) – Length of the time series.
- freq (int) – Frequency of the periodic equation.
- seed (int) – Sets the random seed for reproducible results.
- noise (float) – Amplitude of the noise.
Returns: X – Periodic array of size (sz) with values between 0 and 1.
Return type: 1D array
-
skedm.data.
noisy_periodic_complicated
(sz=256, freq=52, seed=36, noise=0.5)¶ A complicated periodic equation with a a specified amplitude of noise.
X = sin(x) + .5cos(.5x) + .25sin(.25x) + random
Parameters: - sz (int) – Length of the time series.
- freq (int) – Frequency of the periodic equation.
- seed (int) – Sets the random seed for reproducible results.
- noise (float) – Amplitude of the noise.
Returns: X – Periodic array of size (sz) with values between 0 and 2.
Return type: 1D array
-
skedm.data.
noise_1D
(sz=256, seed=36)¶ A random distribution of numbers. White Noise.
Parameters: - sz (int) – Length of the time series.
- seed (int) – Sets the random seed for reproducible results.
Returns: X – Random array of size (sz) with values between 0 and 1.
Return type: 1D array
-
skedm.data.
lorenz
(sz=10000, max_t=100.0, noise=0)¶ Integrates the lorenz equations.
dx/dt = sigma(y - x) dy/dt = x(rho - z) - y dz/dt = xy - Bz
sigma=10, beta=8/3, rho=28
Parameters: - sz (int) – Length of the time series to be integrated.
- max_t (float) – Length of time to solve the lorenz equation over,
- noise (float) – Amplitude of noise to be added to the lorenz equation.
Returns: X – X solutions in the first column, Y in the second, and Z in the third.
Return type: 2D array
2 Dimensional¶
-
skedm.data.
chaos_2d
(sz=128, A=3.99, eps=1.0, seed=36, noise=None)¶ Logistic map diffused in space.
Parameters: - sz (int) – Row and column size of the spatio-temporal series to be generated.
- A (float) – Parameter for the logistic map. Values beyond 3.56995 exhibit chaotic behaviour.
- seed (int) – Sets the random seed for the logistic map. Allows results to be easily reproduced.
- noise (float) – Amplitude of noise to add to the logistic map.
Returns: X – Spatio-temporal logistic map of size (sz,sz).
Return type: 2D array
-
skedm.data.
periodic_2d
(sz=128, freq=36, seed=36, noise=0.5)¶ A simple 2D periodic equation with a specified amplitude of noise.
X = sin(y) + .5cos(x) + random
Parameters: - sz (int) – Length of the time series.
- freq (int) – Frequency of the periodic equation.
- seed (int) – Sets the random seed for reproducible results.
- noise (float) – Amplitude of the noise.
Returns: X – 2D periodic equaiton of size (sz,sz). Values between 0 and 1.
Return type: 2D array
-
skedm.data.
periodic_brown
(sz=128, freq=36, seed=15, noise=1.5)¶ A periodic equation with a specified amplitude of brown noise. Calls the function brownNoise.
X = sin(y + noise*2pi)
Parameters: - sz (int) – Length of the spatiotemporal series.
- freq (int) – Frequency of the periodic equation.
- noise (float) – Amplitude of the noise.
- seed (int) – Sets the random seed for reproducible results.
Returns: X – Array containing the periodic equation with brown noise added.

Subsamples to generate sizes: 128, 256, or 512. 512 is the full size.
Parameters: - sz (int) – Row and column size of the array to be returned.
- num_walks (int) – Number of random walks.
- walk_sz (int) – Length of the random walk to take.
- spread (int) – Normal distribution of walks. Sizes randn*spread.
- seed (int) – Sets the random seed for reproducible results.
Returns: X – 2D brown noise array size (sz,sz).
Return type: 2D array
-
skedm.data.
noise_2d
(sz=128, seed=36)¶ A 2D random distribution of numbers.
Parameters: - sz (int) – row and column size of array.
- seed (int) – Sets the random seed for reproducible results.
Returns: X – Array of size (sz,sz) with values between 0 and 1.
Return type: 2D array
-
skedm.data.
chaos_3d
(sz=128, A=3.99, eps=1.0, steps=100, tstart=50)¶ Logistic map diffused in space and then taken through time.
Chaos evolves in 3rd dimension.
Parameters: - sz (int) – Row and column size of the spatio-temporal series to be generated.
- A (float) – Parameter for the logistic map. Values beyond 3.56995 exhibit chaotic behaviour.
- eps (float) – Amount of coupling/diffusion between adjecent cells.
- seed (int) – sets the random seed for the logistic map. Allows results to be easily reproduced.
- tstart (int) – When to start collecting the data. This allows the chaos to be fully developed before collection.
Returns: X – Spatiotemporal logistic map of size (sz,sz,steps).
Return type: 2D array
-
skedm.data.
random_circles
(sz=256, rad=20.0, sigma=1, num_circles=1000)¶ Randomly places down gaussian circles and the sum is taken.
Calls circleCreate to make the circles
Parameters: - sz (int) – Row and column size of the space.
- rad (float) – Radius of the circles.
- sigma (float) – Constant to create gaussian circles. Changes the distribution of values.
- num_circles (int) – Number of circles to place down randomly.
Returns: X – Summed gaussian circles. Size (sz,sz).
Return type: 2D array
-
skedm.data.
circle_in_circle
(rad_list, sz=256, num_blobs=1000)¶ Create circles inside larger circles. These circles cannot overlap. Calls the function blobber.
Parameters: - rad_list (list of ints) – Radii of the circles.
- sz (int) – Row and column size of the returned space.
- num_blobs (int) – Number of circles to create.
Returns: blobs – Array of the circles within circles of shape (sz,sz).
Return type: 2D array
-
skedm.data.
circles_with_stuff
(sz=256, rad1=5, rad2=8, num_blobs=100)¶ Create circles with random smaller circles spread around randomly.
Same number of large circles and smaller circles. Calls blobber2.
Parameters: - sz (int) – Row and column size of the space in which the circle is placed.
- rad1 (int) – Radius of the smaller circle.
- rad2 (int) – Radius of the larger circle.
- num_blobs (int) – Number of large and small circles to create.
Returns: blobs – Array of size (sz,sz) containing all the circles.
Return type: 2D array
-
skedm.data.
random_sized_circles
(rad_list, val_list, sz=512, num_blobs=3000)¶ Create random sized circles spread around randomly and assign them to classes: 1:27
Parameters: - sz (int) – Row and column size of the space in which the circle is placed.
- rad_list (list of ints) – List of radii.
- val_list (list ints) – List of values associated with the radii.
- num_blobs (int) – Total number of circles to create.
Returns: blobs – Array containing all circles.
Return type: 2D array
-
skedm.data.
voronoi_matrix
(sz=512, percent=0.1, num_classes=27)¶ Create voronoi polygons.
Parameters: - sz (int) – Row and column size of the space in which the circle is placed.
- percent (float) – Percent of the space to place down centers of the voronoi polygons. Smaller percent makes the polygons larger.
- num_classes (int) – Number of classes to assign to each of the voronoi polygons.
Returns: X – 2D array of size (sz,sz) containing the voronoi polygons.
Return type: 2D array


Black to play 11
b3-w1/5
pips Black=153 White=154
(CorrectAnswer= 0/0, ErrorScore= 0)
1. bar/23 6/5(2) -0.029 60.2% (G:14.7% B:0.6%) 39.8% (G:11.7% B:0.5%) 2. bar/24 8/7 6/5(2) -0.150 (-0.121) 55.7% (G:15.6% B:0.8%) 44.3% (G:13.2% B:0.7%) 3. bar/24 9/8 6/5(2) -0.156 (-0.127) 55.5% (G:13.4% B:0.6%) 44.5% (G:13.3% B:0.5%) 4. bar/24 9/8 8/7(2) -0.245 (-0.216) 52.4% (G:12.4% B:0.4%) 47.6% (G:14.7% B:0.6%) 5. bar/24 24/23(2) 9/8 -0.283 (-0.253) 50.7% (G:11.3% B:0.4%) 49.3% (G:14.9% B:0.5%)


class: center, middle, inverse, title-slide # A beginners guide to Call SNPs and indels: Part II ##
Mark Duplicates and Base (Quality Score) Recalibration
### Lijia Yu ### 2019/07/31
(updated: 2020-10-04) --- # Outline 1. Review 2. Mark Duplicates 3. Base (Quality Score) Recalibration --- ### Q1: How to create a new directory with multiple subdirectories? ```bash cd ~ mkdir ./project mkdir ./project/out mkdir ./tmp mkdir ./project/src mkdir ./project/in ``` ```bash mkdir -p ./project/{in,out,src,tmp} ``` --- ### Q2: What is src stand for ? ``` . ├── in ├── out ├── src └── tmp ``` - in: input (.fq.gz) - out: output (.bam) - src: source code (script.sh) Always run the code from `src` directory. --- ### Q3.  How to use pipe? ```bash $BWA mem ... | $SAMTOOLS sort ... command_1 | command_2 | command_3 | .... | command_N ``` Pipe is used to combine two or more commands, and in this, the output of one command acts as input to another command, and this command’s output may act as input to the next command and so on. A pipe is a form of redirection (transfer of standard output to some other destination) that is used in Linux and other Unix-like operating systems to send the output of one command/program/process to another command/program/process for further processing. .footnote[ [1][Piping in Unix or Linux](https://www.geeksforgeeks.org/piping-in-unix-or-linux/) ] --- # Pipeline
--- # GATK workflow ![](./2019-07-31-A_beginners_guide_to_Call_SNPs_and_indels_Part_II_files/figure/GATKworkflows.png) .footnote[ [1][Introduction to Variant Discovery with GATK Best Practices](https://qcb.ucla.edu/wp-content/uploads/sites/14/2016/03/GATKwr12-1-GATK_primer.pdf) ] --- # SAM/BAM format .center[ ![](https://us.v-cdn.net/5019796/uploads/editor/f4/uuzmf2cbau1y.png) ] SAM stands for Sequence Alignment Map and is described in the standard specification [here](http://samtools.github.io/hts-specs/). BAM and CRAM are both compressed forms of SAM; BAM (for Binary Alignment Map) is a lossless compression while CRAM can range from lossless to lossy depending on how much compression you want to achieve (up to very much indeed). .footnote[ [1] [SAM / BAM / CRAM - Mapped sequence data formats](https://gatkforums.broadinstitute.org/gatk/discussion/11014/sam-bam-cram-mapped-sequence-data-formats) [2] [SAM/BAM and related specifications](http://samtools.github.io/hts-specs/) ] --- # SAM/BAM format: header ```bash samtools view -H read_data.bam ``` > @HD VN:1.5 GO:none SO:coordinate > @SQ SN:20 LN:63025520 > @RG ID:H0164.2 PL:illumina PU:H0164ALXX140820.2 LB:Solexa-272222 > PI:0 DT:2014-08-20T00:00:00-0400 SM:NA12878 CN:BI > @PG [program group metadata] The header should contain read groups with **sample names** (SM:NA12878). The presence of the @RG tags indicate the presence of read groups. Each read group has a SM tag, indicating the sample from which the reads belonging to that read group originate. .footnote[ [1] [SAM / BAM / CRAM - Mapped sequence data formats](https://gatkforums.broadinstitute.org/gatk/discussion/11014/sam-bam-cram-mapped-sequence-data-formats) ] --- # SAM/BAM format: CIGAR .center[ ![](./2019-07-31-A_beginners_guide_to_Call_SNPs_and_indels_Part_II_files/figure/CIGAR.png)] [1][Introduction to Variant Discovery with GATK Best Practices](https://qcb.ucla.edu/wp-content/uploads/sites/14/2016/03/GATKwr12-1-GATK_primer.pdf) --- # Genome Analysis Toolkit .center[ ![](./2019-07-31-A_beginners_guide_to_Call_SNPs_and_indels_Part_II_files/figure/gatk.png)] - the toolkit offers a wide variety of tools with a primary focus on variant discovery and genotyping. Its powerful processing engine and high-performance computing features make it capable of taking on projects of any size. - Mutect2 / MuTect2 / MuTect - Picard ( a set of command line tools for manipulating high-throughput sequencing (HTS) data and formats such as SAM/BAM/CRAM and VCF. ) - GenomeAnalysisTK (<4.0) / gatk (4.0) --- # Add header ```bash /home/admin/software/gatk-<IP_ADDRESS>/gatk AddOrReplaceReadGroups \ --VALIDATION_STRINGENCY=SILENT \ --RGLB=hg19 \ --RGPL=illumina \ --RGPU=hg19PU \ --RGSM=cancer \ -I=../out/cancer.sorted.bam \ -O=../out/cancer.addheader.bam ``` - RGSM is Read-Group sample name (cancer/normal) .footnote[ [1] [AddOrReplaceReadGroups (Picard)](https://software.broadinstitute.org/gatk/documentation/tooldocs/<IP_ADDRESS>/picard_sam_AddOrReplaceReadGroups.php) ] --- # Mark duplicates to mitigate duplication artifacts .center[ ![](./2019-07-31-A_beginners_guide_to_Call_SNPs_and_indels_Part_II_files/figure/duplication.png) ] --- # MarkDuplicates on Spark (GATK4) ```bash /home/admin/software/gatk-<IP_ADDRESS>/gatk MarkDuplicatesSpark \ -I input.bam \ -O marked_duplicates.bam \ -M marked_dup_metrics.txt \ --conf 'spark.executor.cores=1' ``` This is a Spark implementation of Picard MarkDuplicates that allows the tool to be run in parallel on multiple cores on a local machine .footnote[ [1] [MarkDuplicatesSpark](https://software.broadinstitute.org/gatk/documentation/tooldocs/current/org_broadinstitute_hellbender_tools_spark_transforms_markduplicates_MarkDuplicatesSpark.php) ] --- # Local realignment around indels corrects mapping errors .center[] | position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |------------|---|---|---|---|---|---|---|---|---|---|---|---|---|---| | Reference| C | A | T | T | T | T | T | T | T | C | T | A | A | G | | group 1 |...| C | A | T | T | T | T | T | T |C | T | A | A | G | | group 2 | C | A | T | T | T | T | T | T |C | T | A | A | G |...| --- # Local realignment around indels corrects mapping errors .center[] | position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |------------|---|---|---|---|---|---|---|---|---|---|---|---|---|---| | Reference| C | A | T | T | T | T | T | T | T | C | T | A | A | G | | group 1 | C | A | - | T | T | T | T | T | T |C | T | A | A | G | | group 2 | C | A | - | T | T | T | T | T | T |C | T | A | A | G | --- # RealignerTargetCreator and IndelRealigner (GATK3, retired) ```bash java -jar GenomeAnalysisTK.jar \ -T RealignerTargetCreator \ -R reference.fasta \ -I input.bam \ --known indels.vcf \ -o forIndelRealigner.intervals java -jar GenomeAnalysisTK.jar \ -T IndelRealigner \ -R reference.fasta \ -I input.bam \ -known indels.vcf \ -targetIntervals intervalListFromRTC.intervals \ -o realignedBam.bam ``` .footnote[ [1] [RealignerTargetCreator](https://software.broadinstitute.org/gatk/documentation/tooldocs/3.8-0/org_broadinstitute_gatk_tools_walkers_indels_RealignerTargetCreator.php) [2] [IndelRealigner](https://software.broadinstitute.org/gatk/documentation/tooldocs/3.8-0/org_broadinstitute_gatk_tools_walkers_indels_IndelRealigner.php) ] --- # Base (Quality Score) Recalibration ![](./2019-07-31-A_beginners_guide_to_Call_SNPs_and_indels_Part_II_files/figure/Recalibration.png) [1][Introduction to Variant Discovery with GATK Best Practices](https://qcb.ucla.edu/wp-content/uploads/sites/14/2016/03/GATKwr12-1-GATK_primer.pdf) --- # Base (Quality Score) Recalibration: BaseRecalibrator ```bash /home/admin/software/gatk-<IP_ADDRESS>/gatk BaseRecalibrator \ -I my_reads.bam \ -R reference.fasta \ --known-sites dbsnp_138.hg19.vcf \ --known-sites Mills_and_1000G_gold_standard.indels.hg19.sites.vcf \ --known-sites 1000G_phase1.indels.hg19.sites.vcf \ --known-sites 1000G_phase1.snps.high_confidence.hg19.sites.vcf \ -L ../in/Illumina.bed \ -O recal_data.table ``` ExAc, gnomAD, or dbSNP resources can be used as known sites of variation. We assume that all reference mismatches we see are therefore errors and indicative of poor base quality. .footnote[ [1] [BaseRecalibrator](https://software.broadinstitute.org/gatk/documentation/tooldocs/current/org_broadinstitute_hellbender_tools_walkers_bqsr_BaseRecalibrator.php) ] --- # Resource bundle - `dbSNP 138` + evaluation of dbSNP rate and Ti/Tv values at novel sites. - `Mills_and_1000G_gold_standard` + best set of known indels to be used for local realignment - `1000G_phase1.indels` + best set of known indels to be used for local realignment - `1000G_phase1.snps.high_confidence` + genotype refinement The GATK resource bundle is a collection of standard files for working with human resequencing data with the GATK. .footnote[ [1] [Resource Bundle: Reference materials for human analysis](https://software.broadinstitute.org/gatk/documentation/article.php?id=11017) ] --- # Base (Quality Score) Recalibration: ApplyBQSR ```bash /home/admin/software/gatk-<IP_ADDRESS>/gatk ApplyBQSR \ -R reference.fasta \ -I input.bam \ --bqsr-recal-file recal_data.table \ -L ../in/Illumina.bed \ -O output.bam ``` It recalibrates the base qualities of the input reads based on the recalibration table produced by the BaseRecalibrator tool, and outputs a recalibrated BAM or CRAM file. .footnote[ [1] [ApplyBQSR](https://software.broadinstitute.org/gatk/documentation/tooldocs/current/org_broadinstitute_hellbender_tools_walkers_bqsr_ApplyBQSR.php) ] --- # Quiz 1.Could you write the commands of Mark Duplicates and Base (Quality Score) Recalibration by yourself? Please write your codes in a script file (script.sh). --- # Resource This section is based on the GATK 4 Best Practices workflow at [https://software.broadinstitute.org/gatk/best-practices/](https://software.broadinstitute.org/gatk/best-practices/)


{% load widget_tweaks i18n %}
{% trans 'Would you like to delete the category?' %} {{category.description}} ?


>
This is part of the old website. New website begins at fontforge.github.io
Are you a web developer? Help us migrate this page on Github
Before you can start fontforge on cygwin you must start the X11 server.
On recent versions of cygwin this may be done by invoking
C:\cygwin\usr\X11R6\bin\startxwin.bat
On older systems:
Open a cygwin window and type$ xinitThis should create a task window that covers your entire screen, inside of which there should be an xterm (sort of like the cygwin window earlier). Be prepared to type commands in this window.
You should then type
$ twm &
On most systems fontforge will install itself into /usr/local/bin (that's the standard place for optional software), and this is not always in the default search path for commands (grrrr). Which means you might have everything properly installed, but nothing actually works. If you see messages like "fontforge: command not found." this has (probably) happened to you.
So what do you do?
You need to set the PATH environment variable so that it includes /usr/local/bin. The value of the PATH variable is a set of directories separated by colons.
$ echo $PATH /home/gww/bin:/usr/bin:/bin:/usr/X11R6/bin:/sbin
Unfortunately there are four ways of doing this because there are two different conventions used by unix shells and then the mac doesn't behave normally requiring another two conventions. Type:
$ echo $SHELL /bin/bash
If the name of your shell is bash (as above), ksh or sh then you want to type
$ PATH=/usr/local/bin:$PATH ; export PATH
If the name of your shell is tcsh or csh then you say
$ setenv PATH /usr/local/bin:$PATH
But you'd have to do that every time you logged in. Instead you want this included in the shell's initialization. Again there are two cases, for the bash family of shells you want to edit the file ~/.bashrc (or ~/.profile) while for the csh family you want to edit the file ~/.cshrc (or ~/.login). On a bash system the following command is generally sufficient:
$ cat >>~/.bashrc PATH=/usr/local/bin:$PATH ; export PATH ^D
(where ^D represents control-D, obtained by holding down the control
key while depressing d.
And for the csh family you would type:
$ cat >>~/.cshrc setenv PATH /usr/local/bin:$PATH ^D
On non-mac systems it is better to use ~/.profile
and
~/.login
rather than the files given above.
$ fontforge font.pfa font2.sfd font3.ttf font4.otf
will start fontforge looking at the fonts you specify on the command line. It can read either pfb or pfa fonts, and some ps fonts (type 0 fonts based on a type 1 dictionary) as well as truetype fonts, open type fonts and many other formats.
(If you get a message from your computer saying: "fontforge: Command not found" you should read the previous section)
$ fontforge -new
will cause fontforge to create a new font (in iso-8859-1 encoding)
$ fontforge
will open up a file picker dialog and allow you to browse till you've found a font file (or have created a new one).
$ fontforge -script script.pe fonts...
This will invoke fontforge in a non-interactive mode, and have it run the named script. Any further arguments on the command line will be passed as arguments to the script and processed (or not) by it.
For a complete description of possible arguments see the section on the command line.
One very common problem on cygwin is that you will type in the command line to start fontforge -- and absolutely nothing will happen. The cygwin shell simply prints another prompt. There is no error message. No window appears. Nothing.
This generally means that you are missing a required library. Make sure that the following are installed
(I have no idea why you don't get an error message. That's a bug in cygwin or windows or something. FontForge never gets control and has no chance to generate a message itself).
FontForge now installs itself as a mac application in the Applications folder. You can start FontForge the way you start any other application, double clicking on it, dragging files to it, etc.
Caveat: FontForge
and Font Book
may fight over which will open standard fonts
if you double click on the font file. Both claim they can open these files,
neither claims to be the prefered application for them. If an .otf file shows
a fontforge icon
() it will
be opened by fontforge, if a font book icon it will be opened by font book.
Dragging a font file to the desired application will always work. Or you
can select the font, and invoke File->Get Info
(in the Finder's
menu) and use the "Open with" control to select an application.
On the mac the Option key is used to invoke the functionality that fontforge's docs call "Alt" or "Meta". (See the section on X11 configuration for notes on three button mice and the command key).
You can also start fontforge using traditional unix methods
Before you start fontforge on the mac you must start the X11 server. You can do this by opening the Applications folder, and then opening the Utilities folder, and then double-clicking on "X11". (If you don't have X11 there then refer back to the instructions for installing it)
Having done that there should be a menubar with a menu labeled "Applications". Click on this. There should be a "FontForge" entry in it. Selecting FontForge will start fontforge and bring up a dialog allowing you to open a font or create a new one.
Caveat: FontForge does not normally show mac resource fonts in this dialog -- however it can still open one even it it isn't displayed. Simply type in the name of the file containing it. (or change the Filter field to "All Files").
If the Applications menu does not contain a "FontForge" entry, you can add one yourself:
(You may also start fontforge from the command line here. Go to the Applications menu and select Terminal (or xterm), and then type one of the commands listed above)
Caveat: Normally FontForge will never see the command key shortcuts. X11 intercepts these and uses them itself. If you would like to be able to use Command-Q to quit FontForge then
X11->Preferences->Input
[] Enable keyboard shortcuts under X11
Caveat: FontForge was written assuming the availability of a three button mouse. Under 10.4 X11 simulates this by creating a virtual three button mouse where the middle button is invoked by Option-Mouse click and the right button by Command-Mouse click. (You can also control this from X11->Preferences).


This is the first snac in md5 crypted login sequence.
Client use this snac to request login random key from server. It contain screenname
and some unknown stuff.


Airbnb bans house parties after California Halloween shooting
by Orlando CrowcroftAirbnb has announced a crackdown on "party houses" just days after four young men and a woman were shot at a California property rented through the site.
Brian Chesky, the co-founder of Airbnb, tweeted late Saturday that the site was cracking down on unauthorised parties the shootings at a Halloween party held at a home in Orinda, near San Francisco.
The host of the party had rented the site through Airbnb and told owners that she was holding an event for 12 people, when in fact more than 100 people attended.
In a statement, the Contra Costa Sheriff's Department describe chaotic scenes at the house, including gunshot victims, injured party-goers and others fleeing the scene.
Following the shooting, Chesky announced that the company would expand “manual screening of high risk reservations” and “ taking immediate action against users who violate these enhanced guest policies, including removal.”
He also said the site would be setting up a “dedicated party house rapid response team”, but did not explain what form this team would take or what action it would take. Euronews has reached out to Airbnb for clarity on this.
“We must do better, and we will,” Chesky concluded.


BookKeeper overview
BookKeeper overview
This document explains basic concepts of BookKeeper. We start by discussing the basic elements of BookKeeper, and next we discuss how they work together.
Basic elements
BookKeeper uses four basic elements:
-
Ledger: A ledger is a sequence of entries, and each entry is a sequence of bytes. Entries are written sequentially to a ledger and at most once. Consequently, ledgers have an append-only semantics;
-
BookKeeper client: A client runs along with a BookKeeper application, and it enables applications to execute operations on ledgers, such as creating a ledger and writing to it;
-
Bookie: A bookie is a BookKeeper storage server. Bookies store the content of ledgers. For any given ledger L, we call an ensemble the group of bookies storing the content of L. For performance, we store on each bookie of an ensemble only a fragment of a ledger. That is, we stripe when writing entries to a ledger such that each entry is written to sub-group of bookies of the ensemble.
-
Metadata storage service: BookKeeper requires a metadata storage service to store information related to ledgers and available bookies. We currently use ZooKeeper for such a task.
In slightly more detail...
BookKeeper implements highly available logs, and it has been designed with write-ahead logging in mind. Besides high availability due to the replicated nature of the service, it provides high throughput due to striping. As we write entries in a subset of bookies of an ensemble and rotate writes across available quorums, we are able to increase throughput with the number of servers for both reads and writes. Scalability is a property that is possible to achieve in this case due to the use of quorums. Other replication techniques, such as state-machine replication, do not enable such a property.
An application first creates a ledger before writing to bookies through a local BookKeeper client instance. To create a ledger, an application has to specify which kind of ledger it wants to use: self-verifying or generic. Self-verifying includes a digest on every entry, which enables a reduction on the degree of replication. Generic ledgers do not store a digest along with entries at the cost of using more bookies.
Upon creating a ledger, a BookKeeper clients writes metadata about the ledger to ZooKeeper. A given client first creates a znode named "L" as a child of "/ledger" with the SEQUENCE flag. ZooKeeper consequently assigns a unique sequence number to the node, naming the node "/Lx", where x is the sequence number assigned. We use this sequence number as the identifier of the ledger. This identifier is necessary when opening a ledger. We also store the ensemble composition so that readers know which set of bookies of access for a given ledger.
Each ledger currently has a single writer. This writer has to execute a close ledger operation before any other client can read from it. If the writer of a ledger does not close a ledger properly because, for example, it has crashed before having the opportunity of closing the ledger, then the next client that tries to open a ledger executes an procedure to recover it. As closing a ledger consists essentially of writing the last entry written to a ledger to ZooKeeper, the recovery procedure simply finds the last entry written correctly and writes it to ZooKeeper in the form of a close znode as a child of "/Lx", where x is the identifier of the ledger.
Note that currently this recovery procedure is executed automatically upon trying to open a ledger and no explicit action is necessary. Although two clients may try to recover a ledger concurrently, only one will succeed, the first one that is able to create the close znode for the ledger.


The Tiles Had Trails...
| DOSE: |
30 mg |
oral |
2C-I |
(powder / crystals) |
So my best friend called and asked if I had to work the next day. Being that I didn't have to, I said 'no'. He then told me he could get some 2C-I and asked if I wanted to try it. Trusting him completely, I said 'yes'. I tried to research the stuff, but my company chose to block me from my trusted resource for experiences and information. ANYway...the story really begins once I get off work.
He picks me up at the rail station, and tells me we gotta stop to get something to drink. I guess it takes about 60-75 minutes to kick in...which means 45 for him, bout 90 for me based on other things. So, we stop, get some apple juice, and pour 30mg each into the bottle. We shake it up pretty well, and I sit on the bottle (yes...I sit on it) to warm it up a bit so I can gulp the stuff. A few minutes later, impatience and anticipation set in, and I down it.
T+00:15 - I start to move my foot, and cant stop. Kinda like on 'cid, but only the intensity of rolling. Not too bad so far, I hope my bro isn't feelin this yet cause we still got about 15 minutes to drive before we're 'home'. Luckily I'm not drivin.
T+00:30 - We arrive 'home' and I'm starting to notice brighter colors, a little bit of a delay, or maybe those are trails. Hrms, can't tell quite yet. I'm excited. Bro's kinda uneasy about the dose, I'll work on calming him.
T+00:40 - Okay, so I just went to the bathroom, and I'm definately noticing trails. I get back to the room, and Bro's been reading some experiences...none of which seem to be such a high dose for the first time. He's starting to get really uneasy. I have this overwhelming desire to puke, but not in the stomach sick kinda way...more like overheating. I drink more water. Bro takes his water into the bathroom and chills for a bit. I check on him every once and a while, and try to read some of the exprierences. It's getting a bit harder to begin to read, so I stop...not wanting to kill the feeling my concentrating on something too hard (not like I think it really would have been possible in the state I was entering).
T+??:?? - I've lost all sense of time at this point. Bro returns from the bathroom. He hasn't gotten sick, but he's not comfortable. He's ready for it to end. He's still freakin' bout the dose. I tell him it's okay. Candi-flipping was much more intense in my opinion (but that was my first time taking 'cid too, so maybe I'm not the best opinion). He tries to relax to no avail. Oh well...
Hrms...I gotta pee again. Off to the bathroom. 'The tiles have trails.' I think to myself as I'm takin care of stuffs. Wait...when do tiles move? They're pretty though. Very colorful. I like this. Relatively 'mellow' compared to some other things. Back into the room and I notice the silence...not good. Bro's amazed I can work the computer, but I do.
A few minutes, or several maybe pass by, and I notice the jungle mix being played. I'm not too fond of jungle, and wouldn't describe it as the most relaxing music, so I find some hard trance, and chill. Again, bro's amazed at my computer abilities. He can hardly read. Still uneasy, but I've taken his mind off the dose for a bit.
My stomach is still a bit uneasy, but I keep drinking water. I probably have to evacuate a couple more times, and do...each time fascinated by the tile trails. I'm noticing an 'outline' around everything, it's so mesmorizing. I can enjoy this, definately.
I start typing on the keyboard, and type some things I shouldn't, and it f**ks with Bro's head a bit. Not in a totally bad way, but I still should have. So, I tell Bro to take my keyboard away (it's wireless). We joke around for a bit, but he won't take my keyboard. I'm laughing histarically, enjoying this and he's starting to too, but still not letting go.
Eventually, I take the batteries out and hand him one. I want him to put it on the desk behind him, but again he doesn't. We joke some more, and I'm still giggling like an insane school girl. I throw it over where he is, and he throws it back to my side of the room. Now I can't find it! Well...I guess that was the point.
We spent who knows how much time after that in a similar manner. Neither one of us had any sense of time at that point, although one look at the clock showed it was only around midnight.
My comedown was mild, Bro's was not good...but his never is. I wasn't overly worn out, but definately tired. It was a good experience, and I definately want to go at it again. I think slowing the dose might give me a better feel for how much I like it.
But, the most memorable moment was that point when I realized the tiles had trails ...
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Which best describes my goals?
Burn fat to lose weightWhich days am I available to workout? (Leave at least one day for a rest day)
SundayHow long would I like to spend exercising each workout day?
30 minutesI would say that my body:
Carries extra fatWhich are wider, my shoulders or my waist?
My waist is widerWhen I flex my legs:
There is no differenceWhen I flex my arms:
There is no differenceWhen I flex my back:
There is no differenceIn standing posture and without sucking in my gut, does my chest extend past my belly?


My name is Alan Rodriguez. I am currently studying Computer Science at San Jose State University.
I am interested in front and back end development. I am also interested in developing apps for mobile devices.
I am currently looking for Software Engineering related internships.
Connect with me if you are interested!
Technical Skills
CSS
HTML
Java Script
Java
Python
Swift
git
linux
YouTube
Want to see more? I have created a youtube
channel where I go over technical problems.


Class Gamepad
Implements Game Pad device and stores input listeners
Inheritance
System.Object
Gamepad
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: EmptyKeys.UserInterface.Input
Assembly: EmptyKeys.UserInterface.dll
Syntax
public class Gamepad
Constructors
Gamepad(Int32)
Initializes a new instance of the Gamepad class.
Declaration
public Gamepad(int playerNumber)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | playerNumber | The player number. |
Fields
GamepadDownEvent
The game pad down event
Declaration
public static readonly RoutedEvent GamepadDownEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
GamepadMoveEvent
The preview game pad move event
Declaration
public static readonly RoutedEvent GamepadMoveEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
GamepadTriggerEvent
The game pad trigger event
Declaration
public static readonly RoutedEvent GamepadTriggerEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
GamepadUpEvent
The Game pad up event
Declaration
public static readonly RoutedEvent GamepadUpEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
PreviewGamepadDownEvent
The preview Game pad down event
Declaration
public static readonly RoutedEvent PreviewGamepadDownEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
PreviewGamepadMoveEvent
The preview game pad move event
Declaration
public static readonly RoutedEvent PreviewGamepadMoveEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
PreviewGamepadTriggerEvent
The preview game pad trigger event
Declaration
public static readonly RoutedEvent PreviewGamepadTriggerEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
PreviewGamepadUpEvent
The preview Game pad up event
Declaration
public static readonly RoutedEvent PreviewGamepadUpEvent
Field Value
| Type | Description |
|---|---|
| RoutedEvent |
Properties
FocusedElement
Gets the focused element.
Declaration
public UIElement FocusedElement { get; }
Property Value
| Type | Description |
|---|---|
| UIElement | The focused element. |
Methods
Update(UIRoot, Double, Double)
Updates the specified UI container.
Declaration
public void Update(UIRoot uiContainer, double elapsedGameTime, double totalGameTime)
Parameters
| Type | Name | Description |
|---|---|---|
| UIRoot | uiContainer | The UI container. |
| System.Double | elapsedGameTime | The elapsed game time. |
| System.Double | totalGameTime | The total game time. |


Setting Visible Categories
How to display feedback for a single category only using the Feedback Comments module. You may like to have a different Feedback Comments module to display feedback for each category or feedback for different categories as visible to different roles and users.
Tip: Categories are managed under Feedback Lists on the Feedback module.
- Go to the Feedback Comments module.
-
- Go to the Comment View Settings section.
- At Scope, select from these options:
- Selected Modules Only: Select to view a list of all Feedback modules you want to display feedback from.
- Mark the check box beside each module to be included.
- Portal (from all Feedback Modules): Select the categories that display feedback from all modules.
- At Category, select each categories that feedback will be displayed from.
-
Click the Update button.
Displaying Feedback for a Single Category


Soccer a game played by two teams of eleven players with a round ball that may not be touched with the hands or arms during play except by the goalkeepers. The object of the game is to score goals by kicking or heading the ball into the opponents' goal.
Two teams of eleven players each compete to get the ball into the other team's goal (between the posts and under the bar), thereby scoring a goal. The team that has scored more goals at the end of the game is the winner; if both teams have scored an equal number of goals then the game is a draw.


MongoDB
Read and Explore
Introduction to MongoDB
- Databases in general. What is SQL, NoSQL and the differences?
- Introduction to MongoDB, and how does it work?
- Basic operations in MongoDB - CRUD.
- Install MongoDB and dive into the Mongo Shell - perform basic actions with records (CRUD).
- Journaling
- Sharding
- Capped collections, Indexes
- Automatic Failover, High Availability, Elections
- ObjectID vs Mongoref
- Write concern
- Complete Lesson 12 in Basic Web Training
Working with the MongoDB Driver & Replica Set
- Replication in general - different kinds of Replication and their differences
- Master-Slave vs ReplicaSet
- Setup a Replica Set with your computer as the Primary node, and the rest of your team as the secondaries. (Add an Arbiter if needed)
MongoDB in Linux
- MongoDB's configurations - what could you change, and think about what's important for us to change
- We have removed almost every single authentication methods, but it's important to read and know
About the different ones and when and why you should use them (There is a detailed SSL lesson
that you should read)
Background
MongoDB is deployed in every site as a Slave and in the hearts as a Master with ReplicaSet
Every server runs on port 10100
In every server there is a configuration file mongo.conf that defines:
* Every user has a different role, thus different permissions
* Auditing
* Port definition
* ReplicaSet definition
Auditing
MongoDB has an ability to document significant actions, and we configured it to write into a JSON file,
The documented actions are:
* Changes in properties of a collection - DDL
* Changes in the ReplicaSet
* Authentication and login of users
* Common actions like deleting an index/collection etc.
Log
Every action is written into a Log file
ReplicaSet
- ReplicaSet is a kind of replication with Automatic Failover, it means that when one of the servers is down,
a transition into another server occurs which will receive the write queries
- In this kind of Replication, there's a voting mechanism. When a server fails,
all the servers vote for the highest priority
server that eventually gets elected to being the Primary
- There are 3 kinds of servers :
* One that could become Primary
* One that could vote, but can't be elected.
* One that can't vote and can't get elected.
MongoDB installation guide
Under the Infrastructure Team's Documents lies the full MongoDB installation, detailed and everything.
Troubleshooting
There is a detailed MongoDB troubleshooting guide
useful linux commands:
top
- To see memory and CPU usage
tail /path/to/logFile.log -f
- see the mongo's log in real time
mongostat
- a profiler to mongo - use the ssl connection string to connect to it.
for example: ```mongostat <IP_ADDRESS>:10100 -u CN=infra -p password


NY regulator vows to investigate Apple Card for sex bias
NEW YORK (AP) - A New York regulator is investigating Goldman Sachs for possible sex discrimination in the way it sets credit limits.
The investigation follows a series of viral tweets by entrepreneur and web developer David Heinemeier Hansson about algorithms used for the Apple Card, which Goldman Sachs manages in partnership with Apple.
Hansson said the card offered him a credit limit 20 times greater than it gave to his wife, even though she has a higher credit score. He called the algorithm a sexist program.
A spokeswoman for the New York Department of Financial Services confirmed Saturday that the agency will investigate “and ensure all consumers are treated equally regardless of sex.”
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


MICROFILM
(You can search any file
or page on this web site by following the steps found by clicking on Search.)
Microfilm available in the Research Room of the
Monroe County District Library.
Military
Index to the Roster
of Soldiers from Ohio in the Civil War. (Four rolls. See military section
in Research Room for accompanying 12-volume set.)
Court
Roll 1 - Common Pleas General Index Direct
General
Index Reverse
Law
Record Index
Roll 2 Supreme Court Appearance Docket 1834-52
Supreme
Court Minutes 1820-50
Supreme
Court Record 1825-50 (part)
District
Court Minutes 1852-65
Roll 3 Supreme Court Record (part) 1825-50
County Home Infirmary
Records
Roll 5 Clerk of Courts Appearance Docket 1822-1841
(v. 3-5)
Roll 6 Clerk of Courts Appearance Docket 1841-1846
(v. 6-7)
Roll 7 Clerk of Court Appearance Docket 1846-1853
(v. 8-9)
Roll _
Clerk of Court Supreme court record 1841 1850
Roll _
County Home Infirmary Record 1855 1978.
Newspapers
Check
our publications for sale for issues that have been abstracted and published! (Click
here to go to the list of Publications that are available)
Spirit of
Democracy
6 Mar 1844 26 Dec 1846
2 Jan 1847 25 Aug 1852
1 Sep 1852 27 Jun 1855
4 Jul 1855 24 Feb 1858
3 Mar 1858 31 May 1865
7 Jun 1865 31 Dec 1867
7 Jan 1868 31 May 1870
7 Jun 1870 31 Dec 1872
7 Jan 1873 16 Feb 1875
5 Sep 1876 11 Feb 1879
18 Feb 1879 - 25 Oct 1881
1 Nov 1881 24 Jun 1884
1 Jul 1884 28 Dec 1886
4 Jan 1887 30 May 1889
6 Jun 1889 - 24 Sep 1891
5 Apr 1900 26 Dec 1901
7 May 1908 25 Aug 1910
1 Sep 1910 26 Dec 1912
2 Jan 1913 29 Apr 1915
3 Jan 1924 28 Apr 1926
5 Nov 1930 23 Feb 1933
2 Sep 1937 30 Nov 1939
7 Dec 1939 26 Feb 1942
The
Woodsfield Republican
14 Sep 21 Sep
1860
The Monroe
Democrat
30 Jul 1875 25
Jan 1878
Clarington
News
(scattered issues)
17 Mar 1933 18 Dec 1946
Monroe
Gazette
Feb 1, 1878-Oct 29, 1880
6 Sep 1889 - 31 Mar 1892
Census
The
federal census for the state of Ohio for the years:
1820
Clark, Coschocton, Gallia, Hocking, Huron, Knox, Lawrence, Meigs, Monroe*
1830
Miami, Monroe, Montgomery*
1840
Monroe*
1850
Athens (part) Belmont - Butler (part) Meigs (part), Monroe, Montgomery*
1860
Miami (part), Monroe, Montgomery* Miami (part) and Montgomery (part)
1870
Monroe* Mercer and Morrow
1880
Miami (part), Monroe, Morgan (part)* Warren (part) & Washington (part)
Washington
1890
Civil War Veterans & Widows census for Monroe
1900
Miami, Morgan, Monroe
1910
Monroe, Morgan, Morrow
1920
Miami, Monroe, Montgomery, Morrow, Noble, Ottawa
1930 Census of
Monroe County
*The 1820-30-40-50-60-70-80
census are in book form in the Research Room.
The 1820-30-40 and the 1880
are available for sale from the Chapter.
1800
Caroline - Kent
1810
Calvert - Frederick
1850
Ash - Beaufort
1870
Ashe - Anson
1880
Ash (part), Beaufort
Pennsylvania
1790
Washington County (Vol. 6-8)
1800
Washington
1810
Washington
Virginia
1790
1810
West
Virginia
1870
Wirt, Wood, Wyoming
1880
Wirt (part), Wood, Wyoming
1890
Civil War Veterans & Widow Census
Boone - Wyoming
MICROFICHE
Census
1790 Connecticut
1790 New Hampshire
1790 New York
1790 Vermont
1840 Iowa
1870 Pennsylvania (West) Index
1870 West Virginia Soundex
1890 West Virginia Veterans and Widows Census
Click here for the Short-Cut Table of Contents


-
Standard Catalog of 4x4's, Krause Publications, Iola, WI, Second
Edition, 1995.
-
Jeep Vehicles 1941-1990 Engine & Transmission Coversion Kits
Instruction Manual, Advanced Adapters Inc., Seventh Edition, June
1994.
-
Ludel, Moses, Jeep Owner's Bible, Robert Bentley Publishers,
Cambridge, MA, 1992.
-
Freeman, K.A., Jeep CJ-5, CJ-6, CJ-7, Scrambler, Wrangler
1971-1990 Repair Maual, Chilton Book Company, Radnor, PA, 1990.
-
1993 Jeep Technical Service Manual: Engine, Chassis, and Body,
Chrysler Corporation, 1992.
-
1984 Jeep Technical Service Manual, Jeep Corporation Service
Dept, 1984.
-
1981 Jeep Technical Service Manual, Jeep Corporation Service
Dept, 1981.
-
1979 Jeep Technical Service Manual, Jeep Corporation Service
Dept, 1979.
-
1978 Jeep Technical Service Manual, Jeep Corporation Service
Dept, 1978.
-
1976 Jeep Technical Service Manual, Jeep Corporation Service
Dept, 1976.
-
1972 Jeep Technical Service Manual, Jeep Corporation Service
Dept, 1972.
-
Jeep Illustration Supplement F-75080 R2 to Parts Catalog
F-74080 R2; '74 through '80, Jeep Corporation Parts Division, 1980.


Elderly woman knocked over and injured by man fleeing security guards
She required hospital treatment
by Jamie HawkinsPolice are appealing for witnesses after a woman was knocked over by a man who was fleeing from security guards in Plymouth city centre.
The incident happened in Royal Parade at around 11.30am on Thursday, September 26.
Police issued the public appeal today, Tuesday, November 19.
The victim, aged in her 80s, suffered a fractured shoulder and cut to her head. She required hospital treatment.
Anyone who witnessed the incident is urged to call police on 101, or email<EMAIL_ADDRESS>quoting crime reference number CR/100734/19.
Information can also be passed anonymously to independent charity Crimestoppers by calling 0800 555111, or via www.crimestoppers-uk.org.


Home
Add new entry
Course
Student
Trainer
Assignment
View entry
Courses
Students
Trainers
Assignments
Select a course
CB12, Java, Full Time
Course 1
Trainers in course (hold ctrl for multiple & deselect):
John Wick
Tracy Hopkins
Luke Lemon
Chuck Johnson
Ricardo Agueres
Harry Ford
Joanna Jameson
John Doe
Helen Solomon
George Smith
Students in course (hold ctrl for multiple & deselect):
Felix Prudr
Grigori Rasputin
John Cena
Alexander Solzhenitzyn
Fiona Drewson
Llyn Houston
Kojiro Takahashi
Edgar Pearson
Lucius Lachance
Duke Nukem
Flint Hannegan
Jonathan Joestar
Yu Shen
Lin Ming
Elizavetta Diaz
Greg Statham
Igor Shulgin
Jorge Rodriguez
Belamy Greger
Katherine Fritz
Pyotr Szadjyn
Assignments in course (hold ctrl for multiple & deselect):
IA1: Backend basics
IA2: Databases basics
IA3: Front end basics
IA4: Back end Advanced
IA5: Front end Advanced
GA1: Computer app
GA2: Web app
CB12, Java, Part Time
Course 2
Trainers in course (Hold ctrl to add multiple):
John Wick
Tracy Hopkins
Luke Lemon
Chuck Johnson
Ricardo Agueres
Harry Ford
Joanna Jameson
John Doe
Helen Solomon
George Smith
Students in course (hold ctrl for multiple & deselect):
Felix Prudr
Grigori Rasputin
John Cena
Alexander Solzhenitzyn
Fiona Drewson
Llyn Houston
Kojiro Takahashi
Edgar Pearson
Lucius Lachance
Duke Nukem
Flint Hannegan
Jonathan Joestar
Yu Shen
Lin Ming
Elizavetta Diaz
Greg Statham
Igor Shulgin
Jorge Rodriguez
Belamy Greger
Katherine Fritz
Pyotr Szadjyn
Assignments in course (hold ctrl for multiple & deselect):
IA1: Backend basics
IA2: Databases basics
IA3: Front end basics
IA4: Back end Advanced
IA5: Front end Advanced
GA1: Computer app
GA2: Web app
CB12, C#, Full Time
Course 3
Trainers in course (hold ctrl for multiple & deselect):
John Wick
Tracy Hopkins
Luke Lemon
Chuck Johnson
Ricardo Agueres
Harry Ford
Joanna Jameson
John Doe
Helen Solomon
George Smith
Students in course (hold ctrl for multiple & deselect):
Felix Prudr
Grigori Rasputin
John Cena
Alexander Solzhenitzyn
Fiona Drewson
Llyn Houston
Kojiro Takahashi
Edgar Pearson
Lucius Lachance
Duke Nukem
Flint Hannegan
Jonathan Joestar
Yu Shen
Lin Ming
Elizavetta Diaz
Greg Statham
Igor Shulgin
Jorge Rodriguez
Belamy Greger
Katherine Fritz
Pyotr Szadjyn
Assignments in course (hold ctrl for multiple & deselect):
IA1: Backend basics
IA2: Databases basics
IA3: Front end basics
IA4: Back end Advanced
IA5: Front end Advanced
GA1: Computer app
GA2: Web app
CB12, C#, Part Time
Course 4
Trainers in course (hold ctrl for multiple & deselect):
John Wick
Tracy Hopkins
Luke Lemon
Chuck Johnson
Ricardo Agueres
Harry Ford
Joanna Jameson
John Doe
Helen Solomon
George Smith
Students in course (hold ctrl for multiple & deselect):
Felix Prudr
Grigori Rasputin
John Cena
Alexander Solzhenitzyn
Fiona Drewson
Llyn Houston
Kojiro Takahashi
Edgar Pearson
Lucius Lachance
Duke Nukem
Flint Hannegan
Jonathan Joestar
Yu Shen
Lin Ming
Elizavetta Diaz
Greg Statham
Igor Shulgin
Jorge Rodriguez
Belamy Greger
Katherine Fritz
Pyotr Szadjyn
Assignments in course (hold ctrl for multiple & deselect):
IA1: Backend basics
IA2: Databases basics
IA3: Front end basics
IA4: Back end Advanced
IA5: Front end Advanced
GA1: Computer app
GA2: Web app


Sign In
☰ Menu
BUY
SELL/TRADE
Login
Sign Up
LOGOUT
2015 TOYOTA RAV4
Car details
Price:$ 2,000.
Condition: Used
Brand: Toyota
Car Owner
Name :
John Kagaba.
<EMAIL_ADDRESS>$ Make a Purchase order


Sapes Documentation
This document covers sapes administration.
Table of Contents
Introduction
Building
Configuration
Overview
config.txt
File System
Domain Setup
sapes on github


Connecting Raspberry Pi to Microsoft Azure with Python3
Introduction
One of the best uses for the Raspberry Pi is in embedded IoT projects. For simple, linear data logging projects, all you need is to add new lines to a Google Sheet. However, there are times when you need the power of a remote database to do the hard work for you. One of the most robust options is Microsoft Azure. I'll show you how to create a new SQL database, install and configure the needed Python modules, and then test to see if everything worked. This tutorial is running on a fresh install of Raspbian-2015-02 with all updates installed as of 2015-04-02.
One note before we begin: This tutorial is for Python3, and we will use the Python3 version of pip to install the modules. I'll mention how to install the Python2 version of the modules, but I don't guarantee everything else will work the same. If you don't have Python3 pip installed, you will need to install it via apt-get with the following line:
sudo apt-get install python-dev python3-dev python3-setuptools python3-pip
Azure SDK
Microsoft offers an official open-source Python module which you can use to tie into Azure tables and blobs among other things. If it's not necessary to have a full SQL database for your project, this is going to be the easiest way to tie into Azure. Read the reference docs in the Azure Python Dev Center before moving on. The great thing about this method is that it's already configured once installed. If you are using Python3, these two lines will install everything:
sudo apt-get install libffi-dev
sudo pip-3.2 install azure
There's only one dependency to install before we do the pip install. Unlike the Python2 version of pip, pip is customized for each new Python version. As of the Feb2015 version of Raspbian, Python3.2 is the default, so we use pip-3.2 to install. You can install the Azure module for Python2 with apt-get:
sudo apt-get install libffi-dev azure
One of the downsides of the azure module is that it doesn't include a way to access our Azure SQL databases directly. For that, continue reading.
Create SQL Database
For the sake of clarity during this tutorial, I'm going to make a new SQL database and use the actual server name, user name, and password in plain text during module setup. By the time you read this, the server will have been deleted, so make sure you replace the tutorial data with your own.
The first thing we need to do is create a new SQL database. If you already have a database you want to tie into, you can do that too. If you already know your existing server name, database name, database user name, and database password, skip to the next section.
At this point, we have everything we need to continue. You might want to take the time to add some data to the database using the Management portal you can access by clicking the "Management" button on the black bar at the bottom of the page. I added a new table Trivia with questions and answers.
Install pyodbc
Now that we have a server ready to go, it's time to install and configure the Python modules. In order to do SQL queries, we're going to use pyodbc. It will give us a Python wrapper to use two other UNIX database utilities, each of which need to be individually configured. If you are unfamiliar with pyodbc, check out its "Getting Started" guide. The dependency installation is via apt-get with this line:
sudo apt-get install unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc
Now that the dependencies are installed, they need to be configured.
After all of that, it's now time to install pyodbc. As with the Azure SDK module, we'll install it via pip for Python3.
sudo pip-3.2 install pyodbc
To install it on Python2, use apt-get.
sudo apt-get install pyodbc
Testing
Now it is time to test our installation. Open up a python3 shell and following along with the code below. It shows me connecting to the SQL database and reading data from the table I created earlier.
pi@dupRasPi:~$ python3
Python 3.2.3 (default, Mar 1 2013, 11:53:50)
[GCC 4.6.3] on linux2
Type "help", "copyright" or "license" for more information.
>>> import pyodbc #If anything went wrong during installation, it will happen here
>>> dsn = 'rpitestsqlserverdatasource'
>>> user = 'myrpiuser@qcezk07lpu'
>>> password = 'Raspbian#1'
>>> database = 'rpitutorial'
>>>
>>> connString = 'DSN={0};UID={1};PWD={2};DATABASE={3};'.format(dsn,user,password,database)
>>> conn = pyodbc.connect(connString) #If anything went wrong during configuration, it will happen here
>>> cursor = conn.cursor()
>>> cursor.execute('select question, answer from [Trivia]')
<pyodbc.Cursor object at 0xb67bc9f8>
>>> row = cursor.fetchone()
>>> if row: print(row)
...
('What is my favorite IoT platform?', 'The Raspberry Pi, of course!')
conn.close()
quit()
Now everything is working. We create the connection string, connect to the server, perform a query, read the response, and finally close the connection. Of course you can do more than just read database contents. The pyodbc module makes it easy to do anything with standard SQL queries. It will hold response data so that it's easy for you to manage whether your query returns ten rows or ten thousand.
What will you make with Azure?