Gloat
web copy, brand voice
The Project
Help global HR tech leader bring a bold new story to life. Developing crystal clear messaging to simplify a complex product offering, all while communicating high-level brand vision.
The Strategy
The Anything Workforce. Gloat's Internal Talent Marketplace empowers employees to be anything, and employers to do anything. This creates an entirely new type of workforce. Truly the future of work.
The Results
Fueling global growth for a world-class brand. Gloat timed its brand launch with a $57M series C fundraise. Sharp new messaging helped frame the narrative and instantly educate the global market about their big, bold brand vision.


meter.AverageValueMeter()
def on_batch_start(self, state):
self.loggers[state.loader_mode].add_scalar(
"data time", time.time() - self.time, state.step)
def on_batch_end(self, state):
lm = state.loader_mode
state.bs = state.bs or state.target.shape[0]
lambda: meter.AverageValueMeter())
def on_batch_start(self, state):
state.batch_metrics["data time"] = time.time() - self.time
def on_batch_end(self, state):
lm = state.loader_mode


Dear {{ user.username }},
unfortunately your metrics export file can't be parsed. Please check if a needed column is missing or any values are mangled. You can upload a new metrics export anytime. Please contact us, if you are sure your data is correct.
Sincerely,
The traipor Team


Babylon Reloaded
The Babylon.js team seems pretty excited by their 4.2 release and from the WebXR docs, change-log, and demo they might be on to something. Ranaan Weber has been especially busy with XR integration but kudos to the entire team for the big release.
Create WebXR Voxels
It feels like more people are picking up WebXR because every week I run across interesting projects like this experience editor from Daniel Esteban Nombela. The demo video and examples show that this open source project has a lot of potential.
The Oculus Go Wasn't Designed For Black Hair
One designer's approach to widening VR's reach:
For my study, I used the Oculus Go device by Facebook. I chose that device because it was easy to use and lightweight. I can use the device anywhere and pre-downloaded all my content so that Wi-Fi wouldn’t be an issue. From an accessibility perspective, the Go felt like the right decision. But that was before I realized that Black hair was going to be a major issue for the completion of my work.
AIGA In Space
2020 provided AIGA St. Louis with a hard design problem for their annual design show and the immersive web was a part of the solution. With the help of a local agency they created a custom Hubs space for the event. Podcast host Kent Bye recorded a guided tour of the space and show entries, as well.
Global XR Bootcamp Videos
Last week I covered the Global XR Bootcamp and this week the organizers have graciously released all of the talks and sessions in a YouTube play-list. There are a variety of XR-related topics but these popped out as particularly interesting for immersive web creators:
- UI Design for WebXR
- Increasing Scope of WebXR Projects
- Taking Web Based XR to the Hololens


I have experience in Deep learning/Machine learning, My interest including Model Compression and TinyML, Additionally, I also have experience with Hadoop distributed computing, Android App design and Web App design.
Develop Acer Nidus which collects user experience on acer cellphone, analyzing the data by hadoop, and to improve the user experience
Develop a google app engine called Acer DADA, which is designed to subscribe and deploy app to acer device<Introduction> <NEWS>
Working on the computer vision program, including object detection and face recognition, and deploy the application with TensorRT or Intel OpenVINO to get acceralated
Yang, Cheng-Zen, and Ming-Hsuan Tu. "LACTA: An Enhanced Automatic Software Categorization on the Native Code of Android Applications." Proceedings of the International MultiConference of Engineers and Computer Scientists. Vol. 1. 2012.<PDF>
Ye-In Chang, Jun-Hong Shen, Chia-En Li, Zih-Siang Chen and Ming-Hsuan Tu, 2019, Oct., “Mining Image Frequent Patterns based on a Frequent Pattern List in Image Databases”, accepted by The Journal of Supercomputing (SCI). <PDF>


@remarks The Hashtable is a collection that uses the hash code and equality of a key value to identify a specific value stored. Keys can be primitives, strings, objects, and variant sub-types such as Empty and Null.
The default usage of an object as a key is to use the ObjPtr for the hash code and a reference check for equality. This may not be suitable for a specific application. The objects used a key by a Hashtable should implement the IObject interface and provide more appropriate GetHashCode and Equals methods for the specific application.
The load factor of a Hashtable determines the maximum ratio of elements to buckets. Smaller load factors cause faster average lookup times at the cost of increased memory consumption. The default load factor of 1.0 generally provides the best balance between speed and size. A different load factor can also be specified when the Hashtable is created.
As elements are added to a Hashtable, the actual load factor of the Hashtable increases. When the actual load factor reaches the specified load factor, the number of buckets in the Hashtable is automatically increased to the smallest prime number that is larger than twice the current number of Hashtable buckets.
The For Each statement enumerates each element in the collection. Since each element of the Hashtable is a key/value pair, the element type is not the type of the key or the type of the value. Instead, the element type is DictionaryEntry. For example:
Dim Entry As DictionaryEntry For Each Entry In MyHashTable ' ... Next
Public Sub Main() ' Create a new hash table. Dim OpenWith As New Hashtable ' Add some elements to the hash table. There are no ' duplicate keys, but some of the values are duplicates. OpenWith.Add "txt", "notepad.exe" OpenWith.Add "bmp", "paint.exe" OpenWith.Add "dib", "paint.exe" OpenWith.Add "rtf", "wordpad.exe" ' The Add method throws an exception if the new key is ' already in the hash table. On Error GoTo Catch OpenWith.Add "txt", "winword.exe" GoTo EndTry Catch: Debug.Print "An element with Key = ""txt"" already exists." EndTry: ' The Item property is the default property, so you ' can omit its name when accessing elements. Debug.Print CorString.Format("For key = ""rtf"", value = {0}.", OpenWith("rtf")) ' The default Item property can be used to change the value ' associated with a key. OpenWith("rtf") = "winword.exe" Debug.Print CorString.Format("For key = ""rtf"", value = {0}.", OpenWith("rtf")) ' If a key does not exist, setting the default Item property ' for that key adds a new key/value pair. OpenWith("doc") = "winword.exe" ' ContainsKey can be used to test keys before inserting ' them. If Not OpenWith.ContainsKey("ht") Then OpenWith.Add "ht", "hypertrm.exe" Debug.Print CorString.Format("Value added for key = ""ht"": {0}", OpenWith("ht")) End If ' When you use foreach to enumerate hash table elements, ' the elements are retrieved as KeyValuePair objects. Dim DE As DictionaryEntry Debug.Print For Each DE In OpenWith Debug.Print CorString.Format("Key = {0}, Value = {1}", DE.Key, DE.Value) Next DE ' To get the values alone, use the Values property. Dim ValueColl As ICollection Set ValueColl = OpenWith.Values ' The elements of the ValueCollection are strongly typed ' with the type that was specified for hash table values. Dim Value As Variant Debug.Print For Each Value In ValueColl Debug.Print CorString.Format("Value = {0}", Value) Next ' To get the keys alone, use the Keys property. Dim KeyColl As ICollection Set KeyColl = OpenWith.Keys ' The elements of the KeyCollection are strongly typed ' with the type that was specified for hash table keys. Dim Key As Variant Debug.Print For Each Key In KeyColl Debug.Print CorString.Format("Key = {0}", Key) Next ' Use the Remove method to remove a key/value pair. Debug.Print vbLf & "Remove(""doc"")" OpenWith.Remove "doc" If Not OpenWith.ContainsKey("doc") Then Debug.Print "Key ""doc"" is not found." End If End Sub ' This example code produces the following output. ' ' An element with Key = "txt" already exists. ' For key = "rtf", value = wordpad.exe. ' For key = "rtf", value = winword.exe. ' Value added for key = "ht": hypertrm.exe ' ' Key = dib, Value = paint.exe ' Key = ht, Value = hypertrm.exe ' Key = doc, Value = winword.exe ' Key = rtf, Value = winword.exe ' Key = bmp, Value = paint.exe ' Key = txt, Value = notepad.exe ' ' Value = Paint.exe ' Value = hypertrm.exe ' Value = winword.exe ' Value = winword.exe ' Value = Paint.exe ' Value = notepad.exe ' ' Key = dib ' Key = ht ' Key = doc ' Key = rtf ' Key = bmp ' Key = txt ' ' Remove ("doc") ' Key "doc" is not found.


