public final class NumericUtils extends Object
To quickly execute range queries in Apache Lucene, a range is divided recursively into multiple intervals for searching: The center of the range is searched only with the lowest possible precision in the trie, while the boundaries are matched more exactly. This reduces the number of terms dramatically.
This class generates terms to achieve this: First the numerical integer values need to
be converted to strings. For that integer values (32 bit or 64 bit) are made unsigned
and the bits are converted to ASCII chars with each 7 bit. The resulting string is
sortable like the original integer value. Each value is also prefixed
(in the first char) by the
shift
value (number of bits removed) used
during encoding.
To also index floating point numbers, this class supplies two methods to convert them
to integer values by changing their bit layout:
doubleToSortableLong(double)
,
floatToSortableInt(float)
. You will have no precision loss by
converting floating point numbers to integers and back (only that the integer form
is not usable). Other data types like dates can easily converted to longs or ints (e.g.
date to long:
Date.getTime()
).
For easy usage, the trie algorithm is implemented for indexing inside
NumericTokenStream
that can index
int
,
long
,
float
, and
double
. For querying,
NumericRangeQuery
and
NumericRangeFilter
implement the query part
for the same data types.
This class can also be used, to generate lexicographically sortable (according
String.compareTo(String)
) representations of numeric data types for other
usages (e.g. sorting).
| Modifier and Type | Class and Description |
|---|---|
static class
|
NumericUtils.IntRangeBuilder
Expert: Callback for
splitIntRange(org.apache.lucene.util.NumericUtils.IntRangeBuilder, int, int, int)
.
|
static class
|
NumericUtils.LongRangeBuilder
Expert: Callback for
splitLongRange(org.apache.lucene.util.NumericUtils.LongRangeBuilder, int, long, long)
.
|
| Modifier and Type | Field and Description |
|---|---|
static int
|
BUF_SIZE_INT
Expert: The maximum term length (used for
char[]
buffer size)
for encoding
int
values.
|
static int
|
BUF_SIZE_LONG
Expert: The maximum term length (used for
char[]
buffer size)
for encoding
long
values.
|
static int
|
PRECISION_STEP_DEFAULT
The default precision step used by
NumericField
,
NumericTokenStream
,
NumericRangeQuery
, and
NumericRangeFilter
as default
|
static char
|
SHIFT_START_INT
Expert: Integers are stored at lower precision by shifting off lower bits.
|
static char
|
SHIFT_START_LONG
Expert: Longs are stored at lower precision by shifting off lower bits.
|
| Modifier and Type | Method and Description |
|---|---|
static
String
|
doubleToPrefixCoded
(double val)
|
static long
|
doubleToSortableLong
(double val)
Converts a
double
value to a sortable signed
long
.
|
static
String
|
floatToPrefixCoded
(float val)
|
static int
|
floatToSortableInt
(float val)
Converts a
float
value to a sortable signed
int
.
|
static
String
|
intToPrefixCoded
(int val)
|
static
String
|
intToPrefixCoded
(int val,
int shift)
|
static int
|
intToPrefixCoded
(int val,
int shift,
char[] buffer)
Expert: Returns prefix coded bits after reducing the precision by
shift
bits.
|
static
String
|
longToPrefixCoded
(long val)
|
static
String
|
longToPrefixCoded
(long val,
int shift)
|
static int
|
longToPrefixCoded
(long val,
int shift,
char[] buffer)
Expert: Returns prefix coded bits after reducing the precision by
shift
bits.
|
static double
|
prefixCodedToDouble
(
String
val)
|
static float
|
prefixCodedToFloat
(
String
val)
|
static int
|
prefixCodedToInt
(
String
prefixCoded)
|
static long
|
prefixCodedToLong
(
String
prefixCoded)
|
static float
|
sortableIntToFloat
(int val)
Converts a sortable
int
back to a
float
.
|
static double
|
sortableLongToDouble
(long val)
Converts a sortable
long
back to a
double
.
|
static void
|
splitIntRange
(
NumericUtils.IntRangeBuilder
builder,
int precisionStep,
int minBound,
int maxBound)
Expert: Splits an int range recursively.
|
static void
|
splitLongRange
(
NumericUtils.LongRangeBuilder
builder,
int precisionStep,
long minBound,
long maxBound)
Expert: Splits a long range recursively.
|
public static final int PRECISION_STEP_DEFAULT
NumericField
,
NumericTokenStream
,
NumericRangeQuery
, and
NumericRangeFilter
as default
public static final char SHIFT_START_LONG
SHIFT_START_LONG+shift
in the first character
public static final int BUF_SIZE_LONG
char[]
buffer size)
for encoding
long
values.
public static final char SHIFT_START_INT
SHIFT_START_INT+shift
in the first character
public static final int BUF_SIZE_INT
char[]
buffer size)
for encoding
int
values.
public static int longToPrefixCoded(long val, int shift, char[] buffer)
shift
bits.
This is method is used by
NumericTokenStream
.
val
- the numeric value
shift
- how many bits to strip from the right
buffer
- that will contain the encoded chars, must be at least of
BUF_SIZE_LONG
length
public static String longToPrefixCoded(long val, int shift)
public static String longToPrefixCoded(long val)
public static int intToPrefixCoded(int val, int shift, char[] buffer)
shift
bits.
This is method is used by
NumericTokenStream
.
val
- the numeric value
shift
- how many bits to strip from the right
buffer
- that will contain the encoded chars, must be at least of
BUF_SIZE_INT
length
public static String intToPrefixCoded(int val, int shift)
public static String intToPrefixCoded(int val)
public static long prefixCodedToLong( String prefixCoded)
public static int prefixCodedToInt( String prefixCoded)
public static long doubleToSortableLong(double val)
double
value to a sortable signed
long
.
The value is converted by getting their IEEE 754 floating-point "double format"
bit layout and then some bits are swapped, to be able to compare the result as long.
By this the precision is not reduced, but the value can easily used as a long.
The sort order (including
Double.NaN
) is defined by
Double.compareTo(java.lang.Double)
;
NaN
is greater than positive infinity.
sortableLongToDouble(long)
public static String doubleToPrefixCoded(double val)
public static double sortableLongToDouble(long val)
long
back to a
double
.
doubleToSortableLong(double)
public static double prefixCodedToDouble( String val)
public static int floatToSortableInt(float val)
float
value to a sortable signed
int
.
The value is converted by getting their IEEE 754 floating-point "float format"
bit layout and then some bits are swapped, to be able to compare the result as int.
By this the precision is not reduced, but the value can easily used as an int.
The sort order (including
Float.NaN
) is defined by
Float.compareTo(java.lang.Float)
;
NaN
is greater than positive infinity.
sortableIntToFloat(int)
public static String floatToPrefixCoded(float val)
public static float sortableIntToFloat(int val)
int
back to a
float
.
floatToSortableInt(float)
public static float prefixCodedToFloat( String val)
public static void splitLongRange( NumericUtils.LongRangeBuilder builder, int precisionStep, long minBound, long maxBound)
BooleanQuery
for each call to its
NumericUtils.LongRangeBuilder.addRange(String,String)
method.
This method is used by
NumericRangeQuery
.
public static void splitIntRange( NumericUtils.IntRangeBuilder builder, int precisionStep, int minBound, int maxBound)
BooleanQuery
for each call to its
NumericUtils.IntRangeBuilder.addRange(String,String)
method.
This method is used by
NumericRangeQuery
.


This is section 1
Sections are visually separated from each other with a section break, typically consisting of extra space between the sections, and sometimes also by a section heading for the latter section. They are a concern in the process of typography and pagination, where it may be desirable to have a page break follow a section break for the sake of aesthetics or readability.


Built for designers and agencies
Slidus is designed from the ground-up to support and enhance the
workflow of web designers. It’s more than just a slogan for us.
Smooth workflows
Create accounts with limited interaction from your clients. Send them a link to enter their payment info, and they’re good to go.
A single login
Access all of your clients’ sites with a single FTP login. No need to remember 50 different usernames and passwords.
Demo sites are free
Easily test out changes and preview them for your clients, before publishing them to the live site.
Earn recurring income
Make money each month for the clients you host with Slidus. No need to pass around affiliate links or referral codes.


2021 Audi Q5 Caught Playing In The Snow
This is a minor update.
by Anthony AlanizThe current-generation Audi Q5 debuted for the 2018 model year, ushering in a modern design and the latest technologies. Less than a year later, and Audi is already preparing the Q5’s mid-cycle refresh, and we have new spy photos showing the crossover tackling Arctic snow for the first time.
 The most significant changes are up front, where the Q5 borrows a bit from the larger Q7. The 2021 Q5 will feature a prominent grille and headlights that appear to have a new internal design with a metal strake running through them. At the rear, the camouflage suggests Audi will restyle the Q5’s flanks. The bumper and exhaust also appear updated as does the LED taillights.
While these new batch of spy photos fail to show the interior, earlier spy photos do. However, as this is a mid-cycle refresh, the interior will get a modest update. The dash-mounted touchscreen could grow to 10.1 inches, and there could be updates to Audi’s MMI infotainment system. Other changes aren’t expected, but there could be some color and trim updates.
Gallery: 2021 Audi Q5
There’s no word on any powertrain changes coming; however, considering this is a mid-cycle refresh and not a new generation, the current engines should carry over unchanged. There is the possibility Audi could offer a longer-range, plug-in hybrid variant, though there’s no word from the German automaker.
It’s a bit strange to see an automaker updating a new model, but the new Q5 probably won’t debut until sometime next year before going on sale for the 2021 model year. There’s also a good chance Audi wants to keep the Q5 feeling fresh in its competitive segment. It competes against the BMW X3 and Mercedes GLC.


---
layout: post
title: possibly in space the approach to vegetables
date: '2009-09-06T13:21:37+01:00'
tags: []
tumblr_url: http://backlog.robbevan.com/post/181120198/possibly-in-space-the-approach-to-vegetables
---
“Possibly in space the approach to vegetables might be different. Did that ever strike you — because we are thinking of three-dimensional vegetables, maybe in space, where you have a lot of sunlight, you might get a two-dimensional tomato.”
“It might be one million miles long and as thin as a sheet of paper, aimed towards the sun — a tomato.”


