You can preview the billing data for a customer's subscriptions for a specified time frame. The billing data can be saved to an XML file or opened in an editor of your choice. You can edit the billing data and work with it as required, for example when forwarding the data to an accounting system.
The billing data preview collects the billing-relevant data for the specified customer and accumulates it for every day within the specified time frame. The data is not stored in the database; the result is just a cost projection for the customer organization.
To preview billing data:
Refer to Customer Billing Data for a detailed description of the elements and attributes that may occur in the generated XML file.


1. Quickstart¶
First, start by cloning the repository, then installing the pre-requisites in a virtual environment (recommended):
$ git clone https://github.com/SpeQtral/etsi-qkd-api.git
$ cd etsi-qkd-api
$ python3 -m venv venv
$ pip install -r requirements.txt
You might get some warnings regarding wheel
dependencies–you can ignore them as they do not affect any functionality. Next, we need to configure the KME.
There are two steps to this.
1. Navigate to the config.ini
file located in the /api
folder. Update key_file_path
with the ABSOLUTE file
path to the folder containing the qcrypto key files. You can ignore step b) denoted in the file as we are not yet looking to deploy
the API on an Apache server.
2. Navigate to __init__.py
in the same folder and update variable config_path
with the ABSOLUTE file path
to config.ini
you edited above.
Then deploy the Flask app with the built-in Werkzeug web server:
$ python app.py
* Serving Flask app "api" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://<IP_ADDRESS>:5000/ (Press CTRL+C to quit)
Navigate to http://<IP_ADDRESS>:5000/ on your web browser and you should be greeted with a message: “Hello World from SpeQtral’s ETSI QKD API!”.
1.1. ETSI API Calls¶
Now that Hello World is working, let’s check the various API calls specified by the ETSI document. Ensure that you have valid qcrypto key files in the key file path you specified earlier. Navigate to http://<IP_ADDRESS>:5000/api/v1/keys/_ID_/status, where _ID_ can be any number you want (it is supposed to be the IP of the SAE, but for now I have programmed it to allow any arbitrary ID). You should see something like
{
"key_size": 32,
"master_SAE_ID": "<IP_ADDRESS>",
"max_SAE_ID_count": 0,
"max_key_count": 3002,
"max_key_per_request": 10,
"max_key_size": 1024,
"min_key_size": 32,
"slave_SAE_ID": null,
"source_KME_ID": "<IP_ADDRESS>",
"stored_key_count": 3002,
"target_KME_ID": "<IP_ADDRESS>"
}
The returned JSON provides information such as the number of stored keys, minimum key size etc. This is in adherence to the ETSI API’s
Get status
function call.
To retrieve keys, let us call the Get key
method to retrieve a single key of size 32bits (each key in qcrypto is 32bits). Navigate to http://<IP_ADDRESS>:5000/api/v1/keys/2/enc_keys.
You should see something like
{
"keys": [
{
"key": "HgV54g==",
"key_ID": "e3e70682-c209-4cac-629f-6fbed82c07cd"
}
]
}
which adheres to the ETSI key container specification containing a single key. The key is supplied in base64
format, and the key ID as a UUID.
Now if we call Get status
again, you should see stored_key_count
updated (omitting the other lines):
{
"stored_key_count": 3001,
}
To retrieve multiple keys, you can pass the desired number and size of each key in a GET
or POST
request. We will demonstrate a GET
request here; a POST
request can be done using Postman. To obtain 3 keys of size 128bits, navigate to http://<IP_ADDRESS>:5000/api/v1/keys/2/enc_keys?number=3&size=128.
{
"keys": [
{
"key": "XC0Kvi+6A7Ropi2rqRZDSQ==",
"key_ID": "f728b4fa-4248-5e3a-0a5d-2f346baa9455+eb1167b3-67a9-c378-7c65-c1e582e2e662+f7c1bd87-4da5-e709-d471-3d60c8a70639+e443df78-9558-867f-5ba9-1faf7a024204"
},
{
"key": "52RFCZcFVLODleAe/7FmNQ==",
"key_ID": "23a7711a-8133-2876-37eb-dcd9e87a1613+1846d424-c17c-6279-23c6-612f48268673+fcbd04c3-4021-2ef7-cca5-a5a19e4d6e3c+b4862b21-fb97-d435-8856-1712e8e5216a"
},
{
"key": "WknxA6QiLwcaS6dpb5lP6Q==",
"key_ID": "259f4329-e6f4-590b-9a16-4106cf6a659e+12e0c8b2-bad6-40fb-1948-8dec4f65d4d9+5487ce1e-af19-922a-d9b8-a714e61a441c+5a921187-19c7-8df4-8f4f-f31e78de5857"
}
]
}
We see 3 keys returned, and as 128bit keys can be formed by concatenating 4 32bit keys, the key_ID
of each key is formed by appending
the UUIDs of 4 keys, separated by a ‘+’ delimiter. Another check with Get status
should show the key count updated accordingly.


Next: Bit-Manipulation Functions, Previous: Input/Output Functions, Up: Built-in Functions [Contents][Index]
awk
programs are commonly used to process log files
containing timestamp information, indicating when a
particular log record was written. Many programs log their timestamps
in the form returned by the time()
system call, which is the
number of seconds since a particular epoch. On POSIX-compliant systems,
it is the number of seconds since
1970-01-01 00:00:00 UTC, not counting leap
seconds.53
All known POSIX-compliant systems support timestamps from 0 through
231 - 1,
which is sufficient to represent times through
2038-01-19 03:14:07 UTC. Many systems support a wider range of timestamps,
including negative timestamps that represent times before the
epoch.
In order to make it easier to process such log files and to produce
useful reports, gawk
provides the following functions for
working with timestamps. They are gawk
extensions; they are
not specified in the POSIX standard.54
However, recent versions
of mawk
(see Other Freely Available awk
Implementations) also support these functions.
Optional parameters are enclosed in square brackets ([ ]):
mktime(datespec
[, utc-flag
])
¶Turn datespec into a timestamp in the same form
as is returned by systime()
. It is similar to the function of the
same name in ISO C. The argument, datespec, is a string of the form
"YYYY MM DD HH MM SS [DST]"
.
The string consists of six or seven numbers representing, respectively,
the full year including century, the month from 1 to 12, the day of the month
from 1 to 31, the hour of the day from 0 to 23, the minute from 0 to
59, the second from 0 to 60,55
and an optional daylight-savings flag.
The values of these numbers need not be within the ranges specified;
for example, an hour of -1 means 1 hour before midnight.
The origin-zero Gregorian calendar is assumed, with year 0 preceding
year 1 and year -1 preceding year 0.
If utc-flag is present and is either nonzero or non-null, the time
is assumed to be in the UTC time zone; otherwise, the
time is assumed to be in the local time zone.
If the DST daylight-savings flag is positive, the time is assumed to be
daylight savings time; if zero, the time is assumed to be standard
time; and if negative (the default), mktime()
attempts to determine
whether daylight savings time is in effect for the specified time.
If datespec does not contain enough elements or if the resulting time
is out of range, mktime()
returns -1.
strftime(
[format [,
timestamp [,
utc-flag] ] ])
¶Format the time specified by timestamp
based on the contents of the format string and return the result.
It is similar to the function of the same name in ISO C.
If utc-flag is present and is either nonzero or non-null, the value
is formatted as UTC (Coordinated Universal Time, formerly GMT or Greenwich
Mean Time). Otherwise, the value is formatted for the local time zone.
The timestamp is in the same format as the value returned by the
systime()
function. If no timestamp argument is supplied,
gawk
uses the current time of day as the timestamp.
Without a format argument, strftime()
uses
the value of PROCINFO["strftime"]
as the format string
(see Predefined Variables).
The default string value is
"%a %b %e %H:%M:%S %Z %Y"
. This format string produces
output that is equivalent to that of the date
utility.
You can assign a new value to PROCINFO["strftime"]
to
change the default format; see the following list for the various format directives.
systime()
¶Return the current time as the number of seconds since the system epoch. On POSIX systems, this is the number of seconds since 1970-01-01 00:00:00 UTC, not counting leap seconds. It may be a different number on other systems.
The systime()
function allows you to compare a timestamp from a
log file with the current time of day. In particular, it is easy to
determine how long ago a particular record was logged. It also allows
you to produce log records using the “seconds since the epoch” format.
The mktime()
function allows you to convert a textual representation
of a date and time into a timestamp. This makes it easy to do before/after
comparisons of dates and times, particularly when dealing with date and
time data coming from an external source, such as a log file.
The strftime()
function allows you to easily turn a timestamp
into human-readable information. It is similar in nature to the sprintf()
function
(see String-Manipulation Functions),
in that it copies nonformat specification characters verbatim to the
returned string, while substituting date and time values for format
specifications in the format string.
strftime()
is guaranteed by the 1999 ISO C
standard56
to support the following date format specifications:
%a
The locale’s abbreviated weekday name.
%A
The locale’s full weekday name.
%b
The locale’s abbreviated month name.
%B
The locale’s full month name.
%c
The locale’s “appropriate” date and time representation.
(This is ‘%A %B %d %T %Y’ in the "C"
locale.)
%C
The century part of the current year. This is the year divided by 100 and truncated to the next lower integer.
%d
The day of the month as a decimal number (01–31).
%D
Equivalent to specifying ‘%m/%d/%y’.
%e
The day of the month, padded with a space if it is only one digit.
%F
Equivalent to specifying ‘%Y-%m-%d’. This is the ISO 8601 date format.
%g
The year modulo 100 of the ISO 8601 week number, as a decimal number (00–99). For example, January 1, 2012, is in week 53 of 2011. Thus, the year of its ISO 8601 week number is 2011, even though its year is 2012. Similarly, December 31, 2012, is in week 1 of 2013. Thus, the year of its ISO week number is 2013, even though its year is 2012.
%G
The full year of the ISO week number, as a decimal number.
%h
Equivalent to ‘%b’.
%H
The hour (24-hour clock) as a decimal number (00–23).
%I
The hour (12-hour clock) as a decimal number (01–12).
%j
The day of the year as a decimal number (001–366).
%m
The month as a decimal number (01–12).
%M
The minute as a decimal number (00–59).
%n
A newline character (ASCII LF).
%p
The locale’s equivalent of the AM/PM designations associated with a 12-hour clock.
%r
The locale’s 12-hour clock time.
(This is ‘%I:%M:%S %p’ in the "C"
locale.)
%R
Equivalent to specifying ‘%H:%M’.
%S
The second as a decimal number (00–60).
%t
A TAB character.
%T
Equivalent to specifying ‘%H:%M:%S’.
%u
The weekday as a decimal number (1–7). Monday is day one.
%U
The week number of the year (with the first Sunday as the first day of week one) as a decimal number (00–53).
%V
The week number of the year (with the first Monday as the first day of week one) as a decimal number (01–53). The method for determining the week number is as specified by ISO 8601. (To wit: if the week containing January 1 has four or more days in the new year, then it is week one; otherwise it is the last week [52 or 53] of the previous year and the next week is week one.)
%w
The weekday as a decimal number (0–6). Sunday is day zero.
%W
The week number of the year (with the first Monday as the first day of week one) as a decimal number (00–53).
%x
The locale’s “appropriate” date representation.
(This is ‘%A %B %d %Y’ in the "C"
locale.)
%X
The locale’s “appropriate” time representation.
(This is ‘%T’ in the "C"
locale.)
%y
The year modulo 100 as a decimal number (00–99).
%Y
The full year as a decimal number (e.g., 2015).
%z
The time zone offset in a ‘+HHMM’ format (e.g., the format necessary to produce RFC 822/RFC 1036 date headers).
%Z
The time zone name or abbreviation; no characters if no time zone is determinable.
%Ec %EC %Ex %EX %Ey %EY %Od %Oe %OH
%OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy
“Alternative representations” for the specifications
that use only the second letter (‘%c’, ‘%C’,
and so on).57
(These facilitate compliance with the POSIX date
utility.)
%%
A literal ‘%’.
If a conversion specifier is not one of those just listed, the behavior is undefined.58
For systems that are not yet fully standards-compliant,
gawk
supplies a copy of
strftime()
from the GNU C Library.
It supports all of the just-listed format specifications.
If that version is
used to compile gawk
(see Installing gawk
),
then the following additional format specifications are available:
%k
The hour (24-hour clock) as a decimal number (0–23). Single-digit numbers are padded with a space.
%l
The hour (12-hour clock) as a decimal number (1–12). Single-digit numbers are padded with a space.
%s
The time as a decimal timestamp in seconds since the epoch.
Additionally, the alternative representations are recognized but their normal representations are used.
The following example is an awk
implementation of the POSIX
date
utility. Normally, the date
utility prints the
current date and time of day in a well-known format. However, if you
provide an argument to it that begins with a ‘+’, date
copies nonformat specifier characters to the standard output and
interprets the current time according to the format specifiers in
the string. For example:
$ date '+Today is %A, %B %d, %Y.' -| Today is Monday, September 22, 2014.
Here is the gawk
version of the date
utility.
It has a shell “wrapper” to handle the -u option,
which requires that date
run as if the time zone
is set to UTC:
#! /bin/sh # # date --- approximate the POSIX 'date' command case $1 in -u) TZ=UTC0 # use UTC export TZ shift ;; esac gawk 'BEGIN { format = PROCINFO["strftime"] exitval = 0 if (ARGC > 2) exitval = 1 else if (ARGC == 2) { format = ARGV[1] if (format ~ /^\+/) format = substr(format, 2) # remove leading + } print strftime(format) exit exitval }' "$@"
See Glossary, especially the entries “Epoch” and “UTC.”
The GNU date
utility can
also do many of the things described here. Its use may be preferable
for simple time-related operations in shell scripts.
Occasionally there are minutes in a year with a leap second, which is why the seconds can go up to 60.
Unfortunately,
not every system’s strftime()
necessarily
supports all of the conversions listed here.
If you don’t understand any of this, don’t worry about
it; these facilities are meant to make it easier to “internationalize”
programs.
Other internationalization features are described in
Internationalization with gawk
.
This is because ISO C leaves the
behavior of the C version of strftime()
undefined and gawk
uses the system’s version of strftime()
if it’s there.
Typically, the conversion specifier either does not appear in the
returned string or appears literally.
Next: Bit-Manipulation Functions, Previous: Input/Output Functions, Up: Built-in Functions [Contents][Index]


