Example Decathlon.fr without CSS
Example Decathlon.fr with CSS
At the beginning of the web, css didn't exist.
HTML was born in 1991, and CSS in 1996.
At this time,
available styles were really limited.
It was possible to use dedicated tags styles, through, like :
text
Allowing to define text color.
As people wanted to have more complex displays, the web
became a mix between styles and contents making it
really difficult to understand.
This is when CSS was created to split styles and contents and make it clean.
As the name says (Cascading Style Sheet),
a CSS is a sheet listing style rules
applied in cascade to HTML elements.
It means that some styles are directly applied to an element and others
are applied to children by inheritance.
It is specially relevant for font sizes, text colors, line height ...
The main benefit is that we don't have to apply style rules
to every element, you only have to apply generic styles
on the top elements of the HTML structure
This is why we define generic styles on top elements like

and/or
Then every styles of an element can be overridden or completed by more specific ones breaking inheritance.
CSS evolution is ruled by W3C (international consortium)
(W3C for World Wide Web Consortium),
where every rule and CSS version
is made official
CSS is currently in version 3, released in 2005.
When a feature is not official,
it stays as a draft for a while,
but can be used and adopted
in many different ways by browsers
(prefixes, special displays and behaviours, ...).
It is only when it is mature and used enough
that it is made official.
For example, Grid Layout
was only made official after many years
of discussions and various validations.
During this time it evolved and was used
by some developers who couldn't wait
helping the feature to be better but
costing many updates
As CSS is constantly evolving
it is important to know which rules to use
depending on browers compatibility
If you need to check browser compatibilty
visit www.caniuse.com
A CSS rule is composed of a selector,
used for targeting one or many elements
on which you want to apply styles
selector {
}
...containing one or multiple declarations ...
selector {
declaration;
}
Declarations themselves are composed of a a property/value couple
selector {
property: value;
}
Which gives us :
p {
color: red;
}
body {
font-size: 16px;
font-family: "Times", serif;
}
body {
font-size: 16px;
font-family: "Times", serif;
}
.main-section {
position: relative;
padding: 1rem 0;
border-top: 1px solid #ccc;
}
body {
font-size: 16px;
font-family: "Times", serif;
}
.main-section {
position: relative;
padding: 1rem 0;
border-top: 1px solid #ccc;
}
.main-section > p {
/* external margin of 16px top and bottom, and center horizontally */
margin: 1rem auto;
width: 600px;
font-style: italic;
font-size: 1.25rem; /* 20px */
}
body {
font-size: 16px;
font-family: "Times", serif;
}
.main-section {
position: relative;
padding: 1rem 0;
border-top: 1px solid #ccc;
}
.main-section > p {
/* external margin of 16px top and bottom, and center horizontally */
margin: 1rem auto;
width: 600px;
font-style: italic;
font-size: 1.25rem; /* 20px */
}
/* only first letter of every paragraph in main-section */
.main-section > p::first-letter {
text-transform: uppercase;
font-size: 3em; /* 3 x 20px = 60px */
}
Some properties expect values with
absolute or relative units.
The most famous : px (pixels).
As its name suggests,
this unit allow us to apply fixed values in pixels.
For accessibility and responsive reasons,
this unit must be used with caution,
and often replaced by others, more responsive .
% : percentage
As obvious as it seems,
you always need to know on what it is based
and on what property you should apply it.
vw and vh
For viewport width and viewport height.
1 unit is 1% of the viewport
(visible area of the web page).
em
For the (font-size
)
applied to a parent,
or element itself (as seen previously in cascading).
Ex : for an element that has a 12px font-size
,
a child element with a 2em font-size
will be 24px.
rem
(root em)
It is the font-size
of the “root” element,
usually applied on
or
.
Ex : if a web page has global font-size
of 16px,
a child element with font-size
of 2.5rem will be 40px.
There are many more, some are a bit exotic, like :
ex
, ch
, lh
, vmin
, vmax
,
or even pt
(point) and cm
, for printing purposes
Some properties
such as font
, padding
, margin
, background
,
can be shortened
For example : To add margin to an element, the following...
.element {
margin-top: 1rem;
margin-right: 0;
margin-bottom: 1rem;
margin-left: 0;
}
...can be shortened like this :
.element {
/* following the clock rule top > right > bottom > left */
margin: 1rem 0 1rem 0;
}
Or also :
.element {
/* top > right/left > bottom */
margin: 1rem 0 1rem;
}
Or also :
.element {
/* top/bottom > right/left */
margin: 1rem 0;
}
Or even, for a global margin :
.element {
margin: 1rem;
}
An other example with property font
{
font-style: italic;
font-weight: bold;
font-size: 1.2em;
line-height: 1.5;
font-family: Arial, sans-serif;
}
can be shortened like this :
{
font: italic bold 1.2em/1.5 Arial, sans-serif;
}
margin/padding
border-radius
All of this is very nice but would be totally useless
if we did not have the selectors, allowing us to target elements which will receive the styles.
Target every HTML elements
* {
color: black;
}
Target every HTML elements of type