Module textredux.core.buffer
The buffer class wraps a Textadept buffer, and extends it with support for custom styling, buffer specific key bindings and hotspot support.
It takes care of the details needed for making a text based interface work, such as mapping Textadept events to the correct buffers, working with the textredux.core.style module to ensure that styling works, etc.
How it works
When you work with a Textredux buffer, it will nearly always seem just like an ordinary Textadept buffer (but with benefits, such as support for custom styling and easy callbacks, etc.). But where a Textadept buffer is volatile, and might cease to exists at any time (due to it being closed by a user for example) a Textredux buffer is persistent.
When we say that a Textredux buffer "wraps" a Textadept buffer, there's more to
it than just adding additional methods to the Textadept buffer class. A
Textredux buffer will always exist, but the corresponding Textadept buffer,
named target
hereafter, may not. When the target buffer exists, a Textredux
buffer will expose all the functions and attributes of the Textadept buffer,
making it possible to use the Textredux buffer in just the same way as you
would a Textadept buffer (i.e. invoking any of the ordinary buffer methods,
setting attributes, etc.). The Textredux buffer takes care of creating the
target buffer automatically if needed whenever you invoke buffer:show.
When the target buffer does not exist, for instance as the result of the user
closing it, any attempt to invoke any of the ordinary buffer methods will
raise an error. You can check explicitly whether the target exists by using the
buffer:is_attached function. However, this is not something you will have to
worry much about in practice, since you'll typically interact with the buffer
as part of a refresh, key press, etc., where the target buffer will always
exist.
In short, you don't have to worry about creating buffers, detecting whether the buffer was closed, etc., as long as you remember to invoke buffer:show and perform your work within the callbacks.
How to use
You create a new Textredux buffer by calling new, passing the buffer title. You specify an on_refresh handler for the buffer, which is responsible for actually inserting the content in the buffer, along with any custom styles and hotspot handlers. You specify any custom key bindings using either keys or on_keypress, and/or hook any other handlers of interest. In the on_refresh handler, you add the actual text using any of the extended text insertion functions (buffer:add_text, buffer:append_text, buffer:insert_text or possibly buffer:newline). You invoke buffer:show to show the buffer, and respond to any interactions using the provided callbacks.
If you need to test whether a buffer is a Textredux buffer you can check
for the _textredux
field.
events.connect(events.BUFFER_AFTER_SWITCH, function()
local buffer = buffer
if buffer._textredux then
-- …
end
end)
Please see the examples for more hands-on instructions.
Info:
- Copyright: 2011-2012
- License: MIT (see LICENSE)
- Author: Nils Nordman
Functions
| new (title) | Creates and returns a new textredux buffer. |
| buffer:show () | Shows the buffer. |
| buffer:close () | Closes the buffer. |
| buffer:update (callback) | Performs an update of the buffer contents. |
| buffer:refresh () | Refreshes the buffer. |
| buffer:set_title (title) | Updates the title of the buffer. |
| buffer:is_attached () | Checks whether a target buffer currently exists. |
| buffer:is_showing () | Checks whether the buffer is currently showing in any view. |
| buffer:is_active () | Checks whether the buffer is currently active, i.e. |
| buffer:add_hotspot (start_pos, end_pos, command) | Adds a hotspot for the given text range. |
| buffer:add_text (text, style, command, indicator) | Override for buffer:add_text which accepts optional style, command and indicator parameters. |
| buffer:append_text (text, style, command, indicator) | Override for buffer:append_text which accepts optional style, command and indicator parameters. |
| buffer:insert_text (pos, text, style, command, indicator) | Override for buffer:insert_text which accepts optional style, command and indicator parameters. |
| buffer:newline () | Override for buffer:new_line. |
Fields
| read_only | Whether the buffer should be marked as read only. |
Instance fields
| on_deleted | Callback invoked whenever the target buffer is deleted. |
| on_refresh | Callback invoked whenever the buffer should refresh. |
| on_keypress | Callback invoked whenever the buffer receives a keypress. |
| keys | A table of key commands for the buffer. |
| data | A general purpose table that can be used for storing state associated with the buffer. |
| target | The target buffer, if any. |
Functions
- new (title)
-
Creates and returns a new textredux buffer. The buffer will not be attached
upon the return.
Parameters:
- title The title of the buffer. This will be displayed as the buffer's title in the Textadept top bar.
- buffer:show ()
- Shows the buffer. If the target buffer doesn't exist, due to it either not having been created yet or having been deleted, it is automatically created. Upon the return, the buffer is showing and set as the global buffer.
- buffer:close ()
- Closes the buffer.
- buffer:update (callback)
-
Performs an update of the buffer contents.
You invoke this with a callback that will do the actual update. This function
takes care of ensuring that the target is writable, and handles setting the
save point, etc.
Parameters:
- callback The callback to invoke to perform the update. The callback will receive the buffer instance as its sole parameter.
- buffer:refresh ()
-
Refreshes the buffer.
A refresh works by ensuring that it's possible to write to the buffer and
invoking the on_refresh handler. After the refresh is complete, the
read_only state is reset to whatever it was before the refresh, and a save
point is set.
Please note that a refresh will clear all content, along with hotspots, etc. If you want to perform smaller updates please use the buffer:update function instead.
- buffer:set_title (title)
-
Updates the title of the buffer.
Parameters:
- title
- buffer:is_attached ()
-
Checks whether a target buffer currently exists.
Returns:
-
true if the target buffer exists and false otherwise
- buffer:is_showing ()
-
Checks whether the buffer is currently showing in any view.
Returns:
-
true if the buffer is showing and false otherwise
- buffer:is_active ()
-
Checks whether the buffer is currently active, i.e. the current buffer.
Returns:
-
true if the buffer is active and false otherwise
- buffer:add_hotspot (start_pos, end_pos, command)
-
Adds a hotspot for the given text range.
Hotspots allows you to specify the behaviour for when the user selects
certain text. Besides using this function directly, it's also possible and
in many cases more convenient to add a hotspot when using any of the text
insertion functions (buffer:add_text, buffer:append_text,
buffer:insert_text). Note that the range given is interpreted as being
half closed, i.e.
[start_pos, end_pos)
.NB: Please note that all hotspots are cleared as part of a refresh.
Parameters:
- start_pos The start position
- end_pos The end position. The end position itself is not part of the hotspot.
- command
The command to execute. Similarily to keys, command can be either a function or a table. When the command is a function, it will be passed the following parameters:
buffer
: The buffer instanceshift
: True if the Shift key was held down.ctrl
: True if the Control key was held down.alt
: True if the Alt/Option key was held down.meta
: True if the Command/Meta key on Mac OS X/Curses was held down.
- buffer:add_text (text, style, command, indicator)
-
Override for
buffer:add_text
which accepts optional style, command and indicator parameters.
Parameters:
- text The text to add.
- style The style to use for the text, as defined using textredux.core.style.
- command The command to run if the user "selects" this text. See buffer:add_hotspot for more information.
- indicator Optional textredux.core.indicator to use for the added text.
- buffer:append_text (text, style, command, indicator)
-
Override for
buffer:append_text
which accepts optional style, command and indicator parameters.
Parameters:
- text The text to append.
- style The style to use for the text, as defined using textredux.core.style.
- command The command to run if the user "selects" this text. See buffer:add_hotspot for more information.
- indicator Optional textredux.core.indicator to use for the appended text.
- buffer:insert_text (pos, text, style, command, indicator)
-
Override for
buffer:insert_text
which accepts optional style, command and indicator parameters.
Parameters:
- pos
The position to insert text at or
-1
for the current position. - text The text to insert.
- style The style to use for the text, as defined using textredux.core.style.
- command The command to run if the user "selects" this text. See buffer:add_hotspot for more information.
- indicator Optional textredux.core.indicator to use for the inserted text.
- pos
The position to insert text at or
- buffer:newline ()
-
Override for
buffer:new_line.
A Textredux buffer will always have eol mode set to LF, so it's also possible,
and arguably easier, to just insert a newline using the
\n
escape via any of the other text insertion functions.
Fields
- read_only
- Whether the buffer should be marked as read only. The default is true but can be changed on a buffer to buffer basis. Any call to buffer:refresh will automatically take care of setting the buffer to write mode before invoking the on_refresh handler, and will restore the read_only state afterwards.
Instance fields
These can be set only for a buffer instance, and not globally for the module.- on_deleted
-
Callback invoked whenever the target buffer is deleted.
The callback has the following with the following parameters:
buffer
- on_refresh
-
Callback invoked whenever the buffer should refresh.
This should be set for each buffer. It is this callback that is responsible
for actually inserting any content into the buffer. Before this callback
is invoked, any previous buffer content will be cleared.
The callback will be invoked with the buffer as the sole parameter.
See also:
- on_keypress
-
Callback invoked whenever the buffer receives a keypress.
Please note that if there is any key command defined in keys matching
the keypress, that key command will be invoked and this callback will never
be called. The callback will receive the following parameters:
buffer
: The buffer instance.key
: The "translated key" (same format as for keys).code
: The key code.shift
: True if the Shift key was held down.ctrl
: True if the Control key was held down.alt
: True if the Alt/Option key was held down.meta
: True if the Command/Meta key on Mac OS X/Curses was held down.
It's similar to the standard Textadept KEYPRESS event (which you can read more about here). The return value determines whether the key press should be propagated, just as for the standard Textadept event.
See also:
- keys
-
A table of key commands for the buffer.
This is similar to
textadept.keys
works, but allows you to specify key commands specifically for one buffer. The format for specifying keys is the same as for textadept.keys, and the values assigned can also be either functions or tables. There are differences compared totextadept.keys
however:- It's not possible to specify language specific key bindings. This is obviously not applicable for a Textredux buffer.
- It's not possible to specify keychain sequences.
- For function values, the buffer instance is passed as the first argument.
- For table values, buffer or view references will not be magically fixed. This means that you should not use either of the above in a table command, unless you enjoy the occasional segfault.
In short, only explicit simple mappings are supported. Defining a key command for a certain key means that key presses are never propagated any further for that particular key. Key commands take preference over any on_keypress callback, so any such callback will never be called if a key command matches.
See also:
- data
-
A general purpose table that can be used for storing state associated
with the buffer. The
data
table is special in the way that it will automatically be cleared whenever the user closes the buffer. - target
- The target buffer, if any. This holds a reference to the target buffer, when present.


NB: throughout theses pages, we will demonstrate the usage of the library via its bundled distribution (one file packaged with all its dependencies). It is also possible to use it in a lighter, more dynamic and more elaborated way with require.js. More information on the development perspectives can be found on github.
NB': the library has been developed and tested on modern web browser, target mainly at Chrome, Firefox and Safari. Some features may not be available on older navigators.
.html
and a
.js
files. The JavaScript is actually executed for the demo, meaning that the sample code is a
fully working example. The mechanism under this features is stored in the sampleCode
jQuery
plugin with howto-utils.js script.
Finally, code samples take advantage
of two mainstream libraries: jQuery.js ($
) and underscore.js (_
). The mention to $('$target')
in the Javascript sources is replaced at runtime by the container of the example html template.
To use fishTones.js in your own web page, the simplest way is to include the JavaScript bundle and css
into your header. Both files can be downloaded in the github
dist/ directory. You can then later use the exposed fishtones
object within a
<script>
element or in an included .js
file.
NB: if you need to include your own jQuery or Bootstrap libraries, it must be done after
the fishtones-js-bundle-min.js
import, to avoid overloading effects.
<html> <head> <link rel="stylesheet" type="text/css" href="css/fishtones-js.css"/> <script src="lib/fishtones-js-bundle-min.js"></script> </head> <body> <script> var peptide = new fishtones.dry.RichSequence().fromString('PKPTIDER'); </script> </body> </html>


