Author: Jeremy Avigad
When translating the statements of theorems into words, this dictionary is often used:
Logic:
| symbol | shortcut | name | notes |
|---|---|---|---|
∨ |
\or |
or |
|
∧ |
\and |
and |
|
→ |
\r |
of |
the conclusion is stated first and the hypotheses are often omitted |
↔ |
\iff |
iff |
sometimes omitted along with the right hand side of the iff |
¬ |
\n |
not |
|
∃ |
\ex |
exists / bex |
bex stands for "bounded exists" |
∀ |
\fo |
all / forall / ball |
ball stands for "bounded forall" |
= |
eq |
often omitted | |
≠ |
\ne |
ne |
|
∘ |
\o |
comp |
Set:
| symbol | shortcut | name | notes |
|---|---|---|---|
∈ |
\in |
mem |
|
∪ |
\cup |
union |
|
∩ |
\cap |
inter |
|
⋃ |
\bigcup |
Union / bUnion |
|
⋂ |
\bigcap |
Inter / bInter |
|
\ |
\\ |
sdiff |
|
ᶜ |
\^c |
compl |
Algebra:
| symbol | shortcut | name | notes |
|---|---|---|---|
0 |
zero |
||
+ |
add |
||
- |
neg / sub |
neg for the unary function, sub for the binary function |
|
1 |
one |
||
* |
mul |
||
^ |
pow |
||
/ |
div |
||
• |
\bu |
smul |
|
⁻¹ |
\-1 |
inv |
|
∣ |
\| |
dvd |
|
∑ |
\sum |
sum |
|
∏ |
\prod |
prod |
Lattices:
| symbol | shortcut | name | notes |
|---|---|---|---|
< |
lt |
||
≤ |
\le |
le |
|
⊔ |
\sup |
sup |
|
⊓ |
\inf |
inf |
|
⨆ |
\Sup |
Sup |
|
⨅ |
\Inf |
Inf |
Identifiers are generally lower case with underscores. For the most part, we rely on descriptive names. Often the name of theorem simply describes the conclusion:
succ_ne_zero
mul_zero
mul_one
sub_add_eq_add_sub
le_iff_lt_or_eq
If only a prefix of the description is enough to convey the meaning, the name may be made even shorter:
neg_neg
pred_succ
Sometimes, to disambiguate the name of theorem or better convey the intended reference, it is necessary to describe some of the hypotheses. The word "of" is used to separate these hypotheses:
lt_of_succ_le
lt_of_not_ge
lt_of_le_of_ne
add_lt_add_of_lt_of_le
Sometimes abbreviations or alternative descriptions are easier to work
with. For example, we use pos
, neg
, nonpos
, nonneg
rather than
zero_lt
, lt_zero
, le_zero
, and zero_le
.
mul_pos
mul_nonpos_of_nonneg_of_nonpos
add_lt_of_lt_of_nonpos
add_lt_of_nonpos_of_lt
Sometimes the word "left" or "right" is helpful to describe variants of a theorem.
add_le_add_left
add_le_add_right
le_of_mul_le_mul_left
le_of_mul_le_mul_right
An injectivity lemma that uses "left" or "right" should refer to the
argument that "changes". For example, a lemma with the statement
a - b = a - c ↔ b = c
could be called sub_right_inj
.
We can also use the word "self" to indicate a repeated argument:
mul_inv_self
neg_add_self
Dots are used for namespaces, and also for automatically generated names like recursors, eliminators and structure projections. They can also be introduced manually, for example, where projector notation is useful. Thus they are used in all of the following situations.
Intro, elim, and destruct rules for logical connectives, whether they are automatically generated or not:
and.intro
and.elim
and.left
and.right
or.inl
or.inr
or.intro_left
or.intro_right
iff.intro
iff.elim
iff.mp
iff.mpr
not.intro
not.elim
eq.refl
eq.rec
eq.subst
heq.refl
heq.rec
heq.subst
exists.intro
exists.elim
true.intro
false.elim
Places where projection notation is useful, for example:
and.symm
or.symm
or.resolve_left
or.resolve_right
eq.symm
eq.trans
heq.symm
heq.trans
iff.symm
iff.refl
We generally restrict the use of dots to inductive types. So, for example, we use:
dvd_intro
dvd_dest
dvd_elim
le_refl
le_trans
Some theorems are described using axiomatic names, rather than describing their conclusions.
def
(for unfolding a definition)refl
irrefl
symm
trans
antisymm
asymm
congr
comm
assoc
left_comm
right_comm
mul_left_cancel
mul_right_cancel
inj
(injective)u
, v
, w
, ... for universesα
, β
, γ
, ... for typesa
, b
, c
, ... for propositionsx
, y
, z
, ... for elements of a generic typeh
, h₁
, ... for assumptionsp
, q
, r
, ... for predicates and relationss
, t
, ... for listss
, t
, ... for setsm
, n
, k
, ... for natural numbersi
, j
, k
, ... for integersimp
: implicationforall
exists
ball
: bounded forallbex
: bounded existsWe generally use lower case with underscores for theorem names and
definitions. Sometimes upper case is used for bundled structures, such
as Group
. In that case, use CamelCase for compound names, such as
AbelianGroup
.
We adopt the following naming guidelines to make it easier for users to guess the name of a theorem or find it using tab completion. Common "axiomatic" properties of an operation like conjunction or multiplication are put in a namespace that begins with the name of the operation:
import standard algebra.ordered_ring
check and.comm
check mul.comm
check and.assoc
check mul.assoc
check @mul.left_cancel -- multiplication is left cancelative
In particular, this includes intro
and elim
operations for logical
connectives, and properties of relations:
import standard algebra.ordered_ring
check and.intro
check and.elim
check or.intro_left
check or.intro_right
check or.elim
check eq.refl
check eq.symm
check eq.trans
For the most part, however, we rely on descriptive names. Often the name of theorem simply describes the conclusion:
import standard algebra.ordered_ring
open nat
check succ_ne_zero
check mul_zero
check mul_one
check @sub_add_eq_add_sub
check @le_iff_lt_or_eq
If only a prefix of the description is enough to convey the meaning, the name may be made even shorter:
import standard algebra.ordered_ring
check @neg_neg
check nat.pred_succ
When an operation is written as infix, the theorem names follow
suit. For example, we write neg_mul_neg
rather than mul_neg_neg
to
describe the patter -a * -b
.
Sometimes, to disambiguate the name of theorem or better convey the intended reference, it is necessary to describe some of the hypotheses. The word "of" is used to separate these hypotheses:
import standard algebra.ordered_ring
open nat
check lt_of_succ_le
check lt_of_not_ge
check lt_of_le_of_ne
check add_lt_add_of_lt_of_le
The hypotheses are listed in the order they appear, not reverse
order. For example, the theorem A → B → C
would be named
C_of_A_of_B
.
Sometimes abbreviations or alternative descriptions are easier to work
with. For example, we use pos
, neg
, nonpos
, nonneg
rather than
zero_lt
, lt_zero
, le_zero
, and zero_le
.
import standard algebra.ordered_ring
open nat
check mul_pos
check mul_nonpos_of_nonneg_of_nonpos
check add_lt_of_lt_of_nonpos
check add_lt_of_nonpos_of_lt
These conventions are not perfect. They cannot distinguish compound
expressions up to associativity, or repeated occurrences in a
pattern. For that, we make do as best we can. For example, a + b - b = a
could be named either add_sub_self
or add_sub_cancel
.
Sometimes the word "left" or "right" is helpful to describe variants of a theorem.
import standard algebra.ordered_ring
check add_le_add_left
check add_le_add_right
check le_of_mul_le_mul_left
check le_of_mul_le_mul_right
We are trying to standardize certain naming patterns for structural lemmas. At present these are not uniform across mathlib.
A lemma of the form (∀ x, f x = g x) → f = g
should be named .ext
,
and labelled with the @[ext]
attribute.
Often this type of lemma can be generated automatically by putting the
@[ext]
attribute on a structure.
(However an automatically generated lemma will always be written in terms
of the structure projections, and often there is a better statement,
e.g. using coercions, that should be written by hand then marked with @[ext]
.)
A lemma of the form f = g ↔ ∀ x, f x = g x
should be named .ext_iff
.
Injectivity lemmas should usually be written as bidirectional implications,
e.g. as f x = f y ↔ x = y
. Such lemmas should be named f_inj
(although if they are in an appropriate namespace .inj
is good too).
Bidirectional injectivity lemmas are often good candidates for @[simp]
.
There are still many unidirectional implications named inj
in mathlib,
and it is reasonable to update and replace these as you come across them.
Note however that constructors for inductive types have
automatically generated unidirectional implications, named .inj
,
and there is no intention to change this.
When such an automatically generated lemma already exists,
and a bidirectional lemma is needed, it may be named .inj_iff
.
Injectivity lemmas written in terms of an injective f
conclusion
should instead use the full word injective
, typically as f_injective
.
The form injective_f
still appears often in mathlib.
Copyright (c) 2016 Jeremy Avigad. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Jeremy Avigad


