{{title}}
{{description}}
Select Service:
{{ value.name }}
Number of datasets: {{nDataset}}
Upload Files
Online Data
Upload Files
Select files to upload:
Upload
Upload Progress:
{{uploadProgressVal}}
Online File
Online Data File:
Check Progress:
{{onlineProgressVal}}
Select Datasets and Variables
Search Filename/varNames/title:
(info)
Filter by Time Range:
Filter by Data Sources:
{{ key }}
Filter by Data Providers:
{{ key }}
Filter by Model/Instrument Names:
{{ key }}
Filter by Variables Short Names:
{{ key }}
Filter by Variables Longname:
{{ key }}
Filter Files
There are {{ datasetFiltered.length }} filtered datasets.
Select Datasets:
Number of selected datasets:
{{searchTextFilteredShort[ii-1]}}
{{fileDict[datasetFiltered[ii-1]].varList[iii-1]}}: {{fileDict[datasetFiltered[ii-1]].varListLong[iii-1]}}
Data Subsetting
The dataset to subset:
{{ii}}

Sync
longitude (deg):
pick a value
average over
sum over
form an axis
latitude (deg):
pick a value
average over
sum over
form an axis
vertial ({{subs2.zUnits}}):
pick a value
average over
sum over
form an axis
Z Range: {{zVar.min + ' to ' + zVar.max}}
Time (year-month-day):
pick a value
average over
sum over
form an axis
Preset Time Range:
One Year
Add 1 Year
Reduce 1 Year
Full Range
At Beginning
+1 year
-1 year
At End
Time Procession:
Use Anomaly
Yearly Mean
Quarterly Mean
Dataset Time Range:
{{timeDashV(this.timeSLimAll) + ' to ' + timeDashV(this.timeELimAll)}}
Pick a basin:
{{ key }}
Parameters for the linear combination service
coefficients (up to 10):
add a constant:
  coeff[{{ii}}]:
Parameters for the correlationMap service
Time Lag in Months (Variable 1 is lagged behind Variable 2):
Display Options:
Pick the plot to customize:
{{ii}}
Color Level Type (just an example)
(info)
:
10 levels
10 levels, variance-based
10 levels, zero-centered
10 levels, histogram-based
interval=0.5
vmin=0, vmax=35, interval=1, open-ended
vmin=0, vmax=35, interval=1; outside values cropped
vmin=0, vmax=35, interval=1; within (25,28), interval=0.5
   Modify It:
Specify Colormap:
rainbow
centered
bright_centered
white_centered
grayscale
inverse_grayscale
red_blue_centered
topo
ocean_temp
yellow_orange_brown
brown_orange_yellow
warm_cmyk
terrestrial
Plot Title:
Analysis Purpose:
Download Data
Browser URL:
Service URL
Browser URL
Open a page with the browserUrl
{{browserUrl}}
Data File URL:
{{dataUrl}}
Service Response Text:


WITNESS LIST Elections Committee (Subcommittee on HB 331 Processes and Procedures) April 7, 1997-4:00P HB 331 On: Melinda Nickless (Secy of State) HB 1400 For: Larry McGinnis (Hart Info. Systems) Against: James B. Randall (himself) On: Melinda Nickless (Secy of State) Tom Blackwell (himself) HB 1400 Committee Substitute (off. precnt ch plpty) For: Jerry Meadows (Hart Info.Systems) HB 1652 Registering, but not testifying: On: Cathie Penn (Secy of State)


PREDATOR A film review by Mark R. Leeper Copyright 1987 Mark R. Leeper
Capsule review: Arnold Schwarzenegger meets an alien with a cloaking device while on a commando mission in Central America. Action films are pretty common, but the concept of the cloaking device coupled with decent special effects are a boon.
When I was growing up and into comics, one kind of comic I was NOT interested in was war comics. I never read one, though I was occasionally curious about the ones that mixed war stories with a science fictional element. Typically, some group of commandos would find an island they were taking was infested with dinosaurs. If I were to read a war comic, that would be the one I'd want to read. Well, the science fiction war story has made it to the screen with PREDATOR.
To Major Dutch Schaefer (played by Arnold Schwarzenegger), it's just another job. Schaefer makes his living by leading a crack commando unit in the jungle. It isn't the safest way to make a living, but it usually has a predictable level of danger and few really unexpected hazards. Schaefer usually knows pretty much what to expect and what to be prepared for. This time, however, Schaefer has flubbed it badly. Schaefer and his men are not prepared for the hazards they are facing and they are paying the price in lives. It isn't really their fault, of course.  This time they are being picked off by an alien creature and because the alien can fade into the jungle like a chameleon, they are not even seeing the something this time.
Twentieth Century Fox, who cleaned up with two science fiction horror films last summer (ALIENS and THE FLY), have as their summer science fiction film this year a sort of RAMBO meets ALIENS. You probably already know who Schwarzenegger is. The title role is played by the 7'2" tall Kevin Peter Hall, the Peter Mayhew of the 80s. Hall is quoted as saying of his alien's fighting style: "An alien warrior wouldn't come from outer space doing old Bruce Lee routines. I wanted something a little different from the standard karate. Medieval combat seemed appropriate." Right! Well, I'm not really sure you can tell the difference.
What does set this film apart from pure throwaway action films is an interesting approach in the chameleon or, more accurately, "cloaking" effect. In the first scenes when you see it, you really are not sure what you have seen or how the effect was created. When you can get a better look at the effect, it is relatively clear how it was achieved, but it is still a good idea. The plot implications of a nearly invisible creature stalking the commandos are well-handled. Without the cloaking concept this would be a fairly low-grade action film. As it stands, PREDATOR is an enjoyable action film, reasonably well-thought-out. I saw only one real inconsistency (I don't think it will give away much to say that sometimes the alien can see human eyes and sometimes it can't). Because the invisibility theme is well-handled, I give PREDATOR a +1 on the -4 to +4 scale.
Mark R. Leeper ihnp4!mtgzz!leeper<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: base title: Bitcoin ABC subtitle: About BCHA ---
For up-to-date information, please visit our eCash resource page.
The rest of this page is obsolete, and is only being left here temporarily to assist in the transition to eCash.
On November 15, the Bitcoin Cash (BCH) blockchain split into two chains. To tell the two chains apart, each was given a provisional name by exchanges: Bitcoin Cash ABC (BCHA) and Bitcoin Cash Node (BCHN).
When a chain split happens, one chain will typically hold onto the original cryptocurrency name and ticker, while the other chain will become a separate cryptocurrency with new branding. In this case, BCHN held on to the BCH name and ticker.
That means BCHA will soon be branded with an official coin name, logo, and ticker. When it launches we’ll reach out to exchanges and other businesses directly to make them aware. If you’d like to get notified too, you can sign up here:
Described as innovative by Binance, BCHA has a unique funding feature called the coinbase rule, which reinvests 8% of each BCHA block reward to fund future network development. This funding model rewards the technical talent developing the network through predictable compensation (a salary), whereas BCH relies on a donation funding model instead.
Half of the funds raised by the coinbase rule will finance ongoing roadmap development, so BCHA can scale to become sound money for the world. The other half of the funds will be managed by the Global Network Council—a collection of miners and holders who decide which projects will receive funding to bring value to the network.
Before sending BCHA or BCH from your wallet, it is important to split your pre-fork coins so that your transactions are not replayed (for example also sending BCH when you only meant to send BCHA to someone). There a several ways this can be done.
A good way to split BCH and BCHA from each other is to use Electrum ABC and Electron Cash, as described here.
Another method is to use an exchange such as Coinex which will split the coins for you, as this tutorial explains. But remember that the splitting process may not always go as planned so it is wise to test with smaller amounts first, or use a method where you only send coins to yourself (as with the Electrum ABC - Electron Cash method above).
Warning: There are scammers and thieves who create fake coin splitting tools and services to steal people's coins. Never send your coins, or enter your private key or recovery words into any site or software unless you are certain that it can be trusted. The scammers create fake social media profiles and Youtube channels, so always double check sources and be careful following any links. Always be very cautious, and ask for help if you are unsure.


Hello, I’m Oleksandr Kaleniuk – a Ukrainian software engineer and a failed mathematician.
Technically, I have C. T. S in applied geometry. Which took me five years writing the thesis, publishing papers, speaking at conferences, and doing lots of paperwork. And more paperwork. And even more paperwork. In the end, I had twice as much procedural paperwork as I have published work thesis included. The whole process was a slow burner and eventually, it burned my passion for academia to the ground.
Meanwhile, I was doing all sorts of odd jobs to pay the rent. I’ve been a porter, a journalist, a bassist, a web-designer, and a technical editor for a book on historical metrology. I’ve been programming the whole time too but it wasn't bringing real money back then. One time I wrote a keylogger, no questions asked, for about 10$, and the next month someone stole my internet password with another keylogger and downloaded 8$ worth of porn. That's how I learned both about karma and marginal profit.
After I got my C. T. S., I came back to my home town in Eastern Ukraine. I’ve been planning to decompress for a while but somehow I landed on a job doing back-end in Erlang for a Turkish gaming site. It was fun and new, and I learned a lot. Unfortunately, the remote work arrangement didn’t work for me. I started bringing work problems home and personal problems to work.
I quit by Christmas and spent the rest of the winter frying potatoes, playing Borderlands, and watching videos from C++ conferences. By spring, I was suddenly hired by a nuclear power plant automation firm to do research in ■■■■■ ■■■■■■■■ and ■■■■■ ■■■■■■■■■■. This was an eye-opening experience. I learned that I have to relearn all the things I learned previously to call myself an engineer. Philosophy and marketing spoiled the software anywhere else, but in safety-critical engineering, you have to let the beliefs go and let the evidence take their place.
In 2015 I started working for Materialise in Kyiv. My job now is to make their internal SDK better. It's the sweet spot between math and engineering so it suits me well.
This is Words and Buttons Online – a growing collection of blah-blah-blah about blah-blah-blah. Ok, I admit it. It's my blog.
I didn't want it to be a blog though. That's why pages don't have timestamps and authorship attribution.
But it isn't truly anonymous either. Anonymity isn't the goal. The goal is to give the readers all the value with as little overhead as possible.
I expect, for 99% of readers the authorship of content is uninteresting and the time of publishing is irrelevant. The remaining 1% can easily get this data via GitHub. But still, the content of this site is vastly dictated by my own interests, my own experience, and my own mistakes, too. It would be dishonest to evade responsibility for them by going 100% anonymous.
So this is a blog with interactive elements but without timestamps and attribution.
Ah, that's interesting. In a way, this is an experiment in unchitecture. Every page is self-contained: JS, CSS, and HTML bundled together. There are no generators. Pages' sources are pages themselves. There are no external dependencies, no frameworks, no libraries. Just plain JavaScript. There are no internal dependencies either. If I need a piece of functionality I wrote before, I just copy and adapt what I want.
In terms of modern software architecture, it's a huge step back. And given how well it goes in terms of development and maintainability, I'm starting to believe that the whole field of modern software architecture is a hoax.
For instance, I ignore OOP completely. The sole purpose of runtime polymorphism is dependency inversion and I don't have dependencies at all.
I repeat myself, I adore global variables, I eval code, I never sanitize user input, and I repeat myself. For fun and experience, I do all kinds of stuff I wouldn't dare to do for money.
There's only one rule: every page should be under 64 KB. I believe there is some threshold of complexity that fits in one head and it's all fine while you're still below that threshold. In my case, one simple rule trumps all the established practices.
This thing has so many points of agenda I forgot what was supposed to be hidden.
One thing is absolutely clear though: this is not about business as usual. I do not collect user data, I do not show ads, and I don't do product placement. Weird enough, technically the site is profitable.
In general, it works like this. I learn something cool, I share it, I get feedback and I get better at what I do. This affects my rate as a contractor and gives material for the talks. And since my expenses are very low, the remuneration for the talks alone covers them with a thick overlap.
Sometimes, I share something that has no potential for the talks. That's mostly basic math pages that don't bring much to the table. I believe it's still important to do them once in a while as a form of giving back for all the fantastic popular math books I grew on.
| ← there's more. | + Github & Twitter & RSS |