I've got chops in all phases of the design process. I love collaborating with brilliant people across disciplines to create unique, immersive, visual and shareable interactive experiences for mobile, desktop and tablet.
I collaborate with clients and peers to nurture and transform ideas into well thought out design specs. After all, that's where the majority of amazing user experiences start.
I'm a minimalist who truly believes that less is more.
I have spent the last two years working as a freelance web developer and designer and as part of a team in various companies like Venus Mind Media and Elementary Creative as a Full Stack Web Developer. I acquired project and time management skills, as well as the ability to communicate with team members and clients while effectively meeting milestones and deadlines.
As a web developer and designer I worked on several projects in Canada and India.
I have worked on a multitude of web and print based projects for a range of clients providing Web Design and Development (PHP, HTML, CSS, LESS, JavaScript, jQuery, WordPress, Bootstrap, Responsive Layouts), eCommerce Solutions, Corporate Branding and Graphic Design. My eye for detail, creative view on the world, and meticulous nature have left me with many highly satisfied team members.
My work is fully responsive, and tested in a wide range of devices. I take great care to ensure each project is well-documented and easily maintainable.
Often front-end development of a website is overlooked, but being the part of your project that combines design, back-end development and the layer that your users interact with, from my experience, it is the most important to get right.
In my past experience as a freelancer and working for companies I have also obtained an eye for detail and appreciation for design, knowledge of integrating with and developing server-side, as well as knowing how to efficiently project manage and work with clients and colleagues successfully.
Cross browser compatibility is ensured by using feature detection so older browsers still in use today provide a solid experience, whilst modern browsers can go the next step and enhance a user’s time spent on the site.
Writing semantic markup that is documented and easy to read means it can be maintained and scaled in the future, and allows co-workers to quickly work with it.
Have a look at my recent projects. Learn a bit more about me. Feel free to contact me for any further queries. I look forward to speaking with you soon about working with your company.


Hello people!

Fight for your rights!
Keep going!
Ho
Ha
Hu
La
Lu
Lo
Tu
Ti
Ta
Big Daddy Link
Trams
Baggage
No money! All the luck in the world!
That's right!
Whatever
Running in circles
Color stops here!
More wonderful solor stops
His final brushstroke


Everyday Menu
A Recipe Makes Life Better
Today's Recipe
There is something fresh and new about Lemon Meringue Pie. Strangely, there’s something nostalgic and lovely about it, too. This pie is sweet and perfect, just like the pie Grandma used to make…except for one major change. Instead of cooking your lemon custard in a finicky, boiling water bath (who keeps a double broiler on hand nowadays?), you get to thicken the filling with your trusty microwave. Old-
fashioned flavors made with newfangled technology? Now, that’s a pie you can pull together in no time at all!
Despite the slightly speedier cook time, this pie tastes just like a classic Lemon Meringue Pie. The custard is the color of golden sunshine and tastes like a batch of fresh-squeezed lemonade on a hot day. The meringue is light and fluffy, with a smooth, shiny texture that causes you to open your mouth in wonder and awe...and to shovel in an entire spoonful. It’s perfectly lovely. Retro flair with an updated kiss of ease.
Grandma's Lemon Meringue Pie(Click here to start making the classic!)


| Embalmbing Ritual | 1 | Common | Priest | SoU |
| Holy Smite | 1 | Priest | Basic | |
| Knife Juggler | 2 | Rare | Neutral | Classic |
| Radiant Elemental | 2 | Common | Priest | JtU |
| Test Subject | 1 | Rare | Priest | TBP |
| Forbidden Words | 0 | Rare | Priest | RoS | Alternate for Holy Smite. |
| Topsy Turvy | 0 | Common | Priest | TBP | Alternate for Holy Smite. |
| Acolyte of Pain | 3 | Common | Neutral | HoF |
| Bloodmage Thalnos | 2 | Legendary | Neutral | Classic |
| Coldlight Oracle | 3 | Rare | Neutral | HoF |
| Dead Ringer | 2 | Common | Priest | TBP |
| Loot Hoarder | 2 | Common | Neutral | Classic |
| Northshire Cleric | 1 | Common | Priest | HoF |
| Novice Engineer | 2 | Neutral | Basic | |
| Power Word: Glory | 1 | Common | Priest | TGT |
| Renew | 1 | Common | Priest | AoO |
| Shadow Visions | 2 | Epic | Priest | JtU |
| Shadow Word: Death | 2 | Priest | Basic | |
| Shadow Word: Horror | 4 | Rare | Priest | WotOG |
| Shadow Word: Pain | 2 | Priest | Basic | |
| Shadow Word: Ruin | 4 | Epic | Priest | Classic |
| Stonehill Defender | 3 | Rare | Neutral | JtU |


| Projects | Lines of code | Last Build | Nb tests functional
|
Coverage functional
|
Coverage UT
|
bytes Lost (valgrind) | Duplicate Code
|
number Warning Cpp | number Error Cpp | Status |
|---|


HOME
About page
Photos&Videos
Donate
Upcoming event
Contact Us
WELCOME TO TINNOS FARM TRIP WEBSITE
LET'S EXPLORE FARMS AND SUPPORT FARMERS
CONTACT US
your name
your second name
your number
enter your message
submit
CONTACT US


I am s Mechatronics Engineering student at the University of Waterloo. I love learning about anything I can get my hands on and have recently read The Design of Everyday Things by Don Norman. When I'm not gaming, I like to imagine how to make my life better or just keeping myself busy.
I'm looking for a fulltime position and if you're looking for an innovative or creative engineer, feel free to contact me.
Embedded Systems
Mircocontrollers
Electrical Circuits
Soldering and Prototyping
3D Printing
Machine Shop and Power Tools
Design
Failure Mode and Critical Analysis
Finite Element Analysis
Controls
Click on an image to find out more


We have the most infamous Catgirls in here spanning from Sebslore to Agentisnotreal.
| Name | Class of Catgirl |
|---|---|
| SebsLore | Class 5 Catgirl |
| MudkipScience | Class 5 Catgirl |
| AnthonyCanada | Class 5 Catgirl |
| BredIs_Ded | Class 5 Catgirl |
| Khoi345 | Class 5 Catgirl |
| TheGreatBear125 | Class 4 Catgirl |
| Agentisnotreal | Class 4 Catgirl / Class 0 |
| Aeroseru | Class 4 Catgirl |
| HarryXChen3 | Class 4 Catgirl |
| EnvvyLime | Class 3 Catgirl |
| Randell13 | Class 3 Catgirl |
| Moonlxtte | Class 3 Catgirl |
| TheJar3dRoblox | Class 3 Catgirl |
| ANoodleNamedSoba | Class 2 Catgirl |
| CristianPomohachi | Class 2 Catgirl |
| TheEmeraldDeveloper | Class 2 Catgirl |
| Burns961 | Class -1 Dogboy |
| GuitarGamerYT3 | Class Executed |


--- title: Building JavaScript Widgets layout: post tags: - Widgets - Small JavaScript - JavaScript ---
Little pieces of JavaScript you embed onto your website are getting more popular. Every major provider of a service on the web also gives you a little widget that you can put on your blog or webpage to promote what you are doing, for example Twitter, Last FM and Digg all provide widgets which are great for you and great for the service.
I am going to talk you through the development and pitfalls associated with the design and development of widgets.
First and foremost, you need to decide what you want to show with your widget. Knowing this you can make an educated choice about which method you want to use to create a widget, there are basically two methods associated with widget development.
No, iframe’s aren’t dead. They are a major part of widget development. Using a iframe
is the easiest way to generate a widget - you host a small file on your web site which contains the information you want to show, like the Digg button for example, and get the JavaScript on the client side to build the URL to it. In the case of Digg the client side JavaScript builds a URL based on the current posts URL.
To install the widget all you have to do is to point the user at your bit of JavaScript:
{% highlight html %} {% endhighlight %}You can pass any variables you want through to the user at this point by simply making them JavaScript variables, and using the JavaScript to build up the iframe
URL based on these variables.
If you want your widget to be able to appear multiple times on the same webpage, you need to remember to set all the variables to null
at the end of your JavaScript file.
That's it! iframe
based widgets are very easy to build and to use, however they do come with their downsides. The biggest of these is that the user can't customise the widget at all - it lives within an iframe
and therefore is untouchable by CSS. That's why certain widgets, like the twitter widget, which are made entirely on the client side in JavaScript.
A widget that is built in JavaScript on the client side is definitely the harder option. For this you have to make the JavaScript file create all the HTML, write out a basic style to apply to the HTML and load in the data. When building this try to avoid using frameworks to build the HTML, this only creates more request for your web servers and make the widget slower to load. Instead resort to using the classical JavaScript methods for creating elements.
{% highlight javascript %} document.write(''); var widget = document.getElementById('you_id'); var div = document.createElement('div'); div.innerHTML = 'Hello World'; widget.appendChild(div); {% endhighlight %}You will have to load your data in from another source, and for this I recommend extending your API to give you a JavaScript variable followed by the JSON encoded data. Here's an example from tweetmeme.
There are a lot of difficulties involved in creating widgets and here are just a few of them:


This diagram shows the effect of the 'collapse' value of the 'border-collapse' property.
The diagram shows three cells in the same row and the grid lines that separate them. The left and right content, padding, border, and margin areas of each cell are labeled by rotated text above each of the areas. Each (red, dotted) grid line bisects the border between two cells.
The table width is indicated below the cells as encompassing all the left and right content, padding, border, and margin areas of the cells, except for the cells that touch the sides of the table. In this case, only half the exterior border widths are counted in the table's width.


|
Class Summary |
| CSSParser |
Main Parser |
| Declaration |
Includes a property and value. |
| DefaultCSSHandler |
Simple CSS Stream Parser Handler that prints what it finds to the console. |
| FontFace |
Font-Face |
| KeyFrame |
Used with @Keyframe At-Rules to specify what declarations are modified for a given
percentage of an animation |
| RuleSet |
A rule set consists of the selector and declaration block. |
| Scanner |
Scans the input stream for CSS syntax. |
| SequentialInputStream |
Deprecated. not used, and did not work as needed. |
| Tester |
Tests the parser using a stylesheet string, which is derived from HTML5 boilerplate css. |
| Token |
Parsed Element |
| TokenSequence |
Simple organization of a sequence of tokens. |
| TokenSequence.Builder |
Helper class for creating a TokenSequence |


[1]
Accurate mapping data, comprehensive list of POI's, outstanding nuviLink features.; Poor microphone voice quality, occasional freezes or spontaneous resets, poor dead reckoning capability when GPS satellite signals are blocked.


HYPEBEAST & Medicom Toy Drop Topographical BE@RBRICK Capsule
Bold cartographic renderings.
by Charlie ZhangMedicom Toy has returned with a collaboration with HYPEBEAST featuring an exclusive BE@RBRICK and a set of accessories. Each piece in the capsule is emblazoned with topographical renderings, symbolizing the expanding editorial landscape of HYPEBEAST over the last 14 years.
Coming in sizes of 1000%, 400% and 100%, the HYPEBEAST BE@RBRICK is the capsule’s centerpiece. Set against a black foundation, dimensional contour lines of yellow, orange, red, blue and green gloss over the figure in a series of contrasting hues. Each color denotes specific types of terrain, like red, which represents man-made infrastructures, while blue, for example, indicates water zones. The thickness and spatial distance of each line help tell the shape of the depicted geography, detailing things like flatness and elevation. As a final note, “HYPEBEAST” branding is stamped subtly at the side of the left leg. The cartographic concept is carried over on a Fabrick-made pair of slippers, a cushion and a flat two-way pouch to round up the concise capsule.
The HYPEBEAST x MEDICOM TOY BE@RBRICK capsule will be available online on November 22, 9 a.m. EST exclusively at HBX, ranging from $40 – $700 USD. Those in Japan will also have a chance to purchase the collectibles at Parco’s new “2G” Studio in Shibuya, Tokyo.
Elsewhere, Byron Hawes has released Art on Deck detailing 20 years of Supreme’s iconic skateboards.