p {
color: black;
}
Target every HTML elements
that has the matching CSS class :
.my-class {
color: black;
}
Target the (must-be) unique element with a matching attribute id
Difference between id and class attribute: The only difference between them is that “id” is unique in a page and can only apply to at most one element, while “class” selector can apply to multiple elements.
#id-unique {
color: black;
}
Target elements with attributes that have
a specific value :
a[target="_blank"] {
color: black;
}
Other example that targets elements with specified attribute,
even if it does not have a defined value
div[style] {
color: black;
}
Target elements with all indicated classes
.my-class-1.my-class-2 {
color: black;
}
Target elements that match one of the selector
.my-class-1, .my-class-2, quote, a[target="_blank"] {
color: black;
}
Target specific children
section p {
color: black;
}
Target direct children elements of specific type
section > p {
color: black;
}
Target elements directly following other elements
// every paragraph following another one
p + p {
color: black;
}
Target elements indirectly following other elements
// every paragraph following indirectly another one
p ~ p {
color: black;
}
There are many more,
and it's also possible to combine them.
A pseudo class is a key word that can be added to a selector to define a specific state
that elements must have to be targeted
They are defined with “:” (colon).
Examples :
a:hover {}
a:active {}
a:focus {}
a:visited {}
...
A pseudo-element is a key word that can be added to a selector to define a display of specific parts of an element.
They are defined with “::” (double colon).
Examples :
a::after {}
a::before {}
input::placeholder {}
...
Good to know, pseudo elements can also be used with “:” because a few years ago, they were not considered different than pseudo classes
Some quotes
, he says, are better than none
Some quotes
, he says, are better than none
q::before {
content: "«";
color: blue;
}
q::after {
content: "»";
color: red;
}
Some quotes
, he says, are better than none
q::before {
content: "«";
color: blue;
}
q::after {
content: "»";
color: red;
}
Some quotes, he says,
are better than none
Previous note :
Styles applied directly on HTML tags
through style
attribute always have priority over CSS.
After we say this : selectors do have priorities.
At equal priority of selector,
a CSS statement will overrule another one declared before :
p { color: blue; }
p { color: red; }
// red will overrule blue
But there is a priority rule calculated
upon the nature of the selector and what it combines :
p, div, ::before
, etc).my-class
)#my-id
)For example, for a paragraph
...
Blue will keep priority over red :
.paragraph { color: blue; }
p { color: red; }
Note: careful with overbidding selectors!
Avoid as much as possible selectors
too long or too complex/specific :
main#main-section div.scrollable > div > h2 > ul > li + li { ... }
and use selectors as generic as possible
that you can overrule more easily.
!important
In last resort, it is possible to add
!important
to the declaration's value:
p { color: red !important; }
That will take absolute priority
on any selector specification.
!important
It also takes priority on styles directly applied to an HTML element.
In the following example, red will be applied.
...
p {color: red !important;}
!important
If two declarations with !important
are in conflict,
priority will be applied in the same manner as any equally specific declarations.
It means that at equal selector weight,
it's the order that will prevail (the last one wins !) :
p {color: blue !important;}
p {color: red !important;}
Otherwise, the most specific selector takes the lead :
p.blue {color: blue !important;}
p {color: red !important;}
!important
Considered as a bad practice
or at least a last resort solution,
it can be useful in one use case :
If styles are applied directly to HTML tags, with Javascript,
and no CSS specification is enough.
The attribute display
, applied by default
according to the nature of the element can be updated
inline
:
strong
, em
, span
, etc)
block
:
p
), generic boxes (div
), or lists (ul
, li
), etc
inline-block
:
img
, input
, button
There are many more values
Most of the time, they are linked to elements types
like table
, table-cell
, list-item
, etc.
Since the release of flexbox, a,d grid layout,
(explained in CSS#2)
this list grew with some values like :
flex
, inline-flex
, grid
, inline-grid
, etc...
To have a basic render of a web page
when no CSS is applied, browsers apply
basic styles.
Based upon the nature of an element
(
, ,
,
, ...),
a specific display
can be applied
(block, inline
, among others),
and also basic colors, borders, backgrounds, underlines, ...
Example Decathlon.fr without CSS
To get rid of these default native styles, there is the appearance
property, deleting these styles
You can use it but keep in mind that it was not
made official yet and compatibility is not always right
Caniuse
By default, any element is in “static” position :
position: static
.
An element become “positioned” as soon as the property
position
is specified (by a value different than static).
As soon as it is positioned, it is possible to move the element by moving properties :
left
, top
, right
, and bottom
.
Explanations of position values
relative
:
Explanations of position values
absolute
:
Explanations of position values
fixed
:
fixed
position will be fixed regarding the viewport (visible part of the screen), it is not dependant to scroll whether it has positioned parents or not.
Explanations of position values
sticky
:
sticky
makes an element depending on scroll, giving the impression that the element "follows the user" :
Note : positioning can be source of overlaps.
The z-index
property allows to handle
levels of overlap for each element,
to makes them go "higher" or "lower"
A higher value will make an element go up.
If two elements with no z-index
or same level are overlapping, it is the last one in the document that will appear on top.


|
|
void | clearObjects () |
| | destruct all managed objects
|
| |
|
intptr_t | create (Obj *p) |
| | Add object to map, creates a shared_ptr from the pointer call using something like objman.create(new YourObj());.
|
| |
|
void | destroy (intptr_t id) |
| | destroy instance
|
| |
|
void | destroy (const mxArray *in) |
| | destroy instance specified in mxArray
|
| |
|
std::shared_ptr< Obj > | get (intptr_t id) |
| |
|
std::shared_ptr< Obj > | get (const mxArray *in) |
| |
|
|
static intptr_t | getIntPointer (const mxArray *pointer) |
| |
|
|
std::unordered_map< intptr_t, std::shared_ptr< Obj > > | ObjectMap |
| |
The documentation for this class was generated from the following file:


Hello!
Welcome to the personal website of Jack Morey.
I'm a current Honors Computer Science major at Texas A&M University, graduating in the class of 2023.
I'm currently looking for Internship/Part-time work over the summer in the tech industry.
If you're interested in reaching out to me, please contact my school email or my personal professional email.
Check me out at:


Component Description
Trace metals have been associated with adverse health effects in occupational
studies or laboratory studies, but have not been monitored in general population
groups.
This method is used to achieve rapid and accurate quantifications of multiple
elements of toxicological and nutritional interest. The method is sensitive and
rapid enough to analyze urine specimens from subjects suspected of being exposed
to a number of important toxic elements, or to evaluate environmental or other
non-occupational exposure to these same elements.
Eligible Sample
All examined participants aged 3 to 5 years were eligible and participants
aged 6 years and older from a one-third subsample were eligible.
Description of Laboratory
Methodology
This method directly measures multiple metals in urine specimens using mass
spectrometry after a simple dilution sample preparation step. Liquid samples are
introduced into the mass spectrometer through the inductively coupled plasma
(ICP) ionization source, reduced to small droplets in an argon aerosol via a
nebulizer, and then the droplets enter the ICP. The ions first pass through a
focusing region, followed by the dynamic reaction cell (DRC), the quadrupole
mass filter, and finally are selectively counted in rapid sequence at the
detector allowing individual isotopes of an element to be determined.
Refer to the Laboratory Method Files section for a detailed description of
the laboratory methods used.
There were no changes to the lab method, lab equipment, or lab site for this
component in the NHANES 2015-2016 cycle.
Laboratory Method Files
Urinary Metals and Total Arsenic Laboratory Procedure Manual
(June 2018)
Laboratory Quality
Assurance and Monitoring
Urine samples are processed, stored, and shipped to the Division of
Laboratory Sciences, National Center for Environmental Health, Centers for
Disease Control and Prevention, Atlanta, GA for analysis.
Detailed instructions on specimen collection and processing are discussed in
the NHANES Laboratory
Procedures Manual (LPM). Vials are stored under appropriate frozen (–30°C)
conditions until they are shipped to National Center for Environmental Health
for testing.
The NHANES quality assurance and quality control (QA/QC) protocols meet the
1988 Clinical Laboratory Improvement Act mandates. Detailed QA/QC instructions
are discussed in the NHANES
LPM.
Mobile Examination Centers (MECs)
Laboratory team performance is monitored using several techniques. NCHS and
contract consultants use a structured competency assessment evaluation during
visits to evaluate both the quality of the laboratory work and the
quality-control procedures. Each laboratory staff member is observed for
equipment operation, specimen collection and preparation; testing procedures and
constructive feedback are given to each staff member. Formal retraining sessions
are conducted annually to ensure that required skill levels were maintained.
Analytical Laboratories
NHANES uses several methods to monitor the quality of the analyses performed
by the contract laboratories. In the MEC, these methods include performing blind
split samples collected on “dry run” sessions. In addition, contract
laboratories randomly perform repeat testing on 2% of all specimens.
NCHS developed and distributed a quality control protocol for all CDC and
contract laboratories, which outlined the use of Westgard rules (Westgard, et
al. 1981) used when running NHANES specimens. Progress reports containing any
problems encountered during shipping or receipt of specimens, summary statistics
for each control pool, QC graphs, instrument calibration, reagents, and any
special considerations are submitted to NCHS quarterly. The reports are reviewed
for trends or shifts in the data. The laboratories are required to explain any
identified areas of concern.
All QC procedures recommended by the manufacturers were followed. Reported
results for all assays meet the Division of Laboratory Sciences’ quality control
and quality assurance performance criteria for accuracy and precision, similar
to the Westgard rules (Caudill et al., 2008).
Data Processing and Editing
The data were reviewed. Incomplete data or improbable values were sent to the
performing laboratory for confirmation.
Analytic Notes
Refer to the 2015-2016
Laboratory Data Overview for general information on NHANES laboratory
data.
Subsample Weights
Urinary metals were measured in a full
sample of participants ages 3-5 and a one-third subsample of participants 6
years and older. Special sample weights are required to analyze these data
properly. Specific sample weights for this subsample are included in this data
file and should be used when analyzing these data.
Demographic and Other Related
Variables
The analysis of NHANES laboratory data must be
conducted using the appropriate survey design and demographic variables. The
NHANES 2015-2016
Demographic Data File contains demographic and sample design variables. The
recommended procedure for variance estimation requires use of stratum and PSU
variables (SDMVSTRA and SDMVPSU, respectively) in the demographic data file.
Starting in the 2015-2016 NHANES cycle, the variable URXUCR (urine
creatinine) will not be reported in this file. URXUCR can be found in the data
file titled Albumin & Creatinine - Urine.
This laboratory data file can be linked to the other NHANES data files using
the unique survey participant identifier SEQN.
Detection Limits
The detection limits were constant for
all of the analytes in the data set. Two variables are provided for each of
these analytes. The variable name ending in “LC” (ex., URDUBALC) indicates
whether the result was below the limit of detection: the value “0” means that
the result was at or above the limit of detection, “1” indicates that the result
was below the limit of detection. For analytes with analytic results below the
lower limit of detection (ex., URDUBALC=1), an imputed fill value was placed in
the analyte results field. This value is the lower limit of detection divided by
the square root of 2 (LLOD/sqrt[2]). The other variable prefixed URX (ex.,
URXUBA) provides the analytic result for that analyte.
The lower limit of detection (LLOD, in µg/L) for the urinary metals in
the data set is:
| Variable Name |
SAS Label |
LLOD |
| URXUBA |
Urinary Barium |
0.060 |
| URXUCD |
Urinary Cadmium |
0.036 |
| URXUCS |
Urinary Cesium |
0.086 |
| URXUCO |
Urinary Cobalt |
0.023 |
| URXUMN |
Urinary Manganese |
0.130 |
| URXUMO |
Urinary Molybdenum |
0.800 |
| URXUPB |
Urinary Lead |
0.030 |
| URXUSB |
Urinary Antimony |
0.022 |
| URXUSR |
Urinary Strontium |
2.340 |
| URXUTL |
Urinary Thallium |
0.018 |
| URXUSN |
Urinary Tin |
0.090 |
| URXUTU |
Urinary Tungsten |
0.018 |
| URXUUR |
Urinary Uranium |
0.002 |
Please refer to the NHANES Analytic Guidelines and the on-line NHANES Tutorial for
further details on the use of sample weights and other analytic
issues.


Moist Muffins
Category: Desert
Today we're cooking moist muffins, a very delicious desert.
Ingredients:
- 2 eggs
- 110g. melted butter
- 110g. sugar
- 140g. flour
- 1 pouch of Vanilla Sugar
- 2 tsp baking powder
- a few drops of rum essence
- chopped chocolate
Category: Desert
Today we're cooking moist muffins, a very delicious desert.
Ingredients:
Category: Lunch
Today we're cooking a very delicios appetizer suited for any occasion.
Ingredients:
Category: Dinner
Today we're cooking pastas!Get ready to be amazed!
Ingredients:
Category: Breakfast
Today we're cooking a very delicious, very easy-to-make healthy breakfast!
Ingredients:
Category: Dinner
Today we're cooking curry!Get ready to be amazed!
Ingredients:


EPOLL_CTL
Section: Linux Programmer's Manual (2)Updated: 2009-01-17
Index Return to Main Contents
NAME
epoll_ctl - control interface for an epoll descriptorSYNOPSIS
#include <sys/epoll.h>int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
DESCRIPTION
This system call performs control operations on the epoll instance referred to by the file descriptor epfd. It requests that the operation op be performed for the target file descriptor, fd.Valid values for the op argument are :
- EPOLL_CTL_ADD
- Register the target file descriptor fd on the epoll instance referred to by the file descriptor epfd and associate the event event with the internal file linked to fd.
- EPOLL_CTL_MOD
- Change the event event associated with the target file descriptor fd.
- EPOLL_CTL_DEL
- Remove (deregister) the target file descriptor fd from the epoll instance referred to by epfd. The event is ignored and can be NULL (but see BUGS below).
The event argument describes the object linked to the file descriptor fd. The struct epoll_event is defined as :
typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64; } epoll_data_t; struct epoll_event { __uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ };
The events member is a bit set composed using the following available event types:
- EPOLLIN
- The associated file is available for read(2) operations.
- EPOLLOUT
- The associated file is available for write(2) operations.
- EPOLLRDHUP (since Linux 2.6.17)
- Stream socket peer closed connection, or shut down writing half of connection. (This flag is especially useful for writing simple code to detect peer shutdown when using Edge Triggered monitoring.)
- EPOLLPRI
- There is urgent data available for read(2) operations.
- EPOLLERR
- Error condition happened on the associated file descriptor. epoll_wait(2) will always wait for this event; it is not necessary to set it in events.
- EPOLLHUP
- Hang up happened on the associated file descriptor. epoll_wait(2) will always wait for this event; it is not necessary to set it in events.
- EPOLLET
- Sets the Edge Triggered behavior for the associated file descriptor. The default behavior for epoll is Level Triggered. See epoll(7) for more detailed information about Edge and Level Triggered event distribution architectures.
- EPOLLONESHOT (since Linux 2.6.2)
- Sets the one-shot behavior for the associated file descriptor. This means that after an event is pulled out with epoll_wait(2) the associated file descriptor is internally disabled and no other events will be reported by the epoll interface. The user must call epoll_ctl() with EPOLL_CTL_MOD to re-arm the file descriptor with a new event mask.
RETURN VALUE
When successful, epoll_ctl() returns zero. When an error occurs, epoll_ctl() returns -1 and errno is set appropriately.ERRORS
- EBADF
- epfd or fd is not a valid file descriptor.
- EEXIST
- op was EPOLL_CTL_ADD, and the supplied file descriptor fd is already registered with this epoll instance.
- EINVAL
- epfd is not an epoll file descriptor, or fd is the same as epfd, or the requested operation op is not supported by this interface.
- ENOENT
- op was EPOLL_CTL_MOD or EPOLL_CTL_DEL, and fd is not registered on with this epoll instance.
- ENOMEM
- There was insufficient memory to handle the requested op control operation.
- The limit imposed by
- /proc/sys/fs/epoll/max_user_watches was encountered while trying to register (EPOLL_CTL_ADD) a new file descriptor on an epoll instance. See epoll(7) for further details.
- EPERM
- The target file fd does not support epoll.
CONFORMING TO
epoll_ctl() is Linux-specific, and was introduced in kernel 2.5.44.NOTES
The epoll interface supports all file descriptors that support poll(2).BUGS
In kernel versions before 2.6.9, the EPOLL_CTL_DEL operation required a non-NULL pointer in event, even though this argument is ignored. Since Linux 2.6.9, event can be specified as NULL when using EPOLL_CTL_DEL. Applications that need to be portable to kernels before 2.6.9 should specify a non-NULL pointer in event.SEE ALSO
epoll_create(2), epoll_wait(2), poll(2), epoll(7)COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
Index
This document was created by man2html, using the manual pages.
Time: 05:33:03 GMT, December 24, 2015