Contributing to the documentation
Contributing to the documentation benefits everyone who uses pandas. We encourage you to help us improve the documentation, and you don\'t have to be an expert on pandas to do so! In fact, there are sections of the docs that are worse off after being written by experts. If something in the docs doesn\'t make sense to you, updating the relevant section after you figure it out is a great way to ensure it will help the next person.
About the pandas documentation
The documentation is written in reStructuredText, which is almost like writing in plain English, and built using Sphinx. The Sphinx Documentation has an excellent introduction to reST. Review the Sphinx docs to perform more complex changes to the documentation as well.
Some other important things to know about the docs:
-
The pandas documentation consists of two parts: the docstrings in the code itself and the docs in this folder
doc/
.The docstrings provide a clear explanation of the usage of the individual functions, while the documentation in this folder consists of tutorial-like overviews per topic together with some other information (what\'s new, installation, etc).
-
The docstrings follow a pandas convention, based on the Numpy Docstring Standard. Follow the pandas docstring guide for detailed instructions on how to write a correct docstring.
-
The tutorials make heavy use of the ipython directive sphinx extension. This directive lets you put code in the documentation which will be run during the doc build. For example:
.. ipython:: python x = 2 x**3
will be rendered as:
In [1]: x = 2 In [2]: x**3 Out[2]: 8
Almost all code examples in the docs are run (and the output saved) during the doc build. This approach means that code examples will always be up to date, but it does make the doc building a bit more complex.
-
Our API documentation in
doc/source/api.rst
houses the auto-generated documentation from the docstrings. For classes, there are a few subtleties around controlling which methods and attributes have pages auto-generated.We have two autosummary templates for classes.
_templates/autosummary/class.rst
. Use this when you want to automatically generate a page for every public method and attribute on the class. TheAttributes
andMethods
sections will be automatically added to the class\' rendered documentation by numpydoc. SeeDataFrame
for an example._templates/autosummary/class_without_autosummary
. Use this when you want to pick a subset of methods / attributes to auto-generate pages for. When using this template, you should include anAttributes
andMethods
section in the class docstring. SeeCategoricalIndex
for an example.
Every method should be included in a
toctree
inapi.rst
, else Sphinx will emit a warning.
The .rst
files are used to automatically generate Markdown and HTML
versions of the docs. For this reason, please do not edit
CONTRIBUTING.md
directly, but instead make any changes to
doc/source/development/contributing.rst
. Then, to generate
CONTRIBUTING.md
, use pandoc with
the following command:
pandoc doc/source/development/contributing.rst -t markdown_github > CONTRIBUTING.md
The utility script scripts/validate_docstrings.py
can be used to get a
csv summary of the API documentation. And also validate common errors in
the docstring of a specific class, function or method. The summary also
compares the list of methods documented in doc/source/api.rst
(which
is used to generate the API Reference page)
and the actual public methods. This will identify methods documented in
doc/source/api.rst
that are not actually class methods, and existing
methods that are not documented in doc/source/api.rst
.
Updating a pandas docstring
When improving a single function or method\'s docstring, it is not
necessarily needed to build the full documentation (see next section).
However, there is a script that checks a docstring (for example for the
DataFrame.mean
method):
python scripts/validate_docstrings.py pandas.DataFrame.mean
This script will indicate some formatting errors if present, and will also run and test the examples included in the docstring. Check the pandas docstring guide for a detailed guide on how to format the docstring.
The examples in the docstring (\'doctests\') must be valid Python code, that in a deterministic way returns the presented output, and that can be copied and run by users. This can be checked with the script above, and is also tested on Travis. A failing doctest will be a blocker for merging a PR. Check the examples section in the docstring guide for some tips and tricks to get the doctests passing.
When doing a PR with a docstring update, it is good to post the output of the validation script in a comment on github.
How to build the pandas documentation
Requirements
First, you need to have a development environment to be able to build pandas (see the docs on creating a development environment above).
Building the documentation
So how do you build the docs? Navigate to your local doc/
directory in
the console and run:
python make.py html
Then you can find the HTML output in the folder doc/build/html/
.
The first time you build the docs, it will take quite a while because it has to run all the code examples and build all the generated docstring pages. In subsequent evocations, sphinx will try to only build the pages that have been modified.
If you want to do a full clean build, do:
python make.py clean
python make.py html
You can tell make.py
to compile only a single section of the docs,
greatly reducing the turn-around time for checking your changes.
# omit autosummary and API section
python make.py clean
python make.py --no-api
# compile the docs with only a single section, relative to the "source" folder.
# For example, compiling only this guide (docs/source/development/contributing.rst)
python make.py clean
python make.py --single development/contributing.rst
# compile the reference docs for a single function
python make.py clean
python make.py --single pandas.DataFrame.join
For comparison, a full documentation build may take 15 minutes, but a single section may take 15 seconds. Subsequent builds, which only process portions you have changed, will be faster.
You can also specify to use multiple cores to speed up the documentation build:
python make.py html --num-jobs 4
Open the following file in a web browser to see the full documentation you just built:
doc/build/html/index.html
And you'll have the satisfaction of seeing your new and improved documentation!
Building master branch documentation
When pull requests are merged into the pandas master
branch, the
main parts of the documentation are also built by Travis-CI. These docs
are then hosted here, see
also the Continuous Integration section.


We use the fantastic Angular UI Tree module to create awesome, fully-draggable nested lists. Try it out!
{{ list | json }}


North End Park in Boston, Massachusetts serves as a vital link for much of northeastern boston and allows for interconnectivity through many aspects of the city. However, the end of this strip is abruptly cut off by the rising of the highway underneath it, leaving much to be desired for the conclusion of such an essential park and urban connector.
This competition entry seeks to mend the park's many links through a network of paths that create different atmospheres and elevations in response to the queues received from the city fabric. Boston, known for its culture, commerce, and tourist appeal, deserves a space malleable enough to allow for all these different types of events, which often involve very different densities of population.
With this in mind, the site is split with monuments and pin points that attract the user and define the center of each, smaller space. This allows for more personalized activities, though these spaces can quickly be unified when needed, fitting for the density of a city with many varied activities.
Web Address
Mailing Address
4705 W Le Moyne St
Chicago, IL 60651


| v-responsive= | XS | SM | MD | LG | XL |
|---|---|---|---|---|---|
| ['hidden-all', 'xs', 'xl'] | . | . | |||
| ['hidden-xs'] | . | . | . | . | |
| ['hidden-xs', 'hidden-sm'] | . | . | . | ||
| ['hidden-all', 'lg', 'xl'] | . | . | |||
| ['hidden-all', 'xl'] | . | ||||
| ['hidden-all', 'xs', 'md', 'xl'] | . | . | . |
*I am hidden on extra small device screens*
*I am hidden on small device screens*
#This elements visibility is controlled by an objectExtra small
Small
Middle
Large
Extra large
Visible on smartphone
Visible on desktop
Extra small
Small
Middle
Large
One - extra thin
Only three "visible"
"hidde"-one


What is React?React is a JavaScript library for building user interfaces.
Simple example
class FruitList extends React.Component {
render() {
return (
Fruit List for {this.props.name}
orange
banana
apple
);
}
}
Good and bad sides of the ReactGOODEasy to understand what a component will render
Declarative code → predictable code
You don't really need to study JS in the view file in order to understand what the file does
Easy to mix HTML and JS
You do it already with template libraries (e.g. Handlebars, Mustache, Underscore etc.)
Uses full power of JS
Decoupling templates from logic does not rely on the templates’ primitive abstractions, but uses full power of JavaScript in displaying views
No complex two-way data flow
Uses simple one-way reactive data flow
Easier to understand than two-way binding
Uses less code
React dev tools
React Chrome extension makes debugging so much easier
BADReact is nothing but the view
No events
No XHR
No data / models
No promises / deferreds
No idea how to add all of the above
Very little info in the docs
But it's not hard to learn
Architectural annoyances
Setting state on unmounted components
Building JSX requires some extra work
But most of the work is already done for you by react-tools
No support for older browsers
React won't work with IE8
Most important terms in ReactComponent
Components are self-contained reusable building blocks of web application.
React components are basically just idempotent functions (same input produces same output).
They describe your UI at any point in time, just like a server-rendered app.
Props
Passed down to component from parent component and represents data for the component
JSX
Arguably, one of the coolest things in React
XML-like syntax for generating component's HTML
Easier to read and understand large DOM trees
Translates to plain JavaScript using react-tools
State
Represents internal state of the component
Accessed via this.state
When a component's state data changes, the rendered markup will be updated by re-invoking render() method
Virtual DOM
The virtual DOM is used for efficient re-rendering of the DOM
React aims to re-render the virtual tree only when the state changes
Uses 2 virtual trees (new and previous) to find differences and batch update real DOM
Why was React developed?
Complexity of two-way data binding
Bad UX from using "cascading updates" of DOM tree
A lot of data on a page changing over time
Complexity of Facebook's UI architecture
Shift from MVC mentality
Thanks for your attention :)


peptides enriched peptide AVARDA viral virus VirScan infections antibody infection pairwise number shared Fig associated human alignments significant OpenUrl analysis represent testing viruses acid Module using Pt’s alignment designed library results CrossRef graph potential set versus &; Peptides day identified used IgG provided selected antibodies binomial enrichment multiple new patients peptides. single time virus, virusi AVARDA. Download Table additionally clinical detected network viruses. z-scores Figure View according colored counts indicates normalized representation specificities study database encephalitis evidence non-shared peptides, performed plotted read related scores serum significance specific utility Day Open Points amino blue consideration considered data-hide-link-title=""> data-icon-position="" dataset diagnosis figure infection, likely marked potentially removed sample shown tab test z-score (e.g., CNS Enriched Viral algorithm aligning analyses analysis. approach based collected cross data determined drawn enrichments independence infections, non-overlapping null order peptide-virus previously regression responses samples sensitivity serological viruses, >;. <;/div>;<;/div>;" (i) (ii) ;<;div Abstract Antibody Pt, Science analyses. analytical black cohort corresponds data. described differentially encephalitis. given hypothesis increased library. limited linear longitudinal nucleic numbers outlined overlaps patient possible provide red remaining represent. response scatterplot sequence sera setting seven share total xmlns=";http://www.w.org//xhtml";>;<;span (iii) AVARDA’s Clinical FREE HSV Network Supplemental Text Web age. align alignments, anti-viral binding cross-reactivity developed diagnostic did distinguish epidemiological final framework heatmap herpesvirus however, immune important improve infection. infections. information months observed p-values pBH probabilistic protein provides reactivity sampling sequences sets species threshold type years <;strong>;(A)<;/strong>; (A) (Pt), (y-axis). Additionally, Clin. First, HSV, Hospital, Human Microbiol. Pairwise Pt[[#x]]s Robust Scatterplots Sci. VirScan/AVARDA Virus adjusted aligned alignment. alignments. and/or annotated assay assessment autoimmunity axis blue. column comparisons comprehensive confidence connected cross-reactive design detect determine edges encephalitis, enriched, enterovirus expected false frequency future highly hits’ increasing independent infectious intervals lines long longitudinally module obtained overlapping p-value’ particularly previous prior probability process represented robust rubella scatterplot. screening serology shows statistically suggesting tests undiagnosed virus. virusj, ‘total


Dynamic Forms Builder
V0.1.0
Form
Html source
Xml source
Preview
File list
Label
Image
Input Text
Password
TextArea
Radio Button
Checkbox
Drop-Down Menu
Selectable List
File
DatePicker
Button
Panel
Edit
Delete
Edit Form
Add Column
Load
Save
© 2014/01/11- Author: Peter contact info: +8618651806651 QQ:116352437


Gunmen kill three policemen in Kaduna - Premium Times Nigeria
by Agency ReportThree policemen serving at Fadan Karshi Outpost in Sanga Local Government Area of Kaduna State were on Tuesday gunned down by unknown gunmen at a checkpoint between Fadan Karshi and Sabon Gida village.
The Vice Chairman of Sanga Local Government Council, Abubakar Abba, confirmed the incident to News Agency of Nigeria (NAN) on Wednesday.
He added that the bodies have been deposited at the Gwantu General Hospital.
“Two Policemen died on the spot and the third one died on the way to the hospital.
READ ALSO: Kaduna generates N30.3bn IGR in 10 months – KDIRS
Meanwhile, investigation had commenced as security agents have swung into action while members of the community have been urged to be calm,” he said.
He decried the increase in the wave of crime in the area and appealed to relevant security agencies to rise up to the challenge.
The Deputy Police Public Relations Officer of Kaduna State Command, Suleiman Abubakar, an assistant superintendent of police, confirmed the incident.
He said a statement would soon be issued on the development.


--- layout: post title: Off for the weekend... date: 2004-10-22 00:00:00 category: personal ---
...to Nicki's wedding in Historic Rochester. No email for 36 hours - gah!


Construction, real estate contributions
Candidates for mayor and City Council in Saturday’s election received almost $495,000 from donors with strong ties to the construction and real estate industries between July and March. Here are the 8 candidates that received the most from those sectors.


Partitioning and constraints part 1 - UNIQUE
Partitioning in PostgreSQL has been an artisanal work for a long time now. And despite the current discussion running since few month on PostgreSQL’s hackers mailing list, it will probably stay this way for some time again. Just because it requires a lot of brainstorm and work.
Nowadays, I believe the current state of partitioning under PostgreSQL is quite well documented and under control most of the time. You can find a lot of informations about that online, starting by PostgreSQL documentation itself, but about tooling as well, extension, etc.
However, there’s still a dark side, not well covered or understood about partitioning under PostgreSQL: constraints related to them. More specifically unique constraints covering all partitions of a partitioned table and how to refer to them from foreign keys. This series of article analysis how to implement them by hands ourself thanks to some PostgreSQL great features, detailing how to avoid major traps. You will see that crafting these «constraints» wannabes requires some attention, but is definitely doable, in a clean way.
As this subject requires quite some details and explanations, I decided to split it in multiple articles. This first part is about creating a UNIQUE constraint across all partitions of a table. Next one covers how to reference a partitioned table. And maybe some other depending on the motivation, inspiration and feedback.
Study case
I chose to illustrate this article with a table partitioned by date range. This is a fairly frequent practice and adapting this article to another partitioning scheme is quite easy anyway.
Range partitioning on the PK has no challenge: each value of the PK could only
live in strictly one child, each of them enforcing the PK internally. So the
uniqueness of this PK across the partitions is already enforced by constraints
CHECK and UNIQUE of each partition. That’s why my study case partition range
using a timestampstz
column. As the CHECKs do not apply on the primary key
values, each of its values can be in any partition, which can lead to duplicate
values residing in different partitions. Exactly what we really want to avoid.
So here is the dummy schema with table master
partitioned across 5 childs
using a date range key partitioning ts
.
The SET DEFAULT
are only there to keep other commands simple to read. Note
that I do not create the trigger on INSERT and UPDATE on the master table. This
is out of the scope of this article, will not be needed and add no challenge to
the subject.
The naive solution
Of course, the whole trick revolves around triggers. We have to check the uniqueness of a PK value across all partitions after any INSERT or UPDATE on any of them, for each rows. Let’s dive in and get wet with a first naive version of such a trigger:
Obviously, each partition need the trigger to check that the PK value it is about to write does not already exist in one of its siblings. The trigger function itself is quite easy to understand: if we find a row with the same value as the PK, raise an exception. Tests sounds promising:
OK, it works like expected. But there is two big issues with this situation. The first one is that a race condition involving two transactions or more is able to break our home made unique constraint:
The second issue is that real constraints can be deferred, which means constraints are disabled during a transaction and enforced on user request and at the end of the transaction by default. In other words, using deferred constraints allows you to violate them temporarilly during a transaction as far as everything is respected at the end. For more information about this mechanism, see the SET CONSTAINTS, CREATE TABLE and… the CREATE TRIGGER pages.
Yes, documentation says triggers can be deferred when defined as
CONSTRAINT TRIGGER
. So we can solve this issue by recreating our triggers:
The INITIALLY IMMEDIATE
means the trigger constraint will be executed right
after the related statement. The opposite DEFERRED
behavior fire the trigger
at the very end of the transaction unless the user decide to SET CONSTRAINTS {
ALL | name [, ...] } IMMEDIATE
somewhere during the transaction.
Defering the trigger to avoid the race condition ?
Now, if you step back a second to look at what we have, you might wonder if
forcing our constraints triggers to be DEFERRABLE INITIALLY DEFERRED
would
solve the race condition. As constraints are checked at the very end of the
transaction, maybe this would work by kind of serializing each transaction and
their constraints? Short answer is: no.
For one, deferred constraints comes with a cost in performance we might not want to pay at each transaction. But most importantly, if you declared your trigger as deferrable, one could set it to IMMEDIATE, even if it is set as INITIALLY DEFERRED. So this is definitely not a viable solution. But anyway, occulting this for the purpose of the study, does it work?
Again, no. Even if it solves the “human timing race condition”, there’s another
very small window where another race condition is possible in the core of
PostgreSQL, when multiple transactions do not conflict and get committed all
together at the exact same time. This idea itself sounds suspicious anyway, too
fragile. If there is no good ol’locks floating around, there’s a race condition
close enough to break things. It is pretty easy to prove with the following
bash loop hammering each partitions with 100 INSERTs with colliding values as
PK. Note that the triggers has been altered to INITIALLY DEFERRED
:
Well, that’s pretty bad, we have a bunch of duplicated key. 23 of them appear in two different partitions, three others in three different partitions and even one in all of them! I could find duplicates like that each time I ran this scenario. Note that on 500 inserts, only 209 survived in total. That makes 291 exceptions raised out of 324 expected, counting the duplicated keys that were not caught.
Isolation level?
Well, last chance. If this many transactions were committed in the exact same
time, maybe we can force them to serialize with isolation level SERIALIZABLE
?
After applying the preceding query, I re-ran the same scenario as the previous test: only 76 rows survived out of the 500 INSERTs, all of them unique. At last! Ok, this reflects what we had in mind previously, but we had to force PostgreSQL to really serialize transactions. Any other isolation level will just fail. And by the way, this works with IMMEDIATE and DEFERRED triggers as transactions are virtually serialized or rollback’ed. Log file confirms a lot of serialization conflicts were raised, grep’ing the log file shows 415 serialization exceptions and only 9 from our trigger:
This solution work, but having to stay in SERIALIZABLE mode to achieve our goal is a heavy constraint to carry. Moreover, we have the same problem than with DEFERRED triggers: as a simple user can change its isolation level, any bug in the application or not informed user can lead to scenarios with silent duplications. Fortunately, another simpler and safer solution exist.
Real solution: adding locks
The SERIALIZABLE
solution works because to emulate serial transaction
execution for all transactions, it takes predicate locks behind the scene
to detect serialization anomalies. What about taking care of this ourselves? We
are used to locks, we know they work fine.
The best solution sounds to acquire a lock before being able to write out the value. This actually boil down to forcing conflicting transactions on a lock to serialize themselves, instead of having the engine do all the works for everyone. The question now is «how can we hold a lock on something that doesn’t exists yet?». The answer is: Advisory Locks. Advisory locks offers to applications a lock mechanism and manager on arbitrary integer values. It does not applies on real objects, transaction or rows. As the documentation says: «It is up to the application to use them correctly».
The idea now is simply to acquire an advisory lock on the same value as NEW.id in the trigger function. It should do the trick, cleanly, safely:
And with this version of master_id_pkey()
, in “read committed” isolation
level, here is result of the same scenario as in the previous chapter,
executing 500 INSERTs concurrently with conflicting keys:
Sounds good. What about a small pgbench scenario?
After this 5 minute run with 5 workers inserting as fast as they can highly conflicting data, we have 48,351 rows in the partitions, 82,557 conflicting rows were rejected and not a single duplicate in the table.
I couldn’t find any duplicated value after stressing this solution. Whatever the number of queries for each parallel sessions working, whatever the pgbench scenario, I had no unique violation across partitions, as expected. This work in any transaction isolation level and user can not turn this off by mistake. This is safe…
…Well, as far as a superuser or the owner of the table do not disable the trigger on the table, obviously. But hey, they can drop the unique constraint on a normal table as well, right?
Wow, at last, finished. What? No? I can hear you thinking it only applies on integers. OK, bonus.
Supporting other types
Supporting unique constraint on integers was straightforward using advisory
locks. But how can this applies to other types? Like text for instance ? Easy:
hash it1! For the purpose of this last chapter, lets add a unique constraint
on comment
:
If you followed this far, no need to play the “find the error game” to identify
what’s the most important change here. The lock is taken on the result of the
simple text to integer hash function hashtext
, already provided in
PostgreSQL’s core.
Ok, I can hear optimization freaks crying. Theoretically, two different strings can collide. But this hash function is supposed to compute uniform results amongst 4 billion possible values. I can live with the probability of two concurrent writes involving two different strings colliding here. The “1 case” out of 4 billion is already enough for me, but these colliding strings has to show up at the exact same time (at least in the same bunch of few milliseconds). And even if you are unlucky enough to experience this, these two transactions will just be serialized, not a big deal.
And if you are really not comfortable with this, you understood the trick here anyway: find a way to hold a lock somewhere to avoid concurrency. Use some other hashing function, create an extension with its own lock machinery in memory, write in an unlogged table (erk), whatever you want.
Time to test now.
Wow (again), only 29,785 rows out of 93,902 transactions escaped of that intense-colliding scenario. And we only find unique values across all partitions, as expected. Aaaaand grep-ing from the log file, I can find 64,117 rejected rows…
Conclusion
Such a long way already. Thank you for reading so far. At first I thought I could write about unique and foreign keys in the same article, but look at what we already covered…We talked about constraint triggers, race conditions, isolation level, advisory locks and hashing… few!
I do realize the solution provided here requires some skills and attention. This is not all magic and easy to play with. As long as this feature is not handled directly by the core, partitioning will require people to craft their tools themselves. In the meantime, it is a nice subject to learn more about these concepts, your favorite RDBMS and play with it.
I think this way of guaranteeing unicity over several partitions is bulletproof. If you think you found a loophole, please send me some feedback, I’ll be pleased to learn about them.
And don’t forget, we are not done! Lot of fun with foreign keys in the next part! Stay tuned!
-
No data has been harmed during this test. ↩
Comments Leave a comment by email or Disqus
Note: I only publish your name/pseudo, mail subject and content. I will NOT publish your email address.
No comments yet.


class .body-text
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
class .body-text-secondary
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
class .tertiary-info
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
class .tertiary-info-secondary
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.


The Porcelain Rack is used for managing items between two states: active and inactive. The control accepts two input arrays, as well as some optional configuration properties to control how list items are rendered.


% if not post:
Markdown post editor
If you have JavaScript disabled, please enable it.
Once you've typed some Markdown, hit the preview
button at the top to preview it before saving.
Try some code:
Or a table:
| Header 1 |
Header 2 |
Cell 1 |
Cell 2 link |
| Cell 3 |
Cell 4 |
% else:
${post.html}
% endif


TFlow technologies is a traffic management system meant to help first responders such as paramedics, fire fighters and police officers get to emergencies in a faster and safer way. All emergency vehicles are equipped with a GPS, which shares their location with TFlow. With this information, TFlow will get first responders there when you need them the most.
Your vehicle is more than just a means of transportation. It is a place that should feel safe and be at the finest edge of technologies. TCertified is a way to discern, a way to know that your car is up to tomorrow's standards. A vehicle that is Tcertified can efficiently alert you when a emergency is happening in your vicinity. It means that the vehicle has been built following firm and precise standards. TCertified is among the only car certification that is recognized by the government.
Meet Our Team!


The Problem
When configuring KeepaliveD using Puppet, sometimes an interface name has to be used. Imagine a server with 2 interfaces (eth0
,eth1
), where one is facing the internal network and one is facing the internet.
My puppet configuration for an internet-facing virtual interface can be something like:
keepalived::vrrp::instance { 'external_interface':
interface => 'eth1',
state => 'MASTER',
virtual_router_id => '50',
priority => '100',
virtual_ipaddress => [ '<IP_ADDRESS>', '<IP_ADDRESS>', '<IP_ADDRESS>' ],
}
However, by doing so, I'm assuming that eth1 is the external network interface. When configuring the server manually, I use ifconfig
to manually check for misconfigurations (e.g. eth0
is the internet-facing interface). I'd like to do the same on Puppet.
The Solution
Until I have the courage to automatically rename my network devices, I configured Puppet to fail the catalog compilation (thus avoid misconfiguring KeepaliveD) whenever an adapter doesn't have the address I expect it to be (meaning it's misconfigured). I use this:
define segment_verify(
$iface_name=$title,
$required_network=undef,
$segment_regex=undef
){
# resolve network
if $segment_regex {
if $required_network { fail( 'Cannot define both required_network and segment_regex' ) }
else { $regex = $segment_regex }
} else {
case $required_network {
private: { $regex = '^10\.0\.0\.' }
public: { $regex = '^192\.44\.283\.$' }
default: { fail( "Unkown required_network '${required_network}'" ) }
}
}
$ip = inline_template("<%=@ipaddress_${iface_name}%>")
if !$ip { fail("Could not find IP of interface $iface_name") }
else {
$match = inline_template("<%=if /${regex}/.match('${ip}') then 'yes' else 'no' end %>")
if $match != 'yes' { fail( "Interface ${iface_name} with IP ${ip} doesn't match '${regex}'" ) }
}
}
As you can see, this code is hardly elegant. I can't use CIDR notations ("<IP_ADDRESS>/24") and I use ruby templates for the regex. However, it works.
This form of work is imposed on me because Puppet's DSL is designed to be declarative rather than procedural, so many "procedural" bits are broken. In my case, there is no possibility to convert a provided string (^10\.0\.0\.
) to a regular expression, so I have to accomplish that using templates. Same oddity for getting ipaddress_ETHNAME
.
I guess I could use a local resource rather than a function, but this method does its trick - it allows me to specify a network adapter and a regex its IP should match to, and fail the catalog if it's not so. For instance:
segment_verify{ 'eth0':
required_network => 'private',
}
segment_verify { 'eth1_ends_with_100',
iface_name => 'eth1',
segment_regex => '\.100$'
}