Looking for the ajax demo?
This page is a testpage of jsProgressBarHandler - see http://www.bram.us/projects/js_bramus/jsprogressbarhandler/ for details


Shallow water flow¶
Solve the one-dimensional shallow water equations:
\[\begin{split}h_t + (hu)_x + (hv)_y & = 0 \\
(hu)_t + (hu^2 + \frac{1}{2}gh^2)_x + (huv)_y & = 0 \\
(hv)_t + (huv)_x + (hv^2 + \frac{1}{2}gh^2)_y & = 0.\end{split}\]
Here h is the depth, (u,v) is the velocity, and g is the gravitational constant.


Sports and entertainment world reacts to Wilder's one-punch KO of Ortiz
by ESPNDeontay Wilder nearly lost his heavyweight title to veteran Luis Ortiz last March, and in Saturday night's rematch, he wasn't exactly wowing anyone during the first half of the fight.
But in Round 7, Wilder showed that all he needs is one opening to close the show, delivering a straight right to Ortiz's forehead that knocked him on his back and ended the bout in Las Vegas.
Wilder made his 10th consecutive successful defense of his WBC heavyweight title, improving to 42-0-1 with 41 KOs, which had the world of sports and entertainment singing his praises on Twitter.


decorators¶
Everyone loves python decorators
We have a few in domonic to make life more fun!
el¶
You can use the el decorator to wrap elements around function results.
from domonic.decorators import el
@el(html, True)
@el(body)
@el(div)
def test():
return 'hi!'
print(test())
#
hi!

# returns pyml objects so call str to render
assert str(test()) == '
hi!
'
It returns the tag object by default.
You can pass True as a second param to the decorator to return a rendered string instead. Also accepts strings as first param i.e. custom tags.
silence¶
Want that unit test to stfu?
from domonic.decorators import silence
@silence
def test_that_wont_pass():
assert True == False
called¶
Python’s lambda restrictions may force you to create anonymous success methods above calling functions.
domonic uses a unique type of decorator to call anonymouse methods immediately after calling the passed method.
To use it, pass 2 functions, something to call BEFORE hand, and an error method
Then your decorated anonymous function will recieve the data of the first function you passed in as a parameter.
Let me show you…
from domonic.decorators import called
@called(
lambda: º.ajax('https://www.google.com'),
lambda err: print('error:', err))
def success(data=None):
print("Sweet as a Nut!")
print(data.text)
It’s meant for anonymous functions and calls immediately. So don’t go using it on class methods.
It’s also called iffe. (so you can know when ur just passing nothing)
@iife()
def sup():
print("sup!")
return True
check¶
logs the entry and exit of a function and is useful for debugging. i.e.
@check
def somefunc():
return True
somefunc()
# would output this to the console
# Entering somefunc
# Exited somefunc
- domonic.decorators
alias of <module ‘domonic.decorators’ from ‘/Users/byteface/Desktop/projects/domonic/domonic/decorators.py’>


interface AudioPlayer
| Modifier and Type | Method and Description |
|---|---|
Runnable |
getOnEndOfAudio()
Gets a method to run after the audio ends
|
boolean |
isPlaying()
Checks if audio player is playing
|
void |
pause()
Executes pause command for player(-s)
|
void |
play()
Executes start command for player(-s)
|
void |
setOnEndOfAudio(Runnable value)
Sets a method to run after the audio ends
|
void |
setVolume(double volume)
Sets volume for player(-s)
|
void |
stop()
Executes stop command for player(-s)
|
boolean isPlaying()
true
if player is playing and false
if it is paused or stoppedvoid play()
void pause()
void stop()
void setVolume(double volume)
Note: we don't need to assert the volume is within range [0, 1] because AudioManager
will ensure
it is withing those bounds. Even if not, MediaPlayer.clamp(double, double, double)
ensures
the proper range.
volume
- value between 0 and 1 indicating new volumevoid setOnEndOfAudio(Runnable value)
value
- runnable value to be set as ON_END propertyRunnable getOnEndOfAudio()
null
if it is not set


A Point Snap (Engage a Segment)
Move the cursor near the selected node.
Press A to snap to the node and engages the segment.
The segment blinks to confirm engagement.
The length and angle of an engaged LINE segment are reported.
Only 1 segment may be engaged at a time.
This operation will always move the cursor off of the previously engaged segment if another node exists within the pick radius. If more than 2 segments exist at a node, sequential A operations process the endpoints in rotation.
Text segments are ignored.
Polygons are treated as a series of contiguous vectors.
Press SpaceBar to disengage the segment.


Heyendaalseweg 135, 6525 AJ
Unfortunately, the parentsday will be cancelled. But do not worry, everybody that signed up will be placed on a short list for next years edition. Sorry for the inconvenience, and hopefully see you next year! - the Parentsday committee 2022/2023
Currently, the PC is still busy finalising the day, so expect some changes to be made to the website in the next few weeks. Specifically, some activities on the day may be moved around in the schedule a bit, except for the lectures. The lecture times are set already.
Every year, the Parentsday Committee (PC) organises a day where all (first-year) AI students are invited to show their parents/guardian/whomever what our study is about. This way, parents can get first-hand experience into what studying AI is like, and what CognAC as a study association has to offer their children. It will be a day filled with various lectures given by staff, and various relaxed activities organised by CognAC.
To start of the day in a low-key manner, study association CognAC and the Parentsday Committee will introduce themselves. After this lecture, you will be familiarised with the schedule of the day, have gained some insight into the university and most importantly: what CognAC has to offer in terms of activities and other services!
Frank is one of the first staff members students meet, and as such he is also the first person that will be presenting during the parentsday. As teacher, he is responsible for the academic- and professional-skills courses in our program. Todays lecture will be no different, as Frank will discuss the various skills students acquire during their studies, and how the Ai program is structured in general.
Hello everybody and welcome again to the Parents Day 2022.
Brains! First:
Did you always want to see not only what studying is like for your child,
but also what they do after their lectures? Come play
beerpong (with water ;))!
Computers! First:
The committee has created a quiz, where hopefully you can prove to us how much you know
about AI and CognAC, the study association!
The quiz will be online (via kahoot), so bring your phones.
Kahoot!
For beerpong go to HG 0.062, for the pubquiz HG 0.071. We will swap halfway!
Hello everybody and welcome again to the Parents Day 2022. In this part of the day we will give you the opportunity to try programming and make some Artificial Intelligence related assignments. We hope this will give you a better understanding of what your child does on a day to day basis and teach you a thing or two. The assignments can be found below. Good luck!
These days, many innovations in the field of AI (for example, chatGPT), are driven by neural networks. But how do these networks look? And maybe more importantly, how is it possible that they can solve so many problems? Students may know Sander from his course on cognitive computational neuroscience, where he explains how neuroscience benefits from AI, but also vice versa.
Enjoy some healthy sandwiches in the URD and talk to students and other parents to explore the enviroment of students at Radboud University.
Hello everybody and welcome again to the Parents Day 2022. In this part of the day we will give you the opportunity to try programming and make some Artificial Intelligence related assignments. We hope this will give you a better understanding of what your child does on a day to day basis and teach you a thing or two. The assignments can be found below. Good luck!
Hello everybody and welcome again to the Parents Day 2022.
Robots! First:
Did you always want to see not only what studying is like for your child,
but also what they do after their lectures? Come play
beerpong (with water ;))!
Ships! First:
The committee has created a quiz, where hopefully you can prove to us how much you know
about AI and CognAC, the study association!
The quiz will be online (via kahoot), so bring your phones.
Kahoot!
For beerpong go to HG 0.062, for the pubquiz HG 0.071. We will swap halfway!
Currently, we are busy finalishing the last talk, and as such there is no information available yet. Please check in later!
It has been a pleasure having you, if you do not want to leave us yet - join for the borrel! We look forward to hearing your feedback on the day, so please take the time and tell us your opion here. Also please hand in the plastic cases of your name-badges at the exit!
Enjoy a cool softdrink or a beer together with all your fellow participants. But do not forget, please leave around 4:45pm - cleanup also needs to be done.


Cross-platform Java executable wrapper
Launch4j is a cross-platform tool for wrapping
Java applications distributed as jars in lightweight Windows
native executables. The executable can be
configured to search for a certain JRE version or
use a bundled one, and it's possible to set
runtime options, like the initial/max heap size.
The wrapper also provides better user experience
through an application icon, a native pre-JRE
splash screen, and a Java download page in case
the appropriate JRE cannot be found.
Features
- Launch4j wraps jars in Windows native executables and allows to run them
like a regular Windows program. It's possible to wrap applications
on Windows, Linux and Mac OS X!
- Also creates launchers for jars and class files without wrapping.
-
Supports executable jars and dynamic classpath resolution using
environment variables and wildcards.
- Doesn't extract the jar from the executable.
- Custom application icon with multiple resolutions and color depths.
- Native pre-JRE splash screen in BMP format shown until
the Java application starts.
- Initial priority and single application instance features.
- Searches for Java using paths, environment variables and registry supporting latest Java runtimes.
- Opens Java download page if an appropriate Java version cannot be
found or a support website in case of an error.
- Supports GUI and console apps.
- Supports Windows application manifests.
- Passes command line arguments, also supports constant arguments.
- Allows to set the initial/max heap size also dynamically in percent of free memory.
- JVM options: set system properties, tweak the garbage collection...
- Runtime JVM options from an .l4j.ini file.
- Runtime command line switches to change the compiled options.
- Access to environment variables, the registry and executable file path through system properties.
- Set environment variables.
- Option to change current directory to the executable location.
- The JRE's bin directory is appended to the Path environment variable.
- Ability to restart the application based on exit code.
- Custom version information shown by Windows Explorer.
- Digital signing of the executable with sign4j.
- Supports Windows Security Features of the Windows 8 certification kit.
- GUI and command line interface.
- Build integration through an Ant task and a Maven Plugin.
- Lightweight: 62 KB
- It's free and may be used for commercial purposes.
- Includes a sample application and Ant script
that automates the build process from Java sources to native executable.
- The wrapped program works on all Windows platforms,
Launch4j works on Windows, Linux and Mac OS X.
License
This program is free software licensed under the
BSD 3-Clause License, the head subproject
(the code which is attached to the wrapped jars) is licensed under the
MIT License.
Launch4j may be used for wrapping closed source, commercial applications.
Info
Running Launch4j on other Java enabled platforms is a matter of getting a binary version
of MinGW binutils 2.22 (windres and ld only)
for your system or compiling them. If you'll provide these, I'll be able to create a binary package
available for download.