Contact Info
Main
|
Phase 0
|
About Me
Hover over e-mail and phone to reveal
Name
E-Mail
Phone No.
Nestor A.
<EMAIL_ADDRESS>(562)-896-8298


--- layout: blog_content title: "Number in javascript" folder: "Number_in_javascript" ---
As we can see In javascript every numbers are 64-bit float following the IEEE 754-2008 format, in this post we will see how IEEE 754-2008 format work.
The designer of the IEEE-754 format choose to represent numbers in a scientifique notation, so a number like 340.15 become 3.4015 * 10^2. Since we are on a computer we must deal with binary thus this number must be represented in base 2.
64-bit float are represented in binary as such:
they are composed of 3 part:
1 bit for the sign wich give the sign of the number, 0 for positive, 1 for negative.
11 bit for the biased exponent. (the bias for 64 float is 1023)[1]
52 bit for the mantissa.[2]
So how our number 340.15 fit in those bit?
First let's convert 340.15 to a base 2 format.
340 = 170 * 2 + 0
170 = 85 * 2 + 0
85 = 42 * 2 + 1
42 = 21 * 2 + 0
21 = 10 * 2 + 1
10 = 5 * 2 + 0
5 = 2 * 2 + 1
2 = 1 * 2 + 0
1 = 0 * 2 + 1
340 in binary => 001010101
0.15 * 2 = 0.3
0.3 * 2 = 0.6
0.6 * 2 = 1.2
0.2 * 2 = 0.4
0.4 * 2 = 0.8
0.8 * 2 = 1.6
0.6 * 2 = 1.2
0.2 * 2 = 0.4
0.4 * 2 = 0.8
.
.
.
0.15 in binary =><PHONE_NUMBER>1001100110011001100....
Thus in binary 340.15 is 001010101.0010011001100110011001100..... since it need be write with a scientifique notation we have 1.0101010010011001100110011001100..... * 108 So the exponent is 8 + bias (1023) = 1031 in binary it is:<PHONE_NUMBER>1
We have:
Sign: 0
Exponent:<PHONE_NUMBER>1
Mantissa:<PHONE_NUMBER>100110011001100110011001100110011001100110 (note that the leading 1 is implicite, except for denormal number explaination for denormal notation is further down this article)
Full binary notation:<PHONE_NUMBER>110101010000100110011001100110011001100110011001100110
To convert it back to our number it's simple just apply this formula: -1sign * 2exp - biais * mantissa.
Sign: 0
Exponent:<PHONE_NUMBER>1 = 1 * 20 + 1 *21 + 1 * 22 + ..... + 0 * 29 + 1 * 210 - 1023 = 8
Mantissa:<PHONE_NUMBER>100110011001100110011001100110011001100110 = 1 + 0*2-1 + 1 * 2-2 + 0 * 2-3 + .... + 0 * 2-52 = 1.3287109375
Number: -10 * 28 * 1.3287109375 = 340.15
sign = 0 for positive zero, 1 for negative zero
biased exponent = 0
mantissa = 0
The number representations described above are called normalized, meaning that the implicit leading binary digit is a 1. To reduce the loss of precision when an underflow occurs, IEEE 754 includes the ability to represent fractions smaller than are possible in the normalized representation, by making the implicit leading digit a 0. Such numbers are called denormal. They don't include as many significant digits as a normalized number, but they enable a gradual loss of precision when the result of an arithmetic operation is not exactly zero but is too close to zero to be represented by a normalized number.
Along with this article, I made a visual representation of the IEEE-754 64-bit floating point format, you can find it here: https://lockee14.github.io/64_bit_IEEE-754_convertor/
The Github repo for this project is here: https://github.com/lockee14/64_bit_IEEE-754_convertor
Notes:
Resources:


Sign In | Sign Out |Sign Up
{{selectedItemDetails.pid}}
{{selectedItemDetails.productName}} ~ {{selectedItemDetails.category}}
{{selectedItemDetails.description}}
Unit price ~ ${{selectedItemDetails.price}}


The term "Mobile first" has become the accepted approach today. Luke Wroblevski was writing about this early on, check his blog for his writings. One of the main challenges when developing mobile apps is that the internet connection often isn't reliable. Local storage is therefore needed.
IndexedDb is emerging as the technology for local storage. Support isn't yet 100% (see below) but this is improving all the time. IndexedDb is a fairly comprehensive standard so it takes a little while to get used to. The examples below shows how it can be used and there is also a Db
class that can re-used in your projects.
IndexedDb fits well with the fragmentsjs
data-bind technique.
Support for IndexedDb is coming in all major browsers but iOS is known for being buggy and some features are currently (July 2015) missing in some browsers. There is an IndexedDBShim that can be used in browsers lacking full support. This shim uses WebSQL instead of IndexedDb when IndexedDb is missing. Make sure to read this issue before using the shim though.
YDN-DB provides a nice wrapper around IndexedDB. It also uses the IndexedDBShim in cases where IndexedDb support is lacking.
localStorage
and
WebSQL
are the other technologies used for offline storage. localStorage
is a simple key/value store and is supported by almost all
browsers.
WebSQL
is supported by webKit/Blink (Safari, Chrome, Opera) but not by Gecko (FF) and Trident (IE), see
caniuse for the details.