Seat and back with upholstery made of cold cure foam. Steel frame, available in matt powder-coated black
Seat and back with upholstery made of cold cure foam.
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nisi, et.


React Agent synchronizes client-side and server-side state. It can be included in any React project without conflict with other state management tools or REST APIs.
React Agent is easy to learn.
Here's the basic idea: the client runs 'actions' that are defined on the server-side.
run('addUser', { user: 'Billy' })
These actions can be as powerful as you want -- i.e. CRUD operations, API calls, and authentication. Moreover, clients can subscribe to server-side actions so that they receive live updates.
React Agent includes offline-support to render optimistic updates and then synchronization on reestablished network connection. It also features time travel debugging.
Why use React Agent?
The popular conceptualization of state management stores state in two places: data on the client-side and data on the server-side.
To connect these, front-end and back-end developers usually write a lot of code such as HTTP requests, controllers, and routes. It can get complicated.
In contrast, React Agent serves as a communication channel between the client and the server. It abstracts state transfer to make it super easy to interact between the client and server.
Install the package:
npm install react-agent --save
See React Agent for information about client-side set-up.
Install the package:
npm install react-agent-server --save
See React Agent Server for information about server-side set-up.
Please submit issues/pull requests if you have feedback or message the React Agent team to be added as a contributor<EMAIL_ADDRESS>Tom Rosenblatt - https://github.com/tskittles
Eric Choi - https://github.com/eric2turbo
Henry Au - https://github.com/hhau01
Andrew Harris - https://github.com/didrio
This project is licensed under the MIT License - see the LICENSE.txt file for details