{% extends "page.html" %} {% load url from future %} {% block app-css %} {% endblock %} {% block title %}RandoPony::{{ event }}{% endblock %} {% block page-subtitle %}{{ event }}{% endblock %} {% block content %}
The {{ event }} event is over, and the RandoPony has moved on!
You should be able to find a link to the results of that event at:
{{ results_url|urlize }}
{% endblock %} {% block sidebar-links %}


{{ define "content" }}
GDG Gigcity is a chapter of the larger Google Developer community, as such we follow and enforce the Google Developer Community Guidelines. We, the group organizers and/or event organizers, reserve the right to take any action that we see fit against any person or persons that are found to be in breach of these guidelines including; issueing a warning (verbal or written), asking the offending person or persons to leave the event, or expulsion from the group.
GDG Gigcity is an inclusive community where developers, designers, and entrepreneurs or all skill levels, genders, religions, and backgrounds are welcome to learn, practice, and share Google technologies, services, and platforms. Our motto is "Be excellent to each other;" if you see or experience anything different please contact one of the community organizers (see below).
If there are any questions or concerns about these guidelines, or to report a violation please feel free to reach out to any of the community organizers. We will get back with you as soon as we can and answer your question or see to your concern/handle the issue. When reporting a violation of our guidelines, please include the name person(s) involved, date & time of occurance, and if possible a copy of text/log if the incident happened via written means.
Send general inquiries to contact (at) gdggigcity.com
{{ end }}


Thank you for your donation!
We’ve sent the invoice to your inbox. Let’s get started on awesome things.


Market Analysis
Why Did Bitcoin Price Drop Below $9,000? A Pivotal Weekend Ahead
by filbfilbBitcoin price (BTC) fell 5% today to a new weekly low at $8,660, a point which is also below the 200-day moving average which has been acting as support since reclaiming it in the final week of October.
Almost all other crypto-assets have also suffered a valuation loss against the U.S. dollar, but there has been some resilience shown in both Ether (ETH) and EOS, which have continued to outperform Bitcoin over the last week.
Cryptocurrency market daily view. Source: Coin360
Why Bitcoin broke down from $9,000
BTC USD Daily chart. Source: TradingView
Bitcoin has been trading hard up against historical weekly support and resistance at $9,550. This also coincided with the 100-day moving average (DMA), unable to establish any kind of sustained attempt to break above.
The pinch between the 100-DMA acting as resistance and the 200 as support, led to a failure and an immediate drop through the volume gap where price doesn’t have much local history. The 50-DMA and the previous range high have subsequently come to support price above the 61.8% retracement from the move up to $10K from the mid $7K lows.
This is a technical trading area, which will be of interest to some profit takers and buyers. If Bitcoin is to maintain a move higher in the near term, we should expect to see BTC attempt to retake the previous support at $9,000.
The bearish case for Bitcoin
The bearish case for bitcoin is that this is simply the first leg lower after a failed move higher off the back of a news event. Failed moves often lead to fast moves and, as we have seen, Bitcoin has fallen out of support.
Bitcoin has a well-defined topping pattern that has clearly broken down, called Adam and Eve. The measured move target for such a pattern is 100% of the V-shaped “Adam”, which would take Bitcoin down to a price in the low $8,000s and back to the point of volume control in recent times.
A move back here would also go back between the 61.8% and 78.6% retracement, which is an area of potential buying interest for bulls looking to reaccumulate, having either taken profits on the move higher or simply looking to take their technical profits off the breakdown.
This pattern would be invalidated if Bitcoin can break and reestablish price action above the previous support level of $9,000.
BTC USD 4-hour chart. Source: TradingView
Bullish Case
The bullish case for Bitcoin is that a reasonably sharp reaction has been seen by the bulls who have stopped price dead so far following the breakdown.
If the bulls can establish support here, it is possible that the move lower was simply an inevitable stop run that occurred due to leveraged long positions being taken on by overly enthusiastic traders who were in fear of missing out on a higher Bitcoin move.
BTC USD 4 hour chart. Source: TradingView
An early sign if this was simply a stop run and for Bitcoin to attempt a significant move higher will be if the bulls can take advantage of the typically low volume weekend retaking $9,000 as support. This would give a high probability of a retest of at least weekly resistance at $9,550, if not $10,000.
This will be an important weekend for Bitcoin, which could easily lead to further volatility. Reclaiming the $9K range is a clear objective for the bulls over the weekend. Otherwise, a more extended period consolidating likely lies ahead in the $8,000s.
The views and opinions expressed here are solely those of the author and do not necessarily reflect the views of Cointelegraph. Every investment and trading move involves risk. You should conduct your own research when making a decision.