Family furious at man living in parked van outside their home for two years
Andy Calvert has been in a dispute with Cameron Weir and his mum Sheila in Stonehouse, Lanarkshire, for more than two years but now the relatives have shared their anger
by Bradley Jolly, Jennifer Hyland, https://www.mirror.co.uk/authors/bradley-jolly/A fed-up family have told of their fury at being unable to move a man living in a parked van outside their home for the last two years.
Andy Calvert, 58, has refused to move from the same spot despite multiple complaints made by Cameron Weir and mum Sheila since around May 2017.
The couple claim a wood burner used by Andy causes fumes to pour into their house and back garden in Stonehouse, Lanarkshire.
And Daily Record today reports authorities appear powerless to intervene.
"We live in a quiet residential area and this really is making our life hell," Cameron, 45, said.
"In summer, we can’t even enjoy sitting in our back garden because of the fumes from the vehicles and the stove.
"It’s really noisy because when he works on his two cars and motorbike, he revs the engines.
"He also has a number of people visiting and they are so loud that we can’t hear our TV in our living room. It’s a nightmare."
Christina McKelvie, who is Member of Scottish Parliament, contacted South Lanarkshire Council on Cameron's behalf. However, it is understood because the van sits on an unadopted road, the council has no authority to move the vehicle.
When approached by the Sunday Mail, Andy blamed the council for his housing issues.
He said: "The council evicted me from my flat because I fell behind on rent. I had nowhere to go but my van.
"It was -6C that night and I had to kick the door open as it had frozen shut. Now they want me to declare myself homeless but I have somewhere to live. They made me homeless so, until they admit that, I’m not moving."
Andy, who is a long-distance lorry driver, has kitted out his van with a double bed, a TV, a fridge, and wood panelling for insulation. He uses a gas ring to cook, has a chemical toilet and showers at work.
He bough the wood burner for £50 on eBay.
The van also uses batteries for power and has two gas canisters and solar panels.
Despite sympathising with Cameron and Sheila, Andy is refusing to move.
"I’ve nothing against them. They have a nice fancy house and don’t want a hobo at their back door. But I’m not breaking any laws. It’s my choice and a matter of principle," the driver said.
South Lanarkshire Council’s executive director of housing Daniel Lowe said: “The council is aware of the concerns raised by Mr Weir and his mother and has kept them fully updated on our position in relation to this matter.
"Unfortunately, at this juncture, the council does not have sufficient evidence to raise a court action for unlawful encampment but is continuing to monitor this situation closely on an ongoing basis and is keeping this matter under review."


| src |
|
100% |
0/0 |
100% |
0/0 |
100% |
0/0 |
100% |
0/0 |
| src/components |
|
55.93% |
33/59 |
41.67% |
5/12 |
19.23% |
5/26 |
55.93% |
33/59 |
| src/components/apiDoc |
|
15% |
3/20 |
100% |
0/0 |
40% |
2/5 |
15% |
3/20 |
| src/components/apiDoc/apiDocRNA |
|
0% |
0/2 |
100% |
0/0 |
0% |
0/1 |
0% |
0/2 |
| src/components/apiDoc/apiDocRNCS |
|
0% |
0/2 |
100% |
0/0 |
0% |
0/1 |
0% |
0/2 |
| src/components/apiDoc/apiDocSirene |
|
0% |
0/6 |
100% |
0/0 |
0% |
0/3 |
0% |
0/6 |
| src/components/etablissement |
|
37.5% |
27/72 |
30.43% |
7/23 |
28.57% |
8/28 |
37.5% |
27/72 |
| src/components/etablissement/etablissementRNA |
|
33.33% |
4/12 |
0% |
0/9 |
0% |
0/6 |
33.33% |
4/12 |
| src/components/etablissement/etablissementRNCS |
|
0% |
0/30 |
0% |
0/10 |
0% |
0/16 |
0% |
0/30 |
| src/components/etablissement/etablissementRNCS/etablissementRNCSGestion |
|
0% |
0/9 |
100% |
0/0 |
0% |
0/2 |
0% |
0/9 |
| src/components/etablissement/etablissementRNCS/etablissementRNCSIdentification |
|
0% |
0/13 |
100% |
0/0 |
0% |
0/5 |
0% |
0/13 |
| src/components/etablissement/etablissementRNCS/mixins |
|
0% |
0/52 |
0% |
0/26 |
0% |
0/15 |
0% |
0/52 |
| src/components/etablissement/etablissementRNCS/templates |
|
0% |
0/5 |
0% |
0/4 |
0% |
0/1 |
0% |
0/5 |
| src/components/etablissement/etablissementRNM |
|
50% |
2/4 |
100% |
0/0 |
0% |
0/2 |
50% |
2/4 |
| src/components/etablissement/etablissementSirene |
|
29.27% |
12/41 |
8.33% |
1/12 |
25% |
4/16 |
29.27% |
12/41 |
| src/components/etablissement/templates |
|
100% |
1/1 |
100% |
0/0 |
100% |
0/0 |
100% |
1/1 |
| src/components/mixins |
|
45.99% |
63/137 |
48% |
36/75 |
50% |
20/40 |
45.99% |
63/137 |
| src/components/results |
|
26.19% |
11/42 |
11.11% |
2/18 |
10.53% |
2/19 |
26.19% |
11/42 |
| src/components/search |
|
15.15% |
5/33 |
0% |
0/17 |
28.57% |
2/7 |
15.15% |
5/33 |
| src/store/modules |
|
2.49% |
7/281 |
0% |
0/135 |
0.77% |
1/130 |
2.7% |
7/259 |


Senior China diplomat urges U.S. to meet China halfway, improve relations
BEIJING (Reuters) - Senior Chinese diplomat Wang Yi said on Friday the United States should meet China halfway and promote a healthy and stable development of bilateral relations, as the countries continue to clash on multiple fronts including trade and South China Sea.
Wang, during a meeting with former U.S. Secretary of State Henry Kissinger, said some U.S. politicians have deliberately attacked and smeared China to push the two countries towards a path of confrontation. Such a conflict is not in the interests of either of the countries, he added.


In the Tizen Web UI framework, the application page structure is based on a header and content elements:
The header is placed at the top, and displays the page title.
The content is the section below the header, showing the main content of the page.
The footer is placed at the bottom, and can include buttons.
The following table describes the specific information for each section.
| Section | Class | Mandatory | Description |
|---|---|---|---|
| Page | ui-page | Yes | Defines the element as a page. The page component is used to manage a single item in a page-based architecture. A page is composed of header (optional), content (mandatory), and footer (optional) elements. |
| ui-page-active | No | If an application has a static start page, insert the ui-page-active class in the page element to speed up the application launch. The start page with the ui-page-active class can be displayed before the framework is fully loaded.
If this class is not used, the framework inserts the class automatically to the first page of the application. However, this has a slowing effect on the application launch, because the page is displayed only after the framework is fully loaded. |
|
| Header | ui-header | No | Defines the element as a header. |
| Content | ui-content | Yes | Defines the element as content. |
| Footer | ui-footer | No | Defines the element as a footer. The footer section is mostly used to include option buttons. |
To add a page to the application, use the following code:

Call menu
 <button type="button" class="ui-more ui-icon-overflow">More Options</button>
Content message
  <button type="button" class="ui-btn">Footer Button</button>

The following table lists the methods you can use to change the active page.
| Method | Description |
|---|---|
| tau.changePage(to) | Programmatically change to another page. The to argument is a page object or string. |
| tau.back() | Loads the previous page in the history list. |
The following table lists the events related to pages.
| Event | Description |
|---|---|
| pagebeforechange | Triggered before switching from the current page. |
| pagebeforecreate | Triggered before the new page component is created and initialized. |
| pagebeforehide | Triggered before the current page is about to be closed. |
| pagebeforeload | Triggered before an external page is loaded. |
| pagebeforeshow | Triggered before the new page is displayed. |
| pagechange | Triggered after switching from the current page to the new page. |
| pagechangefailed | Triggered when the page switching fails. |
| pagecreate | Triggered after the new page component creation. |
| pagehide | Triggered after the current page is hidden. |
| pageinit | Triggered after the page component initialization occurs. |
| pageload | Triggered after an external page is loaded. |
| pageremove | Triggered after an external page is removed from the DOM. |
| pageshow | Triggered after the new page is displayed. |


The DBC/EDA experience strikes me as a heavily collaborative and creative experience. Shefeer's analogy to a restaurant was really helpful; seeing this course as something to be a part of rather than something to consume impacts the whole mindset of how to approach the learnings of this program. while there is a curriculumn in place, where those teachings go is based on where we each choose to take ourselves. I also liked his discussion about people's fears of being really behind or really ahead, specifically, "Each person has a ton to offer and a ton to learn, and a ton to learn in offering". I think this recognizes the value that each person can bring to the table - we're all smart, capable and creative people, and when given the trust and opportunity to realize those qualities, each person can flourish.
It will be exciting to take my learning into my own hands. I like that we're encouraged to learn both formally from instructors but also informally through personal research, collaboration, and playing around. As a kinesthetic learning, doing is the way that I understand. I learn best when I can go hands-on, try to break things, then learn how to fix it. This culture seems exactly condusive to that - try things out, ask questions, go on tangents that are interesting to you while achieving goals, attempt something new. At the same time, this type of learning culture is different from other learning environments that I have been a part of, so I'm interested to see how my old habits will mesh with this new environment, and what kind of learning experience that will produce for me.
I see now that the "creator" culture plays a much more significant role at EDA than I initially expected. I had contemplated whether to take a dev course in Toronto or NZ, and when doing research I very much went according to the "restaurant" mentality of looking at programs based on what's on their menu at what price point. The marketing for all the schools is somewhat similar, so I don't know whether this culture is reflective of dev schools generally or this school in specific. No less, I can see how, since the mentality to programming must be creative and explorative, so too must be a school teaching programming. If anything, Shereef's fireside chat has given me a clearer picture of what dev in general is like. It's only natural, then, that EDA has chosen to follow the mentality and mindframe behind software engineering and integrated it into the entire learning model.
Yes, and yes! I think this kind of learning environment will be much more engaging - and therefore fun - than I had anticipated. I'm also nervous, though, to meet the bar. I see creativity as its own muscle, something that needs to be practiced. As mentioned in the video, Education is often perceived as something outside of ourselves that just gets fed to us. In turn, standard education systems (and often time, workplaces too) don't encourage creativity and therefore it's often a muscle that's not flexed. So, I'm nervous about using a muscle that I haven't purposefully trained much. Still, it was encouraging to know that we're all coming in at more or less the same knowledge point so that we can learn together rather than compare ourselves.