Trump receives warm welcome at Alabama football game
WASHINGTON, Nov 10 — President Donald Trump travelled to the deep South yesterday to watch a hotly anticipated college football match and bask in the adulation of fans in the staunchly conservative region.
Trump, the target of an impeachment investigation that has consumed Washington, was greeted with loud cheers from the crowd of more than 100,000 when he entered his luxury box at Bryant-Denny Stadium in Tuscaloosa, Alabama.
Some chants of “USA” also rang out as Trump waved from near midfield.
Later in the game, the US president received another loud ovation as he was shown on the stadium screens, though there were also some scatted boos as he waved.
First Lady Melania and lawmakers from Alabama and Louisiana accompanied Trump. Pundits noted that Trump’s entourage included Congressman Bradley Byrne, who is running against Trump’s former attorney general Jeff Sessions in the Alabama senate race.
The football game between Louisiana State University and the University of Alabama was the third sporting event that Trump has attended in the past two weeks.
The reception he received yesterday was far warmer than the one he got on October 28 when he attended a World Series game in deeply liberal Washington between the Nationals and the Houston Astros.
The crowd had been cheering military members at the game but switched to loud and sustained booing when the stadium’s video display showed Trump. Fans then started chanting “Lock him up!”
On November 3, Trump returned to his hometown of New York to take in a UFC fight, where he was greeted with both cheers and jeers when he walked into Madison Square Garden.
No. 2 LSU beat No. 3 Alabama 46-41 yesterday in a matchup that had been hyped as the “Game of the Century.” — AFP


The namespace Inetdev.Context
provides what we called the
Application Context which is an object factory that implements the Inversion
Of Control (IoC) pattern.
This factory is based on the Spring Framework for Java and implements a property based IoC container.
The object factories are configured through XML files with two specific
extensions: *.xcntx
files allows the configuration of objects
that the application context will provide and *.xpckg
files, that
allows the configuration of packages to be scanned for context files (*.xcntx).
Factory configurations files must conform and are validated against XSD schemas.
A configured object looks like this:
<!-- Object: GroupMappings -->
<object name="GroupMappings" singleton="true"
type="Inetdev.Data.ColumnPropertyMappings, Inetdev.Data, Version=<IP_ADDRESS>, Culture=Neutral, PublicKeyToken=856a2402e38a9992">
<property name="Item">
<map>
<entry key="ID" value="Id"/>
<entry key="PARTITION_KEY" value="PartitionKey"/>
<entry key="NAME" value="Name"/>
<entry key="TYPE" value="Type"/>
<entry key="AUTHORITY" value="Authority"/>
</map>
</property>
</object>
You can configure the application context using external configuration files that will be stored in a directory accesible for the application. This directory is configured in the application settings files as documented in configuration.
This directory will contains *.xpckg files and *.xcntx files.
The application context is built by reading the packages files, then the specified assemblies are scanned for *.xcntx files to build the object factories. After the package files are processed, the *.xcntx files are read and the objects are added to the application context.
*.xcntx files can be embedded within class libraries and will be loaded by the application context. For this to happen the files properties must be set correctly as shown in the following image.
Packages can be configured internally to tell the application context
which assemplies must be scanned to build the context. Packaged files
(*.xpckg) are not read from libraries, instead you must
implements a class or classes thet inherits from
Inetdev.Context.ApplicationContextRegistration
as in the
following example:
namespace Security.SecOps
{
using Inetdev.Context;
public class ContextRegistration : ApplicationContextRegistration
{
public override void Register(ApplicationContext context)
{
context.RegisterPackage(new Package("Security.Env, Version=<IP_ADDRESS>"));
context.RegisterPackage(new Package("Security.Core, Version=<IP_ADDRESS>"));
}
}
}
The application context will scan assemblies for this classes and build the object factories from the specified assemblies.
In this document


A clear and concise description of what the feature is.
Please outline the motivation for the proposal.
Please provide an example for how this feature would be used.


Tan Y Berllan was a development of six new build properties off Albert Drive in Deganwy. Completed in 2010 this project included a geothermal heating system, running on a vertical heating loop connected to ground source heat pumps.
Copyright 2012 - 2017 Harvey Homes of Distinction Ltd. | All Rights Reserved


--- layout: page title: Better Brush ---
Climbing brushes are the reason we all send our projects. The brushes are important in competition climbing and pushing the limits outdoors. In this topic, we explore different approaches to brushing in climbing.
The motivation for the project was the COVID restriction on competition climbers to brush their own climbs. I thought there must be a more efficient way. Even though the restriction is lifted, I see a potential in this topic.
This is a fun side project for me, so I hope you enjoy it as well!


{% extends '_base.html' %} {% block title %}Unauthorized{% endblock %} {% block main %}
You are authenticated as Steam user {{ id }} , but your account does not have access to administrate this link shortener.
Log out