Chilling Tinder messages killer sent to Grace Millane before strangling her
Grace Millane told her killer she had not said 'yes' to his date request, prompting the 27-year-old to respond with 'you haven't said no either' - the chilling messages were released after the man was found guilty of murder in New Zealand
by Matthew Dresch, https://www.mirror.co.uk/authors/matthew-dresch/Newly released Tinder messages show how Grace Millane's killer talked her into meeting him for a date.
The 27-year-old killer promises to buy drinks for the British backpacker in their exchange on the dating app.
Grace at first appears reluctant to meet the local man during her travels in New Zealand, repeatedly telling him 'maybe' when he proposes date ideas.
The man took the university graduate back to his hotel room after the date and strangled her to death.
He then shoved her body into a suitcase and buried it in a shallow grave just outside Auckland, New Zealand.
The killer claimed Grace died accidentally during rough sex, however, last week a jury reached the unanimous verdict that he murdered her.
In his first message to the Brit, he wrote: "Hey Grace how are you? Much planned for your weekend?"
She replied by telling him it was her birthday tomorrow and she did not have any plans.
He then proposed they go for a drink, with Grace saying 'maybe' in response.
Her killer asked her 'maybe yes??', prompting the Brit to suggest he 'convince' her.
The murderer offered to 'shout' free booze for Grace and recommended a 'cool Mexican place'.
Grace told him she was 'maybe' up for drinks, although when her killer suggested another venue she said 'I haven't said yes yet?'
In a chilling message, the 27-year-old then replied 'you haven't said no either'.
The pair later had a boozy date in Auckland, with Grace returning to her killer's room, where he strangled her to death.
He then went on another Tinder date while she lay dead in his apartment.
The killer is due to be sentenced in February.


Row
Undocumented
-
Creates a new
ListBoxRow
, to be used as a child of aListBox
.Declaration
Swift
public convenience init()
-
Marks row as changed, causing any state that depends on this to be updated. This affects sorting, filtering and headers.
Note that calls to this method must be in sync with the data used for the row functions. For instance, if the list is mirroring some external data set, and two rows changed in the external data set then when you call
changed()
on the first row the sort function must only read the new data for the first of the two changed rows, otherwise the resorting of the rows will be wrong.This generally means that if you don’t fully control the data model you have to duplicate the data that affects the listbox row functions into the row widgets themselves. Another alternative is to call
ListBox.invalidateSort()
on any model change, but that is more expensive.Declaration
Swift
public func changed()
-
The current header
This can be used in a
ListBoxUpdateHeaderFunc
to see if there is a header set already, and if so to update the state of it.Changing property replace any existing header in the row, and be shown in front of the row in the listbox.
Declaration
Swift
public var header: Widget?
-
Undocumented
-
The
activatable
property for this row.Declaration
Swift
public var activatable: Bool
-
The value of the
selectable
property for this row.Declaration
Swift
public var selectable: Bool


Advanced End-to-End R&S, Cyber Security, Collaboration, Wireless, Data Center and IoT solutions based on validated solutions with a diversified list of vendors.
Find Out MoreExpertise, passion and dedication on delivering complex solutions.
Get Started!Validated Designs for Borderless Secure Networks
Design and Implementation of state of art defense systems.
Design and Implementation of Voice and I&M solution to increase team productivity and decrease travel costs with Video solutions.
Build your private Data Center or leverage the cloud platform to reduce your costs by levareging newest technologies as Server Virtualization and Software Defined Storage technologies.
Get a feedback regarding your network architecture design and security gaps with a list of recommandations.
Build your advanced Contact Center as well as integration with 3rd party applications.
Academic background with more than 15 years of experience in IT field.
Dedicated support services for your company.
Ready to start your next project with us? That's great! Give us a call or send us an email and we will get back to you as soon as possible!
+383-45-932-221


Border Patrol Agent Shoots Russian Man Over Alleged Illegal Border Crossing in Arizona
by Associated Press(LUKEVILLE, Ariz.) — The U.S. Border Patrol says an agent shot and wounded a Russian man suspected of crossing the border illegally in Arizona. The agency said Friday that the man was flown to a Phoenix hospital and is expected to survive.
The Border Patrol says the unidentified agent attempted to arrest the man Thursday just east of the border town Lukeville.
Authorities say a physical altercation followed and the agent shot the man. The agent was not seriously injured.
The Border Patrol has faced criticism over its use of force in the past, but the number of shootings has fallen over the past few years.


| Symbol | Asset | Shares | Value |
|---|
{{ user.first_name + " " + user.last_name }}'s Portfolio
Stock Market
| Symbol | Sector | Bid Price | Ask Price |
|---|
Options Market
| Symbol | Type | Strike Price | Bid Price | Ask Price |
|---|
| Symbol | Asset | Shares | Value |
|---|
| Symbol | Sector | Bid Price | Ask Price |
|---|
| Symbol | Type | Strike Price | Bid Price | Ask Price |
|---|


This is the starmap for Tau Station, a narrative sci-fi MMORPG. It never made it into the game, but so many people look for how to build a 3-D rotating star map in Javascript that I thought I'd show my solution. I'm more of a back-end developer and the code reflects this.
The map shows all of the stars within 20 light years of Sol. The green circle (sorry, color-blind folks!) is where the "player" in the game is currently located. The lines are wormholes between star systems and yes, some are deliberaty disconnected. The white lines are the wormholes directly connected to the player's current position.
Honestly, there's no real reason to have it here other than the fact that was I was pleased with the result.
Please leave a comment below!
If you'd like top-notch consulting or training, email me and let's discuss how I can help you. Read my hire me page to learn more about my background.
Copyright © 2018-2023 by Curtis “Ovid” Poe.


