|
Contiki 2.5
|
The Contiki kernel does not provide support for timed events. More...
Data Structures | |
| struct | timer |
| A timer. More... | |
Files | |
| file | timer.c |
Timer library implementation. | |
| file | timer.h |
Timer library header file. | |
Functions | |
| void | timer_set (struct timer *t, clock_time_t interval) |
| Set a timer. | |
| void | timer_reset (struct timer *t) |
| Reset the timer with the same interval. | |
| void | timer_restart (struct timer *t) |
| Restart the timer from the current point in time. | |
| int | timer_expired (struct timer *t) |
| Check if a timer has expired. | |
| clock_time_t | timer_remaining (struct timer *t) |
| The time until the timer expires. |
The Contiki kernel does not provide support for timed events.
Rather, an application that wants to use timers needs to explicitly use the timer library.
The timer library provides functions for setting, resetting and restarting timers, and for checking if a timer has expired. An application must "manually" check if its timers have expired; this is not done automatically.
A timer is declared as a struct
timer
and all access to the timer is made by a pointer to the declared timer.
| int timer_expired | ( | struct timer * | t | ) |
Check if a timer has expired.
This function tests if a timer has expired and returns true or false depending on its status.
| t | A pointer to the timer |
Definition at line 122 of file timer.c.
References clock_time().
Referenced by main(), and uip_ds6_periodic().
| clock_time_t timer_remaining | ( | struct timer * | t | ) |
The time until the timer expires.
This function returns the time until the timer expires.
| t | A pointer to the timer |
Definition at line 142 of file timer.c.
References clock_time().
| void timer_reset | ( | struct timer * | t | ) |
Reset the timer with the same interval.
This function resets the timer with the same interval that was given to the timer_set() function. The start point of the interval is the exact time that the timer last expired. Therefore, this function will cause the timer to be stable over time, unlike the timer_restart() function.
| t | A pointer to the timer. |
Definition at line 85 of file timer.c.
Referenced by etimer_reset(), and main().
| void timer_restart | ( | struct timer * | t | ) |
Restart the timer from the current point in time.
This function restarts a timer with the same interval that was given to the timer_set() function. The timer will start at the current time.
| t | A pointer to the timer. |
Definition at line 105 of file timer.c.
References clock_time().
Referenced by etimer_restart().
| void timer_set | ( | struct timer * | t, |
| clock_time_t | interval | ||
| ) |
Set a timer.
This function is used to set a timer for a time sometime in the future. The function timer_expired() will evaluate to true after the timer has expired.
| t | A pointer to the timer |
| interval | The interval before the timer expires. |
Definition at line 65 of file timer.c.
References clock_time().
Referenced by etimer_set(), main(), tr1001_init(), uip_ds6_addr_add(), and uip_ds6_dad().


Working on a banking WebApp as Full Stack developer. Developed new feature, bugfixing, improved perfomance.
Worked as a backend developer for a financial app. The goal was to isolate a component in order to update the app.
Working as frontend developer. Goal is to matain the application and improve performance and codebase.
Working as backend developer with Java EE and Hibernate. Application for handling financial agency.
Once upon a time there was Bì, a little red shiny plastic puppet, different from everyone else. Bì lived in the world of humans even if he was nothing but human.
Read on mediumThere is one frightened, who speaks softly under his breath. There is one forgotten that, banging on every wall, wandering, tries to get back on the right path.
Look on Instagram


Paedophile teacher abused six young girls at primary school
Charles Ellis was given training about how not to touch children inappropriately but the abuse continued
by Jenny KirkhamA paedophile teacher used his job at a primary school to sexually abuse six girls aged eight and nine.
And when one victim of Charles Ellis came forward to police in 2013, no prosecution was brought against him.
Instead he was given training about how to not touch children inappropriately at the Wirral school where he worked.
But his sickening abuse carried on for another three years.
The 60-year-old of Oakfield Drive, Upton, in Chester, was convicted of ten offences against six girls .
The victims were just eight and nine years old at the time.
Liverpool Crown Court heard how Ellis would put his hand on the girls' backs under their clothes, touch their bottoms under and over their clothes and touch their legs.
Charlotte Kenny, prosecuting, told how Ellis had been employed at the school, which the ECHO has chosen not to name, since 2002.
The offences spanned over eight years.
Ms Kenny claimed that Ellis was “motivated by sexual gratification” and “abused his position of trust” before more victims and a member of staff came forward to complain.
After his behaviour was reported by one of the victims, the police again became involved and revisited the earlier report about his behaviour.
A member of staff had also twice reported feeling uncomfortable about his touching some of the girl pupils.
He was suspended by the school in April 2017.
Miss Kenny told the jury that Ellis, who has no previous convictions, was “a man who appears not to be able to control himself.”
Judge Thomas Teague, QC, released Ellis on bail to enable a pre-sentence report to be prepared but warned him that he was likely to receive a custodial sentence when he returns on December 19.


My reflection on Phase 0 to this point is a mixed bag, as I am developing and trying to harness my skill set to best help me accelerate my learning I feel inhibited by having to write reflections on how I feel and other abstract notions. I do feel that I do need to continue on the process and allocate equal amounts of time in learning and reflecting. I think as a developing programmer the end product is never really in site and things are always changing. I need to figure out a way to change my perspective. I am in a fixed mindset I believe that things are the way they are and can't be changed. I need to change into a Growth Mindset where I can learn from failures and have my brain phyically change into a more happy productive human being.


DRAFT and IN PROGRESS.
Click any button to view images from the tour. You can use the keyboard left/right arrow keys or the mousewheel, as well as the buttons, to navigate the slide show. (In particular, you can mousewheel slowly over the thumbnails to move fast through the slides.)
01 (start) 02 03 04 05 06 07 08 09 10 (PHQ-9) 11 12 13 14 15 16 17 18 19 20 21 22 23 24 (OTHER TASKS) 25 26 27 28 29 30 31 32 33 (QUESTIONNAIRE ELEMENTS) 34 35 36 37 38 39 40 41 42 (user settings) 43 44 45 46 47 48 49 50 (web viewer) 51 52 53 54 55 56 57 58 (MySQL) 59 (R)


Device Identifier:
Device Identifer: |
|
Time between updates: |
milliseconds [0 = stop] |
Time Window: |
minutes |
Application Status: |
|
Application Console: |
Device Identifer: |
|
Time between updates: |
milliseconds [0 = stop] |
Time Window: |
minutes |
Application Status: |
|
Application Console: |


Welcome to the Evolve-A-Robot web portal!
Evolve-A-Robot is a real-time, 3D evolutionary robotics simulation environment built with PhysiJS, ThreeJS and WebGL.Evolutionary Robotics harnesses the process that has led to the complexity we observe in natural organisms: evolution. Brain and body are optimized through an iterative process modifying an individual's genome. This web portal provides an online tool to observe evolution happening in real-time. Beginning with a randomly generated initial individual, the robot's genome changes under evolutionary pressures, allowing the animat to move effectively.
Launching a simulation is simple. First, select one of the animats listed below. The simulation will then load on this web page, with statistics about the evolutionary process detailed below. A scatter plot tracks the performance of every individual, and a table presents the performance and genomes of the best individuals. Clicking on a row in the table will initiate a playback of the selected individual (playbacks are green robots).
The interface is composed of three components. Robots are simulated in real-time and shown in the main window. The dark blue sphere indicates the starting location (the origin), and the grid on the floor represent 10 x 10 units. While a robot is moving, bread-crumbs (light blue spheres) are placed on the ground, indicating the robot's position at evenly spaced time steps. Larger distances between the bread-crumbs indicate higher speeds. As you might expect, a straight line of bread-crumbs is generally more effective than one that wanders. Over the course of many iterations, you may notice a blue circle growing outward as more effective genomes evolve. The blue circle denotes how far the best performing individual traveled during its simulation. This means that at any point during evolution you can have an idea of how well an individual measures up to the historical best.
The second component of the interface is the fitness log. Only the best individuals are noted here. The iteration number shows when that individual was first seen, and its fitness is in the second column. Following those two columns is the genome, where each column shows the value of a specific gene. Green shaded boxes indicate an increase in a genes value when compared to the previous best individual, while red shaded boxes indicate a decrease in value. As mentioned above, clicking on a row will allow you to rerun any of the historically best individuals. The rerun will be colored green, and it will not effect the flow of evolution.
The final component of the interface is the scatterplot. All individuals seen during evolution are included. Axes are updated automatically as new, and hopefully better, individuals are created through the evolutionary process.
Optimization is handled by the 1+1 Algorithm. Initially, the robot is setup and governed by a randomly generated genome. The robot is then simulated, and the genome's fitness is measured as its distance from the blue sphere at the end of simulation. Next, a new individual is generated by mutating a copy of the initial genome. This new genome is evaluated the same way as the initial genome, and the two fitnesses are compared. The individual with a higher fitness value is then used to create any subsequent genomes. This process of mutation, evaluation, and selection is repeated for each iteration. Over time, fitness of the new individuals increases, leading to more effective individuals.
This video shows what is possible when evolving individuals in this simulator. Here, an initial quadrupus is not very good at walking. However, after a few iterations, the movements are becoming coordinated. Ultimately, the final individual shown here is an effective walker, moving a total of 82 units during the simulation time.


Unfortunately, it seems like your browser doesn't fully support this site.
If you experience any issues, please try using a different browser.


| Overview | Module | Use | Devguide | Index |
| Services' Summary | Interfaces' Summary | Properties' Summary | Services' Details | Interfaces' Details | Properties' Details |
|
|||
|
| Properties' Summary | |
| [ readonly ] XDocumentIndex DocumentIndex |
[ OPTIONAL ] may contain a document index. |
| [ readonly ] XTextTable TextTable |
[ OPTIONAL ] may contain a text table. |
| [ readonly ] ::com::sun::star::table::XCell Cell |
[ OPTIONAL ] may contain a table cell. |
| [ readonly ] XTextFrame TextFrame |
[ OPTIONAL ] may contain a text frame. |
| [ readonly ] XTextSection TextSection |
[ OPTIONAL ] may contain a text section. |
| [ readonly ] XDocumentIndexMark DocumentIndexMark |
[ OPTIONAL ] may contain a document index mark. |
| [ readonly ] XTextContent ReferenceMark |
[ OPTIONAL ] may contain a reference mark. |
| [ readonly ] XFootnote Footnote |
[ OPTIONAL ] may contain a footnote. |
| [ readonly ] XFootnote Endnote |
[ OPTIONAL ] may contain a endnote. |
| [ readonly ] XTextContent NestedTextContent |
[ OPTIONAL ] may contain a nested text content. For example, may contain an InContentMetadata or a ::com::sun::star::text::textfield::MetadataField. |
| Properties' Details | |
DocumentIndex
|
|
TextTable
|
|
Cell
|
|
TextFrame
|
|
TextSection
|
|
DocumentIndexMark
|
|
ReferenceMark
|
|
Footnote
|
|
Endnote
|
|
NestedTextContent
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


After every event we write blogs. Visit these places to know more about the events, if you missed.
We organize various events,with a well formed team of coordinators.