Bread 🍞 January 21, 2020 CSS bread. I've been into baking bread for a while now so I made this codepen to try my hand at CSS animations and well... because I love bread.
Cross Browser Web Extensions December 13, 2019 Thanks to Mozilla's webextension-polyfill, developing cross browser web extensions has never been easier. I developed a browser extension for Chrome a few years ago which integrates with Reddit to allow you to you to convert saved posts to browser bookmarks. It's gone through a few iterations over the years as I've learned more with my most recent update adding cross browser support for Chrome and Firefox. The extension itself is pretty simple. It uses cookie based authentication to login to your Reddit account and pulls your saved data, where you can then filter by subreddit, remove duplicates, and save them to a bookmark folder of your choice. With the webextension polyfill, I was able to deploy to the same extension code to both browsers. The current iteration was built with Svelte. You can check out the chrome version here and the firefox version here. The code is hosted on Github.
Interfaces - Java C#, TypeScript & beyond July 15, 2018 Those of us familiar with object oriented programming probably have some idea of what an interface does, but there's some key differences between some languages' implementations that I wanted to dive into and find out the differences. Generally an interface represents a contract between two entities - the first is the abstract data type that will implement the interface and the second being the interface whose properties and methods the object must implement. Interfaces mostly work the same in Java and C#, where they are used as a way to achieve polymorphism. A class or another interface may implement an interface and the implementer must then implement the the interface’s properties and methods as stated above. Java and C# do things a bit differently when it comes to interface properties however. In Java you may initialize a property inside of an interface, which will be treated as final static, and access that property without implementing it in the class that implements it. In a C# interface, variables cannot be initialized, the interface only lets a class know which properties it must implement. TypeScript interfaces are a different story, while they act and may be used similarly to C# interfaces, in practice they can be used very differently. As stated above, normally an interface is used as a contract with a class which implements its methods. In C#, Java, and TypeScript you may use an interface as a type for a class that implements that interface, as well as return and parameter type checking and generic constraints. You may not however initialize an instance of a interface unless you’re programming in TypeScript. In TypeScript interfaces may be treated like a struct, something the language does not have. This treatment of interfaces allows a lot of possibilities in using them. While TypeScript has a type alias as well which can be used similarly, there are often advantages to using interfaces instead. Some of these are the ability to be used in an extends or implements clause and the ability to have multiple merged declarations, things a type alias cannot do.
Conway's Game of Life Mandala Generator June 15, 2018 Continuing off of my colorful game of life implementation below I to adapted it into a mandala generator. Taking a little inspiration from this reddit post, I thought I'd try to adapt my game of life implementation into a mandala generator. Tap to start & stop, double tap to reset
A colorful Game of Life June 10, 2018 For those unfamiliar with Conway's Game of Life, it is a zero-player "game" devised in 1970 by British mathematician John Conway. The game is carried out on a two-dimensional orthogonal grid of square "cells", each of which in one of two possible states, dead or alive. Each cell has eight neighbors which are the cells that are horizontally, vertically, and diagonally adjacent. At each step in time, the following rules decide the next generation: 1. Any live cell with fewer than two live neighbours dies, as if caused by underpopulation. 2. Any live cell with two or three live neighbours lives on to the next generation. 3. Any live cell with more than three live neighbours dies, as if by overpopulation. 4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction. I added a twist to the game in is in the form of colors which are randomly assigned to each cell on the game's intialization. At each step any live cell is randomly assigned one of the colors from its live neighbors. Sort of like passing down traits from one generation to the next, with each new generation having equal chance to inherit the color from any one of its live neighbors' or 'parents''. Written in TypeScript. Tap to start & stop, double tap to reset


{%extends 'mgmt/index.html'%} {% load static%} {% block content %} {% load widget_tweaks %}
Search, Edit, Delete and Calibrate tools. Tools are assigned to a specific order and have the ability to be resigned. Want to view the Tools on spread sheet or pdf? No problem, view the export options!
| Description | P# | S# | CN # | Range | Expired On: | ||
|---|---|---|---|---|---|---|---|
| {{tool.description}} | {{tool.part_number}} | {{tool.serial_number}} | {{tool.cert_no}} | {{tool.range_no}} | {{tool.expiry_date|date:"M d, Y"}} | Remove from service | Finish Calibration |
| Descrption | P# | S# | Date Calibrated | Expiry Date | CN # | Documentation | Range | DTE | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{tool.description}} | {{tool.part_number}} | {{tool.serial_number}} | {{tool.calibrated_date|date:"M d, Y"}} | {{tool.expiry_date|date:"M d, Y"}} | {{tool.cert_no}} | {% if tool.calibration_certificate %}{%else%} | {% endif %} | {{tool.range_no}} | {% if tool.timecalculated < 30 %}{{tool.timecalculated}} days | Edit | Delete | Calibrate | {% if tool.timecalculated <= 1 %}{%else%} | Issue | {% endif %} {% elif tool.timecalculated < 60 %}{{tool.timecalculated}} days | Edit | Delete | Calibrate | Issue | {% else %}{{tool.timecalculated}} days | Edit | Delete | Calibrate | Issue | {% endif %}


This website uses cookies to ensure you get the best experience on our website.
More info
Accept
Expand Panels
Close All
Share Current View
URL is copied to clipboard!
-
OpenPanels
highlight_off
first_page
last_page
code
highlight_off
VICAV Web-App: How to Use?
What can I do with the VICAV platform?
Dive into the world of Arabic dialects either through the map or through the menu
Study with bibliographies, linguistic profiles, sample texts, dictionaries, ...
Compare ling. phenomena in collapsible panels
Learn about digital humanities, text technology and digital standards
Take part in a cooperative project by contributing resources. We always need help!
Support Open Source & Open Access