8x8: Meets tough pircacy and security standards like HIPAA, BAA and FISMA 140-2 to meet the needs of your business
RingCentral: Limited compliance with PCI, FINRA, and HIPAA
Global Reach8x8: Covering over 90 countries and providing multiple languages.
RingCentral: Covering less than 40 countries and limited language options.
Superior call quality8x8: Delivered the highest score in 17/24 scenarios. Provides consistent call quality that your business csn depend upon.
RingCentral: Had highest score in 4/24 scenarios.
Industry Leadership8x8: Ranked as a leader for 7 straight years in Gartner's UCaaS Magic Quadrant.
RingCentral: Has been in service for only 4 years and hence hasn't been recognised as long as 8x8 in business VoIP.


I have been fascinated with Clojure/Script for the past year and a half. Since finding Clojure I have become obsessed with it! I believe Clojure throughout the entire stack increases productivity tremendously.
Technologies I am proficient in and have several years experience with.


Match Play. Double Match Point. How should Red play 21?
pips Red=151 White=145
(CorrectAnswer= 0/0, ErrorScore= 0)
For money there is virtually no difference between hitting two checkers or hitting one. The extra gammons balance the extra losses.
At DMP hitting one checker with bar/23/22* is clearly correct because it wins the most games which is all that Red is interested in. Hitting just the one checker means that White cannot make a second anchor and that reduces his winning chances.
At DMP hitting two checkers is an error (just).
At DMP hitting one checker with bar/23/22* is clearly correct because it wins the most games which is all that Red is interested in. Hitting just the one checker means that White cannot make a second anchor and that reduces his winning chances.
At DMP hitting two checkers is an error (just).
1. Cubeful 2-ply bar/22* Eq.: +0.482 0.741 0.300 0.031 - 0.259 0.055 0.002 2. Cubeful 2-ply bar/24* 23/21 Eq.: +0.442 (-0.040) 0.721 0.314 0.036 - 0.279 0.055 0.002 3. Cubeful 2-ply bar/24* 13/11 Eq.: +0.437 (-0.045) 0.718 0.333 0.043 - 0.282 0.058 0.003 4. Cubeful 2-ply bar/24*/22* Eq.: +0.436 (-0.046) 0.718 0.374 0.056 - 0.282 0.045 0.001 5. Cubeful 2-ply bar/24* 8/6 Eq.: +0.397 (-0.084) 0.699 0.330 0.045 - 0.301 0.060 0.002


Steve Freeman, Nat Pryce
In Proc. OOPSLA 2006
This paper describes the experience of evolving a domain-specific language embedded in Java over several generations of the jMock test framework. We describe how the framework changed from a library of classes to an embedded language. We describe the lessons we have learned from this experience for framework developers and language designers.
Steve Freeman, Nat Pryce, Tim Mackinnon, Joe Walnes
In Proc. OOPSLA 2004
Mock Objects is an extension to Test-Driven Development that supports good Object-Oriented design by guiding the discovery of a coherent system of types within a code base. It turns out to be less interesting as a technique for isolating tests from third-party libraries than is widely thought. This paper describes the process of using Mock Objects with an extended example and reports best and worst practices gained from experience of applying the process. It also introduces jMock, a Java framework that embodies our collective experience.
Nat Pryce
Brittle tests are a common "gotcha" of test driven development. A brittle unit test will stop passing when you make unrelated changes to your application code. A test suite that contains a lot of brittle tests will slow down development and inhibit refactoring. A brittle test overspecifies the behaviour of the unit being tested. You can keep your tests flexible by following a simple rule of thumb: specify exactly what you want to happen and no more. This article describes how various features of jMock can help you strike the right balance between an accurate specification of a unit's required behaviour and a flexible test that allows easy evolution of the code base.


Target :
Target name, it will be used to search in
SIMBAD
Place :
You can
use geolocation
, write a place name, an
IAU/MPC code
, or lat,lon in
degrees
Date :
Observing date
Time :
Now
Observing
local
time, it will be converted to UTC
Separation :
Maximum separation from target to reference stars in degrees (5-20)
Process
Search reference stars (it usually takes 10~15 seconds...)
SpectroStars
Reference stars for spectroscopy


| Team A | Team B |
|---|---|
| Team A | Team B |
|---|---|
Total rounds: 0
| Participating Hippos on team A: | Participating Tigers on team B: |
|---|---|
| 0 | 0 |
| Hippos killed on team A: | Tigers killed on team B: |
|---|---|
| 0 | 0 |
| Percentage of participating team A Hippos Killed: | Percentage of participating team B Tigers Killed: |
| 0% | 0% |
| On average, how many gang fights did a team A Hippo have to participate in before a team A Hippo was killed by a team B Tiger: | On average, how many gang fights did a team B Tiger have to participate in before a team B Tiger was killed by a team A Hippo: |
| 0 | 0 |


The W3C HTML5Apps team is very proud to relay the good news that HTML5 reached the W3C Web standard status today!
HTML5 defines the fifth major revision of the Hypertext Markup Language (HTML), the format used to build Web pages and applications, and the cornerstone of the Open Web Platform.
“ Today we think nothing of watching video and audio natively in the browser, and nothing of running a browser on a phone,” said Tim Berners-Lee, W3C Director and Web inventor. “ We expect to be able to share photos, shop, read the news, and look up information anywhere, on any device. Though they remain invisible to most users, HTML5 and the Open Web Platform are driving these growing user expectations.”
HTML5 brings to the Web video and audio tracks without needing plugins; programmatic access to a resolution-dependent bitmap canvas, which is useful for rendering graphs, game graphics, or other visual images on the fly; native support for scalable vector graphics (SVG) and math (MathML); annotations important for East Asian typography (Ruby); features to enable accessibility of rich applications; and much more.
For news on what’s next after HTML5, see W3C CEO Jeff Jaffe’s blog post on “ Application Foundations for the Open Web Platform”.
Find out in less than 2 minutes why Web Standards for the future are important by watching the Web standards for the futurevideo.
Filed under:
HTML5 ,
html5apps ,
Standardization


Examples¶
All examples are located in examples/
, and each example directory should
contain a run.sh
script that contains all of the commands that should setup
and run each of the models.
compress_cube_implicit¶
A simple strain elastography compression model with a 0.5 x 1.0 x 3.0 cm mesh of hexahedral elements. 0.5% strain is applied as a displacement on the top surface with a bottom boundary that can move in-plane. An implicit solver is used for this model.


--- layout: post status: publish published: true title: "
Cubs fans got a sneak-peek at the future of the organization this Spring Training. As the roster is whittled down leading up to the regular season, Cubs fans will probably feel a let-down as they look at the Cubs Opening Day roster.
We are still (at least) months away from seeing Javier Baez at Wrigley Field, and the rest of the top prospects are potentially months (Bryant) or year(s) (Soler, Almora) behind him. Just because you don't live in Des Moines, Iowa or Knoxville, Tennessee doesn't mean you have to wait until these prospects land in Chicago to see them play. Minor League Baseball has released for purchase, MiLB.TV for the 2014 season.
By subscribing at $49.99 for the year, or $12.99 per month, you will have access to the following games:
If you have already subscribed, or are considering subscribing to MLB.TV, you can add MiLB.TV to your package at a discounted rate. Unfortunately, MiLB is not wise enough to have an affiliate program...or we're not wise enough to not give them free advertising with this post.


Plan Revealed As SA U23s Prepare For Semis
by Soccer LadumaSouth African U23 team captain, Tercious Malepe, has revealed the plan for David Notoane’s side as they prepare for the semi-finals of the Africa Cup of Nations.
Notoane’s side will face tournament hosts Egypt in their semi-final match at Cairo Stadium on Tuesday evening.
Read: Mathoho & Two Others Suspended - Gordinho Set For Lifeline?
A win against Egypt would earn Mzansi a place in next year’s Tokyo Summer Olympic Games.
“We have played against this side twice before in our two friendly matches building up to this tournament and we know what to expect from them. We also profiled each player in our analysis sessions and you can be rest assured that the boys are hungry to push for a win in this one. Our goal is to qualify for next year’s Olympic Games, and we will stop at nothing until we achieve that goal,” said Malepe, as quoted on SAFA’s official website.
Read: Ntseki’s Concern – ‘Obvious Choices’ In Bafana Squad
Malepe played at the previous Olympics Games in Rio in 2016.
“Playing in the 2016 Olympic Games was a good experience for me and my only wish is to see my teammates gaining the same experience as well. We have been speaking about it and everybody is just highly motivated to realise this goal. Not everybody gets the opportunity to feature in two back-to-back Olympics games and this is one opportunity I really do not want to miss in my playing career. I am just grateful to be playing with guys who share the common vision of being among the top three teams that will represent Africa in Tokyo, come next year,” the Chippa United defender added.


E-Quality is a project started by SJSU enigineering majors, who are dedicated to bringing you excellent quality service!
Online shopping is an important technology that has enhanced the way that we buy products. Buying products online needs to be easy, entertaining, and efficient.
The purpose of this project is to provide grocery users with an application to easily shop for items and checkout. This project will be a
supplement for Shop.Safeway.com and will contain the same features of the current system.


%@ page session="false" %> <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
If you have any comments or requests about MusedIn, please complete the following form. A member of the MusedIn team will respond to you as soon as possible. Also, feel free to contact us with service questions, partnership proposals, or media inquiries.


gh browse
Open a GitHub repository in the browser or print the URL.
More information: home page
- Open the homepage of the current repository in the default web browser:
gh browse
- Open the homepage of a specific repository in the default web browser:
gh browse owner/repository
- Open the settings page of the current repository in the default web browser:
gh browse --settings
- Open the wiki of the current repository in the default web browser:
gh browse --wiki
- Open a specific issue or pull request in the web browser:
gh browse issue_or_pull_request_number
- Open a specific branch in the web browser:
gh browse --branch branch_name
- Open a specific file or directory of the current repository in the web browser:
gh browse path_from_root_of_repository
- Print the destination URL without open the web browser:
gh browse --no-browser


An icicle graph visualizing the protagonist’s intrinsic personality characteristics, including Big Five, Need and Values. Data derived using Personality Insight API which applies linguistic analytics and personality theory.


Watch: Shocking footage shows girl resuced by divers off Italian coast
A coast guard diver pulled a girl from the water after she was seen floating in the sea with her father off the Italian coast.
After the girl was safely pulled aboard a nearby patrol boat, the girl's father and mother joined her on the vessel.
Others were not so lucky: the bodies of five women were recovered early on Sunday after the shipwreck.
Three bodies were recovered at sea, while two others were found on a beach, said the Italian coastguard.
But the survivors warned that up to 20 people has not been counted, adding that those missing at sea were from Algeria, Tunisia and Pakistan.