wopian on Kitsu -- thanks for the initial server, man!
@Fjord#4136 on the /r/megumin Discord Server for the wonderful sidebar art
@fudgepop01#6504 on Discord for turning the sidebar art into a vector graphic
Sanctuary on GitHub for making the soundboard responsive + other html/css adjustments
The r/megumin Discord Server for allowing us (Owners of megumin fansites) to get a channel/group for webdev related matters.


--- layout: page title: Thank you Sprinters! date: 2013-07-01 23:42:07.000000000 -04:00 type: page parent_id: '0' published: true password: '' status: publish categories: [] tags: [] meta: _wp_page_template: default _edit_last: '43578620' _publicize_pending: '1' author: login: openelections email<EMAIL_ADDRESS>display_name: openelections first_name: '' last_name: '' ---
We had a great turnout last Saturday for our second Metadata Sprint. Joining the OpenElections team based in LA, San Francisco and DC were journalists and developers from Austin, Boulder, Chicago, DC, and Madison.
Between 8 of us, we entered 120 elections into our system, significantly closing the gap on our metadata gathering progress. In fact we now have only four states left to be adopted - LA, MS, SD, and UT. More on joining in here.
Our sprint winner this time was Texas Tribune software engineer Chris Chang.
A big thank you to Chris and everyone else who helped out on Saturday!


Home
About Me
My Work
How To Reach Me
Contact Me
If you have any question, please do not hesitate to contact me.
Linkedin
Github
Medium
Kaggle
I am currently looking for full time job opportunities starting in May 2020.
Resumé Download
If you wish to get in touch with me, just fill this form:
First Name
Last Name
Email Address*
Message Subject
Your message*
*Required Fields


SwiftMonkey
This project is a framework for generating randomised user input in iOS apps. This kind of monkey testing is useful for stress-testing apps and finding rare crashes.
It also contains a related framework called SwiftMonkeyPaws, which provides visualisation of the generated events. This greatly increases the usefulness of your randomised testing, as you can see what touches caused any crash you may encounter.
Why Use SwiftMonkey?
- When testing your UI, it’s very easy to think about how to test how things should work, but do you struggle to figure out what kind of thing might not work?
- Ever showed your app to someone who proceeded to bang away at the screen and immediately crashed it by doing something you had never thought of?
- Do you want to feel a bit more confident about your app’s stability?
- Do you have rare crashes that you just can’t reproduce?
- Do you have memory leaks that take a long time to manifest themselves, and require lots of UI actions?
Randomised testing will help you with all of these!
SwiftMonkey is inspired by and has similar goals to UI AutoMonkey, but is integrated into the Xcode UI testing framework, providing better opportunities to debug.
Also, it is fun to look at:
Quick Start
To see for yourself how this framework works, just grab the code
and open SwiftMonkeyExample/SwiftMonkeyExample.xcodeproj
. Then press Cmd-U
to run the UI test.
Installation
As a high-level overview, add SwiftMonkey.framework
to your
UI test target. Then add a test that creates a Monkey
object and uses it to generate events.
Optionally, you also add the SwiftMonkeyPaws.framework
to your
main app, and create a MonkeyPaws
object to enable visualisation.
You probably only want to do this for debug builds, or when a
specific command line flag is used.
Requirements
SwiftMonkey uses Swift 3.0. It has no dependencies other than iOS itself (8.0 and up should work). SwiftMonkeyPaws doesn’t have any dependencies, either; you can even use on its own, without SwiftMonkey.
CocoaPods
You can install the frameworks using CocoaPods. Assuming
that you’ve named your main app and test targets App
and Tests
, you
can use something like this in your Podfile
:
target "App" do
pod "SwiftMonkeyPaws", "~> 1.0"
end
target "Tests" do
pod "SwiftMonkey", "~> 1.0"
end
Manual Installation
Copy the SwiftMonkey
and SwiftMonkeyPaws
folders into your
project. Next, drag the xcodeproj
files into your project.
Then, for SwiftMonkey, add SwiftMonkey.framework
as a
dependency for your test target, and add a Copy Files build
phase to copy it into Frameworks
.
For SwiftMonkeyPaws, adding SwiftMonkeyPaws.framework
to the
Embedded Binaries section of your app target is enough.
(You can also just directly link the Swift files, if you do not want to use frameworks.)
Swift Package Manager
As of this writing, the Swift Package Manager doesn’t support iOS projects. SPM package files have experimentally been created, but obviously don’t really work yet.
Usage
SwiftMonkey
To do monkey testing, import SwiftMonkey
, then create a new
test case that uses the Monkey
object to configure and run
the input event generation. Here is a simple example:
func testMonkey() {
let application = XCUIApplication()
// Workaround for bug in Xcode 7.3. Snapshots are not properly updated
// when you initially call app.frame, resulting in a zero-sized rect.
// Doing a random query seems to update everything properly.
// TODO: Remove this when the Xcode bug is fixed!
_ = application.descendants(matching: .any).element(boundBy: 0).frame
// Initialise the monkey tester with the current device
// frame. Giving an explicit seed will make it generate
// the same sequence of events on each run, and leaving it
// out will generate a new sequence on each run.
let monkey = Monkey(frame: application.frame)
//let monkey = Monkey(seed: 123, frame: application.frame)
// Add actions for the monkey to perform. We just use a
// default set of actions for this, which is usually enough.
// Use either one of these, but maybe not both.
// XCTest private actions seem to work better at the moment.
// UIAutomation actions seem to work only on the simulator.
monkey.addDefaultXCTestPrivateActions()
//monkey.addDefaultUIAutomationActions()
// Occasionally, use the regular XCTest functionality
// to check if an alert is shown, and click a random
// button on it.
monkey.addXCTestTapAlertAction(interval: 100, application: application)
// Run the monkey test indefinitely.
monkey.monkeyAround()
}
The Monkey
object allows you not only to add the built-in
event generators, but also any block of your
own to be executed either randomly or at set intervals. In
these blocks you can do whatever you want, including (but not
only) generate more input events.
Documentation for this is limited at the moment, so please
refer to Monkey.swift
and its extensions for examples of
how to use the more advanced functionality if you need it.
SwiftMonkeyPaws
The simplest way to enable the visualisation in your app is to
first import SwiftMonkeyPaws
, then do the following somewhere
early on in your program execution:
var paws: MonkeyPaws?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if CommandLine.arguments.contains("--MonkeyPaws") {
paws = MonkeyPaws(view: window!)
}
return true
}
(This example uses application(_, didFinishLaunchingWithOptions)
,
but any time after you have a UIWindow will do. It also only
instatiates the visualisation if a certain command line flag
is passed, so that it can be enabled only for test runs.)
This call will swizzle some methods in UIApplication to capture
UIEvents. If you would rather not do this, or if you already have
a source of UIEvents, you can pass the following option to init
to disable swizzling:
paws = MonkeyPaws(view: window!, tapUIApplication: false)
Then you can pass in events with the following call:
paws?.append(event: event) // event is UIEvent
Contributing
Feel free to file issues and send pull requests for this project! It is very new and not overly organised yet, so be bold and go ahead. We will sort out the details as we go along.
Code style is currently just four-space identation and regular Apple Swift formatting.
Also, we have adopted the Contributor Covenant as the code of conduct for this project:
http://contributor-covenant.org/version/1/4/
Thanks to
- The Zalando Open Source Guild for helping get this project off the ground.
- João Nunes for help with documentation.
- Jakub Mucha for bugfixing.
TODO
SwiftMonkey
- Write more documentation.
- Add more input event actions.
- Add randomised testing using public XCTest APIs instead of private ones.
- Find clickable view and click them directly instead of clicking random locations, to compensate for the slow event generation.
- Fix swipe actions to avoid pulling out the top and bottom panels. (This can cause the monkey to escape from your app, which can be problematic!)
- Generally, find a quick way to see if the monkey manages to leave the application.
- Find out how to do device rotations using XCTest private API.
- Find out why UIAutomation actions do not work on device, but only on the simulator.
- Investigate other methods of generating input events that do not rely on private APIs.
- Once Swift Package Manager has iOS support, update project to support it properly.
SwiftMonkeyPaws
- Add more customisability for the visualisation.
SwiftMonkeyExample
- Add more UI elements, views and controls to make the example look more interesting.
- Maybe add some actual crashes that the monkey testing can find?
Contact
This software was originally written by Dag Ågren<EMAIL_ADDRESS>for Zalando SE. This email address serves as the main contact address for this project.
Bug reports and feature requests are more likely to be addressed if posted as issues here on GitHub.
License
The MIT License (MIT) Copyright © 2016 Zalando SE, https://tech.zalando.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