South Melbourne Marathon
Melbourne AUS
Race Winners
(19 runnings)
27
Nov
1994
28
Nov
1993
22
Nov
1992
24
Nov
1991
25
Nov
1990
19
Nov
1989
20 Nov
1988
22 Nov
1987
16
Nov
1986
17 Nov
1985
25
Nov
1984
27 Nov
1983
21
Nov
1982
22
Nov
1981
23
Nov
1980
18
Nov
1979
19
Nov
1978
20
Nov
1977
21
Nov
1976
Notes: 1976 was the inaugural
year. The 1976 race was known as the Olympic Anniversary Marathon; the
races 1976-1979 were known as the SMAC Olympic Tyres Marathon.
---
n/a
---
n/a
---
n/a
---
n/a
2:30:40
Morgan Lee Tucker (AUS)
3:07:31
Jeannette Mase-2
2:27:44
Brian
Simmons-2
2:56:33
Jeannette Mase (AUS)
2:26:20
Brian Simmons (AUS)
3:03:45
Lavinia Petrie-2
2:23:16
Peter
Mitchell-2
2:59:50
Lavinia Petrie (AUS)
2:34:37
Stephen Guy (AUS)
2:49:34
Linda
Thompson-4
2:31:34
Jeff
Crawley-2
2:51:23
Linda
Thompson-3
2:23:25
Bernie Kelly (AUS)
2:49:43
Linda
Thompson-2
2:34:29
Don Simpson-2
2:54:28
Tessa Brockwell (AUS)
2:25:23
Jeff Crawley (AUS)
2:51:18
Barbara Byrnes-2
2:23:54
Peter Mitchell (AUS)
2:49:40
Linda Thompson (AUS)
2:21:28
Graham Clews (AUS)
3:06:42
Jan Pearson (AUS)
2:23:54
Colin Donald (AUS)
2:48:00
Barbara Byrnes (AUS)
2:23:34
Rob Squirrell (AUS)
2:58:50
Margaret Smith (AUS)
2:19:42
Garry Henry (AUS)
2:33:14
Don Simpson (AUS)
2:23:00
Tony Bart (AUS)
2:21:42
Gerry Sofianos (AUS)
Most Wins
(1976/1994)
Men
2
Don Simpson (AUS)
1978,1985
Jeff Crawley (AUS)
1984,1987
Peter Mitchell (AUS)
1983,1989
Brian Simmons (AUS)
1990-91
Women
4
Linda Thompson (AUS)
1983,1986-88
Prize Money
No information on prize money has been received for this race.
Race Time Bias
Insufficient data to calculate the race time bias.
Competitive Level
Insufficient data to calculate the competitive level.
Quality Performances
Men <2:20 1
Women <2:50 4
Last Updated on
10 Nov 2009
Contributors: Kelvin Marshall, Andy Milroy (50)


Let it snow!
This test demonstrates the use of CSS3 keyframe animation in order to give a snowflake feel to your website. Each snowflake is suspended when the mouse hovers it, therefore it can easily be used for navigation links.
To use it, just add the 'snowflake' class to your element.


fun <T> Class<T>.newUnsafeInstance(): T
Create an instance of a given class if possible using it's constructor, otherwise through Unsafe bypassing the constructor
NoSuchMethodException
- if a matching method is not found.
UnsupportedOperationException
- if you're trying to instantiate a non-instantiable class
Author
sliep
Receiver
the Class to be instantiated
Return
the newly created instance
See Also


Binary Heap + Priority Queue
Graphic elements
There are listed all graphic elements used in this application and their meanings.
| Graphic | Meaning | Description |
|---|---|---|
| Node | Node with his value. | |
| Selected node | Selected node is highlighted with red stroke. You can select a node by clicking on it. | |
| Edge | An edge is a reference from one node to another. Referenced node is called child of referring node. Referring node is called parent of referenced node. | |
| Parent and his children | In binary trees there are maximum two children of any node - left child and right child. | |
| Comparison signs | Very often algorithms compare two nodes (their values). In that case one of this sign will be shown in the middle of them. | |
| Continue in parent/ |
Algorithms usually traverse a tree or recursively call themselves on one child of just processing node. These graphic elements will show you which node is next in line. | |
| No left/ |
A node do not have left/right child. | |
| Enter/ |
A start/end visualisation of an algorithms that traverse a tree. | |
| Came from left/ |
Sometimes it is important if an algorithm came from left or right child. These arrows indicate that the condition is satisfied. | |
| Did not come from left/ |
As previous, but the condition is not satisfied. | |
| Array | A tree can be represented by an array, can be transformed to the array or can be build from the array. Array is indexed (1, 2, 3, ... 7) and has values (2, 5, 22, 39, 44). Last two indexes are still empty. |


|
bsp - BSP handle
red# - red BSP ambient light value green# - green BSP ambient light value blue# - blue BSP ambient light value The red, green and blue values should be in the range 0-255. The default BSP ambient light colour is 0,0,0. |
|
Sets the ambient lighting colour for a BSP model.
Note that BSP models do not use the normal AmbientLight setting. This can also be used to increase the brightness of a BSP model, but the effect is not as 'nice' as using the gamma_adjust parameter of LoadBSP. See also: LoadBSP, BSPLighting. |
|
Graphics3D 640,480
campiv = CreatePivot() cam = CreateCamera(campiv) CameraRange cam, 0.1,2000 level=LoadBSP( "nyk3dm1\nyk3dm1.bsp",.8 ) ; load a 'legal' quake3 bsp map BSPAmbientLight level, 0,255,0 ; make the ambient light green ;BSPLighting level, False ; uncomment this line to turn lightmap off While Not KeyDown(1) ; if ESCAPE pressed then exit RenderWorld:Flip mys = MouseYSpeed() If Abs(EntityPitch(cam)+mys) < 75 ; restrict pitch of camera TurnEntity cam, mys,0,0 EndIf TurnEntity campiv,0,-MouseXSpeed(),0 If MouseDown(1) Then ; press mousebutton to move forward TFormVector 0,0,3,cam,campiv MoveEntity campiv,TFormedX(),TFormedY(),TFormedZ() EndIf MoveMouse 320,240 ; centre mouse cursor Wend End |


Inspired by Go Play menu by Unity on Dribbble. Click to see it in action.
Social good ipsum - frontline human being, fundraise, global health free-speech.
Social good ipsum - Expanding community ownership meaningful work beneficiaries worldwide momentum eradicate. New approaches fluctuation diversity rural improving quality; marginalized communities accelerate UNICEF Andrew Carnegie; international initiative safety protect vaccines.
Social good ipsum - Climate change, peace, challenges, cause minority small-scale farmers.
Social good ipsum - Change working families, public sector readiness foundation, Kickstarter political honor forward-thinking, partnership affiliate; developing nations process humanitarian relief.
Social good ipsum - Climate change, peace, challenges, cause minority small-scale farmers.
Social good ipsum - Change working families, public sector readiness foundation, Kickstarter political honor forward-thinking, partnership affiliate; developing nations process humanitarian relief.


osmar2 is a version of the osmar package (“OpenStreetMap and R”) rewritten to use xml2 package instead of XML, and some other adaptations to allow for much quicker reading of .osm files. It’s available on github.
The part I wanted to spend some time writing about here was the
optimization and debugging process that went into making it faster.
Going into this project, I was pretty sure that the package there were
inefficiencies in reading files because even though the files were
relatively small (10Mb), osmar was already taking several minutes to
load, whereas a read.csv()
(or better, readr::read_csv()
) could read
that size in less than a second.
So, I first thought that just switching over to xml2 would be most of what I needed, but when I had finished rewriting the code using the original osmar package’s approach updated with xml2 funcitons instead of XML, there wasn’t much of an improvement.What ended up speeding things up was a change in the parsing algorithm.
Here’s a sample osm xml file, which I’ve simplified so that only has a few nodes and have removed some tags that aren’t used (more details on osm files here).
#> ...
#> <node id="506685546" lat="44.9493365" lon="-93.1692413" version="1"/>
#> <node id="506685547" lat="44.9496459" lon="-93.1691436" version="1">
#> <tag k="highway" v="turning_circle"/>
#> </node>
#> <node id="530739183" lat="44.9399208" lon="-93.1875805" version="1">
#> <tag k="name" v="Davanni's Pizza & Hot Hoagies"/>
#> <tag k="amenity" v="restaurant"/>
#> <tag k="cuisine" v="italian"/>
#> </node>
#> ...
One of the slowest part of parsing the file in the original osmar
package is when creating a dataset of the tag variables. This dataset
needs one row per tag
node, but includes a variable from that tag
’s
parent node
(the id
variable). id
from the node. The original way
I attacked this looked something like this:
old_method <- function() {
# Find all of the nodes with at least one tag
nodes <- xml_find_all(osm_xml_root, "/osm/node[./tag]")
# Pull those nodes' ids
ids <- xml_attr(nodes, "id")
# Pull those nodes' (1 or more) tags into a list of data.frames()
tags <- lapply(nodes, function(parent_node) {
tag_nodes <- xml_find_all(parent_node, "./tag")
data_frame(k = xml_attr(tag_nodes, "k"),
v = xml_attr(tag_nodes, "v"))
})
# And convert that to a single long data.frame
out_df <- data_frame(ids,
tags = tags) %>%
unnest()
out_df
}
old <- old_method()
old %>% print(n = 3)
#> # A tibble: 4,616 x 3
#> ids k v
#> <chr> <chr> <chr>
#> 1 187845021 highway mini_roundabout
#> 2 187854927 highway mini_roundabout
#> 3 187854980 noexit yes
#> # ... with 4,613 more rows
As I began to dig into this, I learned that some of the xml2 functions allow you to perform the entire operations in C and so are very fast, while others force the code into R objects and so have much slower looping. So, it doesn’t always make sense to try to save your place in the xml document to avoid having to repeatedly search for the same spots, because this may force you to loop in R rather than C. For example:
system.time(
osm_xml_root %>%
xml_find_all("/osm/node") %>%
xml_find_all("tag/@k") %>%
xml_text()
)
#> user system elapsed
#> 3.005 0.029 3.035
# Is 30X slower than this:
system.time(
osm_xml_root %>%
xml_find_all("/osm/node/tag/@k") %>%
xml_text()
)
#> user system elapsed
#> 0.120 0.003 0.123
# So even though the second method requires us to search from the top
# of the tree for the k and v variable separately, it is still faster.
The only problem being that we need a way to find out which node id this particular key/value belong to. This requires some tricky(-ish) xpath.
# Find all nodes with at least one tag and get their id
nodes <- xml_find_all(osm_xml_root, "/osm/node[./tag]")
id <- xml_attr(nodes, "id")
# Find out how many tags are below each of these nodes and
# repeat the id that many times
lens <- xml_find_num(nodes, "count(./tag)")
id <- rep(id, lens)
Putting it all together, we get:
new_method <- function() {
# Find all of the nodes with at least one tag and pull their ids
nodes <- xml_find_all(osm_xml_root, "/osm/node[./tag]")
ids <- xml_attr(nodes, "id")
# Find out how many tags are below each of these nodes and
# repeat the id that many times
lens <- xml_find_num(nodes, "count(./tag)")
ids <- rep(ids, lens)
# Pull the tag's keys and values
keys <- osm_xml_root %>%
xml_find_all("/osm/node/tag/@k") %>%
xml_text()
values <- osm_xml_root %>%
xml_find_all("/osm/node/tag/@v") %>%
xml_text()
data_frame(ids = ids,
k = keys,
v = values)
}
new <- new_method()
new %>% print(n = 3)
#> # A tibble: 4,616 x 3
#> ids k v
#> <chr> <chr> <chr>
#> 1 187845021 highway mini_roundabout
#> 2 187854927 highway mini_roundabout
#> 3 187854980 noexit yes
#> # ... with 4,613 more rows
Which gives the same result, but much more quickly than the old method:
microbenchmark(old = old <- old_method(),
new = new <- new_method(),
times = 5)
#> Unit: milliseconds
#> expr min lq mean median uq max neval
#> old 3648.1691 3697.593 3906.4411 3949.5129 4015.202 4221.7289 5
#> new 354.0688 374.710 380.0945 378.4144 380.622 412.6573 5
identical(old, new)
#> [1] TRUE
This makes me wonder whether it’d be easier for xml2 to have a function
along the lines of xml_find_list()
so that you could more easily
select multiple queries using the quicker C code. I’m not exactly sure
how this would work though. Also, possibly I’m missing something and
there’s an easier way to do this. If there is, let me
know.