- sbRefreshBar - Variable in class com.example.sulemaia.Fragment.AStar
-
- sbRefreshBar - Variable in class com.example.sulemaia.Fragment.FirstBest
-
- sbRefreshBar - Variable in class com.example.sulemaia.Fragment.UniformCost
-
- SearchAlgorithms - Class in com.example.sulemaia.Activity
-
Class for the appropriate selection and process of each heuristic algorithm.
- SearchAlgorithms() - Constructor for class com.example.sulemaia.Activity.SearchAlgorithms
-
- SearchAlgorithms.NavigationListener - Class in com.example.sulemaia.Activity
-
Implementation of the fragments for each heuristic algorithm.
- setAccessible(boolean) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Method to set a node as accessible or not to the character.
- setAccessible(boolean) - Method in class com.example.sulemaia.Model.PathManualTree.Node
-
Set to a node the validation that it is accessible by the character.
- setAccumulative(float) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Method to get the accumulative value of the node.
- setAdyacentFieldsAndColor(int, int) - Method in class com.example.sulemaia.Activity.GameScreen
-
We receive a coordinate and paint the adjacent fields with their corresponding color.
- setAnchor(HeuristicPathTree.Node) - Method in class com.example.sulemaia.Model.HeuristicPathTree
-
Method to set the anchor node to the heuristic tree.
- setBtnItemMap(Button) - Method in class com.example.sulemaia.Model.LandItem
-
Set a button to the land.
- setCanPass(ArrayList<Boolean>) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set to a character the ability to go through a certain terrain.
- setCharacter(int) - Method in class com.example.sulemaia.Activity.CharacterSelector
-
We can logically add a new character to the list.
- setCharacter(int) - Method in interface com.example.sulemaia.Interface.iCharacterSelected
-
Set character to player, checking its valid and exists.
- setCode(int) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set the code of the land.
- setColor(int) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set the color to a land.
- setColor(int) - Method in class com.example.sulemaia.Model.LandItem
-
Set the color to a specific land.
- setColorsToTable() - Method in class com.example.sulemaia.Activity.MainActivity
-
We randomly set a color for each terrain (biome), and later on the user can change
it manually however he/she wants.
- setColorToField(int, int) - Method in class com.example.sulemaia.Fragment.AStar
-
Set color field to a tile once we get its code, so the color will be correct.
- setColorToField(int, int) - Method in class com.example.sulemaia.Fragment.FirstBest
-
Set color field to a tile once we get its code, so the color will be correct.
- setColorToField(int, int) - Method in class com.example.sulemaia.Fragment.UniformCost
-
Help method to color tiles, according to a specific color code.
- setColorToField(int, int) - Method in interface com.example.sulemaia.Interface.iAStar
-
Method to set color to a specific tile.
- setColorToField(int, int) - Method in interface com.example.sulemaia.Interface.iFirstTheBest
-
Method to set color to a specific tile.
- setColorToField(int, int) - Method in interface com.example.sulemaia.Interface.iUniformCost
-
Metho to set color to a specific tile.
- setCost(float) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set the current cost to the node.
- setCost(float) - Method in class com.example.sulemaia.Model.PathManualTree.Node
-
Set a cost to a node.
- setEtItemMap(EditText) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set the edit text of the land Deprecated.
- setFather(HeuristicPathTree.Node) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set a father to a certain node.
- setFather(PathManualTree.Node) - Method in class com.example.sulemaia.Model.PathManualTree.Node
-
Set a node as a father of another certain node.
- setFieldColor(int, int, int) - Method in class com.example.sulemaia.Activity.GameScreen
-
We set the corresponding color of a specific tile (actually the one in which the
character is right now).
- setFieldColor(int, int, int) - Method in class com.example.sulemaia.Fragment.AStar
-
Whe receive coordinates and a color, to color a specific tile.
- setFieldColor(int, int, int) - Method in class com.example.sulemaia.Fragment.FirstBest
-
Whe receive coordinates and a color, to color a specific tile.
- setFieldColor(int, int, int) - Method in class com.example.sulemaia.Fragment.UniformCost
-
Set the color to a specific tile.
- setFinal(String) - Method in class com.example.sulemaia.Helper.GraphViz
-
Changes the color of the final node to red
- setFinal(boolean) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set a land as final.
- setFinal(HeuristicPathTree.Node) - Method in class com.example.sulemaia.Model.HeuristicPathTree
-
Method to set the final configuration of the tree.
- setFinal(boolean) - Method in class com.example.sulemaia.Model.LandItem
-
Set a tile as final, by the user.
- setFinal(PathManualTree.Node) - Method in class com.example.sulemaia.Model.PathManualTree
-
Set a certain node as the final node for the graphical implementation.
- setFitness(HeuristicPathTree.Node, HeuristicPathTree.Node) - Method in class com.example.sulemaia.Thread.ResolverAStarThread
-
With the fitness, we either use the Euclidean or Manhattan measurement, and set the remaining
measures to the node.
- setFitness(HeuristicPathTree.Node) - Method in class com.example.sulemaia.Thread.ResolverFirstBestThread
-
With the fitness, we either use the Euclidean or Manhattan measurement, and set the remaining
measures to the node.
- setFitness(HeuristicPathTree.Node, HeuristicPathTree.Node) - Method in class com.example.sulemaia.Thread.ResolverUniformCostThread
-
Fitness method so we know which node to select each time.
- setIcon(int) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set the icon to a character.
- setInitial(String) - Method in class com.example.sulemaia.Helper.GraphViz
-
Changes the color of the initial node to green
- setInitial(boolean) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set a land as initial.
- setInitial(HeuristicPathTree.Node) - Method in class com.example.sulemaia.Model.HeuristicPathTree
-
Method to set the initial configuration of the tree.
- setInitial(boolean) - Method in class com.example.sulemaia.Model.LandItem
-
Set as initial a specific tile, putting the I char over it in the UI.
- setInitial(PathManualTree.Node) - Method in class com.example.sulemaia.Model.PathManualTree
-
Set a certain node as the initial node for the graphical implementation.
- setLands(ArrayList<String>) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set the lands for the execution.
- setLandsColors(ArrayList<Integer>) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set the land colors to the execution.
- setLandsCosts(ArrayList<Float>) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set the lands costs to the actual execution.
- setLastNode(HeuristicPathTree.Node) - Method in class com.example.sulemaia.Model.HeuristicPathTree
-
Method to set the last node for the tree.
- setMainLand(String) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set the main land to a character.
- setName(String) - Method in class com.example.sulemaia.Model.CharacterItem
-
Set the name of a land.
- setName(String) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set the name to a land.
- setName(String) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set the name to a node.
- setName(String) - Method in class com.example.sulemaia.Model.LandItem
-
Set the name to a specific land.
- setName(String) - Method in class com.example.sulemaia.Model.PathManualTree.Node
-
Set the name to a node.
- setPosition(Point) - Method in class com.example.sulemaia.Model.GameLandItem
-
Set the position to a land.
- setPosition(Point) - Method in class com.example.sulemaia.Model.LandItem
-
Set the position to a certain land value.
- setPosX(int) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set the X coordinate to a node.
- setPosY(int) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set y coordinate to a node.
- setReciclerViewForCodes() - Method in class com.example.sulemaia.Activity.MainActivity
-
To configure the layout corresponding to the recicler view in this context.
- setRemaining(float) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set the remaining value from a certain node to the final node.
- setStep(StringBuilder) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set the current step to the node.
- setStep(int) - Method in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
Set the current step to the node.
- setStep(int) - Method in class com.example.sulemaia.Model.PathManualTree.Node
-
Set the atual step to a certain node.
- showDialog(Activity) - Method in class com.example.sulemaia.Dialog.CustomCharacterEditorDialog
-
We instantiate and show a dialog each time the method is called.
- showDialog(Activity, CharacterItem) - Method in class com.example.sulemaia.Dialog.CustomCharacterInfoDialog
-
Initialization of each important or necessary attribute for the dialog to work,
like buttons, text views, image views, and layouts.
- showFailureMessage() - Method in class com.example.sulemaia.Fragment.AStar
-
Method to show a failure message in case the algorithm is not able to reach the final tile.
- showFailureMessage() - Method in class com.example.sulemaia.Fragment.FirstBest
-
Show failure message in case the final tile is unreachable for any reason.
- showFailureMessage() - Method in class com.example.sulemaia.Fragment.UniformCost
-
Method to show a failure message in case the algorithm is not able to reach the final tile.
- showFailureMessage() - Method in interface com.example.sulemaia.Interface.iAStar
-
Method to show a failure message if the algorithm is not able to find the last tile.
- showFailureMessage() - Method in interface com.example.sulemaia.Interface.iFirstTheBest
-
Method to show a failure message if the algorithm is not able to find the last tile.
- showFailureMessage() - Method in interface com.example.sulemaia.Interface.iUniformCost
-
Method to show a failure message if the algorithm is not able to find the last tile.
- showMapAndElements(int[][]) - Method in class com.example.sulemaia.Activity.MainActivity
-
We show the basic buttons, create the table, set the colors, and set
the recicler view.
- SimpleInputDialog - Class in com.example.sulemaia.Dialog
-
Creation of a dialog for user input.
- SimpleInputDialog(Context, String, String) - Constructor for class com.example.sulemaia.Dialog.SimpleInputDialog
-
Instantiation of the input dialog, with each variable related to a paremeter.
- SimpleOkDialog - Class in com.example.sulemaia.Dialog
-
Creation of a class to form popup dialogs in any context of activity.
- SimpleOkDialog(Context, String, String) - Constructor for class com.example.sulemaia.Dialog.SimpleOkDialog
-
We initialize each parameter needed for the dialog.
- SLOT_QUANTITY - Static variable in class com.example.sulemaia.Activity.ExpansionDetails
-
- slots - Variable in class com.example.sulemaia.Activity.ExpansionDetails
-
- spMeasureType - Variable in class com.example.sulemaia.Fragment.AStar
-
- spMeasureType - Variable in class com.example.sulemaia.Fragment.FirstBest
-
- start_graph() - Method in class com.example.sulemaia.Helper.GraphViz
-
Initialize the tree syntax
- startIntentToReadFile() - Method in class com.example.sulemaia.Activity.MainActivity
-
Intent in which we open an archive browser and ask the user what file
does he/she wants to load into the app.
- state - Variable in class com.example.sulemaia.Activity.ExpansionDetails
-
- step - Variable in class com.example.sulemaia.Model.HeuristicPathTree.Node
-
- step - Variable in class com.example.sulemaia.Model.PathManualTree.Node
-
- stopThread() - Method in class com.example.sulemaia.Fragment.AStar
-
Method called by onStop to stop thread.
- stopThread() - Method in class com.example.sulemaia.Fragment.FirstBest
-
Method called by onStop to stop thread.
- stopThread() - Method in class com.example.sulemaia.Fragment.UniformCost
-
Method called by onStop to stop the thread.
- switchViews(View, View) - Method in class com.example.sulemaia.Activity.ExpansionDetails.ButtonActions
-
Change views however the user needs, in this context.


We'll write rarely, but only the best content.
Baku
Azerbaijan
+ 01 234 567 89
Mon - Fri, 8:00-22:00
<EMAIL_ADDRESS>sale@gmail.com


Component library Funding header
A custom styled typography which is used to give headline funding totals within a top level heading on the page.
View more general guidelines on this style in the GOV.UK design system.
The funding header section is used as a way of introducing totals for funding types in view latest funding and on MYESF allocation statements.
When to use this component
This component can be used to show totals to users within top level headings on a page.
When not to use this component
Do not use this component on the same page as a lot of other headings of similar size. This can confuse the user and reduce its visibility on the page.
This component should only be used once on a page. The only time to use it more than once is on separate GOV.UK Design System tabs.
How it works
Full width
Use this version of the component as a heading when displaying the total funding for a local authority, school or college. For example, on MYESF allocation statements we use this version to display the total funding amount in the <h1>.
Float left
Sometimes we need to use tabs to show how total funding is broken down into funding type. For example, we use tabs to break down the DSG into different funding types in view latest funding. To meet user needs, we display the DSG total funding heading amount as well as the totals for each funding type.
When using this version of the component, make sure that the user can print each tab by including a print this page action link on the right hand side of the funding header.
With variance
Use this version of the component when you need to show a change in something. For example, on MYESF allocation statements we use this version to display the total funding amount with an increase icon to show the funding total has gone up.
Research on this component
As long as there is no ambiguity for the user around what this headline figure represents, research supports the need of users for presenting summary figures boldly, so as to give immediate context to any further information.


Welcome to a recreation of Team17's turn-based artillery strategy worms armageddon.
All copyright and credit for the art/sound assets belongs to Team17
and for making such an awesome game in the first place. This clone is currently under development by Ciarán McCann as part of his final year on the IT Carlow Games Development course.
Read more..


I will be floating around the room,
providing help with hunting down bugs.
Be prepared to present your work to the rest of the class for feedback. After next class, you will have 2 weeks to put the final touches on your project and submit for final grade.


The following example does not have a class specifying the brush to use. This is extracted from the mode-line. This line also specifies other options, in this case the tab-width.
# -*- mode: asm; tab-width: 4; -*- .text .global _start _start: # ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count) movl $len, %edx # size_t count movl $msg, %ecx # const char __user * buf movl $1, %ebx # unsigned int fd movl $4, %eax # system call number (sys_write) int $0x80 # call kernel # void _exit(int status); movl $0, %ebx # int status movl $1, %eax # system call number (sys_exit) int $0x80 # call kernel .data # section declaration msg: .ascii "Hello, world!\n" len = . - msg


{% block title %}
SpoTV - Account Management
{% endblock %} {% load static %}
Change Profile Picture
Change Password
Change Email Address
Verify Email Address
Save and Return
Change Profile Picture
Current Picture:
Change Photo
Change Password
{% csrf_token %} {{ form }}
Save changes
Change Email Address
Old Email:
New Email:
Confirm New Email:
Verify Email Address
Your email {{email}} is not verified.
Resend Verification Email