LETTER: There should be no debate about allowing oil drilling on Nevada’s public lands
by Zachary Surmacz Las VegasIn response to your Nov. 1 story, “Officials say drilling on Nevada public lands poses water threat”:
I have come to understand through my university studies of environmental sciences and natural resource management that, in the climate crisis debate — as in many other challenging issues — there often must be a lot of compromise between two or more strongly opposed forces. On the specific issue of climate change, however, I wholeheartedly believe that there are a few areas where compromise is not an option.
As Clark County Commission Chairwoman Marilyn Kirkpatrick said in the article, “any potential impact to drinking water sources is simply unacceptable.” This is an unwavering warning to officials and citizens everywhere about the dangers of destroying America’s public lands.
The Department of the Interior and its land management branch, the BLM, are unapologetically moving forward with plans for oil and gas exploration and drilling, both in Nevada and the Arctic National Wildlife Refuge in Alaska. This is a clear and direct threat to the biological, cultural and climate stability that fossil fuel extraction has proven to undermine.


Next: Useless rules, Previous: Derivations, Up: Terms [Contents][Index]
The zero length symbol string is called the empty string. The empty string can be considered to be a sentence, in which case it is the empty sentence. A string of one or more symbols is non-empty. A derivation which produces the empty string is a null derivation. A derivation from the start symbol which produces the empty string is a null parse.
If a symbol produces the empty string, it is a nullable symbol. If the only sentence produced by a symbol is the empty sentence, it is a nulling symbol. All nulling symbols are nullable symbols.
If a symbol is not nullable, it is non-nullable. If a symbol is not nulling, it is non-nulling.
A rule is nullable iff it is the rule of the first step of a null derivation. A rule is nullable iff its LHS symbol is nullable.
 A rule is nulling iff its LHS symbol is nulling.
If a rule is not nullable, it is non-nullable. If a rule is not nulling, it is non-nulling.


Greta Thunberg plans to join North Carolina climate strike
Thunberg tweeted on November 6 that she will join the strike on November 8 at the Charlotte-Mecklenburg Government Center.
by PTISixteen-year-old environmental activist Greta Thunberg says she plans to attend a youth-lead climate rally in North Carolina this week. Thunberg tweeted on November 6 that she will join the strike on November 8 at the Charlotte-Mecklenburg Government Center. Thunberg gained international attention for a speech at the United Nations Climate Action Summit in September.
News outlets report the protest Friday is being organized by the student-led N.C. Climate Strike movement. Hundreds of people attended a rally the group hosted in September, the same day millions of people around the world skipped school and work to urge government action on climate change.Special Thursday Expiry on 10th 7th Nov
Early Closure to The Great Diwali Discount. Last Chance to get Moneycontrol PRO for a year @ Rs. 289/- only
Coupon code: DIWALI


Product owner receives a more reliable result that more closely matches the vision. With full transparency, discrepencies can be identified and dealt with early.
The project manager can review progress and assign priorities as easily for agile as for waterfall projects.
Business analysts can record their findings and examples in such a way that they will be used to test the production code - ensuring that learnings at the analysis phase will result in matching production code.
A product designer will have all the analysis discoveries and example, and can build them into the solution.
Architects will be able to tie requirements documents to instrumentation to ensure that architectural needs are not forgotten in the production code.
The team lead can prioritise and assign work directly from uSDLC. Completed tasks show up as soon as they are checked in.
The Software Designer has the information on hand for high and low level designs. The results include generating scenarios the will keep the design in line with earlier stake-holders and the resulting production system.
Developers will be presented with a clear task. Once a scenario is implemented, the task is complete. If additional information is required, the task can be followed up the tree all the way back to the vision to find details - and who specified said detail.
Test specialists have more information to work with. The task is more about creating scenarios to fill gaps than repetitive testing.
The technical writer can spend more time writing and less time having to troll for the required information from other teams. All the information will be available in uSDLC. It needs to be organised and clarified for training, guides and other technical documents.
Support teams will have a full picture of the software they are supporting. They will be able to run the instrumentation to ensure continued correct operation after changes. They can add scenarios to cover post-release problems so that once they are fixed they won't resurface.


South Korean fishing boat catches fire; 1 dead, 11 missing
SEOUL, South Korea (AP) - A fishing boat caught fire in South Korea’s southern waters early Tuesday, killing at least one fisherman and triggering a search for 11 others missing, coast guard officials said.
Rescue workers found one of the fishermen unconscious in waters 7.4 kilometers (4.6 miles) south of the boat and airlifted him to a hospital on the nearby island of Jeju where he was pronounced dead.
The coast guard and navy were deploying boats, helicopters and a patrol plane to search the waters near the island for survivors, said Lee Geun-han, an official from the coast guard in Jeju. Six of the boat’s crew members are South Koreans, including the man killed, and the other six are Vietnamese, Lee said.
Rescue efforts, which also involved civilian fishing vessels, were being slowed by strong winds and large waves in the area.
Lee said the coast guard received a report about the fire at around 7 a.m. A coast guard helicopter found the boat about an hour later, and the upper side of the vessel had been burned completely.
Photos released by the coast guard showed the 29-ton boat engulfed in black smoke.
The fishing boat departed from the mainland port of Tongyeong on Nov. 8 to catch hairtail and had planned to return to the port on Monday.
President Moon Jae-in’s office said he instructed officials to deploy “every resource of the government” in the search effort.
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Filters
Minority Groups
Children
Homeless
Elderly
Low Income
Others
Donating Types
Funding
Second Hand
Food
Others
Project Types
Individual
Group
Reachable
Reach
Short
Long
New
Old
DROPDOWN
ABOUT US
DONATE
VOLUNTEER
ABOUT US
DONATE
VOLUNTEER
404: Under Construction
Source: Coconuts Hong Kong
Source: SCMP
Source: Hong Kong Free Press
Source: Impact HK
Source: The Guardian
Source: Feeding HK


pass a promise/generator, just like an object
1. object
At the first, see the traditional way to give the value.
<my-tag message="Hi!" />
Then, see the ikki's way. You can give the data as an object.
Great, but boring?  It'll make really easy to do any async process.
<my-tag opts=\{ promise } />
<script>
this.promise = new Promise(function(resolve, reject) \{
setTimeout(function() \{
resolve(\{ message: 'Hello!' })
}, 10000)
})
</script>
3. generator
The third stuff is the generator. Think it as serial promises.
That's awesome!
<my-tag opts=\{ generator } />
<script>
this.generator = function*() \{ while (true) \{
yield new Promise(function(resolve, reject) \{
setTimeout(function() \{
resolve(\{ message: hello() })
}, 1000)
})
}}
</script>


Im working for some time on cloud based storage and dashboard engine ziinode.io and want let to know someone out there about it and get some feedback.
Why cloud?, well, because wanted to create solution where you can just connect device to internet and see everything in one place even if devices are in different locations. Also there are benefit for you as a developer, you can earn twice - one time when you selling device and later when user pays to cloud for device usage - you get for example 10% of user pays to cloud.
Posted on github code sample for various platforms on github https://github.com/ziinode Just launched this project and there are still lots of work on documentation and could be some bugs still to fix, some feedback is welcome.
Why this form? Because I am great fan OpenEnergyMonitor project, also tried some things from OEM on arduino platform and considering to add current sensor capability to our board http://ziinode.io/boards.html
How about writing data to ziinode.io cloud
Submitted by ziinode on Tue, 09/02/2016 - 10:10Hello,
Im working for some time on cloud based storage and dashboard engine ziinode.io and want let to know someone out there about it and get some feedback.
Why cloud?, well, because wanted to create solution where you can just connect device to internet and see everything in one place even if devices are in different locations. Also there are benefit for you as a developer, you can earn twice - one time when you selling device and later when user pays to cloud for device usage - you get for example 10% of user pays to cloud.
Posted on github code sample for various platforms on github https://github.com/ziinode Just launched this project and there are still lots of work on documentation and could be some bugs still to fix, some feedback is welcome.
Why this form? Because I am great fan OpenEnergyMonitor project, also tried some things from OEM on arduino platform and considering to add current sensor capability to our board http://ziinode.io/boards.html
There are dashboard demo link http://ziinode.io/graf/apiz?server=011rix.ziinode.io&apik=a1f46ff0-c8c2-... this is without administration capabilities, but if you want to try out more, you are welcome to register account and play around.