Understanding Xen events with MirageOS
This article is part of a series documenting how MirageOS applications run under Xen. This article is about “events”; i.e. how can an app wait for input to arrive and tell someone that output is available?
Background: Xen, domains, I/O, etc
A running virtual machine under Xen is known as a domain. A domain has a number of virtual CPUs (vCPUs) which run until the Xen scheduler decides to pre-empt them, or until they ask to block via a hypercall (a system call to the hypervisor). A typical domain has no direct hardware access and instead performs I/O by talking to other privileged driver domains (often domain 0) via Xen-specific disk and network protocols. These protocols use two primitives:
- granting another domain access to your memory (which then may be shared or copied); and
- sending and receiving events to and from another domain via event channels.
This article focuses on how events work; a future article will describe how shared memory works.
What is an event channel?
An event channel is a logical connection between (domain_1, port_1) and (domain_2, port_2) where port_1 and port_2 are integers, like TCP port numbers or Unix file descriptors. An event sent from one domain will cause the other domain to unblock (if it hasn’t been “masked”). To understand how event channels are used, it’s worth comparing I/O under Unix to I/O under Xen:
When a Unix process starts, it runs in a context with environment variables, pre-connected file descriptors and command-line arguments. When a Xen domain starts, it runs in a context with a start info page, pre-bound event channels and pre-shared memory for console and xenstore.
A Unix process which wants to perform network I/O will normally connect sockets (additional file descriptors) to network resources, and the kernel will take care of talking protocols like TCP/IP. A Xen domain which wants to perform network I/O will share memory with- and then bind event channels to- network driver domains, and then exchange raw ethernet frames. The Xen domain will contain its own TCP/IP stack (such as mirage-tcpip).
When a Unix process wants to read or write data via a file descriptor it can use select(2) to wait until data (or space) is available, and then use read(2) or write(2), passing pointers to data buffers as arguments. When a Xen domain wants to wait for data (or space) it will block until an event arrives, and then send an event to signal that data has been produced or consumed. Note that neither blocking nor sending take buffers as arguments since under Xen, data (or metadata) is placed into shared memory beforehand. The events are simply a way to say, “look at the shared buffers again”.
How do event channels work?
Every domain maps a special shared info page which contains bitmaps representing the state of each event channel. This per-channel state consists of:
- evtchn_pending: which means “an unprocessed event has been received, you should check your shared memory buffers (or whatever else is associated with this channel)”; and
- evtchn_mask: which means “I’m not interested in events on this channel atm, don’t bother interrupting me until I clear the mask”.
Every vCPU has a vcpu_info record in the shared info page, which stores two relevant domain-global (not per event channel) bits:
- evtchn_upcall_pending: which means “at least one of the event channels has received an event”; and
- evtchn_upcall_mask: which means “I’m actively processing events, don’t bother interrupting me until I clear the mask”.
Note that all MirageOS guests are single vCPU and therefore we can simplify things by relying on the (single) per-vCPU evtchn_upcall_mask rather than the fine-grained evtchn_mask (normally a multi-vCPU guest would use the evtchn_upcall_mask to control reentrant execution and the evtchn_mask to coalesce event wakeups).
Note the shared info page is shared between the domain and the hypervisor
without any locks, so an architecture-specific protocol must be used to access
it (usually via C macros with names like test_and_set_bit
)
When a domain wants to transmit an event, it calls the calls the EVTCHNOP_send hypercall. Within Xen, this calls xen/common/event_channel.c:evtchn_set_pending which tests the evtchn_pending bit for this event channel. If it’s already set then no further work is needed and so it returns. If the bit isn’t already set, then it is set and then evtchn_mask is queried. The evtchn_mask is always clear for MirageOS guests, so control passes to xen/arch/x86/domain.c:vcpu_mark_events_pending which sets the per-vCPU evtchn_upcall_pending bit and then calls xen/arch/x86/domain.c:vcpu_kick which calls xen/common/schedule.c:vcpu_unblock which calls xen/common/schedule.c:vcpu_wake which finally sets the vCPU to a “runnable” state.
When a domain wishes to wait for an event, it can either call SCHEDOP_block to wait forever for any (unmasked) event, or call SCHEDOP_poll to wait for an event on a small set (specifically less than or equal to 128) of listed ports up to a timeout (like select(2)). Since we don’t want to limit ourselves to 128 ports, MirageOS applications on Xen exclusively use SCHEDOP_block. The implementation of SCHEDOP_block simply calls xen/common/schedule.c:vcpu_block_enable_events which calls xen/include/asm-x86/event.h:local_event_delivery_enable to clear the evtchn_upcall_mask bit and then calls xen/common/schedule.c:vcpu_block which performs a final check for incoming events and takes the vCPU offline.
How does MirageOS handle Xen events?
MirageOS applications running on Xen are linked with a small C library derived from mini-os. This library takes care of initial boot: mapping the shared info page and initialising the event channel state. Once the domain state is setup, the OCaml runtime is initialised and the OCaml OS.Main.run callback is evaluated repeatedly until it returns false, signifying exit.
The OCaml “OS.Main.run” callback is registered in mirage-platform/master/xen/lib/main.ml and interfaces the Lwt user-level thread scheduler with the Xen event system. The main loop:
- checks if the main thread has terminated (Lwt.poll t)
- if it hasn’t, call mirage-platform/xen/runtime/kernel/eventchn_stubs.c:evtchn_look_for_work to see if we have received any events
- if there are no events, set a timer to wake us up and call SCHEDOP_block.
mirage-platform/xen/runtime/kernel/eventchn_stubs.c:evtchn_look_for_work contains mini-os boilerplate to safely interrogate the event channel bits in the shared info page, and copies them to a shadow array which is private to the domain. The function returns true if there is “work to do” i.e. some of the bits in the event channel bitmap were set.
Assuming there is “work to do”,
mirage-platform/xen/lib/activations.ml:run
iterates over the shadow copy of the event channel bits and wakes up any Lwt
threads which have registered themselves as waiters. Typically a MirageOS device
driver will repeatedly call
mirage-platform/xen/lib/activations.mli:after
as follows:
let rec process_events channel last_event =
Activations.after channel last_event >>= fun latest_event ->
...
process_events channel latest_event
in
process_events channel Activations.program_start
The Activations module keeps a counter and a condition variable per event channel,
using the condition variable to wake any threads which are already blocked and the
counter to prevent a thread from blocking just after an event has been received.
If there is no “work to do”, then control passes to mirage-platform/xen/runtime/kernel/main.c:caml_block_domain which sets a timer and calls SCHEDOP_block. When Xen wakes up the domain, control passes first to a global hypervisor callback which is where an OS would normally inspect the event channel bitmaps and call channel-specific interrupt handlers. In MirageOS’s case all we do is clear the vCPU’s evtchn_upcall_pending flag and return, safe in the knowledge that the SCHEDOP_block call will now return, and the main OCaml loop will be executed again.
Summary
Now that you understand how events work under Xen and how MirageOS uses them, what else do you need to know? Future articles in this series will answer the following questions:
- how do Xen guests share memory with each other?
- how do the console and xenstore rings work?
- how does the network work?


The Liberal Party must update its 60-year-old modus operandi.
IF YOU are a NSW Liberal Party member then July 22 can't come quick enough. On Saturday the party's State council will vote on a package of reforms, which everyone from the Prime Minister down hopes will allow the party to cut out the cancer of defeatism that has plagued it since its 1995 election loss.
Despite this, the party is wasting an opportunity to do what no political party in Australia has done create a new architecture for 21st-century society. The NSW Liberals must address some of the most serious issues confronting political parties the notion of volunteers and relevance to individuals in modern Western societies.
British Prime Minister Tony Blair and United States President Bill Clinton have seen the need to reinvent their parties and make them accessible to ordinary people whose lifestyles are very different from those political volunteers who went before them.
The Liberal Party has not changed in focus or operation since the party was formed almost 60 years ago. Its gatherings are still, as ANU academic Ian Hancock recently put it in describing the party of the 1960s, ``meetings [which] seem to focus on the formalities". Meetings are held at 7.30 or 8pm in suburban church halls or private homes. This culture automatically excludes the increasing number of Australians who don't work nine to five and, even if they did, need a formal meeting at the end of the day like a hole in the head.
Of greater concern is that these meetings and indeed the party's overall image of clubbishness and an inward-looking obsession with careerism and factionalism seem to many to manifest John Ralston Saul's observation that ``we live in a corporatist society with soft pretensions to democracy".
So why not use this current reform process to revolutionise how the party communicates with its members and communities, be they physical or virtual? Why not consider an online branch or a chatroom where party members can discuss policy? Unless political parties embrace new technologies they will find that, once the 30 hardy souls who brave cold winter's nights to attend another process-driven branch meeting in a church hall die off, there will be nothing left.
And this view should not be seen as alarmist. Robert Putnam, the American anthropologist, conducted a study of voluntary groups in the US titled Bowling Alone. Putnam found that society is moving away from localised community organisations, such as bowling alleys. What is replacing these local organisations? Putnam is not sure, nor are we. There are, however, some patterns beginning to emerge.
The technology that started to privatise leisure time almost four decades ago is finally moving on and allowing people to interact with others. Voluntary organisations should be thinking about how to use this technology to reinvigorate themselves rather than bemoaning it.
History teaches us that to the people who pioneer successfully go the laurels.


Thank you for using our web app!
This is the best strain matching your needs:
Strain Name:
{{pred}}
Strain Type:
{{pred1}}
Flavors
{{pred5}}
Description:
{{pred4}}


Reports methods with three or more negation operations (
!
or
!=
). Such methods may be unnecessarily confusing.


New Search
4314 Chenim-Denim
To order fabrics or check stock, please call, email or login.
1.800.669.6002
<EMAIL_ADDRESS>Pattern
4314 Chenim
End Use
Upholstry
Color
Denim
Width
54.00"
Wholesale
$X.XX per ...
Vertical Repeat
13.50"
Exclusive
Yes
Horizontal Repeat
N/A
Feature
Exclusive Sunbrella
Railroaded
Yes
Collection
Origins
Country of Origin
USA
Book
Richard Frinier
Content
80% Sunbrella Acrylic, 20% Recycled Sunbrella Acrylic Exclusive Design
Finish
Mildew, Fade, Soil & Stain Resistant Woven & Shown Railroaded
Abrasion
Lorem ipsum dolar set amet
Flammability
Cal. Tech Bulletin #117 Sec. E NFPA 260/UFAC Class 1
Testing
ASTM D4157 WYZ MOD#10 CTN DUCK 15,000 DBL RUBS


Render a 2^9 prefix tree with AngularDart
Default:
From URL:
Baseline:
Baseline + scope:
Baseline + class:
{{tree}}


--- layout: default ---
I am a software developer from California interested in linux, networking, security, and distributed systems. I have used Go, C, C++, Python, Ruby, and Javascript. I am learning Rust and have an interest in Haskell, Racket, and Clojure.
More about me
| {{ post.title | escape }} |


Welcome to the IISC Prediction League!
You will be connected to the main login page in a few seconds. If nothing happens, try
clicking here
instead.


A Tiny MongoDB Browser Shell!
Just enough to scratch the surface.
connecting to database...
Welcome to a self guided tour of the MongoDB shell.
First Name:
Last Name:
Email Address:
Company Name:


Bakers Store
Mug Cake Orders
Mug cakes are great when you want a fast solo sweet treat!
Place your order now!
Enter your Name:
Enter your Quantity:
Select Flavor:
Chocolate Mug Cake
Vanilla Mug Cake
Select Preference!
Eggless
With Egg
Select Toppings:
Sprinkles
Silver Balls
Whipped Cream
Powdered Sugar
Special Instructions:
Enter Mobile Number:
(10 digits only)


File transfer app with Blazor: Introduction - Mircea Oprea This series will show you how to build a file sharing web application with ASP.NET Core 3.1 (using Blazor) and hosting it on AWS. The application will allow users to upload a file, their email address and a friend’s or colleague’s email address, and deliv...
Over 500,000 Zoom accounts sold on hacker forums, the dark web Over 500 hundred thousand Zoom accounts are being sold on the dark web and hacker forums for less than a penny each, and in some cases, given away for free.
Erase your darlings: immutable infrastructure for mutable systems immutable infrastructure for mutable systems
Inkscape 0.92.5 released and Testers needed for Inkscape 1.0 Release Candidate

Inkscape is launching a double r...
Gatsby and Sanity.io - Part 2 Live Stream Gatsby and Sanity.io are a great pair for creating JAMstack projects like blogs. In these videos, I am working to migrate my Gatsby blog from using markdown files to using the Headless CMS called Sanity.io. After starting this migration, I am loving Gatsb...
Gatsby and Sanity.io - Part 1 (Live Stream) Gatsby and Sanity.io are a great pair for creating JAMstack projects like blogs. In these videos, I am working to migrate my Gatsby blog from using markdown files to using the Headless CMS called Sanity.io. After starting this migration, I am loving Gatsb...
A Personal History of Compilation Speed, Part 1 The first compiled language I used was the Assembler Editor cartridge for the Atari 8-bit computers. Really, it had the awful name "Assembler Editor." I expect some pedantic folks want to interject that an assembler is not a compiler. At one time I woul...
Life, part 1 The mathematician John Horton Conway has died, apparently due to the covid-19 epidemic, at the age of 82. I never met him but by all accounts, he was a delightful person and brilliant mathematician…
The Legendary John Conway (1937-2020) - Numberphile Podcast We pay tribute to John Horton Conway - with clips from the man himself, plus contributions from Siobhan Roberts, David Eisenbud, Colm Mulcahy and Tony Padilla. Genius at Play by Siobhan Roberts - https://amzn.to/34ExQ4I John Conway Numberphile Playlist ...
Saving Money on Internation Payments as a Remote Freelancer As a remote freelancer you likely receive payments from other countries and convert these different currencies into your own currency. These international payments and currency conversions often have hidden fees and unfavorable exchange rates which can co...
The Legendary John Conway (1937-2020) — The Numberphile Podcast We pay tribute to John Horton Conway - with clips from the man himself, plus contributions from Siobhan Roberts, David Eisenbud, Colm Mulcahy and Tony Padilla.
Easier organization and increased scalability for repository administrators With easier organization and increased scalability, repository admins can more efficiently control access management to get users the permissions they need.
This is what end-to-end encryption should look like! - Jitsi Work in Progress! Some of the people watching our repos have been asking us what the deal was with this little new HIPS project (which by the way stands for Hidden In Plain Sight). Well, now you know! HIPS is about using a new Chrome WebRTC API called “In...
Your statement is 100% correct but misses the entire point Let's assume that there is a discussion going on on the Internet about programming languages. One of the design points that come up is a gar...
Tales from the Loop (TV Series 2020– ) - IMDb Created by Nathaniel Halpern. With Daniel Zolghadri, Rebecca Hall, Paul Schneider, Duncan Joiner. The townspeople who live above "The Loop," a machine built to unlock and explore the mysteries of the universe, experience things previously consigned to th...
Database basics: writing a SQL database from scratch in Go Database basics: writing a SQL database from scratch in Go
A very short introduction to COBOL COBOL is one of those languages you keep hearing about, one of the remains of the past. Turns out it’s the language that makes the world go around, in particular in banks and financial institutions. I read somewhere that over 70% of business transactions ...
Name all the colors @ colornames.org A collaborative effort to name every color in the RGB/web space.
Welcome back to C++ - Modern C++ Describes the new programming idioms in Modern C++ and their rationale.
Your statement is 100% correct but misses the entire point Let's assume that there is a discussion going on on the Internet about programming languages. One of the design points that come up is a gar...
Work flow of diagnosing memory performance issues – Part 1 | .NET Blog Work flow of diagnosing memory performance issues – Part 0 In this blog post I’ll talk a bit about contributing to PerfView and then continue with the GCStats analysis. You can skip to the analysis part directly if you like. One of the frustrating things ...
UniFi - Advanced Adoption of a "Managed By Other" Device Overview In this article, readers will learn how to perform advanced adoption of an existing, "Managed by Other" device. Please note that to adopt a device with the "Managed by Othe...
Stop Making Students Use Eclipse Computer science education doesn't adequately educate in some key areas. These are my personal thoughts on that issue and how it might be corrected - by not relying on IDEs!
Drive-In Theaters Are Helping Communities Socialize in Place You can't Netflix and chill ALL the time.


Home
Add a New Invoice
Invoice Number
Customer Name
Mobile Number
Address
Product Name
Other Details (IMEI, SN Number etc)
Select GST
5%
12%
18%
28%
Pieces
Price/Unit
Total Price (with GST)
Submit


{% extends "base.html" %} {% block user %} {{userperson}} {% endblock %} {% block body %}
Our easy to use web page makes it easier
for all to Sign up, Sign in and Donate
Visit our website and begin donating today!
Downlaod the application or visit our webapp and make a change. Make the world a better place to live in.