|
Elektra
0.8.25
|
The “maybe this is not INI” plugin (mini
) is a very simple storage plugin loosely based on the INI file format. Since this plugin does not support sections it might be more appropriate to say that it is based on the .properties format, used in many Java applications.
The following example shows basic usage of the mini
plugin.
`` <h1>Mount mini plugin to cascading namespace
/tests/mini` sudo kdb mount mini.ini /tests/mini mini
kdb set /tests/mini/key value #> Using name user/tests/mini/key #> Create a new key user/tests/mini/key with string "value" kdb set /tests/mini/mi/mi/mr beaker #> Using name user/tests/mini/mi/mi/mr #> Create a new key user/tests/mini/mi/mi/mr with string "beaker"
kdb export /tests/mini mini #> key=value #> mi/mi/mr=beaker
echo "🔑 = 🦄" >> kdb file /tests/mini
echo "level1/level2 = 👾" >> kdb file /tests/mini
/tests/mini
contains four key value pairskdb ls /tests/mini #> user/tests/mini/key #> user/tests/mini/level1/level2 #> user/tests/mini/mi/mi/mr #> user/tests/mini/🔑
/tests/mini/🔑
contains the correct valuekdb get "/tests/mini/🔑" #> 🦄
kdb rm -r /tests/mini sudo kdb umount /tests/mini
sudo kdb mount mini.ini /tests/mini mini
kdb set /tests/mini/key ';#=\' #> Using name user/tests/mini/key #> Create a new key user/tests/mini/key with string ";#=\"
kdb file /tests/mini | xargs cat #> key=\;#\=\
kdb get /tests/mini/key #> ;#=\
;
and #
characters, then theyecho 'background = #0F0F0F ; Background color' >> kdb file /tests/mini
echo 'foreground = #FFFFFF # Foreground color' >> kdb file /tests/mini
kdb get /tests/mini/background #> #0F0F0F kdb get /tests/mini/foreground #> #FFFFFF
kdb rm -r /tests/mini sudo kdb umount /tests/mini
sudo kdb mount mini.ini /tests/mini mini
echo '[section]' >> kdb file /tests/mini
printf 'key="multi\nline"' >> kdb file /tests/mini
key
, sincekdb ls /tests/mini 2> stderr.txt #> user/tests/mini/key
cat stderr.txt | grep 'Reason:' | sed 's/^[[:space:]]*//' #> Reason: Line 1: “[section]” is not a valid key value pair #> Reason: Line 3: “line"” is not a valid key value pair
ini
and ni
plugin, mINI does not support metadata.kdb lsmeta /tests/mini
key
also contains the double quote symbol, since mINI doeskdb get /tests/mini/key #> "multi
rm stderr.txt kdb rm -r /tests/mini sudo kdb umount /tests/mini ```


1.1. Random field
Gaussian processes have a long history in the statistics community.
They have been particularly well developed in the image signal processing community under the name random field,
and in the geostatistics community under the name of kriging
, which is a generic name used by geostatisticians for a family of generalized least-squares regression algorithms
in recognition of the pioneering work of a mining engineer Danie Krige [Kri51]
All kriging estimators are but variants of the basic linear regression estimator [Goo97].
For instance, a simple kriging estimator can be defined as
(1.1.1)\[Z^*({u_\alpha}) = \phi_0 + \boldsymbol{\phi}^T\boldsymbol{Z}(\boldsymbol{u})\]
in which \(\phi_0\) and \(\boldsymbol{\phi}\) are combining coefficients;
\(\boldsymbol{Z}(\boldsymbol{u})\) is the measured expected values at location \(\boldsymbol{u}\).
If \(\boldsymbol{Z}(\boldsymbol{u})\) is second order stationary
(i.e., invariant and known expected value exists, noted as \(\boldsymbol{\mu}\)),
the observed values at location \(\boldsymbol{u}\) could be expressed as
(1.1.2)\[\boldsymbol{Z}(\boldsymbol{u}) = \boldsymbol{\mu}+\boldsymbol{\epsilon}(\boldsymbol{u})\]
where \(\boldsymbol{\epsilon}(\boldsymbol{u})\) is the error vector with zero mean;
\(\boldsymbol{\mu}\) is the invariant and known mean value of this random field.
Hence the unobserved value at location \({u}_\alpha\) is
(1.1.3)\[{Z}({u}_\alpha) = {\mu}+{\epsilon}({u}_\alpha)\]
Simple kriging estimator should be unbiased:
(1.1.4)\[E[Z^*({u_\alpha})-{Z}({u}_\alpha)] = E[\phi_0
+ \boldsymbol{\phi}^T\boldsymbol{Z}(\boldsymbol{u})-{\mu}-{\epsilon}({u}_\alpha)]
=\phi_0+\boldsymbol{\phi}^T\boldsymbol{u}-\mu=0\]
This yields
(1.1.5)\[\phi_0=\mu - \boldsymbol{\phi}^T\boldsymbol{u}\]
Plug (1.1.5) into (1.1.1) so that the estimator becomes
(1.1.6)\[Z^*({u_\alpha}) = \mu+ \boldsymbol{\phi}^T ( \boldsymbol{Z}(\boldsymbol{u})-\boldsymbol{\mu} )
=\mu+\boldsymbol{\phi}^T\boldsymbol{\epsilon}(\boldsymbol{u})\]
Therefore the variance of the predicted values is
(1.1.7)\[\begin{split}\rm{Var}\{ Z^*({u_\alpha}) - Z({u_\alpha})\}
&=E[\mu+\boldsymbol{\phi}^T\boldsymbol{\epsilon}(\boldsymbol{u})-{\mu}-{\epsilon}({u}_\alpha)]^2 \\
&=E[\boldsymbol{\phi}^T\boldsymbol{\epsilon}(\boldsymbol{u})-{\epsilon}({u}_\alpha)]^2 \\
&=\rm{Var}\{\boldsymbol{\phi}^T\boldsymbol{\epsilon}(\boldsymbol{u}) \}
+\rm{Var}\{ {\epsilon}({u}_\alpha) \}-2\rm{COV}\{\boldsymbol{\phi}^T\boldsymbol{\epsilon}(\boldsymbol{u}),{\epsilon}({u}_\alpha) \} \\
&=\boldsymbol{\phi}^T\Sigma_{\boldsymbol{u},\boldsymbol{u}}\boldsymbol{\phi} + \rm{Var}\{\boldsymbol{Z}(\boldsymbol{u})\} -2\boldsymbol{\phi}^T \Sigma_{\boldsymbol{u},\alpha} \\\end{split}\]
To optimize \(\rm{Var}\{ Z^*({u_\alpha}) - Z({u_\alpha})\}\),
let its partial derivatives with respect to the vector of coefficients \(\boldsymbol{\phi}\) equate to zero
(1.1.8)\[\frac{\partial \left( \boldsymbol{\phi}^T\Sigma_{\boldsymbol{u},\boldsymbol{u}}\boldsymbol{\phi}
+ \rm{Var}\{\boldsymbol{Z}(\boldsymbol{u})\} -2\boldsymbol{\phi}^T \Sigma_{\boldsymbol{u},\alpha} \right)}{\partial \boldsymbol{\phi}}
=2\Sigma_{\boldsymbol{u},\boldsymbol{u}}\boldsymbol{\phi}-2\Sigma_{\boldsymbol{u},\alpha}=0\]
Hence
(1.1.9)\[\boldsymbol{\phi}=\Sigma_{\boldsymbol{u},\boldsymbol{u}}^{-1}\Sigma_{\boldsymbol{u},\alpha}\]
Plug ref{eq:phi} into ref{eq:estimatorSk_new} to obtained the simple kriging predictor
(1.1.10)\[Z^*({u_\alpha}) =
\mu+{\Sigma_{\boldsymbol{u},\alpha}}^T\Sigma_{\boldsymbol{u},\boldsymbol{u}}^{-1}
[\boldsymbol{Z}(\boldsymbol{u})-\boldsymbol{\mu}]\]
and the simple kriging variance is obtained as
(1.1.11)\[\begin{split}\rm{Var}\{ Z^*({u_\alpha}) - Z({u_\alpha})\}
&=\boldsymbol{\phi}^T\Sigma_{\boldsymbol{u},\boldsymbol{u}}\boldsymbol{\phi} + \rm{Var}\{\boldsymbol{Z}(\boldsymbol{u})\} -2\boldsymbol{\phi}^T \Sigma_{\boldsymbol{u},\alpha} \\
&=\boldsymbol{\phi}^T \Sigma_{\boldsymbol{u},\alpha} + \rm{Var}\{\boldsymbol{Z}(\boldsymbol{u})\} -2\boldsymbol{\phi}^T \Sigma_{\boldsymbol{u},\alpha}\\
&=\rm{Var}\{\boldsymbol{Z}(\boldsymbol{u})\}-\Sigma_{\boldsymbol{u},\alpha}^T
\Sigma_{\boldsymbol{u},\boldsymbol{u}}^{-1}
\Sigma_{\boldsymbol{u},\alpha}\end{split}\]
1.2. Neural Network
Artificial neural networks (ANNs) are a form of artificial intelligence which attempt to mimic the behavior of the human brain and nervous system. Many researchers have described the structure and operation of ANNs
(e.g. [HechtNielsenR90]; [Zur92]; [Fau94]). A typical structure of ANNs consists of a number of nodes (processing elements), that are usually arranged in layers: an input layer,
an output layer and one or more hidden layers (Fig. 1.2.1).
The input from each node in the previous layer (\(x_i\)) is multiplied by an adjustable connection weight (\(w_{ji}\)). At each node, the weighted input signals are summed and a threshold value (\(\theta_j\)) is added. This combined input
(\(I_j\)) is then passed through a non-linear transfer function (f(.)) to produce the output of the PE (\(y_i\)).
The output of one PE provides the input to the nodes in the next layer. This process is summarized in (1.2.1) and (1.2.2) and illustrated in Fig. 1.2.1.
(1.2.1)\[I_j=\sum w_{ji} x_i + \theta_j\]
(1.2.2)\[y_j = f(I_j)\]
The ANN modelling philosophy is similar to a number of conventional statistical models in the sense that both are attempting to capture the relationship between a historical set of model inputs and corresponding outputs. ANNs learn from data examples presented to them and use these data to adjust their weights in an attempt to capture the relationship between the model input variables and the corresponding outputs. Consequently, ANNs do not need any prior knowledge about the nature of the relationship between the input/output variables,
which is one of the benefits that ANNs have compared with most empirical and statistical methods.
ANNs have been applied in a great deal of research for a variety of purposes including medicine and biology ([MBN12];
[JS11]); pattern recognition and image analysis ([Bis95]; [YPL+00]; [Ami08]);
geotechnical engineering ([SJM08]);
decision making and control ([JR98]; [LB98]; [YAkyure07]; [ZGP10]);
and stock market predictions ([Dec10]) despite the disadvantages such as the black box nature and the
empirical nature of model development ([Tu96]).
ANNs are also widely used in spatial analysis and predictions of geotechnical and other engineering problems.
[SSA08] used ANN to evaluate the spatial variability of rock depth in an extended region.
[PM13] develop a scheme to generate prediction map for geostatistical data using ANN. When integrated with GIS geographic information system (GIS), ANN is a very powerful tool to make spatial analysis.
For example, [LRMW03] integrated with ANN to predict the regional landslide susceptibility. More works relating to ANN-GIS can be found
in [GGG99] [YAkyure07] [VLTSzatmari08], etc.
Spatial predictions with geostatistic tools (such as kriging methods) usually need a prescribed spatial correlation structure,
which should be inferred from measured data.
This is impossible when the size of the database is small.
One advantage of ANNs is that such a prescribed correlation structure is not needed.
Geostatistic tools, however, are still a good and widely used method for they are able to yield relatively precise and
spatially smooth predictions. Efforts to combine ANNs with traditional geostatistic tools have been made and can be found
in literature [RD94], [DKC+98] and [LHZ09].
| [Ami08] | J Amini. Optimum learning rate in back-propagation neural network for classification of satellite images (IRS-1D). Scientia Iranica, 15(6):558–567, 2008. |
| [Bis95] | Christopher M Bishop. Neural networks for pattern recognition. Oxford University Press, 1995. |
| [Dec10] | Porntip Dechpichai. Nonlinear neural network for conditional mean and variance forecasts. PhD thesis, University of Wollongong, New Zealand, 9 2010. |
| [DKC+98] | V Demyanov, M Kanevsky, S Chernov, E Savelieva, and V Timonin. Neural network residual kriging application for climatic data. Journal of Geographic Information and Decision Analysis, 2(2):215–232, 1998. |
| [Fau94] | L. Fausett. Fundamentals of neural networks: architectures, algorithms, and applications. Prentice-Hall International, 1994. |
| [GGG99] | Subhrendu Gangopadhyay, Tirtha Raj Gautam, and Ashim Das Gupta. Subsurface characterization using artificial neural network and gis. Journal of Computing in Civil Engineering, 13(3):153–161, 1999. |
| [Goo97] | P. Goovaerts. Geostatistics for natural resources evaluation. Oxford University Press, 1997. |
| [JS11] | T Jayalakshmi and A Santhakumaran. Statistical normalization and back propagationfor classification. International Journal of Computer Theory and Engineering, 3(1):89, 2011. |
| [JR98] | VM Johnson and LL Rogers. Using artificial neural networks and the genetic algorithm to optimize well field design: phase i final report. Lawrence Livermore National Laboratory, Livermore, 1998. |
| [Kri51] | D. G. Krige. A statistical approach to some mine valuation and allied problems on the Witwatersrand. J Chem Metall Min Soc S Afr, 1951. |
| [LRMW03] | Saro Lee, Joo-Hyung Ryu, Kyungduck Min, and Joong-Sun Won. Landslide susceptibility analysis using gis and artificial neural network. Earth Surface Processes and Landforms, 28(12):1361–1376, 2003. |
| [LHZ09] | Fucheng Liu, Xuezhao He, and Li Zhou. Application of generalized regression neural network residual kriging for terrain surface interpolation. In International Symposium on Spatial Analysis, Spatial-temporal Data Modeling, and Data Mining, 74925F–74925F. International Society for Optics and Photonics, 2009. |
| [LB98] | YF Lou and P Brunn. An offset error compensation method for improving ann accuracy when used for position control of precision machinery. Neural Computing & Applications, 7(1):90–95, 1998. |
| [MBN12] | Helge Malmgren, Magnus Borga, and Lars Niklasson. Artificial Neural Networks in Medicine and Biology: Proceedings of the ANNIMAB-1 Conference, Göteborg, Sweden, 13–16 May 2000. Springer Science & Business Media, 2012. |
| [PM13] | Sathit Prasomphan and Shigeru Mase. Generating prediction map for geostatistical data based on an adaptive neural network using only nearest neighbors. International Journal of Machine Learning and Computing, 3(1):98, 2013. |
| [RD94] | Donna M Rizzo and David E Dougherty. Characterization of aquifer properties using artificial neural networks: neural kriging. Water Resources Research, 30(2):483–497, 1994. |
| [SJM08] | Mohamed A Shahin, Mark B Jaksa, and Holger R Maier. State of the art of artificial neural networks in geotechnical engineering. Electronic Journal of Geotechnical Engineering, 8:1–26, 2008. |
| [SSA08] | TG Sitharam, Pijush Samui, and P Anbazhagan. Spatial variability of rock depth in bangalore using geostatistical, neural network and support vector machine models. Geotechnical and Geological Engineering, 26(5):503–517, 2008. |
| [Tu96] | Jack V Tu. Advantages and disadvantages of using artificial neural networks versus logistic regression for predicting medical outcomes. Journal of Clinical Epidemiology, 49(11):1225–1231, 1996. |
| [VLTSzatmari08] | B Van Leeuwen, Z Tobak, and J Szatmári. Development of an integrated ann—gis framework for inland excess water monitoring. Journal of Environmental Geography, 1:1–6, 2008. |
| [YAkyure07] | (1, 2) TA Yanar and Z Akyüre. Artificial neural networks as a tool for site selection within GIS. Geodetic and Geographic Information Technologies, Natural and Applied Sciences, 2007. |
| [YPL+00] | C. C. Yang, S. O. Prasher, J. A. Landry, H. S. Ramaswam, and A. Ditommaso. Recognition and classification of crop and weeds. Canadian Agricultural Engineering, 2000. |
| [ZGP10] | Ryad Zemouri, Rafael Gouriveau, and Paul Ciprian Patic. Improving the prediction accuracy of recurrent neural network by a pid controller. International Journal of Systems Applications, Engineering & Development., 4(2):19–34, 2010. |
| [Zur92] | J. M. Zurada. Introduction to artificial neural systems. Volume 8. West Publishing Company St. Paul, 1992. |