Tutorials Surf is a platform where you can learn the fundamentals and foundation for the technology implementation.
Learn the art of Learning
Tutorials Surf is a platform where you can learn the fundamentals and foundation for the technology implementation.
Learn the art of Learning
Tutorials Surf is a platform where you can learn the fundamentals and foundation for the technology implementation.
Master
Focus completely on a learning , understand their message, comprehend the information and explore
Be an Expert
The journey to becoming an expert may seem daunting, especially if you don't have a lot of background in what you'd like to study
Learn from anywhere
Learning from Applied Digital Skills designed to show you how to use digital tools to learn effectively, from anywhere.
Welcome to Tutorial Surf
Tutorial Surf is a platform where you can start a foundation learning for the technology implementation .Here you can learn the fundamentals from scratch and this is a platform to get started with.


One feature we're releasing for this sprint is a quick access menu on every page for the common day-to-day actions used in Coupa. Previously, a user would either have to bookmark the common urls they used, or dig through the cluttered Administration page to find what they wanted. For our app, we needed something more expressive than a simple web navigation because there are simply too many actions for a user to take.
Before I bore you with all the reasoning and technical mumbo-jumbo, this is what the final menu looks like. All the sexiness is provided by the mad skills of Kyle and David.
Our application deals with several different document types. There are some common workflows that these documents follow. The most basic workflow is for a user to create a Requisition, have that requisition go through an approval process, create a Purchase Order (PO, in procurement-speak) from that requisition, and manage Invoices, and Inventory based on POs. We took a very Apple approach to organizing the top-level tabs so that users can think of what document they want to work with, and then drill down to see what actions are available on that document type. Initially, we had action-oriented tabs, but it was hard and confusing to figure out how to logically group the submenu items.
Based on who's logged in, there are different tabs, and different submenus. If a normal user logs in, all they can see is the Home tab because all they care about is ordering stuff. Admins and various supervisor roles will see different sets of tabs. To make this possible, we use a great little Rails plugin called Blueprint to define the structure of the menu in Ruby code. It lets us define a hierarchial menu structure with ruby blocks. Very spiffy.
class GlobalMenuStructure < Blueprint::Container
define do
node 'menus' do
menu 'Home' do
node 'links' do
link 'Home', :link_to => { :controller => 'user', :action => 'home' }
# ...
end
end
menu 'Requests' do
node 'links' do
link 'Requisitions', :link_to => { :controller => 'requisitions', :action => 'index' }
# ...
end
end
#...
end
end
Defining the structure in code enables us to generate and tailor a menu for each specific user. The hierarchial menu structure also lets us create a reverse-lookup object to determine which tab should be highlighted based on the current page's url.
After the menu structure is defined, we looped over the structure and conditionally spewed out a bunch of unstyled ul's for the menu. We chose YUI Menu to give us cross-browser hover effects and actions on the menus. YUI lets you define a menu either in HTML markup or in javascript. Theoretically we would get slightly faster performance if we created the menu's in javascript, but it was easier to do styling and extra features if we defined it in markup. Note that doing it in markup leaves users without javascript with an equally unusable app because the unhidden and unstyled submenus would cover everything else. YUI also allows you to trap for keypresses so you could implement keyboard shortcuts if you wanted.
I don't recommend these super deep and complex menus for webapps, because it ends up making the webapp feel more like a desktop app. At the same time, web menus are never as good as native desktop menus, so it ends up looking half-assed. The Coupa menus are definitely the best solution for the problem though. If we didn't have menus, we'd still be control-f'ing for that link we wanted.


Issues
| # | Summary | Product | Status | Kind | When |
|---|---|---|---|---|---|
| 620 |
REQUEST: Context-sensitive Floater (small when inactive, large on mouse-over) |
Synergy | open | feature request | |
| 619 |
REQUEST: Forward/back album (hot keys, menu item or control button modifier) |
Synergy | open | feature request | |
| 618 |
CRASH: Regular Leopard crashes |
Synergy | closed | bug | Created , updated |
| 617 |
CRASH: Saving Audioscrobbler details crashes System Preferences |
Synergy | closed | bug | |
| 616 |
REQUEST: Switch playlists via keyboard |
Synergy | open | feature request | |
| 615 |
Synergy keeps shutting off and floater flaky, not getting album art from iTunes 7.4.2 |
Synergy | closed | bug | Created , updated |
| 614 |
Synergy Quits Abruptly |
Synergy | closed | bug | |
| 613 |
CRASH: Garbage Collection crashes on Leopard |
Synergy | closed | bug | Created , updated |
| 612 |
Synergi 3.2 |
Synergy | closed | bug | Created , updated |
| 611 |
Album cover graphic does not work correctly. Displays ? icon |
Synergy | closed | bug | Created , updated |


Small Town Public Library Calendar of Events
No events currently scheduled
- ❮
- ❯
-
May
2018
- Sunday
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
Responsive-ish, blog-style.


EHHOP clinicians have access to a telephone translator service called Pacific Translators. To use the service with a non-English speaking patient in clinic, please do the following:
- Using your cell phone call 1-800-264-1552.
- Give the operator the following information:
- Access code: 828099 (Mount Sinai Medical Center)
- Language: Spanish (or whatever else you need)
- Main Hospital or FPA: Main Hospital
- Name:
- Life number:
- Department name: Main Hospital
- Department code: 684
- Once you are connected to a translator, place your phone on speaker and start talking to your patient!


Linux In Container
In this tutorial we will learn how to use predefined environments (Docker) with some basic linux commands, as well as basic skills of the command line.
Docker
Many developers are struggling with the deployment of their programs. Sometimes it is easy to deliver a program, but to deliver the running environment for that program is not that easy. Docker is the delivery of environments, and we can also use these predefined environments to run specific programs, such as Ubuntu and Apache (a server end program). Docker is a sort of flexible “virtual machine”, providing the minimum environment for your programs, and the environment has little relationship with the host/local physical machine.
Install Docker to your PC
In this tutorial, I am going to install docker in Windows and Mac
Install Docker. The only component we have to install. Download the installer from the Windows, Mac download page and run it. After the installation, reboot the computer.
You can also refer Docker Tutorial for step by step method explaining how to install the docker version to your workstation.
To Get Started
In order to get started we have to pull the ubuntu image inside the commandline (windows), Terminal (linux).
1. Pull that image and run. Possible command: docker pull ubuntu
2. Use “docker images” to check existing Docker images on your computer.
3. Commit Changes To A Docker Image
Run the Ubuntu image to start a Docker container, then log into this Ubuntu container
Command: docker run -it ubuntu:latest /bin/bash
To install applications in linux container we can use the command apt-get update
To install the apache server inside linux container use the command apt-get install apache2
There may be various text editors used. But one of the most common used editor is vim. To install vim use the command apt-get install vim
After finishing the process we can type exit to close the ubuntu container.
We can commit the container to create the new container with pre-installed applications. In order to check the using command docker ps -a
We can create the docker image using the command docker commit [ContainerID] ubuntu-my_apache2
To check the docker image simply type docker images.
Data between container and host
We can use the command docker run -it -p <IP_ADDRESS>:80:80 -v C:\Users\MyUserName\.docker:/var/www/html ubuntu-my_apache2 /bin/bash for windows
If we have to use for mac we can type docker run -it -p <IP_ADDRESS>:80:80 -v ~/Users/MyUserName/.docker:/var/www/html ubuntu-my_apache2 /bin/bash
Vi editor
check the present working directory using pwd then go the html directory “/var/www/html” using cd /var/www/html
create an “index.html” file using vi index.html
Press i key to edit the new “index. Html” file.
, press the ESC> key of your computer then type :wq> to write the file and then quit vi
To start apache service type /etc/init.d/apache2 restart in your Docker container
These are some of the linux commands used to access and utilize the linux container in Docker.