(function (root) {
'use strict';
qr.js
(c) 2014 Alasdair Mercer
Freely distributable under the MIT license.
Based on jsqrencode
(c) 2010<EMAIL_ADDRESS>Licensed under the GPL Version 3 license.
For all details and documentation:
http://neocotic.com/qr.js
(function (root) {
'use strict';
Alignment pattern.
var ALIGNMENT_DELTA = [
0, 11, 15, 19, 23, 27, 31,
16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24,
26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28
];
Default MIME type.
var DEFAULT_MIME = 'image/png';
MIME used to initiate a browser download prompt when qr.save
is called.
var DOWNLOAD_MIME = 'image/octet-stream';
There are four elements per version. The first two indicate the number of blocks, then the data width, and finally the ECC width.
var ECC_BLOCKS = [
1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17,
1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28,
1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22,
1, 0, 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16,
1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22,
2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28,
2, 0, 78, 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26,
2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26,
2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24,
2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28,
4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24,
2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28,
4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22,
3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24,
5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24,
5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30,
1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28,
5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28,
3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26,
3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28,
4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30,
2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24,
4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30,
6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2, 16, 30,
8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30,
10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30,
8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28, 15, 30,
3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30,
7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30,
5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23, 25, 15, 30,
13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30,
17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30,
17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30,
13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30,
12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30,
6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30,
17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30,
4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30,
20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30,
19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30
];
Map of human-readable ECC levels.
var ECC_LEVELS = {
L: 1,
M: 2,
Q: 3,
H: 4
};
Final format bits with mask (level << 3 | mask).
var FINAL_FORMAT = [
0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976, /* L */
0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0, /* M */
0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed, /* Q */
0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b /* H */
];
Galois field exponent table.
var GALOIS_EXPONENT = [
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26,
0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0,
0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23,
0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1,
0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0,
0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2,
0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce,
0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc,
0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54,
0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73,
0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff,
0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41,
0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6,
0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09,
0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16,
0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00
];
Galois field log table.
var GALOIS_LOG = [
0xff, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b,
0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71,
0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45,
0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6,
0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88,
0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40,
0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d,
0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57,
0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18,
0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e,
0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61,
0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2,
0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6,
0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a,
0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7,
0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf
];
Badness coefficients.
var N1 = 3;
var N2 = 3;
var N3 = 40;
var N4 = 10;
Version pattern.
var VERSION_BLOCK = [
0xc94, 0x5bc, 0xa99, 0x4d3, 0xbf6, 0x762, 0x847, 0x60d, 0x928, 0xb78, 0x45d, 0xa17, 0x532,
0x9a6, 0x683, 0x8c9, 0x7ec, 0xec4, 0x1e1, 0xfab, 0x08e, 0xc1a, 0x33f, 0xd75, 0x250, 0x9d5,
0x6f0, 0x8ba, 0x79f, 0xb0b, 0x42e, 0xa64, 0x541, 0xc69
];
Mode for node.js file system file writes.
var WRITE_MODE = parseInt('0666', 8);
Run lengths for badness.
var badBuffer = [];
Constructor for canvas
elements in the node.js environment.
var Canvas;
Data block.
var dataBlock;
ECC data blocks and tables.
var eccBlock, neccBlock1, neccBlock2;
ECC buffer.
var eccBuffer = [];
ECC level (defaults to L).
var eccLevel = 1;
Image buffer.
var frameBuffer = [];
Fixed part of the image.
var frameMask = [];
File system within the node.js environment.
var fs;
Constructor for img
elements in the node.js environment.
var Image;
Indicates whether or not this script is running in node.js.
var inNode = false;
Generator polynomial.
var polynomial = [];
Save the previous value of the qr
variable.
var previousQr = root.qr;
Data input buffer.
var stringBuffer = [];
Version for the data.
var version;
Data width is based on version
.
var width;
Create a new canvas using document.createElement
unless script is running in node.js, in
which case the canvas
module is used.
function createCanvas() {
return inNode ? new Canvas() : root.document.createElement('canvas');
}
Create a new image using document.createElement
unless script is running in node.js, in
which case the canvas
module is used.
function createImage() {
return inNode ? new Image() : root.document.createElement('img');
}
Force the canvas image to be downloaded in the browser.
Optionally, a callback
function can be specified which will be called upon completed. Since
this is not an asynchronous operation, this is merely convenient and helps simplify the
calling code.
function download(cvs, data, callback) {
var mime = data.mime || DEFAULT_MIME;
root.location.href = cvs.toDataURL(mime).replace(mime, DOWNLOAD_MIME);
if (typeof callback === 'function') callback();
}
Normalize the data
that is provided to the main API.
function normalizeData(data) {
if (typeof data === 'string') data = { value: data };
return data || {};
}
Override the qr
API methods that require HTML5 canvas support to throw a relevant error.
function overrideAPI(qr) {
var methods = [ 'canvas', 'image', 'save', 'saveSync', 'toDataURL' ];
var i;
function overrideMethod(name) {
qr[name] = function () {
throw new Error(name + ' requires HTML5 canvas element support');
};
}
for (i = 0; i < methods.length; i++) {
overrideMethod(methods[i]);
}
}
Asynchronously write the data of the rendered canvas to a given file path.
function writeFile(cvs, data, callback) {
if (typeof data.path !== 'string') {
return callback(new TypeError('Invalid path type: ' + typeof data.path));
}
var fd, buff;
Write the buffer to the open file stream once both prerequisites are met.
function writeBuffer() {
fs.write(fd, buff, 0, buff.length, 0, function (error) {
fs.close(fd);
callback(error);
});
}
Create a buffer of the canvas’ data.
cvs.toBuffer(function (error, _buff) {
if (error) return callback(error);
buff = _buff;
if (fd) {
writeBuffer();
}
});
Open a stream for the file to be written.
fs.open(data.path, 'w', WRITE_MODE, function (error, _fd) {
if (error) return callback(error);
fd = _fd;
if (buff) {
writeBuffer();
}
});
}
Write the data of the rendered canvas to a given file path.
function writeFileSync(cvs, data) {
if (typeof data.path !== 'string') {
throw new TypeError('Invalid path type: ' + typeof data.path);
}
var buff = cvs.toBuffer();
var fd = fs.openSync(data.path, 'w', WRITE_MODE);
try {
fs.writeSync(fd, buff, 0, buff.length, 0);
} finally {
fs.closeSync(fd);
}
}
Set bit to indicate cell in frame is immutable (symmetric around diagonal).
function setMask(x, y) {
var bit;
if (x > y) {
bit = x;
x = y;
y = bit;
}
bit = y;
bit *= y;
bit += y;
bit >>= 1;
bit += x;
frameMask[bit] = 1;
}
Enter alignment pattern. Foreground colour to frame, background to mask. Frame will be merged with mask later.
function addAlignment(x, y) {
var i;
frameBuffer[x + width * y] = 1;
for (i = -2; i < 2; i++) {
frameBuffer[(x + i) + width * (y - 2)] = 1;
frameBuffer[(x - 2) + width * (y + i + 1)] = 1;
frameBuffer[(x + 2) + width * (y + i)] = 1;
frameBuffer[(x + i + 1) + width * (y + 2)] = 1;
}
for (i = 0; i < 2; i++) {
setMask(x - 1, y + i);
setMask(x + 1, y - i);
setMask(x - i, y - 1);
setMask(x + i, y + 1);
}
}
Exponentiation mod N.
function modN(x) {
while (x >= 255) {
x -= 255;
x = (x >> 8) + (x & 255);
}
return x;
}
Calculate and append ecc
data to the data
block. If block is in the string buffer the
indices to buffers are used.
function appendData(data, dataLength, ecc, eccLength) {
var bit, i, j;
for (i = 0; i < eccLength; i++) {
stringBuffer[ecc + i] = 0;
}
for (i = 0; i < dataLength; i++) {
bit = GALOIS_LOG[stringBuffer[data + i] ^ stringBuffer[ecc]];
if (bit !== 255) {
for (j = 1; j < eccLength; j++) {
stringBuffer[ecc + j - 1] = stringBuffer[ecc + j] ^
GALOIS_EXPONENT[modN(bit + polynomial[eccLength - j])];
}
} else {
for (j = ecc; j < ecc + eccLength; j++) {
stringBuffer[j] = stringBuffer[j + 1];
}
}
stringBuffer[ecc + eccLength - 1] = bit === 255 ? 0 :
GALOIS_EXPONENT[modN(bit + polynomial[0])];
}
}
Check mask since symmetricals use half.
function isMasked(x, y) {
var bit;
if (x > y) {
bit = x;
x = y;
y = bit;
}
bit = y;
bit += y * y;
bit >>= 1;
bit += x;
return frameMask[bit] === 1;
}
Apply the selected mask out of the 8 options.
function applyMask(mask) {
var x, y, r3x, r3y;
switch (mask) {
case 0:
for (y = 0; y < width; y++) {
for (x = 0; x < width; x++) {
if (!((x + y) & 1) && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 1:
for (y = 0; y < width; y++) {
for (x = 0; x < width; x++) {
if (!(y & 1) && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 2:
for (y = 0; y < width; y++) {
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x === 3) r3x = 0;
if (!r3x && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 3:
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y === 3) r3y = 0;
for (r3x = r3y, x = 0; x < width; x++, r3x++) {
if (r3x === 3) r3x = 0;
if (!r3x && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 4:
for (y = 0; y < width; y++) {
for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++, r3x++) {
if (r3x === 3) {
r3x = 0;
r3y = !r3y;
}
if (!r3y && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 5:
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y === 3) r3y = 0;
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x === 3) r3x = 0;
if (!((x & y & 1) + !(!r3x | !r3y)) && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 6:
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y === 3) r3y = 0;
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x === 3) r3x = 0;
if (!(((x & y & 1) + (r3x && (r3x === r3y))) & 1) && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
case 7:
for (r3y = 0, y = 0; y < width; y++, r3y++) {
if (r3y === 3) r3y = 0;
for (r3x = 0, x = 0; x < width; x++, r3x++) {
if (r3x === 3) r3x = 0;
if (!(((r3x && (r3x === r3y)) + ((x + y) & 1)) & 1) && !isMasked(x, y)) {
frameBuffer[x + y * width] ^= 1;
}
}
}
break;
}
}
Using the table for the length of each run, calculate the amount of bad image. Long runs or those that look like finders are called twice; once for X and Y.
function getBadRuns(length) {
var badRuns = 0;
var i;
for (i = 0; i <= length; i++) {
if (badBuffer[i] >= 5) {
badRuns += N1 + badBuffer[i] - 5;
}
}
FBFFFBF as in finder.
for (i = 3; i < length - 1; i += 2) {
if (badBuffer[i - 2] === badBuffer[i + 2] &&
badBuffer[i + 2] === badBuffer[i - 1] &&
badBuffer[i - 1] === badBuffer[i + 1] &&
badBuffer[i - 1] * 3 === badBuffer[i] &&
Background around the foreground pattern? Not part of the specs.
(badBuffer[i - 3] === 0 || i + 3 > length ||
badBuffer[i - 3] * 3 >= badBuffer[i] * 4 ||
badBuffer[i + 3] * 3 >= badBuffer[i] * 4)) {
badRuns += N3;
}
}
return badRuns;
}
Calculate how bad the masked image is (e.g. blocks, imbalance, runs, or finders).
function checkBadness() {
var b, b1, bad, big, bw, count, h, x, y;
bad = bw = count = 0;
Blocks of same colour.
for (y = 0; y < width - 1; y++) {
for (x = 0; x < width - 1; x++) {
All foreground colour.
if ((frameBuffer[x + width * y] &&
frameBuffer[(x + 1) + width * y] &&
frameBuffer[x + width * (y + 1)] &&
frameBuffer[(x + 1) + width * (y + 1)]) ||
All background colour.
!(frameBuffer[x + width * y] ||
frameBuffer[(x + 1) + width * y] ||
frameBuffer[x + width * (y + 1)] ||
frameBuffer[(x + 1) + width * (y + 1)])) {
bad += N2;
}
}
}
X runs.
for (y = 0; y < width; y++) {
badBuffer[0] = 0;
for (h = b = x = 0; x < width; x++) {
if ((b1 = frameBuffer[x + width * y]) === b) {
badBuffer[h]++;
} else {
badBuffer[++h] = 1;
}
b = b1;
bw += b ? 1 : -1;
}
bad += getBadRuns(h);
}
if (bw < 0) bw = -bw;
big = bw;
big += big << 2;
big <<= 1;
while (big > width * width) {
big -= width * width;
count++;
}
bad += count * N4;
Y runs.
for (x = 0; x < width; x++) {
badBuffer[0] = 0;
for (h = b = y = 0; y < width; y++) {
if ((b1 = frameBuffer[x + width * y]) === b) {
badBuffer[h]++;
} else {
badBuffer[++h] = 1;
}
b = b1;
}
bad += getBadRuns(h);
}
return bad;
}
Generate the encoded QR image for the string provided.
function generateFrame(str) {
var i, j, k, m, t, v, x, y;
Find the smallest version that fits the string.
t = str.length;
version = 0;
do {
version++;
k = (eccLevel - 1) * 4 + (version - 1) * 16;
neccBlock1 = ECC_BLOCKS[k++];
neccBlock2 = ECC_BLOCKS[k++];
dataBlock = ECC_BLOCKS[k++];
eccBlock = ECC_BLOCKS[k];
k = dataBlock * (neccBlock1 + neccBlock2) + neccBlock2 - 3 + (version <= 9);
if (t <= k) break;
} while (version < 40);
FIXME: Ensure that it fits insted of being truncated.
width = 17 + 4 * version;
Allocate, clear and setup data structures.
v = dataBlock + (dataBlock + eccBlock) * (neccBlock1 + neccBlock2) + neccBlock2;
for (t = 0; t < v; t++) {
eccBuffer[t] = 0;
}
stringBuffer = str.slice(0);
for (t = 0; t < width * width; t++) {
frameBuffer[t] = 0;
}
for (t = 0; t < (width * (width + 1) + 1) / 2; t++) {
frameMask[t] = 0;
}
Insert finders: Foreground colour to frame and background to mask.
for (t = 0; t < 3; t++) {
k = y = 0;
if (t === 1) k = (width - 7);
if (t === 2) y = (width - 7);
frameBuffer[(y + 3) + width * (k + 3)] = 1;
for (x = 0; x < 6; x++) {
frameBuffer[(y + x) + width * k] = 1;
frameBuffer[y + width * (k + x + 1)] = 1;
frameBuffer[(y + 6) + width * (k + x)] = 1;
frameBuffer[(y + x + 1) + width * (k + 6)] = 1;
}
for (x = 1; x < 5; x++) {
setMask(y + x, k + 1);
setMask(y + 1, k + x + 1);
setMask(y + 5, k + x);
setMask(y + x + 1, k + 5);
}
for (x = 2; x < 4; x++) {
frameBuffer[(y + x) + width * (k + 2)] = 1;
frameBuffer[(y + 2) + width * (k + x + 1)] = 1;
frameBuffer[(y + 4) + width * (k + x)] = 1;
frameBuffer[(y + x + 1) + width * (k + 4)] = 1;
}
}
Alignment blocks.
if (version > 1) {
t = ALIGNMENT_DELTA[version];
y = width - 7;
for (;;) {
x = width - 7;
while (x > t - 3) {
addAlignment(x, y);
if (x < t) break;
x -= t;
}
if (y <= t + 9) break;
y -= t;
addAlignment(6, y);
addAlignment(y, 6);
}
}
Single foreground cell.
frameBuffer[8 + width * (width - 8)] = 1;
Timing gap (mask only).
for (y = 0; y < 7; y++) {
setMask(7, y);
setMask(width - 8, y);
setMask(7, y + width - 7);
}
for (x = 0; x < 8; x++) {
setMask(x, 7);
setMask(x + width - 8, 7);
setMask(x, width - 8);
}
Reserve mask, format area.
for (x = 0; x < 9; x++) {
setMask(x, 8);
}
for (x = 0; x < 8; x++) {
setMask(x + width - 8, 8);
setMask(8, x);
}
for (y = 0; y < 7; y++) {
setMask(8, y + width - 7);
}
Timing row/column.
for (x = 0; x < width - 14; x++) {
if (x & 1) {
setMask(8 + x, 6);
setMask(6, 8 + x);
} else {
frameBuffer[(8 + x) + width * 6] = 1;
frameBuffer[6 + width * (8 + x)] = 1;
}
}
Version block.
if (version > 6) {
t = VERSION_BLOCK[version - 7];
k = 17;
for (x = 0; x < 6; x++) {
for (y = 0; y < 3; y++, k--) {
if (1 & (k > 11 ? version >> (k - 12) : t >> k)) {
frameBuffer[(5 - x) + width * (2 - y + width - 11)] = 1;
frameBuffer[(2 - y + width - 11) + width * (5 - x)] = 1;
} else {
setMask(5 - x, 2 - y + width - 11);
setMask(2 - y + width - 11, 5 - x);
}
}
}
}
Sync mask bits. Only set above for background cells, so now add the foreground.
for (y = 0; y < width; y++) {
for (x = 0; x <= y; x++) {
if (frameBuffer[x + width * y]) {
setMask(x, y);
}
}
}
Convert string to bit stream. 8-bit data to QR-coded 8-bit data (numeric, alphanum, or kanji not supported).
v = stringBuffer.length;
String to array.
for (i = 0; i < v; i++) {
eccBuffer[i] = stringBuffer.charCodeAt(i);
}
stringBuffer = eccBuffer.slice(0);
Calculate max string length.
x = dataBlock * (neccBlock1 + neccBlock2) + neccBlock2;
if (v >= x - 2) {
v = x - 2;
if (version > 9) v--;
}
Shift and re-pack to insert length prefix.
i = v;
if (version > 9) {
stringBuffer[i + 2] = 0;
stringBuffer[i + 3] = 0;
while (i--) {
t = stringBuffer[i];
stringBuffer[i + 3] |= 255 & (t << 4);
stringBuffer[i + 2] = t >> 4;
}
stringBuffer[2] |= 255 & (v << 4);
stringBuffer[1] = v >> 4;
stringBuffer[0] = 0x40 | (v >> 12);
} else {
stringBuffer[i + 1] = 0;
stringBuffer[i + 2] = 0;
while (i--) {
t = stringBuffer[i];
stringBuffer[i + 2] |= 255 & (t << 4);
stringBuffer[i + 1] = t >> 4;
}
stringBuffer[1] |= 255 & (v << 4);
stringBuffer[0] = 0x40 | (v >> 4);
}
Fill to end with pad pattern.
i = v + 3 - (version < 10);
while (i < x) {
stringBuffer[i++] = 0xec;
stringBuffer[i++] = 0x11;
}
Calculate generator polynomial.
polynomial[0] = 1;
for (i = 0; i < eccBlock; i++) {
polynomial[i + 1] = 1;
for (j = i; j > 0; j--) {
polynomial[j] = polynomial[j] ? polynomial[j - 1] ^
GALOIS_EXPONENT[modN(GALOIS_LOG[polynomial[j]] + i)] : polynomial[j - 1];
}
polynomial[0] = GALOIS_EXPONENT[modN(GALOIS_LOG[polynomial[0]] + i)];
}
Use logs for generator polynomial to save calculation step.
for (i = 0; i <= eccBlock; i++) {
polynomial[i] = GALOIS_LOG[polynomial[i]];
}
Append ECC to data buffer.
k = x;
y = 0;
for (i = 0; i < neccBlock1; i++) {
appendData(y, dataBlock, k, eccBlock);
y += dataBlock;
k += eccBlock;
}
for (i = 0; i < neccBlock2; i++) {
appendData(y, dataBlock + 1, k, eccBlock);
y += dataBlock + 1;
k += eccBlock;
}
Interleave blocks.
y = 0;
for (i = 0; i < dataBlock; i++) {
for (j = 0; j < neccBlock1; j++) {
eccBuffer[y++] = stringBuffer[i + j * dataBlock];
}
for (j = 0; j < neccBlock2; j++) {
eccBuffer[y++] = stringBuffer[(neccBlock1 * dataBlock) + i + (j * (dataBlock + 1))];
}
}
for (j = 0; j < neccBlock2; j++) {
eccBuffer[y++] = stringBuffer[(neccBlock1 * dataBlock) + i + (j * (dataBlock + 1))];
}
for (i = 0; i < eccBlock; i++) {
for (j = 0; j < neccBlock1 + neccBlock2; j++) {
eccBuffer[y++] = stringBuffer[x + i + j * eccBlock];
}
}
stringBuffer = eccBuffer;
Pack bits into frame avoiding masked area.
x = y = width - 1;
k = v = 1;
inteleaved data and ECC codes.
m = (dataBlock + eccBlock) * (neccBlock1 + neccBlock2) + neccBlock2;
for (i = 0; i < m; i++) {
t = stringBuffer[i];
for (j = 0; j < 8; j++, t <<= 1) {
if (0x80 & t) {
frameBuffer[x + width * y] = 1;
}
Find next fill position.
do {
if (v) {
x--;
} else {
x++;
if (k) {
if (y !== 0) {
y--;
} else {
x -= 2;
k = !k;
if (x === 6) {
x--;
y = 9;
}
}
} else {
if (y !== width - 1) {
y++;
} else {
x -= 2;
k = !k;
if (x === 6) {
x--;
y -= 8;
}
}
}
}
v = !v;
} while (isMasked(x, y));
}
}
Save pre-mask copy of frame.
stringBuffer = frameBuffer.slice(0);
t = 0;
y = 30000;
Using for
instead of while
since in original Arduino code if an early mask was good
enough it wouldn’t try for a better one since they get more complex and take longer.
for (k = 0; k < 8; k++) {
Returns foreground-background imbalance.
applyMask(k);
x = checkBadness();
Is current mask better than previous best?
if (x < y) {
y = x;
t = k;
}
Don’t increment i
to a void redoing mask.
if (t === 7) break;
Reset for next pass.
frameBuffer = stringBuffer.slice(0);
}
Redo best mask as none were good enough (i.e. last wasn’t t
).
if (t !== k) {
applyMask(t);
}
Add in final mask/ECC level bytes.
y = FINAL_FORMAT[t + ((eccLevel - 1) << 3)];
Low byte.
for (k = 0; k < 8; k++, y >>= 1) {
if (y & 1) {
frameBuffer[(width - 1 - k) + width * 8] = 1;
if (k < 6) {
frameBuffer[8 + width * k] = 1;
} else {
frameBuffer[8 + width * (k + 1)] = 1;
}
}
}
High byte.
for (k = 0; k < 7; k++, y >>= 1) {
if (y & 1) {
frameBuffer[8 + width * (width - 7 + k)] = 1;
if (k) {
frameBuffer[(6 - k) + width * 8] = 1;
} else {
frameBuffer[7 + width * 8] = 1;
}
}
}
Finally, return the image data.
return frameBuffer;
}
Build the publicly exposed API.
var qr = {
Current version of qr
.
VERSION: '1.1.2',
Generate the QR code using the data provided and render it on to a <canvas>
element.
If no <canvas>
element is specified in the argument provided a new one will be created and
used.
ECC (error correction capacity) determines how many intential errors are contained in the QR
code.
canvas: function(data) {
data = normalizeData(data);
Module size of the generated QR code (i.e. 1-10).
var size = data.size >= 1 && data.size <= 10 ? data.size : 4;
Actual size of the QR code symbol and is scaled to 25 pixels (e.g. 1 = 25px, 3 = 75px).
size *= 25;
<canvas>
element used to render the QR code.
var cvs = data.canvas || createCanvas();
Retreive the 2D context of the canvas.
var c2d = cvs.getContext('2d');
Ensure the canvas has the correct dimensions.
c2d.canvas.width = size;
c2d.canvas.height = size;
Fill the canvas with the correct background colour.
c2d.fillStyle = data.background || '#fff';
c2d.fillRect(0, 0, size, size);
Determine the ECC level to be applied.
eccLevel = ECC_LEVELS[(data.level && data.level.toUpperCase()) || 'L'];
Generate the image frame for the given value
.
var frame = generateFrame(data.value || '');
c2d.lineWidth = 1;
Determine the pixel size.
var px = size;
px /= width;
px = Math.round(px - 0.5);
Draw the QR code.
c2d.clearRect(0, 0, size, size);
c2d.fillStyle = data.background || '#fff';
c2d.fillRect(0, 0, px * (width + 8), px * (width + 8));
c2d.fillStyle = data.foreground || '#000';
var i, j;
for (i = 0; i < width; i++) {
for (j = 0; j < width; j++) {
if (frame[j * width + i]) {
c2d.fillRect(px * i, px * j, px, px);
}
}
}
return cvs;
},
Generate the QR code using the data provided and render it on to a <img>
element.
If no <img>
element is specified in the argument provided a new one will be created and
used.
ECC (error correction capacity) determines how many intential errors are contained in the QR
code.
image: function(data) {
data = normalizeData(data);
<canvas>
element only which the QR code is rendered.
var cvs = this.canvas(data);
<img>
element used to display the QR code.
var img = data.image || createImage();
Apply the QR code to img
.
img.src = cvs.toDataURL(data.mime || DEFAULT_MIME);
img.height = cvs.height;
img.width = cvs.width;
return img;
},
Generate the QR code using the data provided and render it on to a <canvas>
element and
save it as an image file.
If no <canvas>
element is specified in the argument provided a new one will be created and
used.
ECC (error correction capacity) determines how many intential errors are contained in the QR
code.
If called in a browser the path
property/argument is ignored and will simply prompt the
user to choose a location and file name. However, if called within node.js the file will be
saved to specified path.
A callback
function must be provided which will be called once the saving process has
started. If an error occurs it will be passed as the first argument to this function,
otherwise this argument will be null
.
save: function(data, path, callback) {
data = normalizeData(data);
switch (typeof path) {
case 'function':
callback = path;
path = null;
break;
case 'string':
data.path = path;
break;
}
Callback function is required.
if (typeof callback !== 'function') {
throw new TypeError('Invalid callback type: ' + typeof callback);
}
var completed = false;
<canvas>
element only which the QR code is rendered.
var cvs = this.canvas(data);
Simple function to try and ensure that the callback
function is only called once.
function done(error) {
if (!completed) {
completed = true;
callback(error);
}
}
if (inNode) {
writeFile(cvs, data, done);
} else {
download(cvs, data, done);
}
},
Generate the QR code using the data provided and render it on to a <canvas>
element and
save it as an image file.
If no <canvas>
element is specified in the argument provided a new one will be created and
used.
ECC (error correction capacity) determines how many intential errors are contained in the QR
code.
If called in a browser the path
property/argument is ignored and will simply prompt the
user to choose a location and file name. However, if called within node.js the file will be
saved to specified path.
saveSync: function(data, path) {
data = normalizeData(data);
if (typeof path === 'string') data.path = path;
<canvas>
element only which the QR code is rendered.
var cvs = this.canvas(data);
if (inNode) {
writeFileSync(cvs, data);
} else {
download(cvs, data);
}
},
Generate the QR code using the data provided and render it on to a <canvas>
element before
returning its data URI.
If no <canvas>
element is specified in the argument provided a new one will be created and
used.
ECC (error correction capacity) determines how many intential errors are contained in the QR
code.
toDataURL: function(data) {
data = normalizeData(data);
return this.canvas(data).toDataURL(data.mime || DEFAULT_MIME);
},
Run qr.js in noConflict mode, returning the qr
variable to its previous owner.
Returns a reference to qr
.
noConflict: function() {
root.qr = previousQr;
return this;
}
};
Export qr
for node.js and CommonJS.
if (typeof exports !== 'undefined') {
inNode = true;
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = qr;
}
exports.qr = qr;
Import required node.js modules.
Canvas = require('canvas');
Image = Canvas.Image;
fs = require('fs');
} else if (typeof define === 'function' && define.amd) {
define(function () {
return qr;
});
} else {
In non-HTML5 browser so strip base functionality.
if (!root.HTMLCanvasElement) {
overrideAPI(qr);
}
root.qr = qr;
}
})(this);


Candlelight vigil held for tot killed by falling air conditioner
TORONTO — Dozens of mourners laid teddy bears and said prayers Saturday for a two-year-old girl who died after being hit by an air conditioner that fell from an apartment window on Monday.
by Canadian PressTORONTO — Dozens of mourners laid teddy bears and said prayers Saturday for a two-year-old girl who died after being hit by an air conditioner that fell from an apartment window on Monday.
Family and community members who gathered at the candlelight vigil, held at the site of the tragedy, remembered Crystal Mirogho as a sweet child who loved to laugh
"She was our little angel," said Qasem Afzali, one of Crystal's cousins. "If I had a bad day, when I came to her house and saw her, it made me feel a lot better."
Afzali thanked those in attendance for braving the cold weather to honour the toddler, who was in a stroller and with her mother and siblings when she was struck on Monday afternoon.
Some in attendance cried while others — of multiple faiths — prayed for Crystal and her family members.
Family members said Crystal's immediate family didn't attend because they couldn't bear to come back to the spot where she was killed.
"It's very tough," said Afzali, adding that the family was devastated.
"Her mom is pale white, she's in shock, and the dad is also in shock."
Arif Orya, one of the mourners at the vigil, said his heart broke when he heard about Crystal's death.
"It's very important to show love and support for the family," said Orya.
He said a spokesperson for the President of Afghanistan — where the family immigrated from — sent a message of support to the family and thanked the community for helping them.
A fundraiser for the family had raised more than $33,000 as of Saturday evening. A description for the fundraiser said the money would be used to cover funeral expenses and help the family relocate so they wouldn't have to face the site of the tragedy every day.
Slavko Ristich, a personal injury lawyer representing the family said it was "wonderful" to see the large turnout from the community.
"There was a lot of outreach," he said. "The community has been very supportive."
Ristich said the family is interested in pursuing legal action.
This report by The Canadian Press was first published Nov. 16, 2019.
Salmaan Farooqui, The Canadian Press


The brown-haired princess was so desperate to reclaim her lost crown that she almost drowned in the raging river to find it. [G|D]
The young farmer's face broke into a proud frown as he looked on at his own homegrown crops, a stark contrast to the larger fields grown for corporate farms. [G|D]
Despite her best efforts, the adolescent girl couldn't escape the ingrown insecurity of feeling like she had already outgrown her small, nutbrown world. [G|D]
The forest was so overgrown that the rebellious group had no difficulty throwing off the oppressive dictator, overthrowing his rule in a single day. [G|D]


Cesar Azpilicueta: I wish Jose Mourinho all the best at Tottenham
by FSA EditorTottenham head coach Jose Mourinho was sent well wishes by Chelsea captain Cesar Azpilicueta.
Chelsea captain Cesar Azpilicueta wished former manager Jose Mourinho all the best as Tottenham head coach.
Mourinho was appointed by Spurs on Wednesday, a day after the Premier League club – who are 14th in the table – sacked Mauricio Pochettino.
The Portuguese tactician led Chelsea to three league titles across two spells at the helm, but will now look to salvage their rivals’ season.
Mourinho may have joined Chelsea’s rivals, but Azpilicueta – who won one of his two Premier League titles under the 56-year-old – sent well wishes.
“I can talk only when Jose was here at Chelsea with us,” he told Sky Sports News.
“We won trophies, and now football moves on. I wish him all the best even though he goes to a rival.
“I have good memories with him and I have played many times under him and against him.
“Obviously when we play against each other we both want to win for our teams, but this is football. I wish him well.”
Mourinho’s first game in charge of Spurs will come against another London club, West Ham, on Saturday.


5* hotel "HEAVEN"
Marocco, Mountain road 2
Rooms for your stay:
Room size, m2
14
30
60
80
People capacity
1
2
3
4
Pool size, m2
15
20
Water temperature, ^C
37
47
submit


--- short: t-filesbase64decode type: transformer color: indigo title: Decode base64 description: Decodes the input files using the base64 algorithm. ---
Transformer, decodes the input files using the base64 algorithm.
The {{page.title}} component takes the input files, which are expected to be encoded using the base64 algorithm and decodes them.


Structures
The following structures are available globally.
-
Core entity representation of an email folder business rule. Depicts the information of a user’s email folder and related information.
Declaration
Swift
public struct EmailFolderEntity : Equatable
-
Representation of email configuration data in Platform SDK.
See moreDeclaration
Swift
public struct ConfigurationData : Equatable
-
Representation of a draft email message object associated with a draft email message in Platform SDK.
See moreDeclaration
Swift
public struct DraftEmailMessage : Equatable
-
Representation of a draft email message metadata object associated with a draft email message in Platform SDK.
See moreDeclaration
Swift
public struct DraftEmailMessageMetadata
-
Representation of a email message object associated with a email message in Platform SDK.
See moreDeclaration
Swift
public struct EmailMessage : Equatable
-
Representation of an email message object without any unsealed attributes associated with a email message in Platform SDK.
See moreDeclaration
Swift
public struct PartialEmailMessage : Equatable
-
input object for Provisioning an email address using
See moreSudoEmailClient
Declaration
Swift
public struct CheckEmailAddressAvailabilityInput : Equatable
-
input object for creating a draft email message using
See moreSudoEmailClient
Declaration
Swift
public struct CreateDraftEmailMessageInput
-
input object for deleting draft email messages using
See moreSudoEmailClient
Declaration
Swift
public struct DeleteDraftEmailMessagesInput
-
input object for getting a draft email message using
See moreSudoEmailClient
Declaration
Swift
public struct GetDraftEmailMessageInput
-
input object for getting an email address using
See moreSudoEmailClient
Declaration
Swift
public struct GetEmailAddressInput : Equatable
-
input object for getting an email message using
See moreSudoEmailClient
Declaration
Swift
public struct GetEmailMessageInput : Equatable
-
input object for getting an email message’s RFC822 data using
See moreSudoEmailClient
Declaration
Swift
public struct GetEmailMessageRfc822DataInput : Equatable
-
input object for getting a email addresses associated with a sudo using
See moreSudoEmailClient
Declaration
Swift
public struct ListEmailAddressesForSudoIdInput : Equatable
-
input object for getting an email address using
See moreSudoEmailClient
Declaration
Swift
public struct ListEmailAddressesInput : Equatable
-
input object for listing email folders for an email address using
See moreSudoEmailClient
Declaration
Swift
public struct ListEmailFoldersForEmailAddressIdInput : Equatable
-
input object for listing email messages for an email address using
See moreSudoEmailClient
Declaration
Swift
public struct ListEmailMessagesForEmailAddressInput : Equatable
-
input object for listing email messages for an email folder using
See moreSudoEmailClient
Declaration
Swift
public struct ListEmailMessagesForEmailFolderIdInput : Equatable
-
input object for Provisioning an email address using
See moreSudoEmailClient
Declaration
Swift
public struct ProvisionEmailAddressInput : Equatable
-
input object for sending an email message using
See moreSudoEmailClient
Declaration
Swift
public struct SendEmailMessageInput : Equatable
-
input object for updating a draft email message using
See moreSudoEmailClient
Declaration
Swift
public struct UpdateDraftEmailMessageInput
-
object defining the values to be set when updating email address metadata using
See moreSudoEmailClient
Declaration
Swift
public struct UpdateEmailAddressMetadataValues : Equatable
-
input object for updating an email address’ metadata using
See moreSudoEmailClient
Declaration
Swift
public struct UpdateEmailAddressMetadataInput : Equatable
-
object defining the values to be set when updating a list of email messages using
See moreSudoEmailClient
Declaration
Swift
public struct UpdateEmailMessagesValues : Equatable
-
input object for updating a list of email messages using
See moreSudoEmailClient
Declaration
Swift
public struct UpdateEmailMessagesInput : Equatable
-
Generic Type to wrap around an Output SudoEmail type from a List result.
This is useful for pagination requests and can use its
See morenextToken
to call the next paginated results.Declaration
Swift
public struct ListOutput<T>
extension ListOutput: Equatable where T: Equatable
-
Representation of an Owner object from the Email Service.
This represents the relationship of a unique identifier (
See moreid
) with theissuer
.Declaration
Swift
public struct Owner : Hashable
-
Generic non-specific error.
See moreDeclaration
Swift
public struct AnyError : Error, CustomStringConvertible, LocalizedError, Equatable


PoGo Stats
All Pokemons
My Pokemons
Leagues
PvP Calc
Load Pokemon Data
All Pokemons
POKEDEX #
NAME
RELEASED
LEGENDARY
SHINY
me


{% set page_title = "Paper Explorer" %} {% extends "base.html" %} {% block head %} {{ super() }} {# #} {% endblock %} {% block tabs %} {% endblock %} {% block content %}
Each dot represents a company or investor. They are arranged by a measure of similarity.
If you hover over a dot, you see related information.
If you click on a dot, you get detailed information about the node.
Drag a rectangle to summarize an area of the plot.


| block/10 | process an XML block of content into a block of PDf text with a blank background. |
| block/11 | block() processes one or more paragraphs correctly into PDF content. |
| colored_inner_block/11 | process a parsed XML block of content into a block of PDf text with a color background. |
| inner_block/10 | process a parsed XML block of content into a block of PDf text with a blank background. |
block(PDF, Sample, X, Y, Measure, PtSize, Leading, NLines, Justification, TagMap) -> any()
process an XML block of content into a block of PDf text with a blank background
block(PDF, Color, Sample, X, Y, Measure, PtSize, Leading, NLines, Justification, TagMap) -> any()
block() processes one or more paragraphs correctly into PDF content
parameters to control its output
PDF = the PID of pdf process for the document
Color = the color of the box that the block of text is in
Sample = the content to format as a block of text i.e. "a para with big thoughts
"
X = the X coordinate of the top left corner of the block of text
Y = the Y coordinate of the top left corner of the block of text
Measure = the width of the block holding the text in points
PtSize = the size in points of the font
Leading = the distance in points from the bottom of one line to the bottom of the next
NLines = the number of lines allowed in the block of text
Justification = an atom expressing the text justification required ()
TagMap = the tagmap describing how to handle differnet XML tags
the tag map is formatted like the following:
default_tagMap(Pts) -> {[p], [{default,eg_richText:mk_face("Times-Roman", Pts, true, default, 0)}, {em, eg_richText:mk_face("Times-Italic", Pts, true, default, 0)}, {red, eg_richText:mk_face("ZapfChancery-MediumItalic", Pts, true, {1,0,0},0)}, {blue, eg_richText:mk_face("ZapfChancery-MediumItalic", Pts, true, {0,0,1},0)}, {code, eg_richText:mk_face("Courier", Pts, false, default, 0)}, {b, eg_richText:mk_face("Times-Bold", Pts, true, default, 0)}, {hb, eg_richText:mk_face("Helvetica-Bold", Pts, true, default, 0)}, {helv, eg_richText:mk_face("Helvetica", Pts, true, default, 0)} ]}.
colored_inner_block(PDF, Color, Sample, X, Y, Measure, PtSize, Leading, NLines, Justification, TagMap) -> any()
process a parsed XML block of content into a block of PDf text with a color background
inner_block(PDF, T, X, Y, Len, PtSize, Leading, NLines, Justification, TagMap) -> any()
process a parsed XML block of content into a block of PDf text with a blank background
Generated by EDoc, Jun 15 2010, 14:11:29.


Java is an object-oriented programming language developed by Sun Microsystems, a company best known for its high-end Unix workstations. Modeled after C++, the Java language was designed to be small, simple, and portable across platforms and operating systems, both at the source and at the binary level.
Here are some advantages of Java:
- Java is platform-independent.
- Java is object-oriented.
- Java is Easy to Learn.
A class is a template for multiple objects with similar features. Classes embody all the
features of a particular set of objects.
When you write a program in an object-oriented language, you don’t define actual objects. You
define classes of objects.
An instance of a class is another word for an actual object. If classes are an abstract
representation of an object, an instance is its concrete representation.
We start with a basic class definition by opening up the editor and entering the following:
class Motorcycle {
}
Now,we create some instance variables for this class—three of them, to be specific.
String make;
String color;
boolean engineState;
A class’s behavior determines what instances of that class do when their internal state changes or when that instance is asked to do something by another class or object. Behavior is the way objects can do anything to themselves or have anything done to them.
To define an object’s behavior, you create methods, which look and behave just like functions
in other languages, but are defined inside a class. Java does not have functions defined outside
classes.
Methods are functions defined inside classes that operate on instances of those classes.
Now let’s add some behavior (methods) to the class. There are all kinds of things a motorcycle
can do, but to keep things short, let’s add just one method—a method that starts the engine.
void startEngine() {
if (engineState == true)
System.out.println(“The engine is already on.”);
else {
engineState = true;
System.out.println(“The engine is now on.”);
}
}
Expressions are statements that return a value.
Arithmetic and tests for equality and magnitude are common examples of expressions. Because
they return a value, you can assign that result to a variable or test that value in other Java
statements.
Operators are special symbols that are commonly used in expressions.
Operators in Java include arithmetic, various forms of assignment, increment and decrement,
and logical operations. This section describes all these things.
Here are some examples of expressions and operators:
class ArithmeticTest {
public static void main (String[] args) {
short x = 6;
int y = 4;
float a = 12.5f;
float b = 7f;
System.out.println(“x is “ + x + “, y is “ + y);
System.out.println(“x + y = “ + (x + y));
System.out.println(“x - y = “ + (x - y));
System.out.println(“x / y = “ + (x / y));
System.out.println(“x % y = “ + (x % y));
System.out.println(“a is “ + a + “, b is “ + b;
System.out.println(“a / b = “ + (a / b));
The output for the above code is:
x is 6, y is 4
x + y = 10
x - y = 2
x / y = 1
x % y = 2
a is 12.5, b is 7
a / b = 1.78571
- The book 'Teach Yourself Java in 21 Days' by Laura Lemay and Charles L. Perkins.
- The books 'Informatics Practices Vol.I and Vol.II' by Sumita Arora
- The book 'Java:The Legend' by Benjamin Evans


Congratulations You won!
You lost, try one more time!
The game has ended wit a draw, try one more time!


The Importance of Free Speech
It’s finally time to talk about freedom of speech. It’s the fundamental basis of our democratic systems as it gives us the power to further strive as a whole. Our systems are builded on the fact, that we can discuss anything on a reasonable level or at least that’s how it should be. Hence why it’s crucial to not make any cuts on this freedom at all, otherwise it’s just gonna come back at us.
Let’s start with a video of Jordan Peterson speaking at Toronto about the BillC16. Jordan Peterson became quite a big figure on the topic of freedom of speech after he tried to explain several times why he won’t use pronouns to transgender people or sjw. He often emphasizes that he isn’t against transgender, but against the restriction, or rather in this case promotion, of language. Ironically the video already starts with the other side actively trying to sabotage his speech.
But this article isn’t about the left trying to shut down those who go up against this language police. No, it’s just about why I think freedom of speech is so import, will be and has to be protected.
As I said above, we need freedom of expression to improve ourselves.  In fact, I’d say that silencing those with dumb ideas does more harm than good. Look at antisemitism/xenophobia for example. You could silence it online, but it wouldn’t kill the idea. Those who perpetuate it would just go on and spread it around them. Rather silencing people would cause more dissatisfaction and doubt. These things need to need discussed in the long run. They also need to be solved in one way or another. It’s impossible to shut a group of people without great surveillance, which in and on itself is bad enough. It’s not like you can keep a though police in every little town.
If that doesn’t sound bad enough, some kind of language police would also create doubt. Big doubts in people if certain ideas are okay to express. Is it fine to discriminate against foreigners? No. Is it fine to keep them from entering your country? Well, that depends on the current situation. Or in case of the video above: Is is transphobic to not use certain pronouns? Some say yes, others say no. However these things need to be spoken out, discussed and come to terms with. Not by sabotaging the opposite side or by shutting them up and blocking them on social media.
If the goal of a country is to strive, progress, make it a better place, then ideas need to be talked about. They have to debated if they’re actually progressive, if they benefit society or if they actually make sense. That “should” be the nature of democracy. Rule of the majority while paying attention to minorities. For that however, it’s important to be able to talk about those ideas. Should you ban them, people will be more relucant at expressing them while giving others a deeper voice.
To give you an example, those who raise their voice against Black Lives Matter and similar groups are often called nazi or racist. They may or may not be those. Chances are, they just don’t see the discrimination against blacks and think they don’t need more rights. (Which is correct, they are pretty much equal. They don’t need rights but better law enforcement.) Nowadays it got to the point where it was suddenly completely fine to use violence against nazis. There is so much wrong with that. You can’t be sure they are ones; Violence against others (for their political believe) is never acceptable. It doesn’t even change their opinion.  Clearly not the way you come to terms with each other, compromise and find a solution.
To actually have this active process of nationwide discussions running you need education though. Education in both simple knowledge as well as values like tolerance, ethic, communication skills, etc. That’s the other great pillar for democracy though.


This is going to be a little hard to explain since what I experienced was completely alien to me. My drug experience consists of a fair amount of pot, 2 acid trips (one of which was mind-blowing), and 3 times I've tried mushies with limited success.
I packed a nicely sized cone of Salvia, and proceeded to smoke (what I thought was) almost the whole cone, keeping it in for 15-20 secs - went really hard.
What happened next is very hard to describe. I'll try and put in to words what seemed like what going on to me, and then I'll tell you how I appeared to my friends. Please note that putting this into words really does not do this any justice whatsoever.
The onset was _very_ fast. Total confusion. It was as if someone had opened up my head, scrambled all the nerve connections in my brain, and put my conciousness somewhere else entirely. I had little concept of what was going on around me, my vision was completely fucked.
Lost all concept of time and space. Blended into my surroundings to the point where I didn't know where I started and the rest of my environment stopped.
I basically became one with everything, I think. I felt like I was losing grip, and I tried to counter-act it. I slowly began to blend out of my surroundings. All of this was very, and I mean _very_ odd.
Slowly I began to recognise faces, fleeting glimpses of reality. Not long after that I could talk and stuff, and knew where I was etc, but I was still feeling very odd for quite a while - up to an hour after I'd smoked the cone. I don't know how else to describe what I felt now other than feeling very weird, still getting blending sensations, turning.
What I experienced was so completely alien to me that my reality and the way I processed information was totaly changed to the point that it was unrecognisable. I literally lost my mind, I was not thinking straight in any way shape or form. It wasn't until about 10 minutes after the ordeal that I began to learn what I was actually doing here on planet earth.
First of all, I didn't smoke 'nearly one cone', I had a cone and a little more, but I don't actually remember that. My friends said that just after I put the pipe down a look of total wide-eyed confusion struck my face, and my face went bright red. Keeping in mind I have no recollection of any of these events, this is all what I've been told. I fell off the sofa, and pulled myself up on the coffee table to try and balance myself, and apparently was trying to climb up onto the thing.
I then started to spasm uncontrolably. It wasn't an uncoordinated
movement, my body knew exactly what it was doing and was determined to do it, even if my mind was unaware. I was turning over and over with great speed and force.  I broke a plate that was on the table.
If it wasn't for my friend grabbing me and forcing me against the sofa, I would have damaged some very expensive lighting equipment that was on the
garage floor.
As I was turning around and around on the ground, I was smashing my knee against the concrete floor incredibly hard, over and over and over. I somehow smacked my head, and have a nice big cut on it. It took me a while to realise that my knee was actually sore, but I could still walk on it. I looked very pale afterwards, and felt cold. This morning I could hardly even move it let alone put any weight on it, so I went into A&E and had some X-rays done - nothing broken, just bruised bone.
I had a friend with me that night who had done Salvia with friends before,
but had not experienced nor seen anyone else experience anything anywhere near what I did with this drug.
I put what happened down to my own stupidity in not doing any research before taking a drug which resulted in amoung one of the most profound (albeit short-lived) moments in my entire life. Needless to say it has definately taught me a lesson. I went into it too light-hearted, and got what I deserved.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Cascadian IPA v0.2
06 Mar 2016made on: 2016-03-06
2o fermentation on: 2016-03-13
bottled on: 2016-03-15
volume (gal): 4.8
original gravity: 1.071
final gravity: 1.014
ABV: 7.48125
From here. Original recipe called it a Cascadian Dark Ale.
This is version 2, for 1st version, see the 2013-06-16 post.
Ingredients
Grains
- 10.6 lb American 2-Row (original called for 10, I upped by 0.6 lb.)
- 2 lb Munich I
- 1 lb Carafa III malt
- 0.5 lb Crystal 120
- 0.25 lb Crystal 60
Hop bill
- 3 oz Columbus (US Saaz instead?) (already got)
- 2.5 oz Nugget (already got) (2 oz Chinook -> Nugget)
- 1.25 oz Perle (instead of Simcoe)
- 0.75 oz Fuggles (instead of Simcoe)
Other
- yeast: Imperial A01 House
- 1 tsp. Irish moss
Boil
- 75 minutes
Steps:
- I'm doing all grain, so I use a mash tun. Warmed up water in pot on stove to 151 degrees F. Then poured the whole three malts together into the cooler, and poured enough water on top of the malts to cover them. I stirred occasionally and measured temperature. If it was too cold I put in some hot water. After 90 min., vorlofted ~ 10 minutes, fly sparged with hotter water (170ish deg F), and added back to pot, ended up with about 6.5 gallons.
- Add
- 0.25 oz. US Saaz hops
- 0.25 oz. Perle hops
- Bring to boil.
- Add
- 0.5 oz. Nuggett hops
- 2 tsp. burton water salts
- Boil for 45 min.
- Add
- 0.25 oz. US Saaz hops
- Boil for 20 min.
- After 20 min (at 10 min. remaining), add
- 1 tbsp irish moss
- 1 oz. Nugget hops
- 1 oz. US Saaz hops
- put in copper tubing apparatus to sterilize
- Boil for 5 minutes
- Add
- 0.75 oz. Fuggles hops
- Boil for 5 min.
- Add
- 1 oz. Perle hops
- Remove pot from stove and cool down as fast as possible to temperature ideal for the yeast - I used the copper tubing I put in the boil earlier.
- Transfer cooled down wort to primary fermenter
- measure gravity (OG)
- Pitched yeast at ~64 degrees F
- At start of secondary fermentation after primary (7 days later), add
- 1 oz. Nugget hops
- 1.5 oz. US Saaz hops
- Just before bottling, used 1.5 c. light DME


...
I am a
Retail Pharmacist
Clinical Pharmacist
with
little experience
some experience
lots of experience
seeking to earn
per year
Reveal The Market
Change Data


|
UserMsg Pile
version 0.0.1
UserMsg pile.
|
user messages mediator More...
#include <usermsg.h>
Public Member Functions | |
| UserMsg () | |
| Default constructor. More... | |
| UserMsg (const UserMsg &other) | |
| Copy constructor. More... | |
| UserMsg (const QString &title, void *user_data=NULL) | |
| Constructor that also sets the title and payload. | |
| virtual | ~UserMsg () |
| Destructor. | |
| const QString & | title () const |
| Get the title. | |
| void | setTitle (const QString &value) |
| Set the title. | |
| void * | userData () const |
| Get the payload. | |
| void | setUserData (void *value) |
| Set the payload. | |
| void | show () |
| Show the content of this structure. More... | |
| int | count () const |
| The number of entries in the list. | |
| void | clear () |
| Clear all entries from the list. | |
| const UserMsgEntry & | at (int i) const |
| Get an entry at a specific location. | |
| void | remove (int i) |
| Remove an entry at a specific location. | |
| void | append (const UserMsg &other) |
Appends all entries in other entry to current entry. More... | |
| void | addErr (const QString &s_message) |
| Add an error entry to the list. | |
| void | addWar (const QString &s_message) |
| add a warning entry to the list. | |
| void | addInfo (const QString &s_message) |
| Add an informative entry to the list. | |
| void | addDbgErr (const QString &s_message) |
| Add an error entry to the list. | |
| void | addDbgWar (const QString &s_message) |
| Add a warning entry to the list. | |
| void | addDbgInfo (const QString &s_message) |
| Add an informative entry to the list. | |
| void | addMsg (UserMsgEntry::Type ty, const QString &s_message) |
| Add an entry to the list. More... | |
Static Public Member Functions | |
| static void | err (const QString &s_message) |
| Show an error entry. | |
| static void | war (const QString &s_message) |
| Show a warning entry. | |
| static void | info (const QString &s_message) |
| Show an informative entry. | |
| static void | dbgErr (const QString &s_message) |
| Show an error entry. | |
| static void | dbgWar (const QString &s_message) |
| Show a warning entry. | |
| static void | dbgInfo (const QString &s_message) |
| Show an informative entry. | |
| static void | msg (UserMsgEntry::Type ty, const QString &s_message) |
| Show an entry. More... | |
| static void | fatalException (const QString &s_message) |
| Termination message. More... | |
| static int | consoleAskYN (const QString &s_message) |
| Ask a question at the console; accept Yes/No answer. More... | |
user messages mediator
The class associates a title, a user-defined value and a list of entries, each with its own timestamp, type and string message.
| UserMsg::UserMsg | ( | ) |
Default constructor.
Creates an instance without a title and with a NULL value for user payload.
| UserMsg::UserMsg | ( | const UserMsg & | other | ) |
Copy constructor.
This is a bit dangerous as the user pointer is copied without any notice or reference counting. Pointer lifetime must be well understood.
| void UserMsg::addMsg | ( | UserMsgEntry::Type | ty, |
| const QString & | s_message | ||
| ) |
Add an entry to the list.
Creates a UserMsgEntry instance and appends it to the list.
| void UserMsg::append | ( | const UserMsg & | other | ) |
Appends all entries in other
entry to current entry.
The list is not sorted based on the timestamps.
|
static |
Ask a question at the console; accept Yes/No answer.
|
static |
|
static |
Show an entry.
The function simply creates an instance, adds the message and shows it.
| void UserMsg::show | ( | ) |
Show the content of this structure.
Requests the manager to show this instance. identical to UserMsgMan::show().


| Rank | Player | ELO | Games | Wins | Losses | Win Ratio | Frags | Deaths | K/D | Suicides | Accuracy |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ player.rank }} | {{ player.name | add_flags }} | {{ player.elo }} | {{ player.games }} | {{ player.wins }} | {{ player.losses }} | {{ player.win_ratio }} | {{ player.frags }} | {{ player.deaths }} | {{ player.kpd }} | {{ player.suicides }} | {{ player.accuracy }} |


New York man charged after spiking family members' food and coffee with laxatives, police say
by WKBW StaffCITY OF TONAWANDA, N.Y.— Police in the City of Tonawanda say a man has been charged with three felonies and three misdemeanors after they say he spiked coffee and food of his family members with laxatives and Epsom salts.
Authorities say 34-year-old Andrew Ditch spiked the food and put laxatives in the coffee machine of his family members last month.
Ditch is charged with the following:
- 2 counts of attempted assault (E Felony)
- Aggravated criminal contempt/violation of order of protection (D felony)
- 2 counts of criminal tampering 3rd
- Disobeying an order of protection
According to police, family members were complaining about nausea along with abdominal pain and diarrhea.
Ditch's bail is set at $5,000 and is expected back in court Friday.


Up next:
Split Stage Productions presents
Carrie: The Musical
8:00 October 20, 21, 22; 27, 28, 29
Coming Soon!
Now Showing!
More info...


Data processing agreements
Access Data processing agreements
Access Data Sharing Manager
.
If required, in the
navigation sidebar
, click
Data processing agreements
.


There are no matching items
| NAME | AUTHOR | DATE MODIFIED | WORK COMPLETED (%) | STATUS | ||
|---|---|---|---|---|---|---|
|
|
|
CURRENT VIEW