Novid-20
Your Name
Are you facing any breathing problem?
No
Yes
Do you have fever?
No
Yes
Do you have dry cough?
No
Yes
Do you have sore throat?
No
Yes
If your nose is running?
No
Yes
Do you have asthma?
No
Yes
Do you have any lung disease
No
Yes
Do you have a headache?
No
Yes
Do you have any heart disease?
No
Yes
Do you have diabetes?
No
Yes
Do you have high blood pressure?
No
Yes
Are you feeling tired?
No
Yes
Do you have gastrointestinal?
No
Yes
Any abroad travel history?
No
Yes
Did you get in contact with covid +ve person?
No
Yes
Did you gather at a crowded place?
No
Yes
Visited any public place?
No
Yes
Any family member working in public exposed place?
No
Yes
Are you wearing masks regularly whenever you are going out?
No
Yes
Do you sanitize yourself after coming from outside?
No
Yes
Submit


Zookeeper in Distributed System (Arjun, Yikun and Parth)
Zookeeper introduction
Zookeeper is a distributed system used for co-ordination between large number of hosts. Coordination
and management of services in a distributed system in a complicated process and Zookeeper
comes to the rescue because of it’s simple architecture and API design. A distributed system is
basically an interconnected group of systems which collaborate together to establish a task, also
known as a service, this group of system is usually referred to as a cluster and
each system in this cluster is referred to as a node. As this cluster(distributed)
is used to run a service, it contains both client and server interfaces.
Our focus for this project is primarily the server side of the Zookeeper distributed
system because servers are ’actually’ distributed systems in epistemic terms, which form the cluster
and have a common interface for clients to send in read and write requests. We will analyze all
these instances of Zookeeper distributed system from an epistemic point of view.
Analysis of a distributed system from an epistemic point of view is an interesting proposition,
primarily because of scale at which information(knowledge) update occurs for all the agents in a
distributed system. Our analysis is focused on two use cases of the zookeeper distributed system,
communication between clients and server(read-write requests) and leader election for managing
coordination between nodes in the cluster. Epistemic analysis is the right tool for analyzing how a
distributed system retains all the desired data properties, such as data integrity, essential
properties of a leader election and client-server communication
Benefits of a distributed system
There are three major advantages of a distributed system, we list down and briefly elaborate on each
of them below:
Reliability:
Failure of any node in the cluster[distributed system] doesn’t result in failure of the whole
infrastructure. Similarly, zookeeper server side distributed system architecture
deploys a fault tolerant mechanism which can easily tackle situations in which any subset of the
system might breakdown.
Scalability:
A distributed system can easily be scaled by simply adding more nodes into the architecture.
Transparency:
A distributed system presents itself as one entity, for example all the servers in figure 1 can
be accessed from a single interface, hiding away all the complications within the architecture
itself. Thus, making the whole process transparent and easy to understand.
Kripke model analysis of zookeeper
For a reliable functioning of the zookeeper ensemble, at least three servers need to be in a working
state. Based in this information we can draw the following Kripke model.
Let M be a arbitrary kripke model with < S, π, R1, R2 >.
π =< p, ¬p >
p : Zookeeper system in working condition.
¬ p : Zookeeper system in failure condition.
R1 : Denotes the transition from working state to failure state. It implies that, less than systems
in the zookeeper ensemble are in working condition.
R2 : Denotes the transition from failure to working condition.It implies that more than three systems
are in working condition.
Implementation
Zookeeper in Distributed System
Client-server communication
Client-server communication is an integral part of any distributed system and how zookeeper
distributed system accepts and distributes services between all the nodes in the cluster and
completes the requested tasks. Two major communication paradigm between a client and server is read
and write requests. In the following two subsections we elaborate on each of these communication
paradigms and updates rendered to knowledge stack of all the agents involved in the
communication:
Read request and task allocation
If a client wants to read from the database of a server in the Zookeeper distributed system. Client
first serves a connection request to the server, to which the server sends an acknowledgement
indicating that the server is not busy and is ready to handle the request from the client. Once the
connection is established, the client serves a data read request to the server with the pointer to
the data in the database, consequently, the server forwards this request to the database and the
database responds with the data stored at that particular pointer. This data is then conveyed to the
client. With this, one read cycle concludes. Read operation is one of the strong points in
Zookeeper, as read requests are served by a particular server to the client. They are much faster
and can also be tackled concurrently. We present read specific knowledge stack with knowledge
updates at each step for all the agents, as shown in figure 3.
Write request and task allocation
Write operations in Zookeeper are really interesting from an epistemic point of view. The leader in
the cluster is solely responsible for all the write operations. If a connection is not already
established between the client and server, then client first serves a connection request to the
server. Once the connection request is approved, the client then sends a write request. The server
then forwards the write request to the leader, and leader then atomic broadcasts[public
announcement] this request to rest of the servers in the cluster. Once all the servers
receive the request from the leader, they write the data into their respective databases. Then they
send back an acknowledgement indicating the write was successful. Once the leader receives this
acknowledgement from the servers in the cluster, it then sends an acknowledgement to the server,
which got the write request from the client. This server then sends the confirmation back to the
client.
This process has it’s advantages and disadvantages. One of the major advantages is the fact that data
is persistent throughout all the corresponding databases of servers in the cluster. Also, this means
that write operations cannot be concurrent and can only be linear and this is the reason why
Zookeeper under-performs when it comes to write-extensive tasks.
Leader Election
Leader election in a distributed system is the process of electing a node as a coordinator of tasks
assigned to the distributed system. At the initial state, that is, before the task is assigned, all
the nodes in the cluster are unaware as to who the leader is or either unable to coordinate within
the cluster. After a leader election, all the nodes in the cluster recognize one unique node as the
leader and coordinate with it for particular use cases of the cluster.
In order to elect a leader, all the nodes in the cluster communicate with each other and devise a
means to single out a leader node. Leader election algorithms are designed to minimize the byte
transmission during the election process. In a large cluster if byte transmission is not efficient
enough then the run-time of election process can take a lot of time, rendering the whole cluster
slow or practically ineffective.
There are there important criteria which a valid leader election algorithm should meet and they are
as follows:
A election algorithm should finish it’s operations in finite time, that is, it should be based
on
deterministic states and cannot incorporate probabilistic election processes.
Only one node should be elected as a leader after application of the leader election algorithm
and in case of a conflict, the algorithm should provide the conflict removal procedures.
Knowledge of all the nodes should be updated once the leader election is over and all the nodes
should know which node is the leader node.
Leader election algorithm
In this section, we elaborate on the election algorithm for leader election which we have used in our
project. We analyze this scenario for N nodes. The process of election process is as follows:
1) All nodes create a sequential, temporary znode with the same path. For example, /app/leader
election/guid_
Zookeeper ensemble will append the 10-digit sequence number to the path and the znode created
will be /app/leader election/guid 001, /guid 002, etc.
Out of all the nodes, the node which created the smallest number will be elected as the leader
and all the other nodes will become it’s followers.
In addition to followers, this algorithm also creates watchers, for example, znode with number 8
will watch the znode with number 7 and znode 7 will watch znode with number 6 and so on. This is
useful in case of leader node failure and this way election process can be re-initiated in case
a leader fails.
If the leader node fails, in that case the znode corresponding to the leader gets removed. Also,
the next in line follower will obtain this information from the watcher. Now this follower will
check for znodes with the smallest number, if it cannot find a znode meeting the requirements
then it will take up role of a leader.
All the other nodes will also elect the znode with the smallest number as the leader.
Application
Zookeeper in Distributed System
Kc(S1),...,Kc(S5)
Kc(S1),...,Kc(S5)
Kc(S1),...,Kc(S5)
Ks(S1),...,Ks(S5)
Ks(S1),...,Ks(S5)
Ks(S1),...,Ks(S5)
Ks(S1),...,Ks(S5)
Ks(S1),...,Ks(S5)
Kb(S1)
Kb(S2)
Kb(S3)
Kb(S4)
Kb(S5)
/le/001
/le/001
/le/001
/le/001
/le/001
Application and user guide
In this section we introduce the interface of our final application for this project. The main
screen of the application consists of a set of three clients[aligned vertically on the extreme
left], a set of five servers[aligned vertically in the center] and their respective
databases[aligned vertically on extreme right] as shown in figure 5. On the top left corner of the
application screen there are seven horizontally aligned buttons annotated as follows: Initialize,
Reset System, 5x slower, Slower, Reset speed, Faster, 5x faster. Against each client we also have
two buttons for read and write operation. With each agent in the distributed system we have a
knowledge stack which keeps a track of all the knowledge generated in a particular order and updates
for each agent in the distributed system.
Initialization
We can initialize the distributed zookeeper system by clicking on the initialize button. Clicking
on the initialize button will perform the election selection algorithm on the cluster of
servers, as can be seen in figure 6. We can also observe that server with the smallest number
will be selected as the leader for the cluster of servers, in this particular example, it is
server 5.
Reset
We can reset the whole system clicking on the Reset system button and it will
retract back to the initial state as shown in figure 5. In the initial state there is no leader
and there is no connection established between the servers too.
5x button
By clicking on 5x slower button we can slow down the speed of all communication between the
client, servers and databases. In essence, the system will still perform the same operations,
just it will be 5x slower. Similarly, we can use Slower, Reset Speed[system returns back to the
initial speed], Faster and 5x faster.
Read
By clicking on the read button for a client, we can initialize a read operation from that
particular client to a server and this process will be simulated between the client, server and
the database, in the application.
Write
By clicking on the read button for a client, we can initialize a read operation from that
particular client to a server and this process will be simulated between the client, server,
leader, and database, in the application.
Conclusion
Zookeeper in Distributed System
We analyzed basic components of a distributed system[zookeeper architecture] and it’s communication
paradigms through an epistemic point of view. We discussed the advantages and disadvantages of
a distributed system, specific to the zookeeper architecture and we reasoned why epistemic analysis
of a distributed architecture might be an interesting proposition. We tracked knowledge space
for all the agents in our distributed system through a knowledge stack and observed how knowledge
was updated for all the agents in read-write requests and in the leader election process
simulations, which we showcased in our application.
Our sole purpose for this project was to look at an entirely new problem from an epistemic point of
view. To dissect a complicated enough system and reduce it down to the very fundamental units of any
information system, that is, knowledge and propagation of knowledge[information transmission].
About
Zookeeper in Distributed System
This website offers a implementation of Zookeeper protocol with Kripke models. The model checker was
developed for the Multi Agent Systems course at the University of Groningen for the academic year of
2018/2019.
Group members
Arjun Harish
Yikun Li
Parth Tiwary
References
[1] Patrick Hunt, Mahadev Konar, and Flavio P. Junqueira. ZooKeeper: Wait-free coordination for
Internet-scale systems. Yahoo Research, 2010.
[2] M. Abd-El-Malek, G. R. Ganger, G. R. Goodson, M. K. Reiter, and J. J. Wylie. Fault-scalable
byzantine fault-tolerant services. In SOSP ’05: Proceedings of the twentieth ACM symposium on
Operating systems principles, pages 59–74, New York, NY, USA, 2005. ACM.
[3] R. Fagin, J. Halpern, Y. Moses, M. Vardi Reasoning about Knowledge MIT Press (1995)
[4] R. Fagin, J. Halpern, Y. Moses, M. Vardi What can machines know? On the properties of
knowledge in distributed systems Journal of the ACM, 39 (2) (1992), pp. 328-37


Our mission is to create positive and viral social change by building a community of connected, inspired, and engaged volunteers.
Amir co-developed the Karma Exchange web application. Prior to starting Karma Exchange he worked at Google and at Oracle.
Harish co-developed the Karma Exchange web application. He currently works at Salesforce.com.
Poonum oversees community partnerships and product needs. She currently works as a QA manager in Rubicon Programs.
Robert is leading the website re-design for Karma Exchange. Robert currently works for eMarketing360