View On: Google Earth.
Earth is the third planet from the Sun and the only astronomical object known to harbor life. According to radiometric dating and other sources of evidence, Earth formed over 4.5 billion years ago.
- Sourced from wikipedia
Find more info here: en.wikipedia.org/wiki/Earth
Watch a video of the space station orbiting the earth:
View On: Google Earth.
Mercury is the smallest and innermost planet in the Solar System. Its orbital period around the Sun of 87.97 days is the shortest of all the planets in the Solar System. It is named after the Roman deity Mercury, the messenger of the gods.
- Sourced from wikipedia
Find more info here: Wiki - Mercury
The Sun is the star at the center of the Solar System. It is a nearly perfect sphere of hot plasma, with internal convective motion that generates a magnetic field via a dynamo process.
- Sourced from wikipedia
Find more info here: Wiki - Sun
View On: Google Earth.
Venus is the second planet from the Sun, orbiting it every 224.7 Earth days. It has the longest rotation period of any planet in the Solar System and rotates in the opposite direction to most other planets. It does not have any natural satellites. It is named after the Roman goddess of love and beauty.
- Sourced from wikipedia
Find more info here: Wiki - Venus
View On: Google Earth.
Mars is the fourth planet from the Sun and the second-smallest planet in the Solar System after Mercury. In English, Mars carries a name of the Roman god of war, and is often referred to as the "Red Planet" because the reddish iron oxide prevalent on its surface gives it a reddish appearance that is distinctive among the astronomical bodies visible to the naked eye. Mars is a terrestrial planet with a thin atmosphere, having surface features reminiscent both of the impact craters of the Moon and the valleys, deserts, and polar ice caps of Earth.
- Sourced from wikipedia
Find more info here: Wiki - Mercury
Saturn is the sixth planet from the Sun and the second-largest in the Solar System, after Jupiter. It is a gas giant with an average radius about nine times that of Earth. It has only one-eighth the average density of Earth, but with its larger volume Saturn is over 95 times more massive. Saturn is named after the Roman god of agriculture; its astronomical symbol (♄) represents the god's sickle.
- Sourced from wikipedia
Find more info here: Wiki - Saturn
Neptune is the eighth and farthest known planet from the Sun in the Solar System. In the Solar System, it is the fourth-largest planet by diameter, the third-most-massive planet, and the densest giant planet.
- Sourced from wikipedia
Find more info here: Wiki - Neptune
Jupiter is the fifth planet from the Sun and the largest in the Solar System. It is a giant planet with a mass one-thousandth that of the Sun, but two-and-a-half times that of all the other planets in the Solar System combined.
- Sourced from wikipedia
Find more info here: Wiki - Jupiter
Uranus is the seventh planet from the Sun. It has the third-largest planetary radius and fourth-largest planetary mass in the Solar System. Uranus is similar in composition to Neptune, and both have different bulk chemical composition from that of the larger gas giants Jupiter and Saturn. For this reason, scientists often classify Uranus and Neptune as "ice giants" to distinguish them from the gas giants. Uranus's atmosphere is similar to Jupiter's and Saturn's in its primary composition of hydrogen and helium, but it contains more "ices" such as water, ammonia, and methane, along with traces of other hydrocarbons. It is the coldest planetary atmosphere in the Solar System, with a minimum temperature of 49 K (−224 °C; −371 °F), and has a complex, layered cloud structure with water thought to make up the lowest clouds and methane the uppermost layer of clouds. The interior of Uranus is mainly composed of ices and rock.
- Sourced from wikipedia
Find more info here: Wiki - Uranus


{% extends "templates/base.html" %} {% set mastheadimage="/devsummit/static/images/masthead/collage-masthead" %} {% set pagestyles="static/styles/sessions.css" %} {% set section="Session" %} {% block content %}
Alex gives an overview of why web apps don’t feel “appy” today, and shows how Service Worker is enabling a whole new world of appiness - beyond the simple goal of making web apps work offline, to building truly engaging web applications.


The Kenya National Council is dedicated to offering excellent services.
Our main aim is to reduce exam leakage during transportation.
Here instead of having the exams being trasported, the exams are to be sent to every registered school that is Kenya Certificate of Primary Education (KCPE) for the Primary Schools and Kenya Secondary School Education (KCSE), for Secondary Schools.
After sending they are to be downloaded and issued to the students after which they are to start their National Exams.
Registration of exam centres
Release of Examination results
Registration of candidates
Results confirmation


Liverpool Football Club
You'll Never Walk Alone
Home
News
Fixtures
Players
Injuries
Transfers
Rivalries
Other News
Jerseys
Gallery
Images
Videos
Store
Audio & Video Gallery
You'll Never Walk Alone Anthem
Firmino's Goal VS Wolves
Klopp's Press Conference


Victor Alvarez's Portfolio
Victor Alvarez is a student of Harvard College, class of 2023. He is pursuing a double major in computer science and mathematics.
Although there is no clear plan, he knows he wants a career where he will apply his skills and continue to learn about both of these
fields.
Victor has several interests outside of academics. He likes to play soccer, listen to music, play video games and watch television.
Aside from the few activities named, Victor is willing to try new things as he's always ready to find a new interest!
Click to see one of Victor's favorite artists!
Or click here to see the content created by the server code directly.
Click here to get a random fact about Victor:


Chem 4A is the first of two classes in the general chemistry classes offered in the undergraduate level for College of Chemistry majors. This class is similar to Chem 1A, but is more thorough and difficult than the 1 series. This course reviews the fundamentals of chemistry usually taught in high school, such as chemical reactions and equilibria, and introduces new concepts including quantum mechanics and thermodynamics. In addition to lectures, there are weekly four-hour lab sessions that somewhat correlate to what is being taught during lecture. There, students learn quantitative laboratory techniques that are essential to most chemistry labs.
High school chemistry, Math 1A (can be taken concurrently)
Fall only
3 hours of lecture per week and 4 hours of lab section per week.
This class is required for all College of Chemistry majors. It is offered only in the fall. This should be taken the first semester of college.
This is the first chemistry class offered, and reviews many concepts that were taught in high school chemistry classes, especially AP or IB chemistry. Thus, it’s highly recommended that students have this prior knowledge because this course is very fast paced by reviewing these concepts and more in just half the time of most high school classes. However, one may replace this class with Chem 1A if you do not have the proper background with permission from an advisor.
Although the material for the course is generally not difficult, the problem sets and laboratory post-labs can be time-consuming. It is recommended for students to collaborate and work with others on these assignments. For the lab portion of the course, doing the experiments are not particularly difficult, but can sometimes be frustrating. However, the post-lab assignments that are completed outside the laboratory time are tedious and will require a lot of time. They may sometimes require graphing or multistep answers, so make sure to budget time to do these as well as the pre-lab assignments. Post-labs and pre-labs are due weekly. There are two formal laboratory assignments that are also time-consuming.
Most students will struggle in the quantum mechanics portion of the course. It is recommended to read the textbook and attend as many review sessions from GSIs as possible to understand the new material. In addition, there are many midterms for this course, so ensure you are caught up with the material because it will feel fast paced.
Written by: Justin Yeung
Last edited: Fall 2018


Tools
Node.js
-
For more information and installing Node.js please see its page at
nodejs.org
-
It's optional and you don't need to use it.
I've used it for compiling LESS files into CSS and
Mustache templates into static HTML
Less.js
-
Less is a CSS pre-processor which is useful for creating and maintating large amounts of CSS code
-
You can find more info about it here lesscss.org
-
Almost all Ace CSS files are generated from compiling LESS files
-
First you need to install less compiler via npm:
npm install -g less
-
To compile LESS files, you can run the following commands:
lessc ace.less path/to/ace.css
lessc skins/skins.less path/to/ace-skins.css
For options such as compressing output, etc, you can use its help by using the following command:
lessc --help
-
You can also use the in-browser CSS builder tool to build a custom CSS.
Mustache Compilers
-
Ace's demo pages are mustache templates compiled into HTML
-
For more info about Mustache files please see Mustache files
-
PHP Mustache is used during development.
And Javascript Mustache compiler is used for final demo output
-
For more info please see the following links:
Mustache
Mustache.js
Hogan.js
PHP Mustache
UglifyJS


GRUB-MKRELPATH(1) User Commands GRUB-MKRELPATH(1) NAME grub-mkrelpath - make a system path relative to its root SYNOPSIS grub-mkrelpath [OPTIONS] PATH DESCRIPTION Make a system path relative to its root. OPTIONS -h, --help display this message and exit -V, --version print version information and exit REPORTING BUGS Report bugs to<EMAIL_ADDRESS>SEE ALSO grub-probe(8) The full documentation for grub-mkrelpath is maintained as a Texinfo man‐ ual. If the info and grub-mkrelpath programs are properly installed at your site, the command info grub-mkrelpath should give you access to the complete manual. grub-mkrelpath (GRUB) 1.99-27.1cruncMayn2013 GRUB-MKRELPATH(1)