Interface Message<E>
-
- Type Parameters:
E
- The type of the message body that this message carries
- All Known Subinterfaces:
AdvancedMessage<E>
,StreamReceiverMessage
,StreamSenderMessage
- All Known Implementing Classes:
ClientMessage
,ClientStreamReceiverMessage
public interface Message<E>
Message object that provides a high level abstraction to raw AMQP types
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description long
absoluteExpiryTime()
Message<E>
absoluteExpiryTime(long expiryTime)
Sets the absolute expiration time value to assign to thisMessage
.Object
annotation(String key)
Returns the requested message annotation value from thisMessage
if it exists or returns null otherwise.Message<E>
annotation(String key, Object value)
Sets the given message annotation value at the given key, replacing any previous value that was assigned to thisMessage
.E
body()
Returns the body value that is conveyed in this message or null if no body was set locally or sent from the remote if this is an incoming message.Message<E>
body(E value)
Sets the body value that is to be conveyed to the remote when this message is sent.String
contentEncoding()
Message<?>
contentEncoding(String contentEncoding)
Sets the contentEncoding value to assign to thisMessage
.String
contentType()
Message<E>
contentType(String contentType)
Sets the contentType value to assign to thisMessage
.Object
correlationId()
Message<E>
correlationId(Object correlationId)
Sets the correlationId value to assign to thisMessage
.static <E> Message<E>
create()
static Message<byte[]>
create(byte[] body)
static <E> Message<E>
create(E body)
static <E> Message<List<E>>
create(List<E> body)
static <K,V>
Message<Map<K,V>>create(Map<K,V> body)
long
creationTime()
Message<E>
creationTime(long createTime)
Sets the creation time value to assign to thisMessage
.long
deliveryCount()
Message<E>
deliveryCount(long deliveryCount)
Sets the value to assign to the delivery count field of thisMessage
.boolean
durable()
For an message being sent this method returns the current state of the durable flag on the message.Message<E>
durable(boolean durable)
Controls if the message is marked as durable when sent.boolean
firstAcquirer()
Message<E>
firstAcquirer(boolean firstAcquirer)
Sets the value to assign to the first acquirer field of thisMessage
.Object
footer(String key)
Returns the requested footer value from thisMessage
if it exists or returnsnull
otherwise.Message<E>
footer(String key, Object value)
Sets the given footer value at the given key, replacing any previous value that was assigned to thisMessage
.Message<E>
forEachAnnotation(BiConsumer<String,Object> action)
Invokes the givenBiConsumer
on each message annotation entry carried in thisMessage
.Message<E>
forEachFooter(BiConsumer<String,Object> action)
Invokes the givenBiConsumer
on each footer entry carried in thisMessage
.Message<E>
forEachProperty(BiConsumer<String,Object> action)
Invokes the givenBiConsumer
on each application property entry carried in thisMessage
.String
groupId()
Message<E>
groupId(String groupId)
Sets the groupId value to assign to thisMessage
.int
groupSequence()
Message<E>
groupSequence(int groupSequence)
Sets the group sequence value to assign to thisMessage
.boolean
hasAnnotation(String key)
Query theMessage
to determine if it carries the given message annotation key.boolean
hasAnnotations()
Query theMessage
to determine if it carries any message annotations.boolean
hasFooter(String key)
Query theMessage
to determine if it carries the given footer key.boolean
hasFooters()
Query theMessage
to determine if it carries any footers.boolean
hasProperties()
Query theMessage
to determine if it carries any application properties.boolean
hasProperty(String key)
Query theMessage
to determine if it carries the given application property key.Object
messageId()
Message<E>
messageId(Object messageId)
Sets the message Id value to assign to thisMessage
.byte
priority()
Message<E>
priority(byte priority)
Sets the relative message priority.Object
property(String key)
Returns the requested application property value from thisMessage
if it exists or returns null otherwise.Message<E>
property(String key, Object value)
Sets the given application property value at the given key, replacing any previous value that was assigned to thisMessage
.Object
removeAnnotation(String key)
Removes the given message annotation from the values carried in the message currently, if none was present than this method returnsnull
.Object
removeFooter(String key)
Removes the given footer from the values carried in the message currently, if none was present than this method returnsnull
.Object
removeProperty(String key)
Removes the given application property from the values carried in the message currently, if none was present than this method returnsnull
.String
replyTo()
Message<E>
replyTo(String replyTo)
Sets the replyTo value to assign to thisMessage
.String
replyToGroupId()
Message<E>
replyToGroupId(String replyToGroupId)
Sets the replyTo group Id value to assign to thisMessage
.String
subject()
Message<E>
subject(String subject)
Sets the subject value to assign to thisMessage
.long
timeToLive()
Message<E>
timeToLive(long timeToLive)
Sets the message time to live value.String
to()
Message<E>
to(String to)
Sets the 'to' value to assign to thisMessage
.default AdvancedMessage<E>
toAdvancedMessage()
Safely convert thisMessage
instance into anAdvancedMessage
reference which can offer more low level APIs to an experienced client user.byte[]
userId()
Message<E>
userId(byte[] userId)
Sets the user Id value to assign to thisMessage
.
-
-
-
Method Detail
-
create
static <E> Message<E> create()
-
create
static <E> Message<E> create(E body)
-
create
static Message<byte[]> create(byte[] body)
-
create
static <E> Message<List<E>> create(List<E> body)
- Type Parameters:
E
- The type that the List elements should be treated as.- Parameters:
body
- An List that will be wrapped in anAmqpSequence
body section.- Returns:
- a new
Message
instance with a body containing the given List.
-
toAdvancedMessage
default AdvancedMessage<E> toAdvancedMessage() throws ClientException
Safely convert thisMessage
instance into anAdvancedMessage
reference which can offer more low level APIs to an experienced client user.The default implementation first checks if the current instance is already of the correct type before performing a brute force conversion of the current message to the client's own internal
AdvancedMessage
implementation. Users should override this method if the internal conversion implementation is insufficient to obtain the proper message structure to encode a meaningful 'on the wire' encoding of their custom implementation.- Returns:
- a
AdvancedMessage
that contains this message's current state. - Throws:
UnsupportedOperationException
- if theMessage
implementation cannot be convertedClientException
- if an error occurs while converting the message to anAdvancedMessage
/
-
durable
boolean durable() throws ClientException
For an message being sent this method returns the current state of the durable flag on the message. For a received message this method returns the durable flag value at the time of sending (or false if not set) unless the value is updated after being received by the receiver.- Returns:
- true if the Message is marked as being durable
- Throws:
ClientException
- if an error occurs while reading the given value.
-
durable
Message<E> durable(boolean durable) throws ClientException
Controls if the message is marked as durable when sent.- Parameters:
durable
- value assigned to the durable flag for this message.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
priority
byte priority() throws ClientException
- Returns:
- the currently configured priority or the default if none set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
priority
Message<E> priority(byte priority) throws ClientException
Sets the relative message priority. Higher numbers indicate higher priority messages. Messages with higher priorities MAY be delivered before those with lower priorities. For a received message this overwrites any value that was set by the remote sender.- Parameters:
priority
- The priority value to assign this message.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
timeToLive
long timeToLive() throws ClientException
- Returns:
- the currently set Time To Live duration (milliseconds).
- Throws:
ClientException
- if an error occurs while reading the given value.
-
timeToLive
Message<E> timeToLive(long timeToLive) throws ClientException
Sets the message time to live value.The time to live duration in milliseconds for which the message is to be considered "live". If this is set then a message expiration time will be computed based on the time of arrival at an intermediary.  When a message is transmitted by an intermediary that was received with a time to live, the transmitted message's header SHOULD contain a time to live that is computed as the difference between the current time and the formerly computed message expiration time, i.e., the reduced time to live, so that messages will eventually die if they end up in a delivery loop.
- Parameters:
timeToLive
- The time span in milliseconds that this message should remain live before being discarded.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
firstAcquirer
boolean firstAcquirer() throws ClientException
- Returns:
- if this message has been acquired by another link previously
- Throws:
ClientException
- if an error occurs while reading the given value.
-
firstAcquirer
Message<E> firstAcquirer(boolean firstAcquirer) throws ClientException
Sets the value to assign to the first acquirer field of thisMessage
.If this value is true, then this message has not been acquired by any other link. If this value is false, then this message MAY have previously been acquired by another link or links.
- Parameters:
firstAcquirer
- The boolean value to assign to the first acquirer field of the message.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
deliveryCount
long deliveryCount() throws ClientException
- Returns:
- the number of failed delivery attempts that this message has been part of.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
deliveryCount
Message<E> deliveryCount(long deliveryCount) throws ClientException
Sets the value to assign to the delivery count field of thisMessage
.Delivery count is the number of unsuccessful previous attempts to deliver this message. If this value is non-zero it can be taken as an indication that the delivery might be a duplicate. On first delivery, the value is zero. It is incremented upon an outcome being settled at the sender, according to rules defined for each outcome.
- Parameters:
deliveryCount
- The new delivery count value to assign to this message.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
messageId
Object messageId() throws ClientException
- Returns:
- the currently set Message ID or null if none set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
messageId
Message<E> messageId(Object messageId) throws ClientException
Sets the message Id value to assign to thisMessage
.The message Id, if set, uniquely identifies a message within the message system. The message producer is usually responsible for setting the message-id in such a way that it is assured to be globally unique. A remote peer MAY discard a message as a duplicate if the value of the message-id matches that of a previously received message sent to the same node.
- Parameters:
messageId
- The message Id value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
userId
byte[] userId() throws ClientException
- Returns:
- the currently set User ID or null if none set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
userId
Message<E> userId(byte[] userId) throws ClientException
Sets the user Id value to assign to thisMessage
.The identity of the user responsible for producing the message. The client sets this value, and it MAY be authenticated by intermediaries.
- Parameters:
userId
- The user Id value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
to
String to() throws ClientException
- Returns:
- the currently set 'To' address which indicates the intended destination of the message.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
to
Message<E> to(String to) throws ClientException
Sets the 'to' value to assign to thisMessage
.The to field identifies the node that is the intended destination of the message. On any given transfer this might not be the node at the receiving end of the link.
- Parameters:
to
- The 'to' node value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
subject
String subject() throws ClientException
- Returns:
- the currently set subject metadata for this message or null if none set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
subject
Message<E> subject(String subject) throws ClientException
Sets the subject value to assign to thisMessage
.A common field for summary information about the message content and purpose.
- Parameters:
subject
- The subject node value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
replyTo
String replyTo() throws ClientException
- Returns:
- the configured address of the node where replies to this message should be sent, or null if not set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
replyTo
Message<E> replyTo(String replyTo) throws ClientException
Sets the replyTo value to assign to thisMessage
.The address of the node to send replies to.
- Parameters:
replyTo
- The replyTo node value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
correlationId
Object correlationId() throws ClientException
- Returns:
- the currently assigned correlation ID or null if none set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
correlationId
Message<E> correlationId(Object correlationId) throws ClientException
Sets the correlationId value to assign to thisMessage
.This is a client-specific id that can be used to mark or identify messages between clients.
- Parameters:
correlationId
- The correlationId value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
contentType
String contentType() throws ClientException
- Returns:
- the assigned content type value for the message body section or null if not set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
contentType
Message<E> contentType(String contentType) throws ClientException
Sets the contentType value to assign to thisMessage
.The RFC-2046 MIME type for the message's application-data section (body). As per RFC-2046 this can contain a charset parameter defining the character encoding used: e.g., 'text/plain; charset="utf-8"'.
For clarity, as per section 7.2.1 of RFC-2616, where the content type is unknown the content-type SHOULD NOT be set. This allows the recipient the opportunity to determine the actual type. Where the section is known to be truly opaque binary data, the content-type SHOULD be set to application/octet-stream.
When using an application-data section with a section code other than data, content-type SHOULD NOT be set.
- Parameters:
contentType
- The contentType value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
contentEncoding
String contentEncoding() throws ClientException
- Returns:
- the assigned content encoding value for the message body section or null if not set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
contentEncoding
Message<?> contentEncoding(String contentEncoding) throws ClientException
Sets the contentEncoding value to assign to thisMessage
.The content-encoding property is used as a modifier to the content-type. When present, its value indicates what additional content encodings have been applied to the application-data, and thus what decoding mechanisms need to be applied in order to obtain the media-type referenced by the content-type header field.
Content-encoding is primarily used to allow a document to be compressed without losing the identity of its underlying content type.
Content-encodings are to be interpreted as per section 3.5 of RFC 2616 [RFC2616]. Valid content-encodings are registered at IANA [IANAHTTPPARAMS].
The content-encoding MUST NOT be set when the application-data section is other than data. The binary representation of all other application-data section types is defined completely in terms of the AMQP type system.
Implementations MUST NOT use the identity encoding. Instead, implementations SHOULD NOT set this property. Implementations SHOULD NOT use the compress encoding, except as to remain compatible with messages originally sent with other protocols, e.g. HTTP or SMTP.
Implementations SHOULD NOT specify multiple content-encoding values except as to be compatible with messages originally sent with other protocols, e.g. HTTP or SMTP.
- Parameters:
contentEncoding
- The contentEncoding value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
absoluteExpiryTime
long absoluteExpiryTime() throws ClientException
- Returns:
- the configured absolute time of expiration for this message.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
absoluteExpiryTime
Message<E> absoluteExpiryTime(long expiryTime) throws ClientException
Sets the absolute expiration time value to assign to thisMessage
.An absolute time when this message is considered to be expired.
- Parameters:
expiryTime
- The absolute expiration time value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
creationTime
long creationTime() throws ClientException
- Returns:
- the absolute time of creation for this message.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
creationTime
Message<E> creationTime(long createTime) throws ClientException
Sets the creation time value to assign to thisMessage
.An absolute time when this message was created.
- Parameters:
createTime
- The creation time value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
groupId
String groupId() throws ClientException
- Returns:
- the assigned group ID for this message or null if not set.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
groupId
Message<E> groupId(String groupId) throws ClientException
Sets the groupId value to assign to thisMessage
.Identifies the group the message belongs to.
- Parameters:
groupId
- The groupId value to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
groupSequence
int groupSequence() throws ClientException
- Returns:
- the assigned group sequence for this message.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
groupSequence
Message<E> groupSequence(int groupSequence) throws ClientException
Sets the group sequence value to assign to thisMessage
.The relative position of this message within its group.
- Parameters:
groupSequence
- The group sequence to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
replyToGroupId
String replyToGroupId() throws ClientException
- Returns:
- the client-specific id used so that client can send replies to this message to a specific group.
- Throws:
ClientException
- if an error occurs while reading the given value.
-
replyToGroupId
Message<E> replyToGroupId(String replyToGroupId) throws ClientException
Sets the replyTo group Id value to assign to thisMessage
.This is a client-specific id that is used so that client can send replies to this message to a specific group.
- Parameters:
replyToGroupId
- The replyTo group Id to assign to thisMessage
instance.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs while writing the given value.
-
annotation
Object annotation(String key) throws ClientException
Returns the requested message annotation value from thisMessage
if it exists or returns null otherwise.- Parameters:
key
- The key of the message annotation to query for.- Returns:
- the corresponding message annotation value of null if none was carried in this
Message
. - Throws:
ClientException
- if an error occurs accessing the message annotations in thisMessage
.
-
hasAnnotation
boolean hasAnnotation(String key) throws ClientException
Query theMessage
to determine if it carries the given message annotation key.- Parameters:
key
- The key of the message annotation to query for.- Returns:
true
if the Message carries the given message annotation.- Throws:
ClientException
- if an error occurs accessing the message annotations in thisMessage
.
-
hasAnnotations
boolean hasAnnotations() throws ClientException
Query theMessage
to determine if it carries any message annotations.- Returns:
true
if the Message carries any message annotations.- Throws:
ClientException
- if an error occurs accessing the message annotations in thisMessage
.
-
removeAnnotation
Object removeAnnotation(String key) throws ClientException
Removes the given message annotation from the values carried in the message currently, if none was present than this method returnsnull
.- Parameters:
key
- The key of the message annotation to query for removal.- Returns:
- the message annotation value that was previously assigned to that key.
- Throws:
ClientException
- if an error occurs accessing the message annotations in thisMessage
.
-
forEachAnnotation
Message<E> forEachAnnotation(BiConsumer<String,Object> action) throws ClientException
Invokes the givenBiConsumer
on each message annotation entry carried in thisMessage
.- Parameters:
action
- The action that will be invoked on each message annotation entry.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs accessing the message annotations in thisMessage
.
-
annotation
Message<E> annotation(String key, Object value) throws ClientException
Sets the given message annotation value at the given key, replacing any previous value that was assigned to thisMessage
.- Parameters:
key
- The message annotation key where the value is to be assigned.value
- The value to assign to the given message annotation key.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs accessing the message annotations in thisMessage
.
-
property
Object property(String key) throws ClientException
Returns the requested application property value from thisMessage
if it exists or returns null otherwise.- Parameters:
key
- The key of the application property to query for.- Returns:
- the corresponding application property value of null if none was carried in this
Message
. - Throws:
ClientException
- if an error occurs accessing the application properties in thisMessage
.
-
property
Message<E> property(String key, Object value) throws ClientException
Sets the given application property value at the given key, replacing any previous value that was assigned to thisMessage
.- Parameters:
key
- The application property key where the value is to be assigned.value
- The value to assign to the given application property key.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs accessing the application properties in thisMessage
.
-
hasProperty
boolean hasProperty(String key) throws ClientException
Query theMessage
to determine if it carries the given application property key.- Parameters:
key
- The key of the application property to query for.- Returns:
true
if the Message carries the given application property.- Throws:
ClientException
- if an error occurs accessing the application properties in thisMessage
.
-
hasProperties
boolean hasProperties() throws ClientException
Query theMessage
to determine if it carries any application properties.- Returns:
true
if the Message carries any application properties.- Throws:
ClientException
- if an error occurs accessing the application properties in thisMessage
.
-
removeProperty
Object removeProperty(String key) throws ClientException
Removes the given application property from the values carried in the message currently, if none was present than this method returnsnull
.- Parameters:
key
- The key of the application property to query for removal.- Returns:
- the application property value that was previously assigned to that key.
- Throws:
ClientException
- if an error occurs accessing the application properties in thisMessage
.
-
forEachProperty
Message<E> forEachProperty(BiConsumer<String,Object> action) throws ClientException
Invokes the givenBiConsumer
on each application property entry carried in thisMessage
.- Parameters:
action
- The action that will be invoked on each application property entry.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs accessing the application properties in thisMessage
.
-
footer
Object footer(String key) throws ClientException
Returns the requested footer value from thisMessage
if it exists or returnsnull
otherwise.- Parameters:
key
- The key of the footer to query for.- Returns:
- the corresponding footer value of null if none was carried in this
Message
. - Throws:
ClientException
- if an error occurs accessing the footers in thisMessage
.
-
hasFooter
boolean hasFooter(String key) throws ClientException
Query theMessage
to determine if it carries the given footer key.- Parameters:
key
- The key of the footer to query for.- Returns:
true
if the Message carries the given footer.- Throws:
ClientException
- if an error occurs accessing the footers in thisMessage
.
-
hasFooters
boolean hasFooters() throws ClientException
Query theMessage
to determine if it carries any footers.- Returns:
true
if the Message carries any footers.- Throws:
ClientException
- if an error occurs accessing the footers in thisMessage
.
-
removeFooter
Object removeFooter(String key) throws ClientException
Removes the given footer from the values carried in the message currently, if none was present than this method returnsnull
.- Parameters:
key
- The key of the footer to query for removal.- Returns:
- the footer value that was previously assigned to that key.
- Throws:
ClientException
- if an error occurs accessing the footers in thisMessage
.
-
forEachFooter
Message<E> forEachFooter(BiConsumer<String,Object> action) throws ClientException
Invokes the givenBiConsumer
on each footer entry carried in thisMessage
.- Parameters:
action
- The action that will be invoked on each footer entry.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs accessing the footers in thisMessage
.
-
footer
Message<E> footer(String key, Object value) throws ClientException
Sets the given footer value at the given key, replacing any previous value that was assigned to thisMessage
.- Parameters:
key
- The footer key where the value is to be assigned.value
- The value to assign to the given footer key.- Returns:
- this
Message
instance. - Throws:
ClientException
- if an error occurs accessing the footers in thisMessage
.
-
body
E body() throws ClientException
Returns the body value that is conveyed in this message or null if no body was set locally or sent from the remote if this is an incoming message.- Returns:
- the message body value or null if none present.
- Throws:
ClientException
- if the implementation can't provide a body for some reason.
-
body
Message<E> body(E value) throws ClientException
Sets the body value that is to be conveyed to the remote when this message is sent.The
Message
implementation will choose the AMQPSection
to use to wrap the given value.- Parameters:
value
- The value to assign to the given message bodySection
.- Returns:
- this
Message
instance. - Throws:
ClientException
- if the implementation cannot write to the body section for some reason..
-
-