- double speed;
- Sets move speed for one tick.
By default the speed is in range of -game.wizardBackwardSpeed
to game.wizardForwardSpeed
.
These limits can be extended depending on skills of moving wizard and auras of nearby friendly wizards.
The hastened
status can also greatly speed up a wizard.
If a specified value is out of the range, than it become equal to the nearest value of the range.
The positive values mean moving forward.
If the value hypot (speed / maxSpeed, strafeSpeed / maxStrafeSpeed)
is greater than 1.0
, than both
speed
and strafeSpeed
will be divided by this value.
- double strafeSpeed;
- Sets the strafe speed for one tick.
By default the strafe speed is in range of -game.wizardStrafeSpeed
to game.wizardStrafeSpeed
.
These limits can be extended depending on skills of moving wizard and auras of nearby friendly wizards.
The hastened
status can also greatly speed up a wizard.
If a specified value is out of the range, than it become equal to the nearest value of the range.
The positive values mean moving to the right.
If the value hypot (speed / maxSpeed, strafeSpeed / maxStrafeSpeed)
is greater than 1.0
, than both
speed
and strafeSpeed
will be divided by this value.
- double turn;
- Sets the turn angle for one tick.
The turn angle is in radians and is relative to the current angle of the wizard.
By default the turn angle is in range of -game.wizardMaxTurnAngle
to game.wizardMaxTurnAngle
.
The hastened
status increases bot limits by 1.0 + game.hastenedRotationBonusFactor
times.
If a specified value is out of the range, than it become equal to the nearest value of the range.
The positive values mean turning clockwise.
- ActionType action;
- Sets the action for one tick.
The specified action can be ignored by the game engine, if the controlling wizard has insufficient manapoints or
this action is on cooldown.
- double castAngle;
- Sets the cast angle for one tick.
The cast angle is in radians and is relative to the current angle of the wizard.
The cast angle is in range of -game.staffSector / 2.0
to game.staffSector / 2.0
.
If a specified value is out of the range, than it become equal to the nearest value of the range.
The positive values mean turning clockwise.
If the specified action is not a projectile spell, than the game engine will simply ignore this parameter.
- double minCastDistance;
- Sets the minimal cast distance for one tick.
If the distance from the center of the projectile to the point of its occurrence is less than the value of this
parameter, the battle properties of the projectile are ignored. The projectile passes freely through all other
game objects, except trees.
Default value is 0.0
. All collisions between a projectile and its caster are ignored by the game engine.
If the specified action is not a projectile spell, than the game engine will simply ignore this parameter.
- double maxCastDistance;
- Sets the maximal cast distance for one tick.
If the distance from the center of the projectile to the point of its occurrence is greater than the value of
this parameter, the projectile will be removed from the game world. In this case, the fireball
projectile
detonates.
The default value of this parameter is higher than the maximal flying range of any projectile in the game.
If the specified action is not a projectile spell, than the game engine will simply ignore this parameter.
- long statusTargetId;
- Sets the id of the target living unit to cast a status spell.
According to the game rules, the valid targets are only the wizards of the same faction. If the wizard with the
specified id is not found, the status is applied directly to the wizard performing the action. The relative angle
to the target should be in range of -game.staffSector / 2.0
to game.staffSector / 2.0
. The
distance to the target is limited by wizard.castRange
.
The default value of this parameter is -1
(wrong id).
If the specified action is not a status spell, than the game engine will simply ignore this parameter.
- SkillType skillToLearn;
- Selects the skill to learn before the start of the next tick.
The setting will be ignored by the game engine if the current wizard level is less than or equal to the number of
the already learned skills. Some skills may also require learning other skills.
In some game modes a wizard can not learn skills.
- immutable(Message)[] messages;
- Sets the messages for the wizards of the same faction.
Available only to the master wizard. If not empty, the number of messages must be strictly equal to the number of
wizards of the friendly faction (dead or alive) except the master wizard.
Messages are addressed in ascending order of wizard ids. Some messages can be empty (null
), if supported
by the programming language used by strategy. In other case all items should be the correct messages.
The game engine may ignore the message to a specific wizard, if there is another pending message to the same
wizard. If the addressed wizard is dead, then the message will be removed from the game world and the wizard will
never get it.
Not all game modes support the messages.


class: middle # Developer's Community of Practice ## Building blocks towards modern software development. .right[![Right-aligned image](https://avatars2.githubusercontent.com/u/52010894?s=200&v=4)] --- class: middle, center ## A new beginning A new strategy [https://esdc-devcop.github.io/strategy/](https://esdc-devcop.github.io/strategy/) .okay[It's not going to be the same!] Stopping the theoretical changes we want you to make, and show you how to implement **meaningful** changes **today**. --- class: middle ## What are we talking about? **Where are we at?** -- .whoah[Broken manual builds, poorly documented features, not user-focused, complicated intertwined systems] -- **Where do we need to be?** -- Cloud-enabled, automated deployments, focused and isolated features -- **What is practical right now?** -- .okay[All of it!] -- **How do we get there?** -- Small incremental steps. Breaking out of what we are comfortable with to do what is better. Collaborating to share what works. --- class: middle ## A Starting Point ### Platform Where and how do we develop code? How do we enable ourselves to be the most effective at achieving our goals? -- .okay[Move source control to Git] https://git-scm.com/ --- class: middle ## Why Git? It's not an arbitrary choice, and it's not one that was looked at lightly. - Globally accepted standard - Versatility of being distributed (DVCS) - Free & Open-Source!! - Enabling better development practices - Critical in taking further steps towards modern application development. - And finally, even Microsoft made the jump!!! There are tools to help the transition! --- class: middle ## About Git Free and open source version control system used for tracking changes in code during development Similar but at the same time, very different from other version control systems (ex. SVN) -- Distributed - every developer’s working copy of code has a full history of all changes -- Advantages of using Git - available offline - efficient - no single point of failure ??? By far, the most widely used modern version control system in the world today is Git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. Having a distributed architecture, Git is an example of a DVCS (hence Distributed Version Control System). Rather than have only one single place for the full version history of the software as is common in once-popular version control systems like CVS or Subversion (also known as SVN). In Git, every developer's working copy of the code is also a repository that can contain the full history of all changes. In addition to being distributed, Git has been designed with performance, security and flexibility in mind. --- class: middle ## About Git The branching model has been made easy - Main branches: - Master - Develop - Supporting branches: - Feature - Release - Hotfix -- Stages of Git - Working directory - Staging area - Git directory --- class: middle, center ## When can you start migrating to Git? -- ### .okay[Right now!] --- ## Migrating to Git ### How can you do it? -- #### 1. Add a Git repository to your TFS Team Project. - TFS supports mixing Git and TFVC repos in the same project. - Integrated Git support in Visual Studio and Visual Studio Code. - You will want to learn some basic commands. ??? - Git is the default version control provider in TFS and Azure DevOps. -- #### 2. "Clone" your TFVC into a local Git repository. - There's a tool for that! .okay[**git-tfs**] - Recommended by [Microsoft](https://docs.microsoft.com/en-us/azure/devops/learn/git/migrate-from-tfvc-to-git#advanced-migrations), [GitLab](https://docs.gitlab.com/ee/user/project/import/tfvc.html) and Git-SCM's [Pro Git Book](https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git#_git_tfs). - Tool takes a long time to process. (~30 mins for 1 GB TFVC repo) -- #### 3. Push local Git repo to Git hosting service. - One basic command: `git push` --- ## Migration Tool ### git-tfs - Sample Run ```cs # Clone from existing TFS Team Project. git tfs quick-clone "http://tfs.intra.dmz:8080/tfs/projectcollection" "$/EWS-SWE" . # Push to remote repository. git remote add origin "http://tfs.intra.dmz:8080/tfs/projectcollection/EWS-SWE/_git/EWS-SWE-Git" git push --all origin ``` --- class: middle, center ## How do you deal with the history? --- ## Migrating to Git ### Keep your history in the past! -- #### Microsoft suggests doing *.okay[tip migrations]*. - Bring only a snapshot of the most recent version of a branch into Git. -- #### Why? - Lossy process, at best. - Possibly misleading. - High level of effort involved. - Relative rarity usage of the history. -- #### Where *do* you keep the history then? - In your old TFS Team Project or TFVC repository. - Refer to your old repositories in your README.md files. --- class: split-6040, middle, center .column-first[ "For most development teams, the time spent trying to migrate history is typically better spent on other areas of the migration that have a higher return on investment, especially improving processes. [...] **.whoah[In almost all cases, we recommend the tip migration.]**" \- Microsoft, [Plan your migration to Git - Migrating history](https://docs.microsoft.com/en-us/azure/devops/learn/git/centralized-to-git#migrating-history) ] .column-last[ ![Right-aligned image](https://pbs.twimg.com/profile_images/943235857225363456/Csqj0pwZ_400x400.jpg) ] --- class: middle, center ## Moving day! But first, *the* choice... --- ## Hosting your Git Repositories ### Pick a hosting service for your version control. - **TFS or Azure DevOps** - *Status Quo* - **GCcode** - *New Initiatives/Projects* - **GitHub** - *End Goal* ??? Git Hosting Services are where your remote repositories will live. They all provide their own flavour of tools and methodologies around DevOps, Issue Tracking, etc. --- class: split-6040 ## Hosting your Git Repositories ### TFS or Azure DevOps *(Online and On-Premise)* .column-first[ - Status Quo - Keep your old toys. - Work Items - Build/Release Definitions - Test Plans - etc. - Improved usability with Azure DevOps. ] -- .column-last[ ![Horse buggy fitted with lights and traffic signs.](./assets/tech-horse-buggy.jpg)] --- class: split-6040 ## Hosting your Git Repositories ### GCcode .column-first[ - Shiny new toys! - Learning curve - Work Items > Issues, Issue Boards - Build/Release Definitions > Pipelines - Labels - Merge/Pull Requests (Code Reviews!) - Branch Policies - etc. - Recommended for new initiatives or projects. - Babystep towards sharing code publicly. - *.whoah[Keep secrets out of your repos!]* ] ??? *Shiny new toys, compared to existing TFS 2015. --- ## Hosting your Git Repositories ### GitHub - End Goal - Contributing to Open-Source Software (OSS), not just consuming! --- class: middle, center ## We are going to help! ### Workshop! #### .okay[September 17] All afternoon, we are available for drop-in (online too!). Bring your laptop to 7C001 and we'll help walk you through the migration to Git. --- class: middle, center ## Collaboration We need your collaboration to make this a success. ### GCDevOpsLeague #### .okay[gcdevopsleague.slack.com] ??? Appeal to join the GCDevOpsLeague --- class: middle, center ## Questions?


Events, posted as JSON from various sources, append to a immutable log. Incrementally the log entries filter through category indexes, text filters and number-of-visible-entries filters. Finally the rendering layer merges the JSON records merge and generates HTML
| ↓ | Sources | Debugger | Network | Console | Querypoints | postMessage JSON |
|---|---|---|---|---|---|---|
| Channels | Browser | Instrumentation | JSON recv | |||
| Log | Event Log | append-only JSON array | ||||
| Indexes | * | Resources | Console | Layout/Paint | incremental array of log indexes | |
| Filter | FindAnything | interactive (drop-down) and docked views | ||||
| Viewport | IndexViewport | # rows rendered, can lock to bottom | ||||
| Rendering | * | Resources | Console | Layout/Paint | row template expansion |


Easily track your job fair activity by digitally sharing your resume at job fairs, you can track the companies you gave your resume, and which companies downloaded it
learn more as a...
dlkfjsklfjsdlkfjsdlfjdslkbrlgh34o;gerogrjlgjlkgejgklkjljlgj34
dlkfjsklfjsdlkfjsdlfjdslkbrlgh34o;gerogrjlklnklnklgjlkgejgklgj34
commit
hello