Eleventh session of the Conference of the Parties to the Climate Change Convention and first meeting of the Parties to the Kyoto Protocol
29-Nov-05 — original report
The welcoming ceremony began with presentations from Gerald Tremblay, Mayor of Montreal, and Jean Charest, Premier of Québec.
Mayor Tremblay highlighted the seriousness of the climate change problem and the support of local governments for reducing greenhouse gas emissions.
Premier Charest noted Québec's support for emissions reductions and the need for strong action to address climate change.
The speeches were followed by a live performance highlighting the impacts of climate change.
Delegates considered various reports on mitigation (FCCC/SBSTA/2005/INF.5, FCCC/SBSTA/2005/INF.5 and Adds.
1-2), with many Parties stressing the usefulness of the intersessional workshops.
CHINA and SOUTH AFRICA expressed concern about the recent increase in greenhouse gas emissions by developed countries.
AUSTRALIA, CANADA, SWITZERLAND and others highlighted a sectoral approach and a focus on 'key areas.
' Areas mentioned included renewable energy, energy efficiency, and carbon capture and storage.
AUSTRALIA underlined mitigation co-benefits.
The EU underscored the need to study implications of different stabilization levels and emission pathways.
Kok Seng Yap (Malaysia) and Toshiyuki Sakamoto (Japan) will co-chair a contact group.
Harvested Wood Products (HWP): Jenny Wong, UNFCCC Secretariat, briefed delegates on HWP based on submissions from Parties and national greenhouse gas inventories (FCCC/SBSTA/2005/INF.7 and FCCC/SBSTA/2005/MISC.9).
Parties noted the complexity of HWP accounting and the need for further consideration.
Informal consultations will be conducted.
Delegates considered documents containing Parties' views on the CRF tables (FCCC/SBSTA/2005/7 and FCCC/SBSTA/2005/MISC.7).
Audun Rosland (Norway) and Newton Paciornik (Brazil) will co-chair a contact group. Emissions from Fuel Used for International Aviation and Maritime Transport: Jane Hupe, International Civil Aviation Organization (ICAO), briefed SBSTA on ICAO's work on aviation emissions since SBSTA 22.
Chair Benrageb noted that consideration of this agenda item had not been completed at SBSTA 22, and asked José Romero (Switzerland) to hold informal consultations.
SBI Chair Thomas Becker (Denmark) opened the session.
On the agenda, the EU and AUSTRALIA questioned the need to include a sub-item requested by Saudi Arabia on the Buenos Aires programme of work on adaptation and response measures.
However, the agenda and organization of work were approved as presented. Chair Becker noted that consultations on officers for SBI 24 and SBI 25 will be coordinated with the COP 11 and COP/MOP Bureau consultations.
The current SBI Bureau members will continue until their successors are elected.
Options for the Review Process: Vitaly Matsarski, UNFCCC Secretariat, introduced a proposal for streamlining review processes (FCCC/SBI/2005/16).
The EU and JAPAN supported the proposal, while the US expressed concern about eliminating in-country in-depth reviews.
Emily Ojoo-Massawa (Kenya) and Dimitrios Lalas (Greece) will co-chair a contact group. Report on National Greenhouse Gas Inventory Data from Parties Included in Annex I to the Convention for the Period 1990-2003: Matsaraski introduced the compilation document (FCCC/SBI/2005/17).
Delegates agreed to take note of this information.
Matsaraski introduced the status report (FCCC/SBI/2005/INF.9), noting that the cycle of reviews for Third National Communications is now completed.
Delegates agreed to take note of the report.
Compilation and Synthesis of Initial National Communications: Delegates considered compiled information on non-Annex I national communications (FCCC/SBI/2005/18 and Adds.
BANGLADESH and the US said this information should be used when donors assess the needs of non-Annex I countries. Work of the Consultative Group of Experts (CGE) on non-Annex I Communications: CGE Chair Emily Ojoo-Massawa briefed delegates on training and support for non-Annex I national experts in 2005 and 2006, including regional workshops.
INDONESIA announced its interest in hosting a regional adaptation and vulnerability assessment workshop.
Several Parties appealed to Annex I countries to provide resources.
BANGLADESH said synergies between national communications and National Adaptation Plans of Action should be considered.
Festus Luboyera, UNFCCC Secretariat, introduced a document that lists projects proposed by non-Annex I Parties for financing, as permitted under UNFCCC Article 12.4 (FCCC/SBI/2005/Inf.8).
Informal consultations will be convened on non-Annex I communications.
Delegates were briefed on various issues, including: the new UNFCCC Climate Change Information Network (CC:iNet), an internet information clearing house; regional workshops (FCCC/SBI/2005/21 and FCCC/SBI/2005/14); and UNEP's work on Article 6.
Crispin d'Auvergne (Saint Lucia) will chair a contract group.
Janos Pasztor, SBI Coordinator, noted that Decision 2/CP.10 requires SBI 24 to consider steps to be taken to monitor regularly capacity building activities pursuant to Decision 2/CP.7.
Discussion centered on whether to create a contact group and the extent to which such a contact group should consider the GEF review on capacity building.
Tanzania, for the G-77/CHINA, stressed that a contact group was needed to develop more guidance to the GEF, while the EU said discussion on the GEF review should take place under the agenda item on the report by the GEF.
Joyceline Goco (Philippines) and Anders Turesson (Sweden) will consult informally.
COP 10 President Ginés González García (Argentina) opened COP 11.
He asked delegates to observe one minute of silence in memory of UNFCCC Executive Secretary Joke Waller-Hunter, who passed away on 14 October 2005.
Praising her 'tireless dedication and enthusiasm,' he said the best tribute delegates could give would be to produce a strong outcome at this meeting. Parties then elected by acclamation Stéphane Dion, Canada's Environment Minister, as President of COP 11 and COP/MOP 1.
Dion called for steps to 'implement, improve and innovate,' including formally adopting the Marrakesh Accords and improving implementation of the UNFCCC and Kyoto Protocol, including the CDM.
He also noted the need to begin consideration of commitments after 2012. UNFCCC Acting Executive Secretary Richard Kinley highlighted 2005 as a remarkable year for international climate policy, but drew attention to new data showing an increase in Annex I emissions and the need for further action.
Most delegates arriving at the conference center on Monday morning seemed in good humor despite the long lines to register and get through security.
In the corridors, much of the discussion was on Canadian politics and what the implications of an election might be on the conference.
Several delegates said they were encouraged by Minister Dion's statement committing himself to his work as COP President, and that while the election campaign would be an interesting backdrop to the meeting, it should not affect the meeting outcome.
One delegate noted, however, that it was not the possible impacts on the next two weeks that bothered him, but rather the possibility that Minister Dion might not be the COP President after January.
The COP agreed to apply the draft rules of procedure, with the exception of draft rule 42 (voting), on which President Dion said he would conduct informal consultations. Parties then adopted the provisional agenda after agreeing to remove the item on the second review of the adequacy of Article 4.2 (a) and (b) of the Convention.
Regarding the organization of work, the US emphasized the need for a clear separation between Convention and Protocol issues.
The COP agreed on the organization of work as proposed by the President.
Delegates then considered a draft decision relating to adjustments under Protocol Article 5.2 (methodologies for estimating emissions) (FCCC/SBSTA/2005/4/Add.1).
President Dion explained that this draft was part of a package of decisions that had been recommended for adoption by COP/MOP 1.
The COP adopted the decision and forwarded it to COP/MOP 1.
Several speakers highlighted technology transfer and the five year programme of work on adaptation.
Jamaica, on behalf of the G-77/CHINA, expressed concern at the GEF resource allocation framework.
The UK, for the EU, called for an 'open mind' and 'creative and innovative ways' to address climate change after 2012.
Kenya, for the AFRICA GROUP, noted an inadequate commitment on capacity building, while Bangladesh, on behalf of the LDCs, highlighted the need to operationalize the LDC, Adaptation and Special Climate Change Funds.
Late Monday morning, President Dion declared the COP/MOP open.
Regarding the provisional agenda, the UK, for the EU, opposed by SAUDI ARABIA, objected to the inclusion of agenda item 10 on Article 2.3 (response measures) on the grounds that it is addressed elsewhere.
However, the agenda was adopted as presented.
The EU looked forward to the adoption of the Marrakesh Accords.
On compliance, she said that after a COP/MOP decision on compliance, the EU would be open to discussing an amendment to the Protocol.
She identified the need for more work on CDM and guidance for the Adaptation Fund.
She also stressed that the EU is ready to start discussions under Article 3.9 (future commitments). Tuvalu, speaking for the ALLIANCE OF SMALL ISLAND STATES (AOSIS), called for future commitments under Article 3.9, and said efforts to streamline CDM should not compromise its environmental integrity.
SBSTA Chair Abdullatif Benrageb (Libya) opened the session and introduced the provisional agenda.
The US, opposed by AOSIS, the EU and G-77/CHINA, requested removing agenda item 11(a) relating to small island developing States (SIDS).
The US also asked for clarification on inclusion of item 10 (IPCC special report on Carbon Dioxide Capture and Storage).
The agenda was provisionally adopted pending informal consultations on these issues.
Since Libya is not yet a Party to the Kyoto Protocol, SBSTA Vice-Chair Amjad Abdulla (Maldives) was invited to chair SBSTA for Protocol- related agenda items.
Kishan Kumarsingh (Trinidad and Tobago) reported on the informal workshop on the five-year programme of work on adaptation held in Bonn in October 2005.
Samoa, for the G-77/CHINA, said many adaptation projects are at a mature stage for implementation and depend only on funding.
AOSIS, SUDAN, YEMEN and others stressed the need to be action-oriented.
SAUDI ARABIA, with NIGERIA and KUWAIT but opposed by ARGENTINA, CHILE and others, called for consideration of adaptation to response measures and inclusion of economic diversification in the programme of work.
JAPAN proposed a focus on methodologies and impact assessments and the US suggested taking stock of existing efforts and engaging experts.
CANADA, supported by PERU and others, said that the programme of work and SBI decisions to operationalize adaptation funding represent an 'adaptation package,' and that it views a COP decision endorsing a strong programme of work to be a goal of this session.
SBSTA Chair Benrageb asked Kumarsingh and Helen Plume (New Zealand) to facilitate a contact group on this issue.


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface DesktopManager
DesktopManager objects are owned by a JDesktopPane object. They are responsible for implementing L&F specific behaviors for the JDesktopPane. JInternalFrame implementations should delegate specific behaviors to the DesktopManager. For instance, if a JInternalFrame was asked to iconify, it should try:
getDesktopPane().getDesktopManager().iconifyFrame(frame);This delegation allows each L&F to provide custom behaviors for desktop-specific actions. (For example, how and where the internal frame's icon would appear.)
This class provides a policy for the various JInternalFrame methods, it is not meant to be called directly rather the various JInternalFrame methods will call into the DesktopManager.
JDesktopPane
,
JInternalFrame
,
JInternalFrame.JDesktopIcon
| Method Summary | |
|---|---|
void |
activateFrame(JInternalFrame f)
Generally, indicate that this frame has focus. |
void |
beginDraggingFrame(JComponent f)
This method is normally called when the user has indicated that they will begin dragging a component around. |
void |
beginResizingFrame(JComponent f,
int direction)
This methods is normally called when the user has indicated that they will begin resizing the frame. |
void |
closeFrame(JInternalFrame f)
Generally, this call should remove the frame from it's parent. |
void |
deactivateFrame(JInternalFrame f)
Generally, indicate that this frame has lost focus. |
void |
deiconifyFrame(JInternalFrame f)
Generally, remove any iconic representation that is present and restore the frame to it's original size and location. |
void |
dragFrame(JComponent f,
int newX,
int newY)
The user has moved the frame. |
void |
endDraggingFrame(JComponent f)
This method signals the end of the dragging session. |
void |
endResizingFrame(JComponent f)
This method signals the end of the resize session. |
void |
iconifyFrame(JInternalFrame f)
Generally, remove this frame from it's parent and add an iconic representation. |
void |
maximizeFrame(JInternalFrame f)
Generally, the frame should be resized to match it's parents bounds. |
void |
minimizeFrame(JInternalFrame f)
Generally, this indicates that the frame should be restored to it's size and position prior to a maximizeFrame() call. |
void |
openFrame(JInternalFrame f)
If possible, display this frame in an appropriate location. |
void |
resizeFrame(JComponent f,
int newX,
int newY,
int newWidth,
int newHeight)
The user has resized the component. |
void |
setBoundsForFrame(JComponent f,
int newX,
int newY,
int newWidth,
int newHeight)
This is a primitive reshape method. |
| Method Detail |
|---|
void openFrame(JInternalFrame f)
void closeFrame(JInternalFrame f)
void maximizeFrame(JInternalFrame f)
void minimizeFrame(JInternalFrame f)
void iconifyFrame(JInternalFrame f)
void deiconifyFrame(JInternalFrame f)
void activateFrame(JInternalFrame f)
void deactivateFrame(JInternalFrame f)
void beginDraggingFrame(JComponent f)
void dragFrame(JComponent f, int newX, int newY)
void endDraggingFrame(JComponent f)
void beginResizingFrame(JComponent f, int direction)
void resizeFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
void endResizingFrame(JComponent f)
void setBoundsForFrame(JComponent f, int newX, int newY, int newWidth, int newHeight)
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


👍 The Good, the Bad, & the (mostly) Ugly 👎
These slides are at http://training.perl.com/OSCON2011/index.html
http://training.perl.com/OSCON2011/index.html
Pod::S5
by Tom Linden, which in
turn uses S5
by Eric Meyer. Slideshow controls appears if you hover
near the bottom right corner, but I ﬁnd it easier to use
keystroke commands to navigate.
The PubMed Central Open Access corpus comprises around 11G of Unicode data spread across around 200k diﬀerent ﬁles.   Note 👽 Area 51 !
1 U+01D49E ‹𝒞› GC=Lu MATHEMATICAL SCRIPT CAPITAL C 31 U+01D4C2 ‹𝓂› GC=Ll MATHEMATICAL SCRIPT SMALL M 2 U+01D4AF ‹𝒯› GC=Lu MATHEMATICAL SCRIPT CAPITAL T 32 U+01D54D ‹𝕍› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL V 3 U+01D4AE ‹𝒮› GC=Lu MATHEMATICAL SCRIPT CAPITAL S 33 U+01D4B6 ‹𝒶› GC=Ll MATHEMATICAL SCRIPT SMALL A 4 U+01D49F ‹𝒟› GC=Lu MATHEMATICAL SCRIPT CAPITAL D 34 U+01D4BE ‹𝒾› GC=Ll MATHEMATICAL SCRIPT SMALL I 5 U+01D4B3 ‹𝒳› GC=Lu MATHEMATICAL SCRIPT CAPITAL X 35 U+01D4CC ‹𝓌› GC=Ll MATHEMATICAL SCRIPT SMALL W 6 U+01D4A9 ‹𝒩› GC=Lu MATHEMATICAL SCRIPT CAPITAL N 36 U+01D516 ‹𝔖› GC=Lu MATHEMATICAL FRAKTUR CAPITAL S 7 U+01D4AB ‹𝒫› GC=Lu MATHEMATICAL SCRIPT CAPITAL P 37 U+01D4CF ‹𝓏› GC=Ll MATHEMATICAL SCRIPT SMALL Z 8 U+01D4A2 ‹𝒢› GC=Lu MATHEMATICAL SCRIPT CAPITAL G 38 U+01D53B ‹𝔻› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL D 9 U+01D49C ‹𝒜› GC=Lu MATHEMATICAL SCRIPT CAPITAL A 39 U+01D54B ‹𝕋› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL T 10 U+01D53C ‹𝔼› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL E 40 U+01D4BB ‹𝒻› GC=Ll MATHEMATICAL SCRIPT SMALL F 11 U+01D4AA ‹𝒪› GC=Lu MATHEMATICAL SCRIPT CAPITAL O 41 U+01D4CA ‹𝓊› GC=Ll MATHEMATICAL SCRIPT SMALL U 12 U+01D4A5 ‹𝒥› GC=Lu MATHEMATICAL SCRIPT CAPITAL J 42 U+01D507 ‹𝔇› GC=Lu MATHEMATICAL FRAKTUR CAPITAL D 13 U+01D4A6 ‹𝒦› GC=Lu MATHEMATICAL SCRIPT CAPITAL K 43 U+01D542 ‹𝕂› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL K 14 U+01D4B1 ‹𝒱› GC=Lu MATHEMATICAL SCRIPT CAPITAL V 44 U+01D546 ‹𝕆› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL O 15 U+01D4B2 ‹𝒲› GC=Lu MATHEMATICAL SCRIPT CAPITAL W 45 U+01D4BD ‹𝒽› GC=Ll MATHEMATICAL SCRIPT SMALL H 16 U+01D4B4 ‹𝒴› GC=Lu MATHEMATICAL SCRIPT CAPITAL Y 46 U+01D4C5 ‹𝓅› GC=Ll MATHEMATICAL SCRIPT SMALL P 17 U+01D4B5 ‹𝒵› GC=Lu MATHEMATICAL SCRIPT CAPITAL Z 47 U+01D505 ‹𝔅› GC=Lu MATHEMATICAL FRAKTUR CAPITAL B 18 U+01D4B0 ‹𝒰› GC=Lu MATHEMATICAL SCRIPT CAPITAL U 48 U+01D50E ‹𝔎› GC=Lu MATHEMATICAL FRAKTUR CAPITAL K 19 U+01D4AC ‹𝒬› GC=Lu MATHEMATICAL SCRIPT CAPITAL Q 49 U+01D541 ‹𝕁› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL J 20 U+01D54A ‹𝕊› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL S 50 U+01D543 ‹𝕃› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL L 21 U+01D539 ‹𝔹› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL B 51 U+100002 ⧆ GC=Co <private use code point in plane 16> 22 U+01D5A7 ‹𝖧› GC=Lu MATHEMATICAL SANS-SERIF CAPITAL H 52 U+01D4B8 ‹𝒸› GC=Ll MATHEMATICAL SCRIPT SMALL C 23 U+01D517 ‹𝔗› GC=Lu MATHEMATICAL FRAKTUR CAPITAL T 53 U+01D4C1 ‹𝓁› GC=Ll MATHEMATICAL SCRIPT SMALL L 24 U+01D4C3 ‹𝓃› GC=Ll MATHEMATICAL SCRIPT SMALL N 54 U+01D53D ‹𝔽› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL F 25 U+01D535 ‹𝔵› GC=Ll MATHEMATICAL FRAKTUR SMALL X 55 U+01D53E ‹𝔾› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL G 26 U+01D4BF ‹𝒿› GC=Ll MATHEMATICAL SCRIPT SMALL J 56 U+01D54C ‹𝕌› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL U 27 U+01D540 ‹𝕀› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL I 57 U+01D6A4 ‹𝚤› GC=Ll MATHEMATICAL ITALIC SMALL DOTLESS I 28 U+01D465 ‹𝑥› GC=Ll MATHEMATICAL ITALIC SMALL X 58 U+01D7D9 ‹𝟙› GC=Nd MATHEMATICAL DOUBLE-STRUCK DIGIT ONE 29 U+01D4CE ‹𝓎› GC=Ll MATHEMATICAL SCRIPT SMALL Y 30 U+01D538 ‹𝔸› GC=Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL A
Bidi_Class=Nonspacing_Mark
(BC=NSM
for short) are here in abundance:
◌̂
,
◌̅
,
◌̄
,
◌̇
,
◌̃
,
◌⃗
,
◌⃞
,
◌̲
,
◌̀
,
◌͂
,
◌́
,
◌̊
,
◌̆
,
◌
,
◌̵
,
◌̑
,
◌̧
,
◌⃑
,
◌̣
,
◌̈
,
◌̣
,
◌̷
,
◌́
,
◌̋
,
◌̌
,
◌͘
,
◌⃛
,
◌֗
,
◌̨
,
◌̓
,
◌̈́
,
◌ْ
, and
◌ྞ
.
Here’s what each language natively supports in its standard distribution. A white check mark isn’t quite all there, and a superscripted plus says it goes beyond what’s stated. 🌟
| Unicode | 𝒥𝒶𝓋𝒶𝓈𝒸𝓇𝒾𝓅𝓉 | ᴘʜᴘ | Go | 💎 Ruby | 🐍 Python | ☕ Java | 🐪 Perl |
|---|---|---|---|---|---|---|---|
| Internally | UCS‐2 or UTF‐16 |
UTF‐8⁻ | UTF‐8 | varies | UCS‐2 or UCS‐4 |
UTF‐16 | UTF‐8⁺ |
| Identiﬁers | ─ | ✔ | ✔ | ✔ | ✅∓ | ✔ | ✔ |
| Casefolding | none | simple | simple | full | none | simple | full |
| Casemapping | simple | simple | simple∓ | full | simple | full | full |
| Graphemes | ─ | ✅ | ─ | ─ | ─ | ─ | ✔ |
| Normalization | ─ | ✔ | ─⁺ | ─ | ✔ | ✔ | ✔ |
| UCA Collation | ─ | ─ | ─ | ─ | ─ | ─ | ✔⁺ |
| Named Characters | ─ | ─ | ─ | ─ | ✅ | ─ | ✔⁺ |
| Properties | ─ | two | (non‐regex)⁻ | three | (non‐regex)⁻ | two⁺ | every⁺ |
| Property | Javascript | Javascript w/ XRegExp |
ᴘʜᴘ5 w/ PCRE |
Go5 w/ RE2 |
Ruby1.9 | Python3.2 | Python3.2 w/ regex |
Java1.6 | Java1.7 | ICU | Perl |
|---|---|---|---|---|---|---|---|---|---|---|---|
| General Category | ─ | ✔ | ✔ | ✔ | ✔ | ─ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Script | ─ | ✔ | ✔ | ✔ | ✔ | ─ | ✔ | ─ | ✔ | ✔ | ✔ |
| Two‐Parters | ─ | ─ | ─ | ─ | ─ | ─ | ✔ | ─ | ✅⁻ | ✔ | ✔ |
| Long Names | ─ | ─ | ─ | ─ | ─ | ─ | ✔ | ─ | ─ | ✔ | ✔ |
| Loose Matching | ─ | ─ | ─ | ─ | ─ | ─ | ✔ | ─ | ✅ | ✔ | ✔ |
| Name/Value Aliases | ─ | ─ | ─ | ─ | ─ | ─ | ✔ | ─ | ✅ | ✔ | ✔ |
| User‐Deﬁned | ─ | ─ | ─ | ─ | ─ | ─ | ─ | ─ | ─ | ─ | ✔ |
| UTS#18 RL 1.2 | ─ | ─ | ─ | ─ | ─ | ─ | ✔ | ─ | ✔ | ✔ | ✔ |
| UTS#18 RL 1.2a | ─ | ─ | ─? | ─ | ✅ | ✅ | ✔⁺ | ─ | ✔ | ✔ | ✔ |
| UTS#18 RL 2.2 | ─ | ─ | ✅ | ─ | ─ | ─ | ✔ | ─ | ─ | ✔ | ✔ |
| UTS#18 RL 2.7 | ─ | ─ | ─ | ─ | ─ | ─ | ✅ | ─ | ─ | ✔ | ✔ |
http://unicode.org/charts/case/ http://unicode.org/charts/case/chart_Latin.html
\N{WHITE SMILING FACE}
; you
must use magic numbers like \u263A
instead. Notice that’s not
enough digits.
\uXXXX
,
Javascript supports only ¹⁄₁₇ᵗʰ of Unicode, the 5.88% that occupies Plane Zero.
charCodeAt
and fromCharCode
only ever deal with 16‐bit
quantities, not with real, 21‐bit Unicode code points.
MATHEMATICAL SCRIPT CAPITAL A
,
you have to specify not one character but
two “char units”: "\uD835\uDC9C"
. 😱
# ERROR!! document.write(String.fromCharCode(0x1D49C)); # needed bogosity document.write(String.fromCharCode(0xD835,0xDC9C));
var div = document.createElement("DIV"); div.innerHTML = "�x10000;"; var isUtf16 = div.firstChild.nodeValue.charCodeAt(0) == 0xd800;
\w
, \d
, &c work on trans‐ASCII Unicode as required by
Unicode’s UTS #18 Regular Expressions in its Annex C: Compatibility
Properties. This is a severe hardship.
[𝒜-𝒵]
since that gets misinterpreted as [\uD835\uDC9C-\uD835\uDCB5]
.
Actually, you won’t even get that far:
new RegExp("[𝒜-𝒵]", "i") returned a SyntaxError: RegExp constructor: invalid regular expression
\p{PROP}
and \P{PROP}
:
http://xregexp.com/plugins/
General Category
abbreviation like \p{Sc}
Script
name like \p{Latin}
Block
property like
\p{InMathematicalAlphanumericSymbols}
(except that one won’t work:
it lies outside the ¹⁄₁₇ᵗʰ of Unicode Javascript can even think about)
XRegExp("[^\\p{Latin}\\p{Common}]");
XRegExp
plugin doesn’t even support basic properties like Alphabetic
,
Uppercase
, and Lowercase
, all required by UTS#18 for Level 1 Unicode Support.
preg_*
functions indeed use PCRE.
/u
on your
patterns to get the Unicode character sense instead of the “byte” sense.
\w
, \d
, &c to work the way UTS#18 says they must.
General Category
abbreviations
and the Script
properties.
\X
is the old broken (?>\PM\pM*)
, which is 🛂 not 🛂
a Unicode grapheme cluster as currently deﬁned
in UTS#18 & UTS#29.
strlen
, strstr
, strpos
, and substr
mb_strlen
, mb_strstr
, mb_strpos
, and
mb_substr
instead.
"\x{1F3}ur"
to ǲur "\x{1F2}ur"
:
# PASS mb_convert_case("ǳur", MB_CASE_TITLE, "UTF-8");
"\x{DF}"
to properly become Ss,
ﬁle "\x{FB01}le"
to become Fi, nor ﬅop "\x{FB05}op"
to become Stop.
# FAIL mb_convert_case("ﬅop", MB_CASE_TITLE, "UTF-8");
exp/regexp
. It provides for (simple) Unicode casefolding and
includes access to the Unicode General Category
and Script
properties.
String
functions like upcase
or capitalize
won’t even look
at anything but ASCII.
\p{Lu}
are ﬁne in your regexes because they work on your system — under a UTF‐8 locale.
Now. But move the script to something laboring under CP1252 and suddenly you
have an error!
/u
regex ﬂag.
#!/usr/bin/env ruby #coding: utf-8
#!/usr/bin/env ruby #coding: utf-8 𝔘𝔫𝔦𝔠𝔬𝔡𝔢 = "super"; puts 𝔘𝔫𝔦𝔠𝔬𝔡𝔢 niño = "boy"; puts niño both = 𝔘𝔫𝔦𝔠𝔬𝔡𝔢 + niño; puts both # Yep, it’s superboy!
unicode_utils
gem, available via gem
ininstall unicode_utils
or from
http://unicode-utils.rubyforge.org/
#!/usr/bin/env ruby #coding: utf-8 require 'unicode_utils' puts "lower is " + UnicodeUtils.downcase(str) puts "title is " + UnicodeUtils.titlecase(str) puts "upper is " + UnicodeUtils.upcase(str)
% ruby -le 'print " WEISS" =~ /weiß/i' 1
#!/usr/bin/env ruby #coding: utf-8 str = " ᾲ στο διάολο"; puts str =~ /ᾺΙ ΣΤΟ ΔΙΆΟΛΟ/i ? "PASS" : "FAIL"; PASS
General Category
and Script
.
\w
, \d
, &c won’t work right, and even \p{alphabetic}
is broken.
\w
won’t work except on ASCII, even with the /u
ﬂag.
\N{GREEK SMALL LETTER FINAL SIGMA}
for U+03C2, ς.
\N{GREEK SMALL LETTER STIGMA}
for U+03DB, ϛ.
\N{LATIN CAPITAL LETTER A WITH MACRON AND GRAVE}
.
% perl5.14.0 -Mcharnames=:full -le 'print("\N{LATIN CAPITAL LETTER A WITH MACRON AND GRAVE}")' Ā̀ % perl5.14.0 -Mcharnames=:full -le 'print("\N{LATIN CAPITAL LETTER A WITH MACRON AND GRAVE}")' | uniquote -v \N{LATIN CAPITAL LETTER A WITH MACRON}\N{COMBINING GRAVE ACCENT}
re
library is really quite deﬁcient from
a Unicode perspective.
re.U
, then your \w
, \d
, &c actually do work according to UTS#18.
Mostly.
re
library doesn’t oﬀer any Unicode properties.
LATIN SMALL LETTER LONG S
ſ (as in the old‐style poſt) and either of
the regular versions, whether S or s.
COMBINING GREEK YPOGEGRAMMENI
, ◌ͅ , and any other iota like
GREEK CAPITAL LETTER IOTA
Ι,
GREEK SMALL LETTER IOTA
ι, or
GREEK PROSGEGRAMMENI
ι.
re
module Python comes with, for both v2 and v3.
http://pypi.python.org/pypi/regex
écran
or
el_niño
, or even
東京
or 文字化け
,
the UCS‐2 Curse prevents having one named 𝔘𝔫𝔦𝔠𝔬𝔡𝔢
, let alone
𐐔𐐯𐑅𐐨𐑉𐐯𐐻
or
𐌰𐍄𐍄𐌰‿𐌿𐌽𐍃𐌰𐍂‿𐌸𐌿‿𐌹𐌽‿𐌷𐌹𐌼𐌹𐌽𐌰𐌼
. (This has just been fixed [2011-08-11])
Atta_unsar_
þu_in_himinam
is ok, though.
import sys wide_enough = (sys.maxunicode >= 0x10FFFF) print("my largest character is", sys.maxunicode)
sys.maxunicode
is 0x10FFFF,
whereas it is otherwise only 0xFFFF.
if not wide_enough: raise Exception("Narrow build lacks full Unicode support")
PYTHONIOENCODING
environment variable so it stops guessing.
(This is like setting PERL_UNICODE
to S
.)
$ export PYTHONIOENCODING=utf8
stdin
and stdout
encoding errors raise exceptions,
but those on stderr
do not.
import io import sys for s in ("stdin","stdout","stderr"): setattr(sys, s, io.TextIOWrapper(getattr(sys, s).detach(), encoding="utf8"))
{!}python
from within vi on the pod source, darn it!!
Even 🐍ᵛ³ + regex
cannot ﬁx all 🐍ᵛ² Unicode problems, because 🐍’s
character model is inherently broken. It completely violates UTS#18’s
Level 1 requirement for regular expressions — the minimal level for useful Unicode support —
that the engine support Unicode characters as basic logical units independent of serialization like UTF‑*:
% python3.2 Python 3.2 (r32:88445, Jul 21 2011, 14:44:19) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import re >>> g = "\N{GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI}" >>> print(g) ᾲ >>> print(re.search(r'\w', g)) <_sre.SRE_Match object at 0x10051f988> >>> p = "\N{MATHEMATICAL SCRIPT CAPITAL P}" >>> print(p) 𝒫 >>> print(re.search(r'\w', p)) None >>> print(re.search(r'..', p)) # ← 𝙏𝙃𝙄𝙎 𝙄𝙎 𝙏𝙃𝙀 𝙑𝙄𝙊𝙇𝘼𝙏𝙄𝙊𝙉 𝙍𝙄𝙂𝙃𝙏 𝙃𝙀𝙍𝙀 <_sre.SRE_Match object at 0x10051f988> >>> print(len(chr(0x1D4AB))) 2
char
,
nor in a Character
for that matter. 🚽
int
or a String
: 👉 “int is the new char.”
char
s do not deal with Unicode characters: String.length
must be replaced by codePointCount
, charAt
by codePointAt
, &c.
\N{PILE OF POO}
, so
you have to put all these magic numbers in your code. But which
magic numbers? It’s a 💩 situation.
\uXXXX
.
% javac -encoding UTF-8 SomeanNoyinGanDillegiBlenAme.java
std{in,out,err}
,
your code is not portable.
% java -Dfile.encoding=UTF-8 SomeanNoyinGanDillegiBlenAme
InputStreamReader(InputStream in) InputStreamReader(InputStream in, Charset cs) InputStreamReader(InputStream in, CharsetDecoder dec) InputStreamReader(InputStream in, String charsetName) OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out, Charset cs) OutputStreamWriter(OutputStream out, CharsetEncoder enc) OutputStreamWriter(OutputStream out, String charsetName)
Here’s an open3
type procedure for Java, with correct constructors:
Process slave_process = Runtime.getRuntime().exec("perl -CS script args"); OutputStream __bytes_into_his_stdin = slave_process.getOutputStream(); OutputStreamWriter chars_into_his_stdin = new OutputStreamWriter( __bytes_into_his_stdin, /* DO NOT OMIT! */ Charset.forName("UTF-8").newEncoder() ); InputStream __bytes_from_his_stdout = slave_process.getInputStream(); InputStreamReader chars_from_his_stdout = new InputStreamReader( __bytes_from_his_stdout, /* DO NOT OMIT! */ Charset.forName("UTF-8").newDecoder() ); InputStream __bytes_from_his_stderr = slave_process.getErrorStream(); InputStreamReader chars_from_his_stderr = new InputStreamReader( __bytes_from_his_stderr, /* DO NOT OMIT! */ Charset.forName("UTF-8").newDecoder() );
Pattern
class for regexes, and would embellish any uses of Character
and
String
with strong provisos.
NativeRegEx.cpp
in the public Android repository.
\x{XXXXXX}
regex escape gets around The UTF‐16 Curse.
The previously broken [𝒜‑𝒵]
can now be written [\x{1D49C}‑\x{1D4B5}]
.
UNICODE_CHARACTER_CLASSES
compilation ﬂag changes the
charclass abbreviations like \w
&c, and also the POSIX ones like
\p{alpha}
, to make them do what UTS#18 says they’re supposed to do.
"(?U)"
ﬂag embeddable in the pattern to do the same
thing.
String.equalsIgnoreCase()
still erroneously
treats strings as UCS‐2 sequences not as UTF‐16, it fails to notice that
𐐔𐐇𐐝𐐀𐐡𐐇𐐓 and 𐐼𐐯𐑅𐐨𐑉𐐯𐐻 are the same. Use ICU’s CaseInsenitiveString.equals()
instead for correct behavior.
\p{script=SCRIPTNAME}
,
also usable as \p{isSCRIPTNAME}
or \p{SCRIPTNAME}
.
Other_Alphabetic
.
PERL_UNICODE
envariable to "SA"
, or
in certain very limited & one‐shot cases, even to "SAD"
.
use v5.14; # many, 𝘮𝘢𝘯𝘺 Unicode fixes use utf8; # so source code is UTF-8 use strict; use warnings; use autodie; ## 𝘽𝙐𝙂! conflicts with 𝘶𝘴𝘦 𝘰𝘱𝘦𝘯 below!! use charnames qw< :full >; # standard \N{charnames} use open qw< :std :encoding(UTF-8) >; # default streams
\N{NAMED CHARACTER}
:
you can create your own customized versions of those, too. I use this all the time.
Unicode::Tussle
bundle from CPAN will really make
your Unicode life a lot easier.
http://search.cpan.org/perldoc?Unicode::Tussle % sudo perl -MCPAN -e 'install Unicode::Tussle'
𝔢𝔵𝔢𝔲𝔫𝔱 𝔬𝔪𝔫𝔢𝔰
🍸


Walmart, Best Buy, Target, And Microsoft Have The Best ‘NBA 2K20’ Black Friday Deals And Bundles
by Brian MaziqueIf you haven’t bought NBA 2K20 as of yet, you’re purchasing it for a gift, or you need to replace the game, the Black Friday deals will provide you the best opportunity to cop this year’s game.Walmart, Best Buy and Target have the best deals for the game individually as well as part of a bundle.
Here is a breakdown of the best deals for those interested.
Just the Game
Walmart has the cheapest price for the game at $27, and that’s for PlayStation 4, Xbox One and Nintendo Switch.
Walmart - $27
Sale starts on 11/27 at 10 pm ET online and on 11/28 at 6 pm locally. Walmart does have an early-bird Black Friday video game sale that begins on 11/24 at midnight ET, but NBA 2K20 deals aren’t included in that sale.
PS4
XB1
Switch
You can also pick up the game from Best Buy and Target at a discounted rate.
Best Buy - $28
Target - $30
Bundle Prices
Some may be looking to pick up NBA 2K20 within a console bundle. There are a few really good Black Friday deals for this gift profile too. The best one is at Microsoft for the Xbox One. As of now, there aren’t any eye-popping BF NBA 2K20 bundles for PS4 or Nintendo Switch.
Here is a look at what Microsoft is offering.
The XBox One X - NBA 2K20 Hyperspace Bundle
Xbox One X - NBA 2K20 - Hyperspace Bundle - $350 - Sale Starts 11/21
It includes:
- Digital copy of NBA 2K20
- SE Hyperspace Xbox One X
- Controller with splash design
- 1-Month trial for Xbox Game Pass
- 1-Month trail for Xbox Live Gold
There is a smaller bundle from Microsoft as well.
NBA 2K20 Xbox One S Bundle
NBA 2K20 - Xbox One S Bundle - $200 ($100 Off)
It includes:
- Digital copy of NBA 2K20
- Xbox One S 1TB console
- Xbox Wireless Controller
- Full game download of NBA 2K20
- 1-month trial of Xbox Game Pass (new subscribers only)
- 1-month trial of Xbox Live Gold
This bundle features a less-powerful version of the Xbox One which is something you might want to consider since we’re very close to the next-generation consoles. However, it’ll put you or your loved one in action immediately with NBA 2K20.


The Journey to the Center of the Earth
by Jules Verne
CHAPTER XLV. ALL'S WELL THAT ENDS WELL
Additional Information
- Year Published: 1871
- Language: English
- Country of Origin: France
- Source: Verne, J. (1871) A Journey to the Center of the Earth (Frederick Amadeus Malleson, Trans.) London: Ward, Lock, &Co., Ltd. (Original work published 1864)
-
Readability:
- Flesch–Kincaid Level: 6.0
- Word Count: 1,162
- Genre: Adventure
- ✎ Cite This
Downloads
Such is the conclusion of a history which I cannot expect everybody to believe, for some people will believe nothing against the testimony of their own experience. However, I am indifferent to their incredulity, and they may believe as much or as little as they please.
The Stromboliotes received us kindly as shipwrecked mariners. They gave us food and clothing. After waiting forty–eight hours, on the 31 st of August, a small craft took us to Messina, where a few days' rest completely removed the effect of our fatigues.
On Friday, September the 4th, we embarked on the steamer Volturno, employed by the French Messageries Imperiales, and in three days more we were at Marseilles, having no care on our minds except that abominable deceitful compass, which we had mislaid somewhere and could not now examine; but its inexplicable behaviour exercised my mind fearfully. On the 9th of September, in the evening, we arrived at Hamburg.
I cannot describe to you the astonishment of Martha or the joy of Gräuben.

I looked tenderly upon her, and she smiled through her tears.
How can I describe the extraordinary sensation produced by the return of Professor Liedenbrock? Thanks to Martha's ineradicable tattling, the news that the Professor had gone to discover a way to the centre of the earth had spread over the whole civilised world. People refused to believe it, and when they saw him they would not believe him any the more. Still, the appearance of Hans, and sundry pieces of intelligence derived from Iceland, tended to shake the confidence of the unbelievers.
Then my uncle became a great man, and I was now the nephew of a great man –which is not a privilege to be despised.
Hamburg gave a grand fete in our honour. A public audience was given to the Professor at the Johannaeum, at which he told all about our expedition, with only one omission, the unexplained and inexplicable behaviour of our compass. On the same day, with much state, he deposited in the archives of the city the now famous document of Saknussemm, and expressed his regret that circumstances over which he had no control had prevented him from following to the very centre of the earth the track of the learned Icelander. He was modest notwithstanding his glory, and he was all the more famous for his humility.
So much honour could not but excite envy. There were those who envied him his fame; and as his theories, resting upon known facts, were in opposition to the systems of science upon the question of the central fire, he sustained with his pen and by his voice remarkable discussions with the learned of every country.
For my part I cannot agree with his theory of gradual cooling: in spite of what I have seen and felt, I believe, and always shall believe, in the central heat. But I admit that certain circumstances not yet sufficiently understood may tend to modify in places the action of natural phenomena.
While these questions were being debated with great animation, my uncle met with a real sorrow. Our faithful Hans, in spite of our entreaties, had left Hamburg; the man to whom we owed all our success and our lives too would not suffer us to reward him as we could have wished. He was seized with the mal de pays, a complaint for which we have not even a name in English.
"Farval," said he one day; and with that simple word he left us and sailed for Rejkiavik, which he reached in safety.
We were strongly attached to our brave eider–down hunter; though far away in the remotest north, he will never be forgotten by those whose lives he protected, and certainly I shall not fail to endeavour to see him once more before I die.
To conclude, I have to add that this 'Journey into the Interior of the Earth' created a wonderful sensation in the world. It was translated into all civilised languages. The leading newspapers extracted the most interesting passages, which were commented upon, picked to pieces, discussed, attacked, and defended with equal enthusiasm and determination, both by believers and sceptics. Rare privilege! my uncle enjoyed during his lifetime the glory he had deservedly won; and he may even boast the distinguished honour of an offer from Mr. Barnum, to exhibit him on most advantageous terms in all the principal cities in the United States!
But there was one 'dead fly' amidst all this glory and honour; one fact, one incident, of the journey remained a mystery. Now to a man eminent for his learning, an unexplained phenomenon is an unbearable hardship. Well! it was yet reserved for my uncle to be completely happy.
One day, while arranging a collection of minerals in his cabinet, I noticed in a corner this unhappy compass, which we had long lost sight of; I opened it, and began to watch it.
It had been in that corner for six months, little mindful of the trouble it was giving.
Suddenly, to my intense astonishment, I noticed a strange fact, and I uttered a cry of surprise.
"What is the matter?" my uncle asked.
"That compass!"
"Well?"
"See, its poles are reversed!"
"Reversed?"
"Yes, they point the wrong way."
My uncle looked, he compared, and the house shook with his triumphant leap of exultation.
A light broke in upon his spirit and mine.
"See there," he cried, as soon as he was able to speak. "After our arrival at Cape Saknussemm the north pole of the needle of this confounded compass began to point south instead of north."
"Evidently!"
"Here, then, is the explanation of our mistake. But what phenomenon could have caused this reversal of the poles?"
"The reason is evident, uncle."
"Tell me, then, Axel."
"During the electric storm on the Liedenbrock sea, that ball of fire, which magnetised all the iron on board, reversed the poles of our magnet!"
"Aha! aha!" shouted the Professor with a loud laugh. "So it was just an electric joke!"
From that day forth the Professor was the most glorious of savants, and I was the happiest of men; for my pretty Virlandaise, resigning her place as ward, took her position in the old house on the Königstrasse in the double capacity of niece to my uncle and wife to a certain happy youth. What is the need of adding that the illustrious Otto Liedenbrock, corresponding member of all the scientific, geographical, and mineralogical societies of all the civilised world, was now her uncle and mine?


Thanks for submitting your message. I will get back to you as soon as I can.
Click here to go back to the home page


Before Change
Tag signs and symbols with their tags.
This function is to be used a preprocessing before the actual POS tagging.
i = 0
while i < len(words):
if words[i] in ORCHID_SIGN_TAGS.keys():
words[i] = ORCHID_SIGN_TAGS[words[i]]
i += 1
return words
def tag_to_text(word: str) -> str:
After Change
This function is to be used a preprocessing before the actual POS tagging.
keys = ORCHID_SIGN_TAGS.keys()
words = [
ORCHID_SIGN_TAGS[word] if word in keys else word for word in words
]
return words
def tag_to_text(word: str) -> str:


<% if(session.user) { -%>
Logged in as <%= session.user.name %>
Logout
<% } -%>
Current Week
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
May
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Upcoming Events:


Fever-PCA (Federated PCA for vertically partionned data) is a federated, privacy-preserving tool for Principal Component Analysis, including patient stratification and dimensionality reduction.
Unlike centralised PCA the data stays with the data owner and only model parameters are exchanged. For patient stratification, it is possible to compute the eigenvectors of the patient-by-patient covariance matrix, without exchanging the eigenvectors of this matrix. Only the eigenvectors of the feature-by-feature covariance matrix need to be exchanged.
For more information please refer to our publication:


LIVE CHAT
Guest has joined the chat
Guest
Hello
Guest
test
Guest has left the chat
test has joined the chat
test
test


Create a new html page.
Using the built in core StandardPage plugin is the easiest way to create a page. You can find more info on using this plugin here
If you want to generate pages based on data such as that returned from Twitter or other sources. You may want to create your own plugin.


#include <file.h>
Public Types | |
| using | lockable_type = L |
| using | value_type = T |
Types & Constants | |
| enum class | type : type_t { unknown = 0 , not_set = 1 << 0 , char_device = 1 << 1 , block_device = 1 << 2 , tty = 1 << 3 , file = 1 << 4 , socket = 1 << 5 } |
| using | type_t = unsigned int |
Public Member Functions | |
Constructors & Destructor | |
| file_lockable (file_system &fs, lockable_type &locker) | |
| virtual | ~file_lockable () override |
Public Member Functions | |
| virtual int | close (void) override |
| virtual ssize_t | read (void *buf, std::size_t nbyte) override |
| virtual ssize_t | write (const void *buf, std::size_t nbyte) override |
| virtual ssize_t | writev (const iovec *iov, int iovcnt) override |
| virtual int | vfcntl (int cmd, std::va_list args) override |
| virtual int | fstat (struct stat *buf) override |
| virtual off_t | lseek (off_t offset, int whence) override |
| virtual int | ftruncate (off_t length) override |
| virtual int | fsync (void) override |
| value_type & | impl (void) const |
Public Member Functions | |
| virtual int | fstatvfs (struct statvfs *buf) |
| class file_system & | get_file_system (void) |
Public Member Functions | |
| int | fcntl (int cmd,...) |
| int | isatty (void) |
| type_t | get_type (void) const |
| file_descriptor_t | file_descriptor (void) const |
| bool | is_opened (void) |
Protected Member Functions | |
Private Member Functions | |
| void | file_descriptor (file_descriptor_t fildes) |
| void | clear_file_descriptor (void) |
| io * | alloc_file_descriptor (void) |
| using os::posix::file_lockable< T, L >::lockable_type = L |
|
inherited |
| using os::posix::file_lockable< T, L >::value_type = T |
|
stronginherited |
| os::posix::file_lockable< T, L >::file_lockable | ( | file_system & | fs, |
| lockable_type & | locker | ||
| ) |
|
overridevirtual |
|
protectedinherited |
|
inlineprotectedinherited |
|
overridevirtual |
Reimplemented from os::posix::file.
|
inlineprotectedinherited |
|
inlineinherited |
|
overridevirtual |
Reimplemented from os::posix::io.
|
virtualinherited |
|
overridevirtual |
Reimplemented from os::posix::file.
|
overridevirtual |
Reimplemented from os::posix::file.
|
inlineinherited |
|
inlineinherited |
| file_lockable< T, L >::value_type & os::posix::file_lockable< T, L >::impl | ( | void | ) | const |
|
overridevirtual |
Reimplemented from os::posix::io.
|
overridevirtual |
Reimplemented from os::posix::io.
|
overridevirtual |
Reimplemented from os::posix::io.
|
overridevirtual |
Reimplemented from os::posix::io.
|
overridevirtual |
Reimplemented from os::posix::io.


flowchart TD A[Did the defendant commit high treason?] --> B1{The act took place in Canada} B1 -->|No| B2(Not guilty) B1 -->|Yes| C{Who is the complainant} C --> D[The sovereign] C --> E[Canada] C --> F["¬(The sovereign ∨ Canada)"] F --> G(Not guilty) E --> H0{Did the defendant} H0 --> H1[Levy war against Canada] H1 -->|"∨"| H2[Prepare to levy war against Canada] H2 -->|"∨"| H3[Assist an enemy at war with Canada] H3 -->|"∨"| H4[Assist a hostile armed force engaged with Canada] H4 -->|Yes| I1(Guilty) H4 -->|No| I2(Not guilty) D --> J0{Did the defendant} J0 --> J1[Kill the sovereign] J1 -->|"∨"| J2[Attempt to kill the sovereign] J2 -->|"∨"| J3[Do bodily harm to the sovereign tending to cause death] J3 -->|"∨"| J4[Do bodily harm to the sovereign tending to cause destruction] J4 -->|"∨"| J5[Maim the sovereign] J5 -->|"∨"| J6[Wound the sovereign] J6 -->|"∨"| J7[Imprison the sovereign] J7 -->|"∨"| J8[Restrain the sovereign] J8 -->|Yes| K1(Guilty) J8 -->|No| K2(Not guilty)
Introduction
When reading up on legal tech’s intersections with AI and expert systems, researchers and writers frequently mention Robert Kowalski, Fariba Sadri, and Marek Sogot’s paper “The British Nationality Act as a Logic Program”1 as a black swan event in legal AI.2 Their paper outlined an expert legal system the authors designed and coded in Prolog. Reading through their report, it seemed that a Python program could produce similar results. This little project aims to do that, starting with a simple statutory example.
High treason
What is high treason?
High treason is a criminal offence created by section 46(1) of the Canadian Criminal Code. When I wrote this post, the offence read as follows:
High treason
46 (1) Every one commits high treason who, in Canada,
kills or attempts to kill Her Majesty, or does her any bodily harm tending to death or destruction, maims or wounds her, or imprisons or restrains her;
levies war against Canada or does any act preparatory thereto; or
assists an enemy at war with Canada, or any armed forces against whom Canadian Forces are engaged in hostilities, whether or not a state of war exists between Canada and the country whose forces they are.
Although treason has been a codified criminal offence since the Criminal Code, 1892, the distinction between treason and high treason is relatively recent. Before Parliament made significant amendments to the Criminal Code in the 1970s, treason and high treason were a single, albeit multi-faceted, codified offence.3 Historically, treason was one of three offences punishable by death,4 and remains one of the most severe offences in Canadian criminal law.
Why high treason?
There are several key advantages to working with an offence like high treason:
- Minimal statutory elements. Criminal Code s 46 contains a reasonably straightforward control flow with only a few possible outcomes each time the program asks the user to choose between options.
- Few conditional layers. High treason’s decision tree only contains a few conditional layers. At most, the user must make two decisions before reaching a result and can arrive at a result after as few as one decision. This conditional superficiality makes high treason easy to diagram and demonstrates some basic expert legal system fundamentals.
- Underlitigated. Although all Canadian criminal offences begin as codified statutes, most accumulate greater complexity through litigation. Courts ask and answer what certain words mean in certain circumstances and often add dozens of conditions to one or more basic elemental steps. High treason is a relatively recently created and infrequently charged offence, with few (if any) reported cases turning up in any of the usual repositories. Infrequently charged offences are, by necessity, rarely judicially considered. This infrequency limits the degree to which the statute can be interpretively bifurcated and grow more complex.
- Highly integrated. Despite not appearing much in reported case decisions, high treason is a serious offence that attracts special consideration throughout the Criminal Code, such as punishment availability, mandatory trial procedures, evidentiary prerequisites, jurisdictional nuances, etc. These conditions require the basic expert system I develop here to remain extensible to these future inputs.
High treason’s relative conceptual simplicity makes it an ideal offence to begin development. It is sufficiently complex to allow me to experiment with navigating control points while being straightforward enough to be captured by an automated expert system that answers a simple legal question.
The project’s scope
This project’s goal is to encapsulate high treason within an expert legal system fully. The project must account for the punishment, procedural, and jurisdictional components discussed above to be considered complete. But to start, I will represent high treason’s offence section at a high level. Once the basic control flow is outlined and codified, it can be made more extensible and further developed to incorporate these additional components.
Elementary control flow
One way of describing this high-level view is as an “elementary control flow” representation. By “elementary,” I mean it represents the offence’s essential elements.5 By “control flow,” I refer to the decision trees commonly used in computer science and juridical reasoning.
High treason’s elements
Criminal Code s 46(1)’s wording describes the following offence elements:
- The offence took place in Canada; AND
- Where the complainant is the sovereign, the defendant:
- Killed the sovereign; OR
- Attempted to kill the sovereign; OR
- Caused the sovereign bodily harm tending to cause death; OR
- Caused the sovereign bodily harm tending to cause destruction; OR
- Maims the sovereign; OR
- Wounds the sovereign; OR
- Imprisons the sovereign; OR
- Restrains the sovereign; OR
- Where the complainant is in Canada, the defendant:
- Levied war against Canada; OR
- Prepared to levy war against Canada; OR
- Assists an enemy at war with Canada; OR
- Assists an armed force engaged in hostilities with Canada.
Where none of these conditions obtain, the defendant did not commit high treason.
High treason’s elements as a flowchart
These elements can also be represented in a decision tree as follows:
Figure 1: An ugly flowchart describing the basic expert system’s flow control
Viewed this way, it is apparent how this decision tree might be easily adapted into a Python script that can, at a high level with sufficient and reliable information, decide whether a defendant committed high treason.
A minimally-viable high treason expert system
rules_constants.py
Criminal offences occur when specific factual scenarios take place. This set of rules gives the user a rudimentary way of telling the program what facts exist, allowing it to record these facts when pertinent and return an opinion based on its analysis.
Currently, the program accomplishes this by first determining whether the victim falls into one of two classes covered by high treason. If so, the program asks several specific questions to determine whether there are enough additional facts to constitute the offence. If so, it records and returns the result. But if the complainant is not a member of the high treason complainant class or the defendant’s actions do not match the actus reus of any high treason variant, the function advises as much.
I will outline this functionality below, but for now, the HIGH_TREASON_RULES constant contains all the information needed to get a minimally-viable high treason system going. It currently includes the complainant class as its key and a list of tuples as the key’s value. The tuples have a string at index 0 that prompts the user for a yes/no question and a list at index 1 containing factual information for a future function to read and relay.
= {
HIGH_TREASON_RULES "sovereign": [("Did the defendant kill the sovereign?",
"kill"]),
["Did the defendant attempt to kill the sovereign?",
("kill", "attempt"]),
["Did the defendant do bodily harm to the sovereign tending to cause death?",
("bodily harm," "tending to death"]),
["Did the defendant do bodily harm to the sovereign tending to cause destruction?",
("bodily harm," "tending to destruction"]),
["Did the defendant maim the sovereign?",
("maim"]),
["Did the defendant wound the sovereign?",
("wound"]),
["Did the defendant imprison the sovereign?",
("imprison"]),
["Did the defendant restrain the sovereign?",
("restrain"])],
["canada": [("Did the defendant levy war against Canada?",
"levy war"]),
["Did the defendant prepare to levy war against Canada?",
("prepare", "levy war"]),
["Did the defendant assist an enemy at war with Canada?",
("assist warring enemy"]),
["Did the defendant assist an armed force hostily engaged with Canadian Forces?",
("assist hostile force"])]} [
facts.py
This function generates a factual matrix that future processes will use to determine whether the case facts make out a particular offence.
At first, having the get_actions() functions return True/False rather than a list seems best. After all, if any one condition obtains, the defendant committed high treason. But this overlooks that a defendant may have committed the same offence through different means. A person who levies war against Canada AND assists a separate armed force hostile engaged with Canadian Forces commits high treason twice. Similarly, a person may have caused the sovereign bodily harm that amounts to both maiming and bodily harm tending to cause death and can be legally charged and tried for both offences (albeit not convicted of both, per Stinchcombe.) A list allows the program to record multiple offence instances using fewer passes. Lists save time and ensure the program remains extensible.
def get_sovereign_actions():
= []
actions for question in HIGH_TREASON_RULES["sovereign"]:
= input(question[0] + " (yes/no): ")
response if response.lower() == 'yes':
"sovereign", question[1]))
actions.append((return actions
def get_canada_actions():
= []
actions for question in HIGH_TREASON_RULES["Canada"]:
= input(question[0] + " (yes/no): ")
response if response.lower() == 'yes':
"Canada", question[1]))
actions.append((return actions
def high_treason_facts(victim_name):
= []
actions
if victim_name.lower() == 'sovereign':
= get_sovereign_actions()
actions elif victim_name.lower() == 'canada':
= get_canada_actions()
actions return actions
models.py
Once the program gathers this information, it needs a place to store it. The Facts class takes this job on. The version below contemplates a few variables that still need to be used. Because the program currently uses this class for just one offence, it only needs to be able to store the victim category and the defendant’s actions.
The Facts class is a simple class capable of handling the minimum facts required for a high treason offence. It currently contains the following attributes:
- victim_category (str): The name of the victim of the offence.
- offence_date (str): The date of the offence.
- jurisdiction (str): The jurisdiction where the offence occurred.
- actions (list): A list of actions that the defendant took against the victim.
- role (list): A list of roles that the defendant played in the offence.
A Facts object should account for one offence and offender. A distinct Facts object should represent any potential path to a conviction. Multiple Facts objects should represent multiple offences or offenders.
class Facts:
def __init__(self,
str,
victim_category: str,
offence_date: str,
jurisdiction: list = None,
actions: list = None
role:
):self.victim_category = victim_category
self.offence_date = offence_date
self.jurisdiction = jurisdiction
self.actions = actions if actions is not None else []
self.role = role if role is not None else []
rules.py
Once the factual matrix is put together, the program calls a rules function on those facts. This function first checks to see if the complainant_key
matches either of the complainant categories in HIGH_TREASON_RULES. If so, the program checks to see if any of the facts attached to that key match the offence facts in HIGH_TREASON_RULES. If so, the function appends them to a list and returns it. If not, the function returns an empty list for the main function to interpret as a null result.
def high_treason_rules(facts):
= [] # create an empty list to hold matches
matches for action in facts.actions:
= action[0]
complainant_key = action[1]
action_value
if complainant_key in HIGH_TREASON_RULES:
= HIGH_TREASON_RULES[complainant_key]
tuple_list for item in tuple_list:
if action_value == item[1]:
# append the matching item to the list
matches.append(item) return matches # return the list of matches
input_correction.py
These assumptions assume imperfect input for the victim category and try to anticipate some synonymous terms.
def standardize_sovereign_names(name):
= ('queen', 'king', 'queen elizabeth', 'king charles')
known_aliases if name.lower() in known_aliases:
return 'sovereign'
else:
return name
def standardize_canada_names(name):
= ('nation of canada', 'canadian people', 'canadian military')
known_aliases if name.lower() in known_aliases:
return 'canada'
else:
return name
main.py
The program’s main function. It creates a Facts object and checks the factual matrix against the high treason rules system.
def create_facts():
print("Please enter the facts of the case:")
= input("Who is the victim? ")
victim_category = standardize_sovereign_names(victim_category)
victim_category = standardize_canada_names(victim_category)
victim_category = Complainant(victim_category)
complainant
= input("Date of the offence (YYYY-MM-DD): ")
offence_date = input("Jurisdiction: ")
jurisdiction
= high_treason_facts(victim_category)
actions
return Facts(complainant.name, offence_date, jurisdiction, actions)
def verify_high_treason(matches):
if matches:
print("High treason committed. Matches:")
for match in matches:
print(match)
else:
print("No offence detected.")
def high_treason_system():
= create_facts()
facts = high_treason_rules(facts)
matches
verify_high_treason(matches)
return matches
And that’s it! We have the beginnings of a primitive expert legal system. I will continue developing this code in subsequent blog posts, though I may occasionally return here to update the code. Refer to the GitHub repo for version history, as needed.
AI disclaimer
I’ve used the following AI tools to help create this project:
- Spelling and grammar. Grammarly (non-generative)
- Text summarization. ChatGPT-3.5 & 4
- Code. ChatGPT-3.5 & 4, GitHub Copilot (GPT-3.5 based)
- Legal research. CanLII (non-generative)
- Images. DALL-E
Footnotes
See http://www.doc.ic.ac.uk/~rak/papers/British%20Nationality%20Act.pdf↩
See e.g. AI & Law: British Nationality Act Unexpectedly Spurred AI And Law, How the British Nationality Act Served to Inadvertently Spur AI and the Law.↩
Compare Criminal Code, 1952 s 46(1) with Aidan R. Vining, “Reforming Canadian Sentencing Practices: Problems, Prospects and Lessons” (1979) 17:2 Osgoode Hall L J 355 at note 116.↩
The other historically capital offences were murder and rape.↩
See e.g. https://en.wikibooks.org/wiki/Canadian_Criminal_Law/Proof_of_Elements↩