Honzi
/
Bookmarks
/
Music
/Freezepop
Fancy Ultra•Fresh:
Bike Thief
Boys on Film
Duct Tape My Heart
Emotions & Photons
I Am Not Your Gameboy
Manipulate
Outer Space
Parlez-Vous Freezepop?
Stakeout
Tonight
Fantasizer:
Fantasizer
Memory Disappears
Freezepop Forever:
Freezepop Forever
Harebrained Scheme
Plastic Stars
Science Genius Girl
,
Frequency
Tender Lies
Tenisu no Boifurendo
Summer Boy
Future Future Future Perfect:
Brainpower
Frontload
Less Talk More Rokk
Swimming Pool
Imaginary Friends:
Doppelganger
Doppelganger Goodnice
Singles:
Step into the Sunshine!


|
image - image handle
a# - 1,1 element of 2x2 matrix b# - 2,1 element of 2x2 matrix c# - 1,2 element of 2x2 matrix d# - 2,2 element of 2x2 matrix |
|
Transforms an image based on a 2x2 matrix. The input parameters relate to the elements of the matrix as below:
( a# b# ) ( c# d# ) The image is treated as a matrix and is multiplied by the matrix above. Unless you understand matrix manipulation thoroughly, it is unlikely that you will find this command useful. Common uses for this command might be to rotate or scale images. These are available independently using ScaleImage and RotateImage However, using this command it is possible to do both operations simultaneously. It is also possible to shear images using this command. It is strongly recommended that you run the (rather lengthy) example below to better understand how this command can be used. See also: ScaleImage, RotateImage. |
|
; Set up the Blitz evironment and user controlled input parameters
Global a#=1 ; This controls the horizontal scale, negative values cause the image to flip. Zero is invalid. Global b#=0 ; This shears the image vertically Global c#=0 ; This shears the image horizontally Global d#=1 ; This controls the vertical scale, negative values cause the image to flip. Zero is invalid. Graphics 600,400,16 ; Create an image that we can manipulate Global img=CreateImage(50,50) SetBuffer ImageBuffer(img) Color 255,0,0 : Rect 0,0,25,25,1 Color 255,255,0 : Rect 25,25,25,25,1 Color 0,255,0 : Rect 25,0,25,25,1 Color 0,0,255 : Rect 0,25,25,25,1 ; Set up drawing & timing stuff SetBuffer BackBuffer() timer=CreateTimer(30) Repeat ; deal with keyboard inputs If KeyDown(42) Or KeyDown(54) Then inc#=-0.1 Else inc#=0.1 If KeyDown(30) Then a#=a#+inc# If KeyDown(48) Then b#=b#+inc# If KeyDown(46) Then c#=c#+inc# If KeyDown(32) Then d#=d#+inc# If KeyHit(57) Then RunDemo() If KeyHit(1) Then Exit ; draw the screen DrawScreen() WaitTimer timer Forever End ; Rolling Demo Function RunDemo() degrees=0 ; the number of degrees by which to rotate the image scale#=1.0 ; the scale of the image timer=CreateTimer(10) Repeat a#=scale#:b#=0:c#=0:d#=scale# ; reset the matrix ; increase the degrees (or reset if >360) If degrees<360 Then degrees=degrees+4 Else degrees=0 ; and set up the matrix multipliers. The explanation as to why these work can be found in most good ; mathematics text books, and is too involved to go into here! ma#=Cos(degrees) mb#=Sin(degrees) mc#=-Sin(degrees) md#=Cos(degrees) ; multiply the two matrices. na#=a#*ma#+b#*mc# nb#=a#*mb#+b#*md# nc#=c#*ma#+d#*mc# nd#=c#*mb#+d#*md# a#=na#:b#=nb#:c#=nc#:d#=nd# ; handle input and draw the screen If KeyHit(1) Then Exit If KeyDown(200) And scale#<2.0 Then scale#=scale#+0.1 If KeyDown(208) And scale#>0.1 Then scale#=scale#-0.1 DrawScreen(True) WaitTimer timer Forever a#=1:b#=0:c#=0:d#=1 ; reset the matrix FlushKeys() End Function ; Draw stuff on the screen, including transforming the image Function DrawScreen(demo=False) ClsColor 0,0,0 Cls DrawBlock img,10,10 Text 100,5,"TFORMIMAGE EXAMPLE" Text 100,20,"The command format is: TFormImage image, a, b, c, d" If Not demo Then Text 100,35,"Press 'Space' for a rolling demo" Text 100,50,"Use the keys a, b, c, and d to increase the parameters" Text 100,65,"Also hold down shift to decrease each of these parameters" Else Text 100,35,"Use the up and down arrow keys to change the scale" End If Text 100,80,"Press 'Escape' to exit" Text 10,110,"Current Parameters:" ; ######################## This is where we actually use TFormImage using the input parameters Text 20,125,"TFormImage image, "+a#+", "+b#+", "+c#+", "+d# img2=CopyImage(img) TFormImage img2,a#,b#,c#,d# ; ############################################################################# If demo Then DrawBlock img2,300,280 Else DrawBlock img2,300-ImageWidth(img2)/2,280-ImageHeight(img2)/2 EndIf Flip End Function |


The above alert will only show is JavaScript is disabled in the browser.
Code courtesy of enable-javascript.com
Nowadays almost all web pages contain JavaScript, a scripting programming language that runs on visitor's web browser. It makes web pages functional for specific purposes and if disabled for some reason, the content or the functionality of the web page can be limited or unavailable. Here you can find instructions on how to enable (activate) JavaScript in five most commonly used browsers.
 For full functionality of this site it is necessary to enable JavaScript. Here are the  instructions how to enable JavaScript in your web browser.
* Remember to uncomment the noscript
tags for live use.


Details
Subject Name
Subject Code
Recent Subjects
Subject Name
Subject Code
Data Structure
CS 205
Delete
Computer Network
IT 302
Delete


Mentor Handbook
Helpful guide to be an amazing mentor
Helpful guide to be an amazing mentor
Parking is available at any of the lots colored below. For those
wishing to park before 4 PM on Friday, please park in E20 deck. You
will receive a ticket to pay when you exit. Parking is free on the weekends.
You can view the full weekend schedule on our main website.
Organizers and volunteers will begin moving supplies into Lamar Dodd. If you are interested in helping us setup, please feel free to come during this time
Check in for participants opens. Participants will spend this time up until the opening ceremony moving their belongings in and getting situated. You will also receive a badge during this time. If the lines at the main check in desk are too long, visit the help desk to get your badge.
If possible, please be present at the opening ceremony. We would like to introduce all of our mentors to hackers so they can get to know you better. Seats will be reserved in the first and second row for sponsors and mentors.
Dinner will be served to participants after the opening ceremony or at 7:15 PM, whichever is later. Mentors will have an opportunity to get their food before the lines begin. Please see the help desk for on site information about dinner.
6:30 PM - Intro video plays
6:35 PM - Welcome Speech with Jin
6:37 PM - UGA Professor Speech
6:40 PM - Welcome to MLH
6:50 PM - PWC
6:55 PM - Fiserv
7:00 PM - Hacking Begins
We encourage you to take photos and make posts during the event and share them with us! Use #UGAHacks on social media and tag us with @UGAHacks on Facebook, Twitter, and Instagram. We'll share photos and posts taken throughout the event.
Slack is an amazing communication tool that can allow participants to ask for help when it's something quick. We encourage you to be active on Slack and answer questions from participants whenever they're asked. You should have received an invite link via email. Otherwise, you can also join via slack.ugahacks.com during the event.
Often times, it's easier to help someone once you get to know them a bit. Whenever you're not busy, take some time to walk around and get engaged with hackers to see what they're building.
A great thing about hackathons is that you never know what projects can come from it. Students use this time to explore new and innovative ways to use technologies to tackle problems they find in the world. Sometimes, your views may not align with theirs and that's okay.
No, this doesn't mean you need to be awake at 4 AM helping a team. Whenever a team or student comes to you for help, be open with them about what you know and don't know. It's okay to say "I don't know the answer to that, but I'll help you find it." A great thing about being a mentor is that you'll learn something from it too!
Please remember that as a mentor, you are representing yourself. While we greatly appreciate your time and dedication towards helping hackers, a mentor should help students with their projects or give advice - not recruit for a company. If your company wishes to recruit at UGAHacks, please consider sponsoring instead.
Determine whether you want to target advanced or beginner/intermediate. Focusing your efforts towards one group can greatly improve the quality of your workshop by not jumping back and forth, confusing both groups. If you would like advice, please feel free to reach out to us.
Unfortunately, although the 48 hours will be fun and fruitful, it usually isn't enough time for us to include everything there is to learn about the subject you'll be speaking about, we recommend laying down the basics during the workshop and providing supplementary materials that participants can view on their own after or on their own time!
You will have access to a projector with either an HDMI or VGA connection.
Be sure to specify any materials (including software to download) that participants should come with -- download times can really hinder workshop time!
Have fun, and feel free to reach out the team if you need any further assistance or feedback -- we would love to help!
While UGAHacks is unable to provide sleeping accommodations apart from bringing a sleeping bag to sleep at the venue (many hackers do this and you're free to as well!), there are a few hotels which are available at your expense. UGAHacks is not associated with any of the listed hotels.
1197 South Lumpkin Street, Athens, GA 30602-3603
5 minutes by car (1.4 miles)
13 minutes walking (0.7 miles)
197 East Broad Street, Athens, GA 30601
5 minutes by car (1.6 miles)
30 minutes walking (1.5 miles)
750 E Broad St, Athens, GA 30601
6 minutes by car (1.6 miles)
32 minutes walking (1.5 miles)
166 N Finley St, Athens, GA 30601
8 minutes by car (2 miles)
36 minutes walking (1.7 miles)
170 N Milledge Ave, Athens, GA 30601
8 minutes by car (2.4 miles)
41 minutes walking (2 miles)
From each and everyone of us on the UGAHacks team, we thank you for all the effort you have put towards this hackathon. We couldn't have put on this hackathon without your amazing support.


only $499
Sample price
only $1299
Sample price
only $199
Sample price
Carousel demo slider
back to examples