Toggle navigation
Trello clone
Task list
Action
Another action
Something else here
Separated link
Task 1
Task 2
Task list
Action
Another action
Something else here
Separated link
Task 3
Task 4
×
Modal title
Labels
Activities / comments
Add
Member
Labels
Checklist
Due date
Attachment
Actions
Move
Copy
Subscribe
Archive
More...


Egypt
Coins of all nations
Cigarette Card, 1889
Duke’s Cigarettes
Caricature wears a red and white headscarf and unbuttoned military jacket. He rides a disproportionately small, white horse and carries a rifle or sword. Physical and facial characteristics include a worn expression, dark skin, and full moustache. The coin is referred to as the piastre, introduced while Egypt was part of the Ottoman Empire.
Surrounding this cigarette card are an image from a collection of military uniforms by Dutch physician H. J. Vinkhuijzen; photographs by Gabriel Lékégian, photographer to the British Army of Occupation in Egypt; photographs by Adelphoi Zangaki brothers, the first commercial photographers to produce large scale images of Egypt; and a page featuring the “Slavery prosecutions at Cairo” from The Graphic, a British illustrated newspaper.


CONSORTIUM OF NATIONAL LAW UNIVERSITIES:
The Consortium of National Law Universities with the aim of improving the standard of legal education in the country and justice system through legal education was established on 19th August, 2017 with its headquarters in NLSIU, Bengaluru and Prof. R. Venkata Rao, Vice-Chancellor as President and Prof. Faizan Mustafa, Vice-Chancellor, NALSAR, as Vice-President.
The Consortium is intended to provide for better coordination amongst National Law Schools to achieve highest standards of legal education in the country. 21 National Law Universities have joined the Consortium as founder members.
UG Programme
- There will be no upper age limit for UG Programme in CLAT 2019.
- As regards minimum percentage of marks in the qualifying examination (i.e., 10+2 or an equivalent examination), the candidates must have secured:
- Forty five percent (45%) marks or its equivalent grade in case of candidates belonging to General/OBC/PWD/NRI/PIO/OCIcategories
- Forty Percent (40%) marks or equivalent in case of candidates belonging to SC/ST categories.
- Candidates who are appearing in the qualifying examination in March/April, 2019 are also eligible to appear in CLAT-2019 examination. However, they shall be required to produce an evidence of their passing the qualifying examination at the time of admission, failing which they shall lose their right to be considered for admission.
- The result of the qualifying examination (i.e., 10+2) shall be submitted by the candidate at the time of admission failing which the candidate shall be ineligible for admission to the Course.
- In case of equal marks, the break of tie shall be by the following procedure and order as under:
- Higher marks in the component /section on legal aptitude in the CLAT-2019 exam;
- Higher age;
- Computerised draw of lots.
PG Programme
- An LL.B Degree or an equivalent examination with a minimum of Fifty five percent (55%) of marks or its equivalent grade in case of candidates belonging to General/OBC/PWD/NRI/PIO/OCI categories and Fifty percent (50%) of marks or its equivalent grade in case of candidates belonging to SC/ST categories.
- Candidates appearing in the qualifying examination in April/May 2019 are also eligible to apply.
- No upper age limit is prescribed for appearing in CLAT-2019.
SYLLABUS
UG Programme
Scope and coverage of questions under different subject areas:
-
English including comprehension:
The English section will test the candidate's proficiency in English based on comprehension passages and grammar. In the comprehension section, candidates will be assessed on their understanding of the passage and its central theme, meanings of words used therein, etc. The grammar section requires correction of incorrect grammatical sentences, filling of blanks in sentences with appropriate words, etc.
-
General Knowledge and Current Affairs:
The General knowledge will be evaluated on the general awareness including static general knowledge. Questions on current affairs will test the candidate's on their knowledge of national and international current affairs.
-
Mathematics:
This section will test the candidate's knowledge on elementary mathematics, i.e., maths taught upto 10th Class/Standard.
-
Legal Aptitude:
This section will test the candidate’s interest towards the study of law, research aptitude and problem solving ability. Questions may include legal propositions (described in the paper), and a set of facts to which the said proposition has to be applied. Some propositions may not be “true” in the real sense, candidates will have to assume the “truth” of these propositions and answer the questions accordingly.
-
Logical Reasoning:
The purpose of the logical reasoning section is to test the candidate’s ability to identify patterns, logical links and rectify illogical arguments. It may include a variety of logical reasoning questions such as syllogisms, logical sequences, analogies, etc. However, visual reasoning will not be tested.
The pattern of Question Paper for the UG Courses in CLAT-2019
Maximum Marks
200
Duration of CLAT-2019 Exam
02:00 Hours
Multiple-Choice Questions
200 questions of one mark each
Subject areas with weight-age:
English including comprehension
40 Marks
General Knowledge and Current Affairs
50 Marks
Elementary Mathematics (Numerical Ability)
20 Marks
Legal Aptitude
50 Marks
Logical Reasoning
40 Marks
Negative Marking
0.25 Mark for each wrong answer
The pattern of Question Paper and syllabus for the PG Programme in CLAT-2019
The pattern of the question paper for admission to the Post-Graduate Course for CLAT-2019 is as under:
Maximum Marks
150
Duration of CLAT-2019 Exam
02:00 Hours
Multiple-Choice Questions
100 questions of one mark each
Subjective Questions
50 Marks (Two Essay type questions each of 25 Marks, 800 words per essay) on the topics of law and contemporary issues
Syllabus:
Constitutional Law
40 Marks
Other Law Subjects such as Contract, Torts, Criminal Law, International Law, IPR and Jurisprudence.
60 Marks
Negative Marking
0.25 Mark will be deducted for each wrong answer
INSTRUCTIONS
Important Instructions
- The online enrollment for CLAT 2019 will open on 13th January 2019 and close on 15th April 2019.
- The applications has to be submitted ONLINE only from clatconsortiumofnlu.ac.in website.
- The CLAT 2019 examination will be held on Sunday, the 26th May 2019 (3:00 PM to 5:00 PM)
- The CLAT 2019 examination will be held in OFFLINE mode
- The candidates are first required to register themselves at the CLAT-2019 website by using personal mobile number and e-mail Id. Upon registration, an OTP will be sent to the given mobile number for validation. Once your mobile number is validated, you can login using your mobile number and the password you provided at the time of registration.
- Please fill the form carefully. The Name of the candidate and the parents should be spelt correctly in the application as it appears in the Certificates/Mark sheets/Identity proof. Any change/alteration found may disqualify your candidature.
- No alteration/editing in the online application form can be done after successful submission/final submission of the form. The information once furnished by the candidate with regard to the category to which the candidate belongs, the preference for the NLUs and the Centre of the Entrance Test submitted by the candidates through online application mode shall be final and no change whatsoever, shall be allowed thereafter under any circumstances.
- The candidates are required to read the instructions carefully and furnish correct and authentic information. In case the information furnished at any stage of the application, examination and admission process is found to be false or incorrect or if there is any discrepancy or mismatch between the information furnished by the candidate at the relevant section and the certificates/documents produced at the time of admission, the provisional admission offered to the candidate shall stand cancelled with immediate effect without assigning any further reason and the candidate shall stand disqualified from being considered for further admission to the NLUs by the CLAT Consortium Office.
- The candidate shall fill his/her preference order for all 21 NLUs at the time of online application itself. No change shall be allowed in the preference once the form is submitted by the candidate.
Documents to be uploaded with the Online Application.
- Front facing passport size recent photograph with plain background
- Signature of the candidate
- Category certificate if you are applying under SC/ST/OBC
- Relevant certificate issued by competent authority if you are applying if candidate is P.W.D
- Relevant certificate issued by competent authority if you are coming under BPL category
- Relevant certificate for your respective State of Domicile. Issued by revenue department/taluk office. Please note that this upload is optional at the time of application. However, you will need to produce this document at the time of admission, if you are claiming reservation under the domicile category.
- The original certificates/documents issued by the competent authority as specified in the brochure are to be submitted to the allotted University in the form and manner as specified by the respective universities at the time of admission.
- The photograph and signature of the candidate need not be attested while submitting the Online Application Form.
- No hard copy of the filled in online application form is to be sent to the CLAT Consortium Office.
- All documents/certificates should be uploaded in pdf format only.
Application Fee
- Application fees can be paid only online.
- Application fee for General/OBC/PWD/NRI/PIO/OCI candidates : Rs.4,000/-
- Application fee for SC/ST/BPL category candidates: Rs.3,500/-
- The cost of previous years' question papers is Rs.500/- (not included in the CLAT-2019 application fee of Rs.4,000/- or Rs.3,500/- as the case may be.)
- The candidates themselves will have to bear the bank transaction charges for remitting the fee online. The actual bank transaction charges will be displayed in the payment gateway page after you choose the mode of payment.
- Application Fees is non-refundable.
Other instructions
- Indian Nationals/NRIs/PIO/OCI seeking admission in either of the UG/PG programmes shall appear in CLAT-2019.
- Foreign Nationals need not appear for the test
- The application form, complete in all respects and after payment of fees must be finally submitted on or before 15th April, 2019 (11:59 P.M.). Incomplete application forms shall not be considered. The candidates shall fill and submit the application form well in time to avoid last minute hassles. The CLAT Office or the organizing University shall in no case be responsible for any incomplete information or misinformation or inconvenience faced by the candidate in this regard.
- For any information relating to the 21 NLUs, the candidate may refer to the e-brochure of the respective Institutions available in the CLAT Consortium website.
- For NRI/Foreign National seats, the applicants are advised to refer to the e-brochures as well as the websites of the respective NLUs for more details. All NRI Category candidates have to appear for the CLAT-2019 examination for those NLUs where such category is admitted through CLAT 2019 rankings and not admitted directly by the concerned Universities.