If you want to become a good statistician, you have to become lazy. (If you are already lazy, chances are high you are one of those exceptional, natural-born statistical talents.)
In the previous exercises you probably experienced that it is boring and frustrating to type and retype information such as the days of the week. However, when you look at it from a higher perspective, there is a more efficient way to do this, namely, to assign the days of the week vector to a variable!
Just like you did with your poker and roulette returns, you can also create a variable that contains the days of the week. This way you can use and re-use it.
days_vector
that contains the days of the week has already been created for you.days_vector
to set the names of poker_vector
and roulette_vector
.
# Poker winnings from Monday to Friday
poker_vector <- c(140, -50, 20, -120, 240)
# Roulette winnings from Monday to Friday
roulette_vector <- c(-24, -50, 100, -350, 10)
# The variable days_vector
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
# Assign the names of the day to roulette_vector and poker_vector
names(poker_vector) <-
names(roulette_vector) <-
# Poker winnings from Monday to Friday
poker_vector <- c(140, -50, 20, -120, 240)
# Roulette winnings from Monday to Friday
roulette_vector <- c(-24, -50, 100, -350, 10)
# The variable days_vector
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
# Assign the names of the day to roulette_vector and poker_vector
names(poker_vector) <- days_vector
names(roulette_vector) <- days_vector
msg <- "Do not changes the predefined variables `poker_vector`, `roulette_vector` or `days_vector`."
test_object("poker_vector", undefined_msg = msg, incorrect_msg = msg)
test_object("roulette_vector", undefined_msg = msg, incorrect_msg = msg)
test_object("days_vector", undefined_msg = msg, incorrect_msg = msg)
test_object("poker_vector",
eq_condition = "equal",
incorrect_msg = "Make sure that you assign `days_vector` to the names of `poker_vector`.")
test_object("roulette_vector",
eq_condition = "equal",
incorrect_msg = "Make sure that you assign `days_vector` to the names of `roulette_vector`.")
success_msg("Nice one! A word of advice: try to avoid code duplication at all times. Continue to the next exercise and learn how to do arithmetic with vectors!")
You can use names(poker_vector) <- days_vector
to set the names of the elements poker_vector
. Do a similar thing for roulette_vector
.


A Web Virtual Reality Experience
Designed for Android/iPhone and Google Cardboard
Developed with Three JS
Dev Bootcamp SF Sealions 2015


Your box can be closed on a timer, select the amount of time
Please Note- By clicking submit you agree to your photos and photo data to be inaccessable until the date chosen. Once a selection is made and submitted it cannot be changed.


After completing Code Fellows, I will finally be able to transition into a career that I love, and that allows me to utilize my full potential, instead of using my time to teach government "professionals" how to use a computer.


| Package | com.intridea.presentlyAIRClient.vo |
| Class | public final class Status |
| Property | Defined by | ||
|---|---|---|---|
| createdAt : Date
Represents the creation data of this
Status in the Present.ly system. | Status | ||
| favorited : Boolean
If this
Status has been marked as a favorite, (not used in the current AIR client implementation). | Status | ||
| ID : String
Represents the system based id associated with this
Status . | Status | ||
| inReplyToStatusID : String
If this
Status is in reply to another Status , (not used in the current AIR client implementation). | Status | ||
| inReplyToUserID : String
If this
Status is in reply to another User , (not used in the current AIR client implementation). | Status | ||
| isDirectMessage : Boolean = false
If this
Status is a direct message in the Present.ly system or a just a standard Status . | Status | ||
| isReply : Boolean [read-only]
| Status | ||
| source : String
Represents the origin of this
Status . | Status | ||
| text : String
Represents the text message collected by a
User of the Present.ly system. | Status | ||
| truncated : Boolean
If the text in this
Status has trailing text beyond the 140 character limit mandated
by the Present.ly API. | Status | ||
| user : User
The main participant in the interactions with the Present.ly AIR client.
| Status |
| Method | Defined by | ||
|---|---|---|---|
|
Status()
Represents a status text message in the Present.ly system.
| Status | ||
|
getCreatedAtString():String
Convert user creation date to Present.ly specific formatting.
| Status | ||
|
toString():String
Used for diagnostics, testing, debugging and trace statements.
| Status |
| createdAt | property |
public var createdAt:Date
Represents the creation data of this Status
in the Present.ly system.
| favorited | property |
public var favorited:Boolean
If this Status
has been marked as a favorite, (not used in the current AIR client implementation).
| ID | property |
public var ID:String
Represents the system based id associated with this Status
.
| inReplyToStatusID | property |
public var inReplyToStatusID:String
If this Status
is in reply to another Status
, (not used in the current AIR client implementation).
| inReplyToUserID | property |
public var inReplyToUserID:String
If this Status
is in reply to another User
, (not used in the current AIR client implementation).
| isDirectMessage | property |
public var isDirectMessage:Boolean = false
If this Status
is a direct message in the Present.ly system or a just a standard Status
.
| isReply | property |
isReply:Boolean
[read-only]This property can be used as the source for data binding.
Implementation public function get isReply():Boolean
| source | property |
public var source:String
Represents the origin of this Status
.
| text | property |
public var text:String
Represents the text message collected by a User
of the Present.ly system.
| truncated | property |
public var truncated:Boolean
If the text in this Status
has trailing text beyond the 140 character limit mandated
by the Present.ly API. User
, (not used in the current AIR client implementation).
| user | property |
public var user:User
The main participant in the interactions with the Present.ly AIR client.
See also
| Status | () | constructor |
public function Status()
Represents a status text message in the Present.ly system.
| getCreatedAtString | () | method |
public function getCreatedAtString():String
Convert user creation date to Present.ly specific formatting.
ReturnsString |
| toString | () | method |
public function toString():String
Used for diagnostics, testing, debugging and trace statements.
ReturnsString |