| Top |
| GList * | g_list_append () |
| GList * | g_list_prepend () |
| GList * | g_list_insert () |
| GList * | g_list_insert_before () |
| GList * | g_list_insert_sorted () |
| GList * | g_list_remove () |
| GList * | g_list_remove_link () |
| GList * | g_list_delete_link () |
| GList * | g_list_remove_all () |
| void | g_list_free () |
| void | g_list_free_full () |
| GList * | g_list_alloc () |
| void | g_list_free_1 () |
| guint | g_list_length () |
| GList * | g_list_copy () |
| GList * | g_list_copy_deep () |
| GList * | g_list_reverse () |
| GList * | g_list_sort () |
| gint | (*GCompareFunc) () |
| GList * | g_list_insert_sorted_with_data () |
| GList * | g_list_sort_with_data () |
| gint | (*GCompareDataFunc) () |
| GList * | g_list_concat () |
| void | g_list_foreach () |
| void | (*GFunc) () |
| GList * | g_list_first () |
| GList * | g_list_last () |
| #define | g_list_previous() |
| #define | g_list_next() |
| GList * | g_list_nth () |
| gpointer | g_list_nth_data () |
| GList * | g_list_nth_prev () |
| GList * | g_list_find () |
| GList * | g_list_find_custom () |
| gint | g_list_position () |
| gint | g_list_index () |
The GList structure and its associated functions provide a standard doubly-linked list data structure.
Each element in the list contains a piece of data, together with pointers which link to the previous and next elements in the list. Using these pointers it is possible to move through the list in both directions (unlike the singly-linked GSList, which only allows movement through the list in the forward direction).
The double linked list does not keep track of the number of items and does not keep track of both the start and end of the list. If you want fast access to both the start and the end of the list, and/or the number of items in the list, use a GQueue instead.
The data contained in each element can be either integer values, by using one of the Type Conversion Macros, or simply pointers to any type of data.
List elements are allocated from the slice allocator, which is more efficient than allocating elements individually.
Note that most of the GList functions expect to be passed a pointer to the first element in the list. The functions which insert elements return the new start of the list, which may have changed.
There is no function to create a GList. NULL
is considered to be
a valid, empty list so you simply set a GList* to NULL
to initialize
it.
To add elements, use g_list_append()
, g_list_prepend()
,
g_list_insert()
and g_list_insert_sorted()
.
To visit all elements in the list, use a loop over the list:
1 2 3 4 5 |
GList *l; for (l = list; l != NULL; l = l->next) { // do something with l->data } |
To call a function for each element in the list, use g_list_foreach()
.
To loop over the list and modify it (e.g. remove a certain element) a while loop is more appropriate, for example:
1 2 3 4 5 6 7 8 9 10 11 |
GList *l = list; while (l != NULL) { GList *next = l->next; if (should_be_removed (l)) { // possibly free l->data list = g_list_delete_link (list, l); } l = next; } |
To remove elements, use g_list_remove()
.
To navigate in a list, use g_list_first()
, g_list_last()
,
g_list_next()
, g_list_previous()
.
To find elements in the list use g_list_nth()
, g_list_nth_data()
,
g_list_find()
and g_list_find_custom()
.
To find the index of an element use g_list_position()
and
g_list_index()
.
To free the entire list, use g_list_free()
or g_list_free_full()
.
GList * g_list_append (GList *list
,gpointer data
);
Adds a new element on to the end of the list.
Note that the return value is the new start of the list,
if list
was empty; make sure you store the new value.
g_list_append() has to traverse the entire list to find the end,
which is inefficient when adding multiple elements. A common idiom
to avoid the inefficiency is to use g_list_prepend()
and reverse
the list with g_list_reverse()
when all elements have been added.
1 2 3 4 5 6 7 8 9 10 |
// Notice that these are initialized to the empty list. GList *string_list = NULL, *number_list = NULL; // This is a list of strings. string_list = g_list_append (string_list, "first"); string_list = g_list_append (string_list, "second"); // This is a list of integers. number_list = g_list_append (number_list, GINT_TO_POINTER (27)); number_list = g_list_append (number_list, GINT_TO_POINTER (14)); |
GList * g_list_prepend (GList *list
,gpointer data
);
Prepends a new element on to the start of the list.
Note that the return value is the new start of the list, which will have changed, so make sure you store the new value.
1 2 3 4 5 |
// Notice that it is initialized to the empty list. GList *list = NULL; list = g_list_prepend (list, "last"); list = g_list_prepend (list, "first"); |
Do not use this function to prepend a new element to a different
element than the start of the list. Use g_list_insert_before()
instead.
list |
a pointer to a GList, this must point to the top of the list |
|
data |
the data for the new element |
GList * g_list_insert (GList *list
,gpointer data
,gint position
);
Inserts a new element into the list at the given position.
list |
a pointer to a GList, this must point to the top of the list |
|
data |
the data for the new element |
|
position |
the position to insert the element. If this is negative, or is larger than the number of elements in the list, the new element is added on to the end of the list. |
GList * g_list_insert_before (GList *list
,GList *sibling
,gpointer data
);
Inserts a new element into the list before the given position.
GList * g_list_insert_sorted (GList *list
,gpointer data
,GCompareFunc func
);
Inserts a new element into the list, using the given comparison function to determine its position.
If you are adding many new elements to a list, and the number of
new elements is much larger than the length of the list, use
g_list_prepend()
to add the new items and sort the list afterwards
with g_list_sort()
.
list |
a pointer to a GList, this must point to the top of the already sorted list |
|
data |
the data for the new element |
|
func |
the function to compare elements in the list. It should return a number > 0 if the first parameter comes after the second parameter in the sort order. |
GList * g_list_remove (GList *list
,gconstpointer data
);
Removes an element from a GList. If two elements contain the same data, only the first is removed. If none of the elements contain the data, the GList is unchanged.
list |
a GList, this must point to the top of the list |
|
data |
the data of the element to remove |
GList * g_list_remove_link (GList *list
,GList *llink
);
Removes an element from a GList, without freeing the element.
The removed element's prev and next links are set to NULL
, so
that it becomes a self-contained list with one element.
This function is for example used to move an element in the list
(see the example for g_list_concat()
) or to remove an element in
the list before freeing its data:
1 2 3 |
list = g_list_remove_link (list, llink); free_some_data_that_may_access_the_list_again (llink->data); g_list_free (llink); |
GList * g_list_delete_link (GList *list
,GList *link_
);
Removes the node link_ from the list and frees it.
Compare this to g_list_remove_link()
which removes the node
without freeing it.
GList * g_list_remove_all (GList *list
,gconstpointer data
);
Removes all list nodes with data equal to data
.
Returns the new head of the list. Contrast with
g_list_remove()
which removes only the first node
matching the given data.
void
g_list_free (GList *list
);
Frees all of the memory used by a GList. The freed elements are returned to the slice allocator.
If list elements contain dynamically-allocated memory, you should
either use g_list_free_full()
or free them manually first.
void g_list_free_full (GList *list
,GDestroyNotify free_func
);
Convenience method, which frees all the memory used by a GList,
and calls free_func
on every element's data.
list |
a pointer to a GList |
|
free_func |
the function to be called to free each element's data |
Since 2.28
GList *
g_list_alloc (void
);
Allocates space for one GList element. It is called by
g_list_append()
, g_list_prepend()
, g_list_insert()
and
g_list_insert_sorted()
and so is rarely used on its own.
void
g_list_free_1 (GList *list
);
Frees one GList element.
It is usually used after g_list_remove_link()
.
guint
g_list_length (GList *list
);
Gets the number of elements in a GList.
This function iterates over the whole list to count its elements. Use a GQueue instead of a GList if you regularly need the number of items.
GList *
g_list_copy (GList *list
);
Copies a GList.
Note that this is a "shallow" copy. If the list elements
consist of pointers to data, the pointers are copied but
the actual data is not. See g_list_copy_deep()
if you need
to copy the data as well.
GList * g_list_copy_deep (GList *list
,GCopyFunc func
,gpointer user_data
);
Makes a full (deep) copy of a GList.
In contrast with g_list_copy()
, this function uses func
to make
a copy of each list element, in addition to copying the list
container itself.
func
, as a GCopyFunc, takes two arguments, the data to be copied
and a user_data
pointer. It's safe to pass NULL
as user_data,
if the copy function takes only one argument.
For instance, if list
holds a list of GObjects, you can do:
1 |
another_list = g_list_copy_deep (list, (GCopyFunc) g_object_ref, NULL); |
And, to entirely free the new list, you could do:
1 |
g_list_free_full (another_list, g_object_unref); |
the start of the new list that holds a full copy of list
,
use g_list_free_full()
to free it
Since 2.34
GList *
g_list_reverse (GList *list
);
Reverses a GList. It simply switches the next and prev pointers of each element.
GList * g_list_sort (GList *list
,GCompareFunc compare_func
);
Sorts a GList using the given comparison function. The algorithm used is a stable sort.
list |
a GList, this must point to the top of the list |
|
compare_func |
the comparison function used to sort the GList. This function is passed the data from 2 elements of the GList and should return 0 if they are equal, a negative value if the first element comes before the second, or a positive value if the first element comes after the second. |
gint (*GCompareFunc) (gconstpointer a
,gconstpointer b
);
Specifies the type of a comparison function used to compare two values. The function should return a negative integer if the first value comes before the second, 0 if they are equal, or a positive integer if the first value comes after the second.
GList * g_list_insert_sorted_with_data (GList *list
,gpointer data
,GCompareDataFunc func
,gpointer user_data
);
Inserts a new element into the list, using the given comparison function to determine its position.
If you are adding many new elements to a list, and the number of
new elements is much larger than the length of the list, use
g_list_prepend()
to add the new items and sort the list afterwards
with g_list_sort()
.
list |
a pointer to a GList, this must point to the top of the already sorted list |
|
data |
the data for the new element |
|
func |
the function to compare elements in the list. It should return a number > 0 if the first parameter comes after the second parameter in the sort order. |
|
user_data |
user data to pass to comparison function |
Since 2.10
GList * g_list_sort_with_data (GList *list
,GCompareDataFunc compare_func
,gpointer user_data
);
Like g_list_sort()
, but the comparison function accepts
a user data argument.
list |
a GList, this must point to the top of the list |
|
compare_func |
comparison function |
|
user_data |
user data to pass to comparison function |
gint (*GCompareDataFunc) (gconstpointer a
,gconstpointer b
,gpointer user_data
);
Specifies the type of a comparison function used to compare two values. The function should return a negative integer if the first value comes before the second, 0 if they are equal, or a positive integer if the first value comes after the second.
GList * g_list_concat (GList *list1
,GList *list2
);
Adds the second GList onto the end of the first GList. Note that the elements of the second GList are not copied. They are used directly.
This function is for example used to move an element in the list. The following example moves an element to the top of the list:
1 2 |
list = g_list_remove_link (list, llink); list = g_list_concat (llink, list); |
void g_list_foreach (GList *list
,GFunc func
,gpointer user_data
);
Calls a function for each element of a GList.
list |
a GList, this must point to the top of the list |
|
func |
the function to call with each element's data |
|
user_data |
user data to pass to the function |
void (*GFunc) (gpointer data
,gpointer user_data
);
Specifies the type of functions passed to g_list_foreach()
and
g_slist_foreach()
.
data |
the element's data |
|
user_data |
user data passed to |
#define g_list_previous(list)
A convenience macro to get the previous element in a GList.
Note that it is considered perfectly acceptable to access
list->previous
directly.
#define g_list_next(list)
A convenience macro to get the next element in a GList.
Note that it is considered perfectly acceptable to access
list->next
directly.
GList * g_list_nth (GList *list
,guint n
);
Gets the element at the given position in a GList.
list |
a GList, this must point to the top of the list |
|
n |
the position of the element, counting from 0 |
gpointer g_list_nth_data (GList *list
,guint n
);
Gets the data of the element at the given position.
GList * g_list_nth_prev (GList *list
,guint n
);
Gets the element n
places before list
.
GList * g_list_find (GList *list
,gconstpointer data
);
Finds the element in a GList which contains the given data.
GList * g_list_find_custom (GList *list
,gconstpointer data
,GCompareFunc func
);
Finds an element in a GList, using a supplied function to find the desired element. It iterates over the list, calling the given function which should return 0 when the desired element is found. The function takes two gconstpointer arguments, the GList element's data as the first argument and the given user data.
list |
a GList, this must point to the top of the list |
|
data |
user data passed to the function |
|
func |
the function to call for each element. It should return 0 when the desired element is found |
gint g_list_position (GList *list
,GList *llink
);
Gets the position of the given element in the GList (starting from 0).
gint g_list_index (GList *list
,gconstpointer data
);
Gets the position of the element containing the given data (starting from 0).
struct GList { gpointer data; GList *next; GList *prev; };
The GList struct is used for each element in a doubly-linked list.
gpointer |
holds the element's data, which can be a pointer to any kind of data, or any integer value using the Type Conversion Macros |
|
GList * |
contains the link to the next element in the list |
|
GList * |
contains the link to the previous element in the list |


Resident Evil BIOHAZARD
About The Game
Fear and isolation seep through the walls of an abandoned southern farmhouse,marks a new beginning for survival horror with the Isolated View of the visceral new first-person perspective.
Title: RESIDENT EVIL 7
Genre: Violent, Gore, Action, Adventure
Developer: CAPCOM Co., Ltd.
Publisher: CAPCOM Co., Ltd.
Release Date: 24 Jan, 2017
Minimum Requirements for 720p30 at low settings
OS: WINDOWS 7, 8, 8.1, 10 (64-BIT Required)
Processor: Intel Core i5-4460, 2.70GHz or AMD FX-6300 or better
Memory: 8 GB RAM
Graphics: NVIDIA GeForce GTX 760 or AMD Radeon R7 260x with 2GB Video RAM
DirectX: Version 11
Storage: 24 GB available space
Sound Card: DirectSound compatible (must support DirectX 9.0c or higher)
Additional Notes: Hardware specification target 1080P/30FPS. May require reduction in Texture Quality settings or turning Texture streaming to OFF due to high VRAM requirements. *Internet connection required for game activation. The game is still undergoing development, so all PC requirements are subject to change.
Screenshots


Home
Point of Contact Name
{{ @errors['pocName'] }}
Phone Number
Email
Ongoing Milestone:
checked > Treat This Milestone as Ongoing
Street Address
{{ @errors['streetAddress'] }}
City
{{ @errors['city'] }}
Province
{{ @errors['province'] }}
Postal Code
{{ @errors['postalCode'] }}
Next >


MPPT Solar Charge Controller
Introduction
The Objective of this project is to design a device to prevent batteries from over-charging and increase batterey life. A normal 12V-14V rated Solar Panels produce 16V-18V at peak sun. The Maximum Power Point Tracking Solar Charge Controller will regulate the output voltage for effective charging of batteries. It also helps prevent backflow of current from batteries to solar panels at night. MPPT solar charge controller monitors the voltage and current output of the solar panel and determines the voltage that the panel will produce at the maximum efficiency.Project Execution Plan
Distribution of Tasks
This project is a job of Team-work. I and my project memeber have different skills. So, we'll divide tasks according to our skills. The skill in which he's master, he'll lead in those tasks and I'll lead those tasks in which I've prominenet skill. Here is the table explaining division of jobs on the basis of our skills.
| Tasks | Khalid Hussain | Zaheer Khalid |
| Literature Review | Yes | |
| Design of Schematic | Yes | |
| PCB Designing | Yes | |
| Hardware Implementation | Yes | |
| Software Implementation | Yes | |
| Troubleshooting | Yes | Yes |
| Design of Enclosure | Yes | Yes |
| Report Writing | Yes |
High Level Design
Here is the Block Diagram for the my project. I've done some changes while implementing this block diagram idea. But major idea is the same.
Description of Principle of Operations
In this project, we've current and voltage sensors at input and output terminals which will constantly give input results to our Micro-Controller. On our Micro-Controller, we've programmed algorithms of Maximum Power Point Tracking Phenomenon. Micro-Controller will generate PWM (Pulse Width Modulatin) signal to control Voltage by using MOSFETs. MOSFETs will switch continuously due to PWM signal to control and regulate voltages. This operation of MOSFETs is actually the Phenomenon of D-Class Amplifiers.
Choice of Componenets/Bill of Material
-
ATMEGA 32u4 (Micro-Controller)
ATMEGA-32u4 is a powerful micro controller which have a USB interface inside it. It's the major reason that I preffered ATMega-32u4 over other micro controllers. Moreover, these are the major feature which this micro controller have.- 32K bytes of In-System Programmable Flash with Read-While-Write capabilities
- 1K bytes EEPROM
- 2.5K bytes SRAM
- 26 general purpose I/O lines (CMOS outputs and LVTTL inputs)
- 32 general purpose working registers
- four flexible Timer/Counters with compare modes and PWM
- one more high-speed Timer/Counter with compare modes and PLL adjustable source
- one USART (including CTS/RTS flow control signals)
- a byte oriented 2-wire Serial Interface
- a 12-channel 10-bit ADC with optional differential input stage with programmable gain
- an on-chip calibrated temperature sensor
- a programmable Watchdog Timer with Internal Oscillator
- an SPI serial port
- IR 2104 (Half-Bridge Driver)
A gate IR2104 driver is a power amplifier that accepts a low-power input from a controller IC and produces a high-current drive input for the gate of a high-power transistor such as a power MOSFET.
- INA 213 (Current Shunt Monitors)
INA213 is used as Current Shunt Monitors which is used to sense current through a shunt resistor in a circuit.
Design
Design of Project Electrical Scematic Design, PCB Board Design, Software Design and Enclosure Design for the Project. Following is the detail of design of Project.
Electrical Schematic Design
I designed the schematic for my project on Eagle Software. During the schematic design the major concern was the appropriate pin selection of different ICs. I'm using ATMega32u4 Micro-Controller IC. After studying its datasheet, I connected my sensors and actuators very carefully. Moreover during the schematic design, power supplies to your components is a critical matter. Some ICs need 5V and some need 12V. I provided carefully each IC its required voltage.I've explained the phenomenon of my project above. Here, you can see the image of my electrical schematic zooming by hovering cursor over it.
I'm sending sensors data to Micro-Controller through analogue pins and receiving actuators data through digital pins. Micro-Controller is sending PWM Signal to control voltage and feeding information to 16X2 LCD.
I'm using Voltage Regulator circuit to convert 12V supply into 5V output for components.
The major portion of circuit is MPPT Charge Controller Circuit. It has voltage divider circuit for voltage sensing and a current shunt monitor for current sensing at input. It has Half-Bridge Driver IC which receives PWM signal from Micro-Controller and amplifies it for Power MOSFETs. Power MOSFETs switch accordingly the duty cycle of PWM signal and regulate the voltage. And then we've current and voltage sensors at output.
Hover the cursor over the below image to see zoomed details of Electrical Scematic.
PCB Layout
Here is the PCB layout image of my circuit Board.
Challenges faced while Routing
We faced many challenges while routing of Board file. The major issue of overlapping lines. We resolved this issue by using 0Ω resistors in SMD and DIP packages. For some DIP comonents we've to increase drills diameter. The major challenge for us to sort out a maze of lines in a well-sorted way. This job gave us really a tough time. We used appropriate width of lines by keeping in mind the amount of current flowing through the lines.
Clean Printed Circuit Board
Populated Printed Circuit Board
Bootloader Burning Operation
I burnt bootloader into my Controller Board using SPI Header. I just connected it with my PC, opened Arduino IDE and uploaded a simple program to burn bootloader. After getting my board functional, I tested it for LED blinking program and it resulted successfully.
Software Development
Flow Chart of Software
Challenges faced in Coding
I was actually using source code from soldernerd.com website. This code was developed for Arduino UNO Board. I've to implement this code on Arduino Leonardo Board, so made some changes in Timers and Registeers selection and their pre-Scalar adjustment. I used Timer2 of ATMega32u4 which is a 16 bit Timer. I adjusted pre-scalar to get my required output.
Describe the structure of your software. In a pictorial format you may describe the flow of your algorithm and how you have used the functions to implement the code in an efficient way.Design of Enclosure/Casing
I designed the casing of my project on Solid Works Software. I measured proper dimensions for my Circuit Board, LCD and Connectors and then designed according to my requirements.
Results
After populating my circuit board, I attempted many times to get my board functional. On my 21st attempt, I got successful results. I troubleshooted the code for my circuit a lot to get my desired outputs.
Here you can see the image of my fully functional circuit.
Final Successful Attempt Video
Here is the video of my final successful attempt.
Business Model
This Project can be implemented on commercial level. The basic purpose of this project is to conserve battery life. We can see many equipments where we use rechargeable batteries. This Charge controller can be used in vehicles, big machines, small electronic components like laptops where we charge batteries. By varying power rating of this project, we can use it on any scale.
In Pakistan, we can implement this idea for villages where there are no electric power supply lines. People are attracted to rapidly growing Solar Panels technology for power generation, but they are afraid to invest money on Solar Panels Power Generation Project due to very low life of Lithium-Ion Batteries. By improving the power rating of my MPPT Solar Charge Controller circuit, we can give the rural areas of Pakistan a good hope to invest on Solar Panels technology and batteries to save power for night. This MPPT Solar Charge Controller will actually increase battery life to some extent.
Appendix
My project is an open source work. You can get benefit from my work and update it for your requirement. I'll be thankful for your positive feedbacks and suggestions.
Click on the logo below to download the Schematic and Board files for the circuit:
Click on the logo below to download the Source Code for the circuit:
Click on the logo below to download the CAD Design Files for the Enclosure:
References
I got help from these sources and persons. I'm providing their links so you may utilize their work.
https://soldernerd.com/mppt-solar-charger/
https://www.instructables.com/id/ARDUINO-SOLAR-CHARGE-CONTROLLER-Version-30/
Dr. Muhammad Asim Samejo (Assistant Professor at Sukkur IBA University,Pakistan)
http://www.iba-suk.edu.pk/faculty/details/INS-0011
Nadir Ali (Fab Lab Attendant at Sukkur IBA University, Pakistan)
https://www.researchgate.net/profile/Nadir_Ali8
Engr. Aizaz Ali Larik (Lab Engineer at Sukkur IBA University,Pakistan)
http://www.iba-suk.edu.pk/faculty/details/INS-0424
Sagheer Abbas Shah ( Undergraduate Electrical Engineering Student at Sukkur IBA University, Pakistan)
Contact Us
You can contact us to get any sort of help related to this project.
Zaheer Khalid (Undergraduate Electrical Engineering Student at Sukkur IBA University, Pakistan)
Email<EMAIL_ADDRESS>Contact: +92<PHONE_NUMBER>
Khalid Hussain (Undergraduate Electrical Engineering Student at Sukkur IBA University, Pakistan)
Email: khalidhussain.be17@iba-suk.edu.pk


{% extends "base.html" %} {% block content %}
Select a game for more information
{% for rating in user %}


| DOSE: T+ 0:00 |
10 mg |
oral |
5-MeO-DiPT |
(powder / crystals) |
| T+ 1:30 |
10 mg |
oral |
5-MeO-DiPT |
(powder / crystals) |
9pm - While an hour from home (and not finding any swag green), me, W and R decided to take a 5-MeO-DiPT. The dose was approximately 12 mg's each. It was 4/20 and getting fucked up was the plan, so the late time was not going to discourage us from tripping. I was driving, and very confident any effects felt before we got home wouldn't cause me to drive badly.
10pm - Arrive at home, with all 3 of us feeling minimal effects, maybe a +1 or almost +2, but not very intense at all, although the light tryptamine feeling was felt. We walk into the house finding me and R's, other roommate, BJ, with his girlfriend. They have smoked very little on the national holiday and were very disappointed that we didn't come through with more swag green. Both BJ and his girlfriend, L, were inexperienced trippers. They have both taken 10 mg's of 5-MeO-DiPT twice before, resulting in a very mild trip. They also wanted to trip, but with a higher dose this time, to maybe bring on more effects. I talk them into taking 10 mg's now, and 10 mg's in an hour, so to keep the 5-MeO-DiPT from kicking in too hard for them.
1030pm - Me and W wish our trip was more intense at this point, so we also take a supplemental dose of 10 mg's each. R had to work on Sunday morning, so he was fine with his initial dose.
11pm - After smoking on the little swag we did have, the 5-MeO-DiPT really took hold. All 5 of us were at a +3, and fully tripping. Marijuana sure does have nice synergy with 5-MeO-DiPT. After every hit, I can feel the trip get stronger. At this point me, R, and W are laying down listening to good music and enjoying the CEV's.
For the rest of the night the 5-MeO-DiPT trip went like most all the other 5-MeO-DiPT trips we had embarked on, a little body load, deep, deep thought, increased auditory perception, and lots of CEV's with little in the way of OEV's.
BJ and L finally got a 5-MeO-DiPT trip that took them to a +3. They were both very fucked up, with L having the most body load, as she puked a couple of times. I think this is because she is a girl. Girls seem to have the worst body load with 5-MeO-DiPT (birth control pills?)
Me, R, and W have taken 5-MeO-DiPT probably over 50 times each, so I thought I would write an overview of our thoughts on this substance.
Overview - 5-MeO-DiPT sure is a subtle drug. The dose-response curve seems to be very steep, with higher doses (20 mgs +) giving a very high body load, but increasing the OEV's.
At low doses (around 10 mgs) 5-MeO-DiPT seems to be the most fun with the littlest body load. For inexperienced trippers, they may think they that a low dose is a waste of time, but for those of us who know how to manipulate the trip, 10 mgs is just right. The CEV's can be amazing and music is greatly enhanced. The combination of CEV's, increased auditory perception, and the short acting nature makes 5-MeO-DiPT one of the best psychedelics around.
I suggest experienced trippers to try 5-MeO-DiPT at low doses and work on taking the trip where you want it to go, not go where the trip takes you. The worst mistake to make with 5-MeO-DiPT is to take a large dose at once, for the body load may be too much to handle. Take it small and don't try to make 5-MeO-DiPT a LSD substitute.
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.


Benjamin Sisko
Exceeding reaction chamber thermal limit. We have begun power-supply calibration. Force fields have been established on all turbo lifts and crawlways. Computer, run a level-two diagnostic on warp-drive systems. Antimatter containment positive. Warp drive within normal parameters. I read an ion trail characteristic of a freighter escape pod. The bomb had a molecular-decay detonator. Detecting some unusual fluctuations in subspace frequencies.
We're acquainted with the wormhole phenomenon, but this... Is a remarkable piece of bio-electronic engineering by which I see much of the EM spectrum ranging from heat and infrared through radio waves, et cetera, and forgive me if I've said and listened to this a thousand times. This planet's interior heat provides an abundance of geothermal energy. We need to neutralize the homing signal.


---
title: 'Science Corner: Training '
author: Kurt R. Peters
date: '2020-09-20'
slug: science-corner-training
categories:
- Fitness
tags: []
---
- Science Corner
- Warming up
- What changes occur in the body as it transitions from “cold” to “warmed up”?
- Capillary expansion/blood flow/oxygenation? >> esp. in relation to muscle tissue?
- Synovial fluid? esp. in the spine
- Hormones
- Joints/tendons: can these get “warm”?
- Glycogen release? (hepatic glycogen?) Ketones? TGs?
- Impact of exercise on vascular health
- You know this already right? Exercise is good for your circulatory system. That’s why they call it “cardio”. But it’s actually more interesting than that — and in a way that underscores the importance of movement and resistance training above and beyond pure cardio.
- Proposed mechanism: shear stress on vascular system (due to actual physical act of placing blood vessels under mechanical stress, i.e., movement and resistance training, not just “getting the blood flowing”) up-regulates markers of vascular health, in particular the vasodilator NO
- So improving cardiovascular health is not just about “getting the blood flowing” but actually moving your blood vessels (which are, of course, part of the muscles that are being moved).
- In fact, there is evidence that even static stretching has positive effects on vascular health for the same reason (stretching the blood vessels)
- What is optimal cool down?
- What changes occur in the body in the first hour post-workout?
- ///analogous questions to warm-up
- What is the goal of a cool down? Theoretically to promote recovery and decrease risk of injury
- So: what happens in the body during recovery? When does recovery shade into atrophy following exercise-induced stress? How long is the plateau between the two?
- In particular: what happens to physiologically during sleep in terms of recovery from a workout?
- How long does it take to replenish muscle glycogen?
- How does this change in the context of LCHF diet?
- What role does hepatic glycogen store play in fueling resistance training? How much glycogen (in terms of duration of a typical workout) can be stored/deployed in this way?
- How long does it take to burn glycogen? (e.g., how much does a 3s planche hold burn?)
- Details of intracellular metabolism of muscle cells under high-resistance activity: when does (and how long does it take to) switch from aerobic to anaerobic? Does metabolic flexibility (being fat-adapted) significantly affect this?
- Blood pooling & skeletal muscle assistance in circulation
- Why is blood pooling bad?
- What is body’s mechanism for preventing it?
- What can you do to promote this process? (basically: need to activate the relevant muscles occasionally, i.e., not stay in a single position for long periods of time)
- Does “active recovery” actually promote recovery? If so, what are the mechanisms?
- Does it help with DOMS?
- If there are mechanisms… how can the be exploited to recommend an optimal AR strategy? What would an example session look like? (duration, intensity, exercise types)
- Why does stress interfere with a workout?
- At a physiological/mechanistic level: what are the hormones involved and why do they impair force production?
- e.g., does cortisol somehow inhibit muscle fiber activation/efficiency?
- Importance of minerals to LCHF training, and generally in relation to muscle fiber activation:
- Magnesium (and relation to cramping)
- Calcium (role in muscle tissue at cellular level)
- Potassium
- Sodium (cf. Art & Science of Low Carb Performance recommendation)
- Caffeine (what is this actually doing within muscle fiber cells?)
- Foam rolling
- And other mechanical self-administerable interventions to promote recovery, including:
- voodoo floss
- massage
- nerve gliding/flossing
- In particular: what this the theory behind the mechanism of these interventions? myofascial release? breaking up scar tissue adhesion? what are these interventions actually doing under the skin?
- Occlusion
- What is the definition of occlusion training? What is the physiological effect? What is the practical benefit? How to incorporate it? (e.g., is this part of the effect achieved through straight-arm and isometric training?)
- Cramping
- Effects of nutrient timing on athletic performance on a LCHF diet
- My basic question is: does spiking insulin (by ingesting carbs and/or protein) prior to workout suppress fat metabolism during workout? and if so, does this matter for resistance style (high intensity/anaerobic) workouts, which are primarily fueled by glycogen anyway?
- I guess a related question is: even at the most fat-adapted, metabolically flexible state, can you actually get to the point where high-intensity strength training burns fat rather than glycogen? Or is any meaningful volume of resistance training going to require glycogen for fuel?
- Where do ketones factor into this? Can they benefit resistance training?
- Metabolic flexibility
- Overview of three metabolic systems:
- phosphogenic, glycolytic, aerobic
- traditional breakdown of conditions under which each is active
- What is ideal in terms of GST?
- Fat-burning for as long as possible, given hard cap on length of time/intensity phosphogentic and glycolytic systems can support activity?
- Importance of aerobic conditioning for GST: (cf. Low’s comments about the Chinese gymnastics program) — cardio may not directly transfer to improved gymnastics skill but it does increase the foundation of fitness, allowing the metabolic system to be more efficient; which in turn improves training quality
- Link to Attia’s self-experiment on increasing his metabolic flexibility during cycling


#include <ContractEntry.hpp>
◆ id_to_base58()
| std::string hsrcore::blockchain::ContractEntry::id_to_base58 |
( |
| ) |
const |
◆ lookup() [1/2]
◆ lookup() [2/2]
◆ remove()
◆ store()
◆ code
| Code hsrcore::blockchain::ContractEntry::code |
◆ contract_name
| ContractName hsrcore::blockchain::ContractEntry::contract_name |
◆ description
| std::string hsrcore::blockchain::ContractEntry::description |
◆ id
◆ level
| fc::enum_type<fc::unsigned_int, ContractLevel> hsrcore::blockchain::ContractEntry::level = ContractLevel::temp |
◆ owner
◆ register_time
| fc::time_point hsrcore::blockchain::ContractEntry::register_time |
◆ reserved
| fc::optional<uint64_t> hsrcore::blockchain::ContractEntry::reserved |
◆ state
| fc::enum_type<fc::unsigned_int, ContractState> hsrcore::blockchain::ContractEntry::state = ContractState::valid |
◆ trx_id
The documentation for this struct was generated from the following files:


Agenda
- Current infrastructure of web application
- Business requirements
- Suggested changes in Architecture of application
- Q & A
Current infrastructure of application
- Three tier Java application
- MySQL database
- Business critical OLTP application
- Key reauirement is to support as many concurrent user as possible
- Response time should be less than 6 sec
- RPO of maximum 15 mins and RTO of less than 30 mins
- peak OLTP volume between 10-11 AM and between 7-8PM
Current Infrastructure:
Current database size : 7TB
Current DB server : 32 vCPU / 128 GB RAM
Current App Server : 8 vCPU / 32 GB RAM (4 nos)
Current Web Servers : 2vCPU / 8 GB RAM (16 nos)
Expected data growth: 30% YoY
Expected increase in concurrent users : 15% per month
Solution Approach with Amazon Cloud
It's a 3 tier application !!
So we can do lot of things in all the 3 tiers to improve concurrent users support and reduce latency.
First approach is to add Load balancers with DNS
- Elastic Load Balancing automatically distributes incoming application traffic across multiple Amazon EC2 instances.
- It enables you to achieve fault tolerance in your applications, seamlessly providing the required amount of load balancing capacity needed to route application traffic.
- You can use Amazon Route 53 health checking and DNS failover features to enhance the availability of the applications running behind Elastic Load Balancers.
- Route 53 will fail away from a load balancer if there are no healthy EC2 instances registered with the load balancer or if the load balancer itself is unhealthy.
Utilize Autoscaling
Scale my Web and App instance when load increases !!
- Cloudwatch agents help you to autoscale
- Auto Scaling helps you maintain application availability and allows you to scale your Amazon EC2 capacity up or down automatically according to conditions you define.
- You can use Auto Scaling to help ensure that you are running your desired number of Amazon EC2 instances. Auto Scaling can also automatically increase the number of Amazon EC2 instances during demand spikes to maintain performance and decrease capacity during lulls to reduce costs.
Elasticache
- ElastiCache is a web service that makes it easy to deploy, operate, and scale a distributed, in-memory cache
- improves the performance of web applications by allowing you to retrieve information from a fast, managed,
in-memory caching system, instead of relying entirely on slower disk-based databases.
- ElastiCache supports two popular open-source caching engines: Memcached and Redis.
Amazon RDS for MySQL
- Very easy to deploy
- Push button scaling
- Fast, Predictable Performance
- Automated backup
- Replication
- Read replicas
Amazon CloudFront (CDN)
- Amazon CloudFront content delivery network (CDN) is a web service for content delivery
- Amazon CloudFront makes your website's dynamic, static, and streaming content available from a global network of edge locations. When a visitor results in faster download
Service Oriented Architecture
SOA is, in essence, the abstraction of one large application into many communicating smaller applications. This follows several best practices of software engineering such as de-coupling, separation of concerns and single-responsibility architecture.
Amazon Simple Queue Service (Amazon SQS)
Amazon Simple Queue Service (Amazon SQS) provides a reliable, highly scalable, hosted message queuing service for
temporary storage and delivery of short (up to 64 KB) text-based data messages. An Amazon SQS queue is a temporary
data repository for messages that are waiting for processing (typically a message produced by one application
component and waiting to be consumed by another).
Seperate databases as per functions
If you want to scale further
Fine tune your application
Go for more SOA features
Go for deep analysis of your Stack
Benefits of cloud computing
Trade capital expense for operational expense
Benefit from massive economies of scale
Stop guessing capacity
Increase speed and agility
Stop spending money on running and maintaining data centers
Go global in minutes


{% include "header.html" %}
SPEECH to TEXT
Upload Audio
Recognize
Your audio file if you wanna hear it
Audio Prediction
{{Prediction}}
{% extends "footer.html" %} {% block footer%}fixed{% endblock %}


--- layout: default ---
Justin Stanley built BB Links as an ad-supported application. This APP is provided by Justin Stanley at no cost and is intended for use as is.
This page is used to inform app users regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use the App.
If you choose to use the App, then you agree to the collection and use of information in relation with this policy. The Personal Information that I collect is used for providing and improving the App. I will not use or share your information with anyone except as described in this Privacy Policy.
For a better experience while using the App, I may require you to provide certain personally identifiable information when sending in feedback or requesting support with the application, including but not limited to your name, email address, connection status, device type, OS version, device locale, and coach Id (all of which can be deleted from the email generated before sending if you so wish with the exception of your email address). Your approximate, imprecise location is used to serve more relevant ads for your region. The information that I request is retained on your device and is not collected by me in any way.
The app does use third party services that may collect information used to identify you. Below is a list with links to their privacy policies.
I want to inform you that whenever you use the App, in case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your devices’s Internet Protocol (“IP”) address, device name, operating system version, configuration of the app when utilising the App, the time and date of your use of the App, and other statistics.
Cookies are files with small amount of data that is commonly used an anonymous unique identifier. These are sent to your browser from the website that you visit and are stored on your devices’s internal memory.
This App does not uses these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collection information and to improve their services. You have the option to either accept or refuse these cookies, and know when a cookie is being sent to your device. If you choose to refuse cookies, you may not be able to use some portions of this App.
I may employ third-party companies and individuals due to the following reasons:
I want to inform users of this App that these third parties may have access to some of your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
I value your trust in providing me your Personal Information, thus I am striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.
This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over, and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.
This Service does not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from my database.
I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. These changes are effective immediately, after they are posted on this page.
If you have any questions or suggestions about this Privacy Policy, do not hesitate to contact me via email at bblinks.feedback@gmail.com.


ShiftWise Connect was the nurse portal for the jobs created in ESP, ShiftWise's primary product. It was ShiftWise's first Service Oriented application (the server did not handle any HTML rendering). SWC ended up being the proving ground for new architecture at ShiftWise, including the use of NServiceBus to create resilient application state changes, the division of code into independently deployable "sub-systems", new unit and automation test frameworks, and new deployment tools. While working on SWC I also lead the adoption of Knockout, which replaced the deprecated jQuery templates for client side UI rendering.
The first major re-architecture in SWC was the move from standard web-service calls that directly changed the database, to web service calls that created MSMQ messages handled by NServiceBus. Because ESP and SWC used independent datastores, there was initially a problem with occasional loss of requests between the two. NServiceBus's retry mechanism ensured that work would not get lost in these cases. After a test run with the job creation process was successful, most database-changing operations were ported to NServiceBus for its resiliency.
The second major re-architecture in SWC was the move to sub-systems. The goal here was to create a system with pieces that could be taken offline and deployed without interrupting the entire system; this goal was made possible because MSMQ monitors could be turned off without interfering with the ability to messages to continue to be sent to MSMQ queues. Our team worked on the original prototype for this model, which seperated the job-nurse matching logic into its own system.
The last major work our team did on SWC before moving onto the next project was support for mobile browsers. While we investigated a responsive layout solution, we went with seperate pages for mobile due to time contraints.


Application Number :
Bar Code :
Application Details ---
Name :
Gender :
Birth Date :
Email Address :
Mobile Number
Address For Correspondence
Date Of Application Confirmation :
Permanent Registration Number Alloted BY The College :
Applicant's Caste Certificate Details---
Caste Category :
Caste :
Sub Caste :
Caste Certificate Number :
Caste Certificate Issued By :
District :
Applicant's College Details :
Name Of College :
Address Of College :
College Registration Number :
Studying In (11th or 12th Science ) :
Division :
Roll Number :
Scrunity Commitee Details (To Which The Concerned College Will Submit The Application.) :
Name Of Commitee :
Address Of Commitee :
Documents Details (Documents Attached By The Applicant) :
Document Description
Year Of Document
Caste Mentioned In The Document
Original Caste Certificate Of The ApplicantS
Certified Copy Of Caste Certificate Of Applicant
Original Affidavit (In Specimen Form 3 Rule-4 (1))
Original Affidavit (In Specimen Form 17 Rule-14 (1))
Certificate By The Principal Of College
Attested Xerox Copy Of Identity Card Issued By The College
Primary School Leaving Certificate
Extract Of Birth/Death Register(Village Register -14)
Caste Certificate Issued By The Compentent Authority
Date Of Submission Of Applicant :
Acknowledgement Of The College :
Signature Of Applicant :


Grow roots
May 20, 2009
I sat down here for a long time
will you grow roots here with me?
will you walk fields and plant gardens
to reap their flowers and eat their fruit
eat their vegetables and roots
all winter stock fire and stoves
gather woods to dry by fall
rake the leaves and lay stones with me
and that electromagnetic wave from the sun
energizing the air into a pink and green plasma
wipe clean our magnetized plates and disks
rearrange all of those binary symbols
the code that is digital and biological life to us all
so be but life anticipated to be
and so be waisted
drawn to likeness,
taken life and so be
Not so longing but to so much be as
some automata


When you work with us, you are a part of a team of collaborated. All aspects of our software development are intergrated,interactive
and agile.
Our approach unifies designs, development and product management to create exceptional products
We start each project by understanding your business goals, the users need and the product requirements
Then we help translate them into effect them into effective and elegant solutions
Before we sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision
The outcome of this scoping session is proposal or high level statement of work
Based on your requirements we can provide a complete offering or just the pieces you need
PRODUCT MANAGEMENT
Planning and development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evolve.
DEVELOPMENT
All engineers are fluent in the latest enterprise mobile and web development technology They collaborate with your team to write and improve code on daily basis using proven practices such as test driven development and pair programming
DESIGN
Our design practice offers a full range of services including brand strategy,interaction and visual design and uses experience testing.Through your project our designers create and implement visual designs and workflows, solicit users feedback and work with you to make sure what gets built is what is needed


2 of 3
Hello, I’m Tinker!
Tinker knew his dream was a bit silly. No one had ever heard of a virtual robot crossing over into the real world. Still, he held out hope.
1 of 3
Once upon a time, there was a virtual robot named Tinker who lived all by himself in a small screen.
Then one day, Tinker heard some news that made his circuits buzz with excitement: his old friend Rebus the Bee, who he hadn't seen in months, was back in town with some exciting stories...
.
3 of 3


To model hardware and embedded applications, a highly concurrent model of computation is required. The PN domain in Ptolemy II presents a mechanism to model concurrency using the Kahn process networks model of computation [1]. The process networks model of computation has a dataflow flavor to it. This makes it well suited to modeling embedded dataflow applications and hardware architectures.
In Ptolemy II, an implementation of the Kahn-MacQueen [2] semantics is provided. This is the bounded memory execution as proposed by T. Parks [3].
The following are the most important features of the operational semantics of PN as proposed by Kahn and MacQueen:
In addition to the above features, the PN domain has been extended to support a notion of global time. Time advances for a PN process either when the process is blocked on a read from some channel or when is explicitly waiting for time to advance. This is based primarily on Pamela [4].
PN has been further extended to support dynamic changes to a graph. In case of timed-PN these changes are completely deterministic, while in case of untimed-PN, the changes could be non-deterministic and can depend on the schedule of the underlying java threads.


Boris Smus & Paul Irish
May 9, 2011
#iobootcamp
#html5-dev-tools
on freenode: goo.gl/nhPmPtodo/index.html
modules/Mx/index.html
if you fall behind
CSS and the Chrome Developer Tools
Use your favorite CSS and the devtools to make your todo list app look awesome
-webkit-transition: all 0.5s ease-in;
webkitTransitionEnd
event-webkit-transform: rotate(-10deg) scale(1.5);
| rotate(-45deg) | rotate(-15deg) | rotate(15deg) | rotate(45deg) | rotate(75deg) |
|---|---|---|---|---|
| scale(0.2) | scale(0.5) | scaleX(0.5) | scaleX(2.0) | scaleY(1.5) |
| skewX(10deg) | skewX(20deg) | skewX(30deg) | skewX(40deg) | skewX(50deg) |
Retrofit the todo app with amazing effects whenever the user deletes a todo item.
/* see and tweak at the bottom of todos.css */ #todo-list li { -webkit-transition: all 0.001s linear; } #todo-list li.removing { -webkit-transform: scale(1); }
navigator.geolocation.getCurrentPosition(function (position) { // position.coords.latitude // position.coords.longitude })
Make your todo app location aware. Be sure to feature detect to ensure that the browser supports geolocation.
python -m SimpleHTTPServer
For bonus points, use yepnope to load a polyfill if there's no geolocation support.
How to do it in devtools?
Why does clearing todo items take so long? Find the problem using the debugger and fix it.
Try out all of the breakpoints. Break in some critical cases such as when you have no more todo items left in the list.
Write a conditional statement to add functionality when all the todo items have been checked off.
// check remaining items in toggle method Todos.remaining().length // active todo items remaining // if it is zero, do something interesting
Grab source from powpow.html and drop into the bottom of your app.
Change around the particle options in setupParticle()
.
Call yay()
when there are no more todos.
Paul Irish: @paul_irish
Boris Smus: @borismus


001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.juneau.internal; 018 019import java.io.IOException; 020import java.io.OutputStream; 021import java.io.Writer; 022import java.nio.ByteBuffer; 023import java.nio.CharBuffer; 024import java.nio.charset.Charset; 025import java.nio.charset.CharsetDecoder; 026import java.nio.charset.CoderResult; 027import java.nio.charset.CodingErrorAction; 028 029/** 030 * {@link OutputStream} implementation that transforms a byte stream to a 031 * character stream using a specified charset encoding and writes the resulting 032 * stream to a {@link Writer}. The stream is transformed using a 033 * {@link CharsetDecoder} object, guaranteeing that all charset 034 * encodings supported by the JRE are handled correctly. 035 * <p> 036 * The output of the {@link CharsetDecoder} is buffered using a fixed size buffer. 037 * This implies that the data is written to the underlying {@link Writer} in chunks 038 * that are no larger than the size of this buffer. By default, the buffer is 039 * flushed only when it overflows or when {@link #flush()} or {@link #close()} 040 * is called. In general there is therefore no need to wrap the underlying {@link Writer} 041 * in a {@link java.io.BufferedWriter}. {@link WriterOutputStream} can also 042 * be instructed to flush the buffer after each write operation. In this case, all 043 * available data is written immediately to the underlying {@link Writer}, implying that 044 * the current position of the {@link Writer} is correlated to the current position 045 * of the {@link WriterOutputStream}. 046 * <p> 047 * {@link WriterOutputStream} implements the inverse transformation of {@link java.io.OutputStreamWriter}; 048 * in the following example, writing to {@code out2} would have the same result as writing to 049 * {@code out} directly (provided that the byte sequence is legal with respect to the 050 * charset encoding): 051 * <pre> 052 * OutputStream out = ... 053 * Charset cs = ... 054 * OutputStreamWriter writer = new OutputStreamWriter(out, cs); 055 * WriterOutputStream out2 = new WriterOutputStream(writer, cs);</pre> 056 * {@link WriterOutputStream} implements the same transformation as {@link java.io.InputStreamReader}, 057 * except that the control flow is reversed: both classes transform a byte stream 058 * into a character stream, but {@link java.io.InputStreamReader} pulls data from the underlying stream, 059 * while {@link WriterOutputStream} pushes it to the underlying stream. 060 * <p> 061 * Note that while there are use cases where there is no alternative to using 062 * this class, very often the need to use this class is an indication of a flaw 063 * in the design of the code. This class is typically used in situations where an existing 064 * API only accepts an {@link OutputStream} object, but where the stream is known to represent 065 * character data that must be decoded for further use. 066 * <p> 067 * Instances of {@link WriterOutputStream} are not thread safe. 068 * 069 * @since 2.0 070 */ 071public class WriterOutputStream extends OutputStream { 072 private static final int BUFFER_SIZE = 1024; 073 074 private final Writer writer; 075 private final CharsetDecoder decoder; 076 private final boolean writeImmediately; 077 078 /** 079 * ByteBuffer used as input for the decoder. This buffer can be small 080 * as it is used only to transfer the received data to the 081 * decoder. 082 */ 083 private final ByteBuffer decoderIn = ByteBuffer.allocate(128); 084 085 /** 086 * CharBuffer used as output for the decoder. It should be 087 * somewhat larger as we write from this buffer to the 088 * underlying Writer. 089 */ 090 private final CharBuffer decoderOut; 091 092 /** 093 * Constructs a new {@link WriterOutputStream} with a default output buffer size of 1024 094 * characters. The output buffer will only be flushed when it overflows or when {@link #flush()} or {@link #close()} 095 * is called. 096 * 097 * @param writer the target {@link Writer} 098 * @param decoder the charset decoder 099 * @since 2.1 100 */ 101 public WriterOutputStream(final Writer writer, final CharsetDecoder decoder) { 102 this(writer, decoder, BUFFER_SIZE, false); 103 } 104 105 /** 106 * Constructs a new {@link WriterOutputStream}. 107 * 108 * @param writer the target {@link Writer} 109 * @param decoder the charset decoder 110 * @param bufferSize the size of the output buffer in number of characters 111 * @param writeImmediately If {@code true} the output buffer will be flushed after each 112 * write operation, i.e. all available data will be written to the 113 * underlying {@link Writer} immediately. If {@code false}, the 114 * output buffer will only be flushed when it overflows or when 115 * {@link #flush()} or {@link #close()} is called. 116 * @since 2.1 117 */ 118 public WriterOutputStream(final Writer writer, final CharsetDecoder decoder, final int bufferSize, 119 final boolean writeImmediately) { 120 checkIbmJdkWithBrokenUTF16( decoder.charset()); 121 this.writer = writer; 122 this.decoder = decoder; 123 this.writeImmediately = writeImmediately; 124 decoderOut = CharBuffer.allocate(bufferSize); 125 } 126 127 /** 128 * Constructs a new {@link WriterOutputStream}. 129 * 130 * @param writer the target {@link Writer} 131 * @param charset the charset encoding 132 * @param bufferSize the size of the output buffer in number of characters 133 * @param writeImmediately If {@code true} the output buffer will be flushed after each 134 * write operation, i.e. all available data will be written to the 135 * underlying {@link Writer} immediately. If {@code false}, the 136 * output buffer will only be flushed when it overflows or when 137 * {@link #flush()} or {@link #close()} is called. 138 */ 139 public WriterOutputStream(final Writer writer, final Charset charset, final int bufferSize, 140 final boolean writeImmediately) { 141 this(writer, 142 charset.newDecoder() 143 .onMalformedInput(CodingErrorAction.REPLACE) 144 .onUnmappableCharacter(CodingErrorAction.REPLACE) 145 .replaceWith("?"), 146 bufferSize, 147 writeImmediately); 148 } 149 150 /** 151 * Constructs a new {@link WriterOutputStream} with a default output buffer size of 1024 152 * characters. The output buffer will only be flushed when it overflows or when {@link #flush()} or {@link #close()} 153 * is called. 154 * 155 * @param writer the target {@link Writer} 156 * @param charset the charset encoding 157 */ 158 public WriterOutputStream(final Writer writer, final Charset charset) { 159 this(writer, charset, BUFFER_SIZE, false); 160 } 161 162 /** 163 * Constructs a new {@link WriterOutputStream}. 164 * 165 * @param writer the target {@link Writer} 166 * @param charsetName the name of the charset encoding 167 * @param bufferSize the size of the output buffer in number of characters 168 * @param writeImmediately If {@code true} the output buffer will be flushed after each 169 * write operation, i.e. all available data will be written to the 170 * underlying {@link Writer} immediately. If {@code false}, the 171 * output buffer will only be flushed when it overflows or when 172 * {@link #flush()} or {@link #close()} is called. 173 */ 174 public WriterOutputStream(final Writer writer, final String charsetName, final int bufferSize, 175 final boolean writeImmediately) { 176 this(writer, Charset.forName(charsetName), bufferSize, writeImmediately); 177 } 178 179 /** 180 * Constructs a new {@link WriterOutputStream} with a default output buffer size of 1024 181 * characters. The output buffer will only be flushed when it overflows or when {@link #flush()} or {@link #close()} 182 * is called. 183 * 184 * @param writer the target {@link Writer} 185 * @param charsetName the name of the charset encoding 186 */ 187 public WriterOutputStream(final Writer writer, final String charsetName) { 188 this(writer, charsetName, BUFFER_SIZE, false); 189 } 190 191 /** 192 * Write bytes from the specified byte array to the stream. 193 * 194 * @param b the byte array containing the bytes to write 195 * @param off the start offset in the byte array 196 * @param len the number of bytes to write 197 * @throws IOException if an I/O error occurs 198 */ 199 @Override 200 public void write(final byte[] b, int off, int len) throws IOException { 201 while (len > 0) { 202 final int c = Math.min(len, decoderIn.remaining()); 203 decoderIn.put(b, off, c); 204 processInput(false); 205 len -= c; 206 off += c; 207 } 208 if (writeImmediately) { 209 flushOutput(); 210 } 211 } 212 213 /** 214 * Write bytes from the specified byte array to the stream. 215 * 216 * @param b the byte array containing the bytes to write 217 * @throws IOException if an I/O error occurs 218 */ 219 @Override 220 public void write(final byte[] b) throws IOException { 221 write(b, 0, b.length); 222 } 223 224 /** 225 * Write a single byte to the stream. 226 * 227 * @param b the byte to write 228 * @throws IOException if an I/O error occurs 229 */ 230 @Override 231 public void write(final int b) throws IOException { 232 write(new byte[] { (byte)b }, 0, 1); 233 } 234 235 /** 236 * Flush the stream. Any remaining content accumulated in the output buffer 237 * will be written to the underlying {@link Writer}. After that 238 * {@link Writer#flush()} will be called. 239 * @throws IOException if an I/O error occurs 240 */ 241 @Override 242 public void flush() throws IOException { 243 flushOutput(); 244 writer.flush(); 245 } 246 247 /** 248 * Close the stream. Any remaining content accumulated in the output buffer 249 * will be written to the underlying {@link Writer}. After that 250 * {@link Writer#close()} will be called. 251 * @throws IOException if an I/O error occurs 252 */ 253 @Override 254 public void close() throws IOException { 255 processInput(true); 256 flushOutput(); 257 writer.close(); 258 } 259 260 /** 261 * Decode the contents of the input ByteBuffer into a CharBuffer. 262 * 263 * @param endOfInput indicates end of input 264 * @throws IOException if an I/O error occurs 265 */ 266 private void processInput(final boolean endOfInput) throws IOException { 267 // Prepare decoderIn for reading 268 decoderIn.flip(); 269 CoderResult coderResult; 270 while (true) { 271 coderResult = decoder.decode(decoderIn, decoderOut, endOfInput); 272 if (coderResult.isOverflow()) { 273 flushOutput(); 274 } else if (coderResult.isUnderflow()) { 275 break; 276 } else { 277 // The decoder is configured to replace malformed input and unmappable characters, 278 // so we should not get here. 279 throw new IOException("Unexpected coder result"); 280 } 281 } 282 // Discard the bytes that have been read 283 decoderIn.compact(); 284 } 285 286 /** 287 * Flush the output. 288 * 289 * @throws IOException if an I/O error occurs 290 */ 291 private void flushOutput() throws IOException { 292 if (decoderOut.position() > 0) { 293 writer.write(decoderOut.array(), 0, decoderOut.position()); 294 decoderOut.rewind(); 295 } 296 } 297 298 /** 299 * Check if the JDK in use properly supports the given charset. 300 * 301 * @param charset the charset to check the support for 302 */ 303 private static void checkIbmJdkWithBrokenUTF16(final Charset charset){ 304 if (!"UTF-16".equals(charset.name())) { 305 return; 306 } 307 final String TEST_STRING_2 = "v\u00e9s"; 308 final byte[] bytes = TEST_STRING_2.getBytes(charset); 309 310 final CharsetDecoder charsetDecoder2 = charset.newDecoder(); 311 final ByteBuffer bb2 = ByteBuffer.allocate(16); 312 final CharBuffer cb2 = CharBuffer.allocate(TEST_STRING_2.length()); 313 final int len = bytes.length; 314 for (int i = 0; i < len; i++) { 315 bb2.put(bytes[i]); 316 bb2.flip(); 317 try { 318 charsetDecoder2.decode(bb2, cb2, i == (len - 1)); 319 } catch ( final IllegalArgumentException e){ 320 throw new UnsupportedOperationException("UTF-16 requested when runninng on an IBM JDK with broken UTF-16 support. " + 321 "Please find a JDK that supports UTF-16 if you intend to use UF-16 with WriterOutputStream"); 322 } 323 bb2.compact(); 324 } 325 cb2.rewind(); 326 if (!TEST_STRING_2.equals(cb2.toString())){ 327 throw new UnsupportedOperationException("UTF-16 requested when runninng on an IBM JDK with broken UTF-16 support. " + 328 "Please find a JDK that supports UTF-16 if you intend to use UF-16 with WriterOutputStream"); 329 } 330 331 } 332} 333 334 335 336 337 338 339 340