A Whole Life, by Robert Seethaler, (trans. Charlotte Collins)
This story of a quiet life lived in the Austrian mountains is not for everyone. It is slow paced but beautifully told. Andreas Egger faces hardship in his life but his quiet stoicism and fortitude helps him through. It is a simple story but the enjoyment is in the journey. At only 208 pages it is a short read if you find you do not like it.
Do No Harm: stories of life, death and brain surgery, by Henry Marsh
This 2014 non-fiction book was an unlikely hit. It gives an insight into what it is it really like to be a brain surgeon, to hold someone’s life in your hands, to drill down into the stuff that creates thought, feeling and reason. How does a surgeon live with the consequences of performing a potentially life-saving operation when it all goes wrong?
Strange Weather in Tokyo, by Hiromi Kawakami (trans. Allison Markin Powell)
“Tsukiko is in her late thirties and living alone when one night she happens to meet one of her former high school teachers, Sensei, in a bar. After this initial encounter, the pair continue to meet occasionally to share food and drink sake and come to develop a hesitant intimacy which tilts awkwardly into love.”
Strange Weather is quirky and full of Tokyo colour. It does not race along but once you get into it you will want to find out what happens.
One, by Sarah Crossan
This book won the Carnegie Medal for 2016. If you want something to challenge your group this may be one for you. The story is told in free verse and is about a pair of conjoined twins and is narrated by one of them. Much of the story deals with the everyday difficulties of life for the twins. It is bold and challenging and will certainly give your group plenty to discuss.
The Little Red Chairs, by Edna O’Brien
This was the first new book by Edna O’ Brien for a decade when it appeared in 2015. A wanted war criminal, masquerading as a healer, settles in a small west coast Irish village. The community are in thrall. One woman, Fidelma McBride, falls under his spell and this novel charts the consequences of that fatal attraction.
The Versions of Us, by Laura Barnett
“A man is walking down a country lane. A woman, cycling towards him, swerves to avoid a dog. On that moment, their future hinges. There are three possible outcomes, three small decisions that could determine the rest of their life. Eva and Jim are 19 and students at Cambridge when their paths first cross in 1958. And then there is David, Eva’s then-lover, an ambitious actor who loves Eva deeply. ‘The Versions of Us’ follows the three different courses their lives could take following this first meeting. Lives filled with love, betrayal, ambition but through it all is a deep connection that endures whatever fate might throw at them.”
If anyone remembers the film Sliding Doors, they will find this has a similar plot. It is a love story with three variations. Some readers loved this, others found it confusing. You will have to judge for yourself.
The Land of Decoration, by Grace McCleen
This was a 2013 Richard and Judy pick and it is easy to see why. The narrator Judith, who is bullied at school, lives with her widowed father who has brought her up as a member of a Christian sect. Judith is desperate not to have to go to school so she sprinkles homemade snow over the miniature world she has built in her bedroom hoping that it will turn to real snow and not have to go in. Amazingly when it is time to go to school she finds they are blocked in by a freak blizzard. Then she starts to hear the voice of God…
Flowers for Algernon, by Daniel Keyes
This is a sci-fi title but don’t let this put you off if you do not usually read Sci-Fi. It is another shortish book. There are themes like the treatment of people with learning disabilities which will get your group talking. Once you start this one you will want to keep reading.
The story revolves around the fortunes of Charlie, an employee at a bakery who is attending remedial classes at the local college. Because of his low intellect, his work colleagues pick on him and treat him cruelly. Then he is offered the chance to take part in a scientific experiment, involving himself, and a mouse called Algernon, who are subjected to groundbreaking treatment that significantly improves their intelligence levels, and their progress is mirrored throughout the novel.
The History of Love, by Nicole Krauss
“A young girl, hoping to find a cure for her mother’s loneliness, stumbles across a book that changed her mother’s life and she goes in search of the author. Soon these and other worlds collide in ‘The History of Love’, a captivating story of the power of love, of loneliness and of survival.”
This one came highly recommended. There are many voices and stories interweave. It is a love story - a book about a book.
The Peculiar Life of a Lonely Postman, by Denis Thériault (trans. Liedewy Hawke)
Secretly steaming open envelopes and reading the letters inside, Bilodo has found an escape from his lonely and routine life as a postman. When one day he comes across a mysterious letter containing only a single haiku, he finds himself avidly caught up in the relationship between a long-distance couple, who write to each other using only beautiful poetry. But it will only be a matter of time before his world comes crashing down around him.


Remote Procedure Call (RPC)
Installed API version : ${rpc.version}
Protocol reference:
Below you will find a detailed description of all the RPC protocols installed in this environment. This includes supported content types as well as target URLs for anonymous and authenticated access. Use this information to interact with this environment from a remote location.
Libraries for remote procedure calls and parsing exists for most major languages and platforms - use a tested, standard library for consistent results.
# for protocol in rpc.protocols-
For ${protocol[0]} protocol, use any one of:
-
# for ct, _ct_group in protocol[2] | groupby(1)
-
{'Content-Type': '${ct}'} header with request to:
# set ct_group = _ct_group | list
-
# for h, _ in ct_group
- ${req.abs_href(h)} for anonymous access # endfor # for h, _ in ct_group
- ${req.abs_href.login(h)} for authenticated access # endfor
# endfor
${wiki_to_html(context, expand_docs(protocol[1], {'req': req, 'rpc': rpc, 'authname': req.authname}))} -
{'Content-Type': '${ct}'} header with request to:
# set ct_group = _ct_group | list
${protocol[0]}
RPC exported functions
# for key in sorted(rpc.functions)
# set namespace = rpc.functions[key]
-
# for function in namespace.methodsFunction Description Permission required # endfor${function[0]} ${function[1]} ${function[2] or "By resource"}


This course is an introductory survey course of Microbiology. This course serves as a gateway to a whole host of different disciplines in the field of Microbiology. In addition to the basic science of living things and microbes in particular the course also includes an exploration of Metabolism, Genetics, Immunology, Epidemiology, Virology, and Biotechnology. Each of these areas are covered by other entire courses or even academic majors but we will focus on the basics of each as well as other topics related to microbes and disease.
This course will involve the study of a weekly lesson or two followed by the completion of a weekly quiz and homework assignment. We will also be using the Penn State Canvas system for course communications and grading. Continue on to read the rest of the course information including the syllabus and course policies.
Conwan, Bunn, Microbiology Fundamentals: A Clinical Approach, See current course syllabus for textbook information.
| Lesson | Topic(s) |
|---|---|
| 1 | Introduction to Microbes |
| 2 | Chemistry and Cell Biology |
| 3 | Prokaryotes & Eukaryotes |
| 4 | Growth & Metabolism |
| 5 | Genetics |
| 6 | Virology |
| 7 | Biotechnology |
| 8 | Control of Microbes |
| 9 | Immunology |
| 10 | Infections & Epidemiology |
| 11 | Medical Microbiology |
| 12 | Medical Microbiology II |
| 13 | Environmental & Applied |
| 14 | Medical Virology |
The grades in this class will be based on 400 points. Each lesson we will cover this semester has a quiz that will vary in length between 15 and 30 points each. Some will be longer than others depending on the amount of material covered in a particular lesson.
However, each quiz question is worth 1 point out of the 400 total. Every question is worth exactly the same as any other question, only the length of the quiz each week will vary. Do not think in terms of percentage points here, this will be a point system based on 400 total points.
Students will work on these assignments as an individual and will be responsible for completing them on time. Late assignments will have a deduction, assignments more than a couple of days late will not be accepted. Once we reach the end of the course it will not be possible to go back and complete work that is outdated by weeks or even months. Keep up on assignments to gain maximum points.
Any questions concerning a particular quiz or homework assignment must be resolved right away. You cannot wait till the end of the semester to correct any problems. Due to time constraints it will be impossible to review all assignments on the last day in the hope of finding one or two points to meet a grade cutoff. You should ask that all grading issues be resolved as they occur during the semester. No exams will be dropped; no extra credit will be accepted. It's impossible to evaluate dozens of book reports or shoebox dioramas.


Form
Sixth-form building condition improvement fund: final payment form
Final payment form for use by sixth-form colleges for the building condition improvement fund (BCIF) 2013 to 2014.
Documents
MS Excel Spreadsheet
,
43.5KB
This file may not be suitable for users of assistive technology.
Request an accessible format.
If you use assistive technology (such as a screen reader) and need a
version of this document in a more accessible format, please email
<EMAIL_ADDRESS>.
Please tell us what format you need. It will help us if you say what assistive technology you use.
Details
Sixth-form colleges currently receiving the building condition improvement fund (BCIF) should use this final payments form for 2013 to 2014.


User guide
How the end user can use the API
-
webApi.checkAccess(deviceId=None, memberId=None, serialNumber=None)
Return if user has access to current device
- Args:
- deviceId (int): The ID of the device
memberId (int): The ID of the member
serialNumber (string) : the Serial number on the badge
- Returns:
JSON The return code:
{status: true, message: "Success" } -- Success!
{status: false, message: "fail reason" } -- No good.


Start using the Xinaliq Keyboard
Keyboard for Xinaliq (kjj) using the Latin Orthography approved by the Ministry of Education of the Republic of Azerbaijan.
OnScreen Keyboard layout
Default (unshifted)
Shift
Left Alt (unshifted)
Left Alt (Shift)
Right Alt (unshifted)
Right Alt (Shift)
(c) 2019 Kenneth Keyes


ref: A 40-byte hex representation of a SHA1 or a name that denotes a particular object. They may be stored in a file under $GIT_DIR/refs/ directory, or in the $GIT_DIR/packed-refs file.
@see www.kernel.org/pub/software/scm/git/docs/gitglossary.html @api private
@!attribute [r] ref
@return [String] The git reference
@!attribute [rw] repository
@return [R10K::Git::Repository] A git repository that can be used to resolve the git reference to a commit.
# File lib/r10k/git/ref.rb, line 21 def initialize(ref, repository = nil) @ref = ref @repository = repository end
# File lib/r10k/git/ref.rb, line 50 def ==(other) other.sha1 == self.sha1 rescue ArgumentError, R10K::Git::UnresolvableRefError false end
Should we try to fetch this ref?
Since we don't know the type of this ref, we have to assume that it might be a branch and always update accordingly.
# File lib/r10k/git/ref.rb, line 38 def fetch? true end
# File lib/r10k/git/ref.rb, line 60 def inspect "#<#{self.class}: #{to_s}>" end
Can we locate the commit in the related repository?
# File lib/r10k/git/ref.rb, line 27 def resolvable? sha1 true rescue R10K::Git::UnresolvableRefError false end
# File lib/r10k/git/ref.rb, line 42 def sha1 if @repository.nil? raise ArgumentError, "Cannot resolve #{self.inspect}: no associated git repository" else @repository.rev_parse(ref) end end
# File lib/r10k/git/ref.rb, line 56 def to_s ref end