UI Dashboard Authentication and Authorization
What is this about?
How to enable UI authentication?
-
Change config file gear.conf, find entry
gearpump-ui.gearpump.ui-security.authentication-enabled
, change the value to truegearpump-ui.gearpump.ui-security.authentication-enabled = true
Restart the UI dashboard, and then the UI authentication is enabled. It will prompt for user name and password.
How many authentication methods Gearpump UI server support?
Currently, It supports:
- Username-Password based authentication and
- OAuth2 based authentication.
User-Password based authentication is enabled when gearpump-ui.gearpump.ui-security.authentication-enabled
,
and CANNOT be disabled.
UI server admin can also choose to enable auxiliary OAuth2 authentication channel.
User-Password based authentication
User-Password based authentication covers all authentication scenarios which requires user to enter an explicit username and password.
Gearpump provides a built-in ConfigFileBasedAuthenticator which verify user name and password against password hashcode stored in config files.
However, developer can choose to extends the io.gearpump.security.Authenticator
to provide a custom
User-Password based authenticator, to support LDAP, Kerberos, and Database-based authentication…
ConfigFileBasedAuthenticator: built-in User-Password Authenticator
ConfigFileBasedAuthenticator store all user name and password hashcode in configuration file gear.conf. Here is the steps to configure ConfigFileBasedAuthenticator.
How to add or remove user?
For the default authentication plugin, it has three categories of users: admins, users, and guests.
- admins: have unlimited permission, like shutdown a cluster, add/remove machines.
- users: have limited permission to submit an application and etc..
- guests: can not submit/kill applications, but can view the application status.
System administrator can add or remove user by updating config file conf/gear.conf
.
Suppose we want to add user jerry as an administrator, here are the steps:
-
Pick a password, and generate the digest for this password. Suppose we use password
ilovegearpump
, to generate the digest:bin/gear io.gearpump.security.PasswordUtil -password ilovegearpump
It will generate a digest value like this:
CgGxGOxlU8ggNdOXejCeLxy+isrCv0TrS37HwA==
-
Change config file conf/gear.conf at path
gearpump-ui.gearpump.ui-security.config-file-based-authenticator.admins
, add userjerry
in this list:admins = { ## Default Admin. Username: admin, password: admin ## !!! Please replace this builtin account for production cluster for security reason. !!! "admin" = "AeGxGOxlU8QENdOXejCeLxy+isrCv0TrS37HwA==" "jerry" = "CgGxGOxlU8ggNdOXejCeLxy+isrCv0TrS37HwA==" }
-
Restart the UI dashboard by
bin/services
to make the change effective. -
Group “admins” have very unlimited permission, you may want to restrict the permission. In that case you can modify
gearpump-ui.gearpump.ui-security.config-file-based-authenticator.users
orgearpump-ui.gearpump.ui-security.config-file-based-authenticator.guests
. -
See description at
conf/gear.conf
to find more information.
What is the default user and password?
For ConfigFileBasedAuthenticator, Gearpump distribution is shipped with two default users:
- username: admin, password: admin
- username: guest, password: guest
User admin
has unlimited permissions, while guest
can only view the application status.
For security reason, you need to remove the default users admin
and guest
for cluster in production.
Is this secure?
Firstly, we will NOT store any user password in any way so only the user himself knows the password. We will use one-way hash digest to verify the user input password.
How to develop a custom User-Password Authenticator for LDAP, Database, and etc..
If developer choose to define his/her own User-Password based authenticator, it is required that user modify configuration option:
## Replace "io.gearpump.security.CustomAuthenticator" with your real authenticator class.
gearpump.ui-security.authenticator = "io.gearpump.security.CustomAuthenticator"
Make sure CustomAuthenticator extends interface: ```scala trait Authenticator {
def authenticate(user: String, password: String, ec: ExecutionContext): Future[AuthenticationResult] } ```
OAuth2 based authentication
OAuth2 based authentication is commonly use to achieve social login with social network account.
Gearpump provides generic OAuth2 Authentication support which allow user to extend to support new authentication sources.
Basically, OAuth2 based Authentication contains these steps: 1. User accesses Gearpump UI website, and choose to login with OAuth2 server. 2. Gearpump UI website redirects user to OAuth2 server domain authorization endpoint. 3. End user complete the authorization in the domain of OAuth2 server. 4. OAuth2 server redirects user back to Gearpump UI server. 5. Gearpump UI server verify the tokens and extract credentials from query parameters and form fields.
Terminologies
For terms like client Id, and client secret, please refers to guide RFC 6749
Enable web proxy for UI server
To enable OAuth2 authentication, the Gearpump UI server should have network access to OAuth2 server, as some requests are initiated directly inside Gearpump UI server. So, if you are behind a firewall, make sure you have configured the proxy properly for UI server.
If you are on Windows
> set JAVA_OPTS=-Dhttp.proxyHost=xx.com -Dhttp.proxyPort=8088 -Dhttps.proxyHost=xx.com -Dhttps.proxyPort=8088
> bin\services
If you are on Linux
$ export JAVA_OPTS="-Dhttp.proxyHost=xx.com -Dhttp.proxyPort=8088 -Dhttps.proxyHost=xx.com -Dhttps.proxyPort=8088"
$ bin/services
Google Plus OAuth2 Authenticator
Google Plus OAuth2 Authenticator does authentication with Google OAuth2 service. It extracts the email address from Google user profile as credentials.
To use Google OAuth2 Authenticator, there are several steps:
- Register your application (Gearpump UI server here) as an application to Google developer console.
- Configure the Google OAuth2 information in gear.conf
- Configure network proxy for Gearpump UI server if applies.
Step1: Register your website as an OAuth2 Application on Google
- Create an application representing your website at https://console.developers.google.com
- In “API Manager” of your created application, enable API “Google+ API”
- Create OAuth client ID for this application. In “Credentials” tab of “API Manager”, choose “Create credentials”, and then select OAuth client ID. Follow the wizard to set callback URL, and generate client ID, and client Secret.
NOTE: Callback URL is NOT optional.
Step2: Configure the OAuth2 information in gear.conf
- Enable OAuth2 authentication by setting
gearpump.ui-security.oauth2-authenticator-enabled
as true. - Configure section
gearpump.ui-security.oauth2-authenticators.google
in gear.conf. Please make sure class name, client ID, client Secret, and callback URL are set properly.
NOTE: Callback URL set here should match what is configured on Google in step1.
Step3: Configure the network proxy if applies.
To enable OAuth2 authentication, the Gearpump UI server should have network access to Google service, as some requests are initiated directly inside Gearpump UI server. So, if you are behind a firewall, make sure you have configured the proxy properly for UI server.
For guide of how to configure web proxy for UI server, please refer to section “Enable web proxy for UI server” above.
Step4: Restart the UI server and try to click the Google login icon on UI server.
CloudFoundry UAA server OAuth2 Authenticator
CloudFoundryUaaAuthenticator does authentication by using CloudFoundry UAA OAuth2 service. It extracts the email address from Google user profile as credentials.
For what is UAA (User Account and Authentication Service), please see guide: UAA
To use Google OAuth2 Authenticator, there are several steps:
- Register your application (Gearpump UI server here) as an application to UAA with helper tool
uaac
. - Configure the Google OAuth2 information in gear.conf
- Configure network proxy for Gearpump UI server if applies.
Step1: Register your application to UAA with uaac
- Check tutorial on uaac at https://docs.cloudfoundry.org/adminguide/uaa-user-management.html
- Open a bash shell, set the UAA server by command
uaac target
uaac target [your uaa server url]
-
Login in as user admin by
uaac token client get admin -s MyAdminPassword
- Create a new Application (Client) in UAA,
uaac client add [your_client_id] --scope "openid cloud_controller.read" --authorized_grant_types "authorization_code client_credentials refresh_token" --authorities "openid cloud_controller.read" --redirect_uri [your_redirect_url] --autoapprove true --secret [your_client_secret]
Step2: Configure the OAuth2 information in gear.conf
- Enable OAuth2 authentication by setting
gearpump.ui-security.oauth2-authenticator-enabled
as true. - Navigate to section
gearpump.ui-security.oauth2-authenticators.cloudfoundryuaa
- Config gear.conf
gearpump.ui-security.oauth2-authenticators.cloudfoundryuaa
section. Please make sure class name, client ID, client Secret, and callback URL are set properly.
NOTE: The callback URL here should matche what you set on CloudFoundry UAA in step1.
Step3: Configure network proxy for Gearpump UI server if applies
To enable OAuth2 authentication, the Gearpump UI server should have network access to Google service, as some requests are initiated directly inside Gearpump UI server. So, if you are behind a firewall, make sure you have configured the proxy properly for UI server.
For guide of how to configure web proxy for UI server, please refer to please refer to section “Enable web proxy for UI server” above.
Step4: Restart the UI server and try to click the CloudFoundry login icon on UI server.
Step5: You can also enable additional authenticator for CloudFoundry UAA by setting config:
additional-authenticator-enabled = true
Please see description in gear.conf for more information.
Extends OAuth2Authenticator to support new Authorization service like Facebook, or Twitter.
You can follow the Google OAuth2 example code to define a custom OAuth2Authenticator. Basically, the steps includes:
-
Define an OAuth2Authenticator implementation.
/** * * Uses OAuth2 social-login as the mechanism for authentication. * @see [[https://tools.ietf.org/html/rfc6749]] to find what is OAuth2, and how it works. * * Basically flow for OAuth2 Authentication: * 1. User accesses Gearpump UI website, and choose to login with OAuth2 server. * 2. Gearpump UI website redirects user to OAuth2 server domain authorization endpoint. * 3. End user complete the authorization in the domain of OAuth2 server. * 4. OAuth2 server redirects user back to Gearpump UI server. * 5. Gearpump UI server verify the tokens and extract credentials from query * parameters and form fields. * * @note '''Thread-safety''' is a MUST requirement. Developer need to ensure the sub-class is thread-safe. * Sub-class should have a parameterless constructor. * * @note OAuth2 Authenticator requires access of Internet. Please make sure HTTP proxy are * set properly if applied. * * @example Config proxy when UI server is started on Windows: * } * * @example Config proxy when UI server is started on Linux: * } * */ trait OAuth2Authenticator { /** * Inits authenticator with config which contains client ID, client secret, and etc.. * * Typically, the client key and client secret is provided by OAuth2 Authorization server when user * register an application there. * @see [[https://tools.ietf.org/html/rfc6749]] for definition of client, client Id, * and client secret. * * See [[https://developer.github.com/v3/oauth/]] for an actual example of how Github * use client key, and client secret. * * @note '''Thread-Safety''': Framework ensures this call is synchronized. * * @param config Client Id, client secret, callback URL and etc.. */ def init(config: Config): Unit /** * Returns the OAuth Authorization URL so for redirection to that address to do OAuth2 * authorization. * * @note '''Thread-Safety''': This can be called in a multi-thread environment. Developer * need to ensure thread safety. */ def getAuthorizationUrl: String /** * After authorization, OAuth2 server redirects user back with tokens. This verify the * tokens, retrieve the profiles, and return [[UserSession]] information. * * @note This is an Async call. * @note This call requires external internet access. * @note '''Thread-Safety''': This can be called in a multi-thread environment. Developer * need to ensure thread safety. * * @param parameters HTTP Query and Post parameters, which typically contains Authorization code. * @return UserSession if pass authentication. */ def authenticate(parameters: Map[String, String]): Future[UserSession] /** * Clean resource */ def close(): Unit }
-
Add an configuration entry under
gearpump.ui-security.oauth2-authenticators
. For example:## name of this authenticator "socialnetworkx" { "class" = "io.gearpump.services.security.oauth2.impl.SocialNetworkXAuthenticator" ## Please make sure this URL matches the name "callback" = "http://<IP_ADDRESS>:8090/login/oauth2/socialnetworkx/callback" "clientId" = "gearpump_test2" "clientSecret" = "gearpump_test2" "defaultUserRole" = "guest" ## Make sure socialnetworkx.png exists under dashboard/icons icon = "/icons/socialnetworkx.png" }
The configuration entry is supposed to be used by class
SocialNetworkXAuthenticator
.


THE THIRTEENTH WARRIOR Reviewed by Jamie Peck
Rating: *1/2 (out of ****) Touchstone / 1:44 / 1999 / R (brutal combat, monotony) Cast: Antonio Banderas; Diane Venora; Omar Sharif; Vladimir Kulich; Dennis Storhøi; Maria Bonnevie; Mischa Hausserman; Sven Wollter; John DeSantis; Asbjørn Riis Director: John McTiernan Screenplay: William Wisher; Warren Lewis
When a pair of films from the same director gets released just three weeks apart, it could mean one of two things: that the recently overworked individual is due for a well-deserved rest, or that either of these movies has been sitting in a studio safe for a while and the timing is merely a coincidence. The latter's the case with John McTiernan and "The Thirteenth Warrior," which finally hits theatres a year and counting after its original spring '98 opening - and fast on the heels of McTiernan's "The Thomas Crown Affair" remake, a flick that got good reviews. You don't have to believe superstitions to wager a guess that "Thirteenth" won't be so lucky.
Reportedly shelved following skirmishes between McTiernan and producer Michael Crichton, whose "Eaters of the Dead" novel provides "Warrior"'s source (and its initial title), this messy melange of culture-clash drama and brutal warfare feels empty and sluggish - sorta like "Braveheart" without any of the passion. But the bloodshed certainly remains: There's enough carnage on display here to satisfy those in search of purely visceral thrills, though please note that the admittedly pungent battle sequences containing all this death and dismemberment alternate with talky passages interminable in their dullness.
These circa-10th century clashes involve a roving band of cannibalistic creatures capable of decapitating opponents with their bare hands and a dozen Norse soldiers out to stop them from terrorizing the Viking countryside. The good guys are loud, crude, often unintelligible and - judging from their highly icky hygiene habits -- pretty smelly to boot, which makes them perfect foils for the dignified Arab ambassador (Antonio Banderas) who tags along quite reluctantly. They're also so hard to tell apart that it hardly matters when a few of them meet violent demises. You'll wince, you'll groan, you'll grouse, "Haven't we seen this guy killed twice before?"
Banderas stands confused amidst the chaos, partaking mostly from a distance as savages in Darth Maul facepaint and draped in the latest animal-skin fashion run amok. He's not the hero - his soulful eyes and lean build don't exactly herald a champion of Shwarzenegger proportions - and "The Thirteenth Warrior" wisely doesn't pretend he is, allowing his foreign and physically imposing co-stars to step into the spotlight when the going gets rough. Let the characters interaction sans swords and shields, however, and there's still a struggle - for the audience to follow or even care about the story.
It isn't the end until audiences have witnessed a half-baked romance, murky political intrigue, veteran actor Omar Sharif ("Funny Girl") dropping by in a cameo role and a climactic "Indiana Jones and the Temple of Doom"-esque chase through the villains' underground lair. All this clutter receives stunning visual treatment courtesy of cinematographer Peter Menzies Jr., but the collaboration between "Die Hard"-helmer McTiernan and "Jurrasic Park"-creator Crichton should have yielded more than sumptuous sights, graphic action and unintentionally telling moments. Heard during "The Thirteenth Warrior"'s final scene: a dog whimpering. How appropriate.
© 1999 Jamie Peck E-mail<EMAIL_ADDRESS>Visit The Reel Deal Online: http://www.gl.umbc.edu/~jpeck1/ "It presents as comedy things that are not amusing. If you think this movie is funny, that tells me things about you I don't want to know." -Roger Ebert on "Very Bad Things"
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


Link to Project Homepage
World Map with Mapbox
Zoom to:
Boston
Los Angeles
Chicago
Pittsburgh
Phoenix
Philadelphia
San Diego
Denver
Seattle
Omaha
NYC
Houston
San Antonio
Dallas
San Jose
Click any purple marker to view sensor data, then choose which measured variable to graph.
No data available for this sensor.


{% with selected="administrator" %} {% include "header.html" %} {% endwith %}
Manage departures / arrivals
Departure date
Time
From
To
24.05.2021
8:30
Latvija
Vācija
Delete
Add
Cancel
Save
{% include "loginRegisterWindow.html" %}


You can import all these objects directly from werkzeug.
The following functions simplify working with times in an HTTP context. Werkzeug uses offset-naive datetime objects internally that store the time in UTC. If you’re working with timezones in your application make sure to replace the tzinfo attribute with a UTC timezone information before processing the values.
Formats the time to ensure compatibility with Netscape’s cookie standard.
Accepts a floating point number expressed in seconds since the epoch in, a datetime object or a timetuple. All times in UTC. The parse_date() function can be used to parse such a date.
Outputs a string in the format Wdy, DD-Mon-YYYY HH:MM:SS GMT.
| Parameter: | expires – If provided that date is used, otherwise the current. |
|---|
Formats the time to match the RFC1123 date format.
Accepts a floating point number expressed in seconds since the epoch in, a datetime object or a timetuple. All times in UTC. The parse_date() function can be used to parse such a date.
Outputs a string in the format Wdy, DD Mon YYYY HH:MM:SS GMT.
| Parameter: | timestamp – If provided that date is used, otherwise the current. |
|---|
Parse one of the following date formats into a datetime object:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
If parsing fails the return value is None.
| Parameter: | value – a string with a supported date format. |
|---|---|
| Returns: | a datetime.datetime object. |
Werkzeug provides the form parsing functions separately from the request object so that you can access form data from a plain WSGI environment.
The following formats are supported by the form data parser currently:
Nested multipart is currently not supported (Werkzeug 0.6) albeit unused by any of the modern webbrowsers.
Usage example:
>>> from cStringIO import StringIO
>>> data = '--foo\r\nContent-Disposition: form-data; name="test"\r\n' \
... '\r\nHello World!\r\n--foo--'
>>> environ = {'wsgi.input': StringIO(data), 'CONTENT_LENGTH': str(len(data)),
... 'CONTENT_TYPE': 'multipart/form-data; boundary=foo',
... 'REQUEST_METHOD': 'POST'}
>>> stream, form, files = parse_form_data(environ)
>>> stream.read()
''
>>> form['test']
u'Hello World!'
>>> not files
True
Normally the WSGI environment is provided by the WSGI gateway with the incoming data as part of it. If you want to generate such fake-WSGI environments for unittesting you might want to use the create_environ() function or the EnvironBuilder instead.
Parse the form data in the environ and return it as tuple in the form (stream, form, files). You should only call this method if the transport method is POST or PUT.
If the mimetype of the data transmitted is multipart/form-data the files multidict will be filled with FileStorage objects. If the mimetype is unknown the input stream is wrapped and returned as first argument, else the stream is empty.
This function does not raise exceptions, even if the input data is malformed.
Have a look at Dealing with Request Data for more details.
New in version 0.5: The max_form_memory_size, max_content_length and cls parameters were added.
New in version 0.5.1: The optional silent flag was added.
| Parameters: |
|
|---|---|
| Returns: | A tuple in the form (stream, form, files). |
The following functions can be used to parse incoming HTTP headers. Because Python does not provide data structures with the semantics required by RFC 2616, Werkzeug implements some custom data structures that are documented separately <http-datastructures>.
Parse a Content-Type like header into a tuple with the content type and the options:
>>> parse_options_header('Content-Type: text/html; mimetype=text/html')
('Content-Type: text/html', {'mimetype': 'text/html'})
This should not be used to parse Cache-Control like headers that use a slightly different format. For these headers use the parse_dict_header() function.
New in version 0.5.
| Parameter: | value – the header to parse. |
|---|---|
| Returns: | (str, options) |
Parse a set-like header and return a HeaderSet object:
>>> hs = parse_set_header('token, "quoted value"')
The return value is an object that treats the items case-insensitively and keeps the order of the items:
>>> 'TOKEN' in hs
True
>>> hs.index('quoted value')
1
>>> hs
HeaderSet(['token', 'quoted value'])
To create a header from the HeaderSet again, use the dump_header() function.
| Parameters: |
|
|---|---|
| Returns: |
Parse lists as described by RFC 2068 Section 2.
In particular, parse comma-separated lists where the elements of the list may include quoted-strings. A quoted-string could contain a comma. A non-quoted string could have quotes in the middle. Quotes are removed automatically after parsing.
It basically works like parse_set_header() just that items may appear multiple times and case sensitivity is preserved.
The return value is a standard list:
>>> parse_list_header('token, "quoted value"')
['token', 'quoted value']
To create a header from the list again, use the dump_header() function.
| Parameter: | value – a string with a list header. |
|---|---|
| Returns: | list |
Parse lists of key, value pairs as described by RFC 2068 Section 2 and convert them into a python dict:
>>> d = parse_dict_header('foo="is a fish", bar="as well"')
>>> type(d) is dict
True
>>> sorted(d.items())
[('bar', 'as well'), ('foo', 'is a fish')]
If there is no value for a key it will be None:
>>> parse_dict_header('key_without_value')
{'key_without_value': None}
To create a header from the dict again, use the dump_header() function.
| Parameter: | value – a string with a dict header. |
|---|---|
| Returns: | dict |
Parses an HTTP Accept-* header. This does not implement a complete valid algorithm but one that supports at least value and quality extraction.
Returns a new Accept object (basically a list of (value, quality) tuples sorted by the quality with some additional accessor methods).
The second parameter can be a subclass of Accept that is created with the parsed values and returned.
| Parameters: |
|
|---|---|
| Returns: | an instance of cls. |
Parse a cache control header. The RFC differs between response and request cache control, this method does not. It’s your responsibility to not use the wrong control statements.
New in version 0.5: The cls was added. If not specified an immutable RequestCacheControl is returned.
| Parameters: |
|
|---|---|
| Returns: | a cls object. |
Parse an HTTP basic/digest authorization header transmitted by the web browser. The return value is either None if the header was invalid or not given, otherwise an Authorization object.
| Parameter: | value – the authorization header to parse. |
|---|---|
| Returns: | a Authorization object or None. |
Parse an HTTP WWW-Authenticate header into a WWWAuthenticate object.
| Parameters: |
|
|---|---|
| Returns: | a WWWAuthenticate object. |
The following utilities operate on HTTP headers well but do not parse them. They are useful if you’re dealing with conditional responses or if you want to proxy arbtirary requests but want to remove WSGI-unsupported hop-by-hop headers. Also there is a function to create HTTP header strings from the parsed data.
Check if a header is an entity header.
New in version 0.5.
| Parameter: | header – the header to test. |
|---|---|
| Returns: | True if it’s an entity header, False otherwise. |
Check if a header is an HTTP/1.1 “Hop-by-Hop” header.
New in version 0.5.
| Parameter: | header – the header to test. |
|---|---|
| Returns: | True if it’s an entity header, False otherwise. |
Remove all entity headers from a list or Headers object. This operation works in-place. Expires and Content-Location headers are by default not removed. The reason for this is RFC 2616 section 10.3.5 which specifies some entity headers that should be sent.
Changed in version 0.5: added allowed parameter.
| Parameters: |
|
|---|
Remove all HTTP/1.1 “Hop-by-Hop” headers from a list or Headers object. This operation works in-place.
New in version 0.5.
| Parameter: | headers – a list or Headers object. |
|---|
Quote a header value if necessary.
New in version 0.5.
| Parameters: |
|
|---|
Unquotes a header value. (Reversal of quote_header_value()). This does not use the real unquoting but what browsers are actually using for quoting.
New in version 0.5.
| Parameter: | value – the header value to unquote. |
|---|
Dump an HTTP header again. This is the reversal of parse_list_header(), parse_set_header() and parse_dict_header(). This also quotes strings that include an equals sign unless you pass it as dict of key, value pairs.
>>> dump_header({'foo': 'bar baz'})
'foo="bar baz"'
>>> dump_header(('foo', 'bar baz'))
'foo, "bar baz"'
| Parameters: |
|
|---|
For conditional responses the following functions might be useful:
Parse an etag header.
| Parameter: | value – the tag header to parse |
|---|---|
| Returns: | an ETags object. |
Quote an etag.
| Parameters: |
|
|---|
Unquote a single etag:
>>> unquote_etag('w/"bar"')
('bar', True)
>>> unquote_etag('"bar"')
('bar', False)
| Parameter: | etag – the etag identifier to unquote. |
|---|---|
| Returns: | a (etag, weak) tuple. |
Convenience method for conditional requests.
| Parameters: |
|
|---|---|
| Returns: | True if the resource was modified, otherwise False. |


Test passes if four rows of numbers (1,2,3) are read in increasing numerical order left to right.
1
2
3
3
2
1
1
2
3
3
2
1


Make a transfer
Activity
Transfer between my {{bankType.short}} accounts
All fields are required unless noted as optional
From
To
Amount
$
Frequency
Date
Add note (optional)
Note (optional)
This note appears in your records only.
{{frequency}} {{reviewTerm == 'payment' ? 'Payment' : reviewTerm == 'transfer' ? 'Transfer' : 'Transfer'}} scheduled
2FSDJF934S
Confirmation ID
{{dt | date:'medium'}}
Expected Delivery
{{amount | currency}}
From
{{transferSource.nickname}}
To
{{transferSink.nickname}}


If you haven't seen it, Xamlon is a .NET 1.1 implementation of Longhorn's XAML. And while I was under the impression that it was just XAML, i.e. a language for declaring and defining objects, it looks like Xamlon is an attempt to implement Avalon, too. I haven't downloaded it, but looking at the Xamlon samples and code online, it looks like a subset of Avalon. Interesting...


Research
Approximately 4 in 10 Americans do not feel safe walking alone in their own neighborhood. Many crimes happen to people who are walking by themself--robbery, assault, rape, etc. I interviewed several individuals to determine what factors of walking make them feel unsafe, why, and what they thought would help make them feel more at ease. Upon research, I aggregated my findings and data to develop three possible personas/users.
How might we effectively educate visitors in an interactive and meaningful way?
Three personas were also created as a result of our interviews and survey conducted: frequent visitors, occassional visitors, and students.
Frequent Visitor
Name: Catherine
Age: 34
Description: Catherine lives in New York and works as a financial analyst. She loves going to museums. Catherine tries to visit a museum at least once a month, and she has gone to certain museums more than once, but she also likes to explore many new museums.
Goals: Experience better navigation at museums; wants to learn about new exhibits at museums
Occassional Visitor
Name: Amanda
Age: 30
Description: Amanda works in New York as a lawyer. She used to go to museums a lot when she was a student, but now she is too busy to visit museums. She gets off work in the evening and most museums close at that time.
Goals: Visit museums in New York during free time
Student
Name: Tom
Age: 19
Description: Tom doesn’t have much spare time to visit museums. He usually only goes to museums when he has to do homework that requires him to visit a museum. He will also visit museums if a friend is visiting and would like to go.
Goals: Find something specific in the museum for homework; find a place to hang out with his friends
Competitive Analysis
I conducted a competitive analysis, looking at what solutions are currently out there to increase safety while walking, and looking at how these solutions could be improved.
Prototyping & Iterating
Text here
Next Steps
Text here


{% for tag, article in tags %}
{{ tag }}{% if not loop.last %},{% endif %}
{% endfor %}
{% include '_includes/github.html' %}
{% include '_includes/social.html' %}
{% include '_includes/links.html' %}
{% include '_includes/twitter_sidebar.html' %}
{% include '_includes/gplus_sidebar.html' %}