'''Label
=====
.. image:: images/label.png
:align: right
The :class:`Label` widget is for rendering text. It supports ascii and unicode
strings::
# hello world text
l = Label(text='Hello world')
# unicode text; can only display glyphs that are available in the font
l = Label(text=u'Hello world ' + unichr(2764))
# multiline text
l = Label(text='Multi\\nLine')
# size
l = Label(text='Hello world', font_size='20sp')
.. _kivy-uix-label-sizing-and-text-content:
Sizing and text content
---------------------------
By default, the size of :class:`Label` is not affected by :attr:`~Label.text`
content and the text is not affected by the size. In order to control
sizing, you must specify :attr:`~Label.text_size` to constrain the text
and/or bind :attr:`~Label.size` to :attr:`~Label.texture_size` to grow with
the text.
For example, this label's size will be set to the text content
(plus :attr:`~Label.padding`):
.. code-block:: kv
Label:
size: self.texture_size
This label's text will wrap at the specified width and be clipped to the
height:
.. code-block:: kv
Label:
text_size: cm(6), cm(4)
.. note:: The :attr:`~Label.shorten` and :attr:`~Label.max_lines` attributes
control how overflowing text behaves.
Combine these concepts to create a Label that can grow vertically but wraps the
text at a certain width:
.. code-block:: kv
Label:
text_size: root.width, None
size: self.texture_size
Text alignment and wrapping
---------------------------
The :class:`Label` has :attr:`~Label.halign` and :attr:`~Label.valign`
properties to control the alignment of its text. However, by default the text
image (:attr:`~Label.texture`) is only just large enough to contain the
characters and is positioned in the center of the Label. The valign property
will have no effect and halign will only have an effect if your text has
newlines; a single line of text will appear to be centered even though halign
is set to left (by default).
In order for the alignment properties to take effect, set the
:attr:`~Label.text_size`, which specifies the size of the bounding box within
which text is aligned. For instance, the following code binds this size to the
size of the Label, so text will be aligned within the widget bounds. This
will also automatically wrap the text of the Label to remain within this area.
.. code-block:: kv
Label:
text_size: self.size
halign: 'right'
valign: 'middle'
Markup text
-----------
.. versionadded:: 1.1.0
You can change the style of the text using :doc:`api-kivy.core.text.markup`.
The syntax is similar to the bbcode syntax but only the inline styling is
allowed::
# hello world with world in bold
l = Label(text='Hello [b]World[/b]', markup=True)
# hello in red, world in blue
l = Label(text='[color=ff3333]Hello[/color][color=3333ff]World[/color]',
markup = True)
If you need to escape the markup from the current text, use
:func:`kivy.utils.escape_markup`::
text = 'This is an important message [1]'
l = Label(text='[b]' + escape_markup(text) + '[/b]', markup=True)
The following tags are available:
``[b][/b]``
Activate bold text
``[i][/i]``
Activate italic text
``[u][/u]``
Underlined text
``[s][/s]``
Strikethrough text
``[font=<str>][/font]``
Change the font
``[size=<integer>][/size]``
Change the font size
``[color=#<color>][/color]``
Change the text color
``[ref=<str>][/ref]``
Add an interactive zone. The reference + bounding box inside the
reference will be available in :attr:`Label.refs`
``[anchor=<str>]``
Put an anchor in the text. You can get the position of your anchor within
the text with :attr:`Label.anchors`
``[sub][/sub]``
Display the text at a subscript position relative to the text before it.
``[sup][/sup]``
Display the text at a superscript position relative to the text before it.
If you want to render the markup text with a [ or ] or & character, you need to
escape them. We created a simple syntax::
[ -> &bl;
] -> &br;
& -> &
Then you can write::
"[size=24]Hello &bl;World&bt;[/size]"
Interactive zone in text
------------------------
.. versionadded:: 1.1.0
You can now have definable "links" using text markup. The idea is to be able
to detect when the user clicks on part of the text and to react.
The tag ``[ref=xxx]`` is used for that.
In this example, we are creating a reference on the word "World". When
this word is clicked, the function ``print_it`` will be called with the
name of the reference::
def print_it(instance, value):
print('User clicked on', value)
widget = Label(text='Hello [ref=world]World[/ref]', markup=True)
widget.bind(on_ref_press=print_it)
For prettier rendering, you could add a color for the reference. Replace the
``text=`` in the previous example with::
'Hello [ref=world][color=0000ff]World[/color][/ref]'
Catering for Unicode languages
------------------------------
The font kivy uses does not contain all the characters required for displaying
all languages. When you use the built-in widgets, this results in a block being
drawn where you expect a character.
If you want to display such characters, you can chose a font that supports them
and deploy it universally via kv:
.. code-block:: kv
<Label>:
font_name: '/<path>/<to>/<font>'
Note that this needs to be done before your widgets are loaded as kv rules are
only applied at load time.
Usage example
-------------
The following example marks the anchors and references contained in a label::
from kivy.app import App
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.graphics import Color, Rectangle
class TestApp(App):
@staticmethod
def get_x(label, ref_x):
""" Return the x value of the ref/anchor relative to the canvas """
return label.center_x - label.texture_size[0] * 0.5 + ref_x
@staticmethod
def get_y(label, ref_y):
""" Return the y value of the ref/anchor relative to the canvas """
# Note the inversion of direction, as y values start at the top of
# the texture and increase downwards
return label.center_y + label.texture_size[1] * 0.5 - ref_y
def show_marks(self, label):
# Indicate the position of the anchors with a red top marker
for name, anc in label.anchors.items():
with label.canvas:
Color(1, 0, 0)
Rectangle(pos=(self.get_x(label, anc[0]),
self.get_y(label, anc[1])),
size=(3, 3))
# Draw a green surround around the refs. Note the sizes y inversion
for name, boxes in label.refs.items():
for box in boxes:
with label.canvas:
Color(0, 1, 0, 0.25)
Rectangle(pos=(self.get_x(label, box[0]),
self.get_y(label, box[1])),
size=(box[2] - box[0],
box[1] - box[3]))
def build(self):
label = Label(
text='[anchor=a]a\\nChars [anchor=b]b\\n[ref=myref]ref[/ref]',
markup=True)
Clock.schedule_once(lambda dt: self.show_marks(label), 1)
return label
TestApp().run()
'''
__all__ = ('Label', )
from kivy.clock import Clock
from kivy.uix.widget import Widget
from kivy.core.text import Label as CoreLabel, DEFAULT_FONT
from kivy.core.text.markup import MarkupLabel as CoreMarkupLabel
from kivy.properties import StringProperty, OptionProperty, \
NumericProperty, BooleanProperty, ReferenceListProperty, \
ListProperty, ObjectProperty, DictProperty
from kivy.utils import get_hex_from_color
[ドキュメント]class Label(Widget):
'''Label class, see module documentation for more information.
:Events:
`on_ref_press`
Fired when the user clicks on a word referenced with a
``[ref]`` tag in a text markup.
'''
__events__ = ['on_ref_press']
_font_properties = ('text', 'font_size', 'font_name', 'bold', 'italic',
'underline', 'strikethrough', 'color',
'disabled_color', 'halign', 'valign', 'padding_x',
'padding_y', 'outline_width', 'disabled_outline_color',
'outline_color', 'text_size', 'shorten', 'mipmap',
'line_height', 'max_lines', 'strip', 'shorten_from',
'split_str', 'ellipsis_options', 'unicode_errors',
'markup', 'font_hinting', 'font_kerning',
'font_blended')
def __init__(self, **kwargs):
self._trigger_texture = Clock.create_trigger(self.texture_update, -1)
super(Label, self).__init__(**kwargs)
# bind all the property for recreating the texture
d = Label._font_properties
fbind = self.fbind
update = self._trigger_texture_update
fbind('disabled', update, 'disabled')
for x in d:
fbind(x, update, x)
self._label = None
self._create_label()
# force the texture creation
self._trigger_texture()
def _create_label(self):
# create the core label class according to markup value
if self._label is not None:
cls = self._label.__class__
else:
cls = None
markup = self.markup
if (markup and cls is not CoreMarkupLabel) or \
(not markup and cls is not CoreLabel):
# markup have change, we need to change our rendering method.
d = Label._font_properties
dkw = dict(list(zip(d, [getattr(self, x) for x in d])))
if markup:
self._label = CoreMarkupLabel(**dkw)
else:
self._label = CoreLabel(**dkw)
def _trigger_texture_update(self, name=None, source=None, value=None):
# check if the label core class need to be switch to a new one
if name == 'markup':
self._create_label()
if source:
if name == 'text':
self._label.text = value
elif name == 'text_size':
self._label.usersize = value
elif name == 'font_size':
self._label.options[name] = value
elif name == 'disabled_color' and self.disabled:
self._label.options['color'] = value
elif name == 'disabled_outline_color' and self.disabled:
self._label.options['outline_color'] = value
elif name == 'disabled':
self._label.options['color'] = self.disabled_color if value \
else self.color
self._label.options['outline_color'] = (
self.disabled_outline_color if value else
self.outline_color)
else:
self._label.options[name] = value
self._trigger_texture()
[ドキュメント] def texture_update(self, *largs):
'''Force texture recreation with the current Label properties.
After this function call, the :attr:`texture` and :attr:`texture_size`
will be updated in this order.
'''
mrkup = self._label.__class__ is CoreMarkupLabel
self.texture = None
if (not self._label.text or
(self.halign == 'justify' or self.strip) and
not self._label.text.strip()):
self.texture_size = (0, 0)
self.is_shortened = False
if mrkup:
self.refs, self._label._refs = {}, {}
self.anchors, self._label._anchors = {}, {}
else:
if mrkup:
text = self.text
# we must strip here, otherwise, if the last line is empty,
# markup will retain the last empty line since it only strips
# line by line within markup
if self.halign == 'justify' or self.strip:
text = text.strip()
self._label.text = ''.join(('[color=',
get_hex_from_color(
self.disabled_color if
self.disabled else self.color),
']', text, '[/color]'))
self._label.refresh()
# force the rendering to get the references
if self._label.texture:
self._label.texture.bind()
self.refs = self._label.refs
self.anchors = self._label.anchors
else:
self._label.refresh()
texture = self._label.texture
if texture is not None:
self.texture = self._label.texture
self.texture_size = list(self.texture.size)
self.is_shortened = self._label.is_shortened
def on_touch_down(self, touch):
if super(Label, self).on_touch_down(touch):
return True
if not len(self.refs):
return False
tx, ty = touch.pos
tx -= self.center_x - self.texture_size[0] / 2.
ty -= self.center_y - self.texture_size[1] / 2.
ty = self.texture_size[1] - ty
for uid, zones in self.refs.items():
for zone in zones:
x, y, w, h = zone
if x <= tx <= w and y <= ty <= h:
self.dispatch('on_ref_press', uid)
return True
return False
def on_ref_press(self, ref):
pass
#
# Properties
#
disabled_color = ListProperty([1, 1, 1, .3])
'''The color of the text when the widget is disabled, in the (r, g, b, a)
format.
.. versionadded:: 1.8.0
:attr:`disabled_color` is a :class:`~kivy.properties.ListProperty` and
defaults to [1, 1, 1, .3].
'''
text = StringProperty('')
'''Text of the label.
Creation of a simple hello world::
widget = Label(text='Hello world')
If you want to create the widget with an unicode string, use::
widget = Label(text=u'My unicode string')
:attr:`text` is a :class:`~kivy.properties.StringProperty` and defaults to
''.
'''
text_size = ListProperty([None, None])
'''By default, the label is not constrained to any bounding box.
You can set the size constraint of the label with this property.
The text will autoflow into the constraints. So although the font size
will not be reduced, the text will be arranged to fit into the box as best
as possible, with any text still outside the box clipped.
This sets and clips :attr:`texture_size` to text_size if not None.
.. versionadded:: 1.0.4
For example, whatever your current widget size is, if you want the label to
be created in a box with width=200 and unlimited height::
Label(text='Very big big line', text_size=(200, None))
.. note::
This text_size property is the same as the
:attr:`~kivy.core.text.Label.usersize` property in the
:class:`~kivy.core.text.Label` class. (It is named size= in the
constructor.)
:attr:`text_size` is a :class:`~kivy.properties.ListProperty` and
defaults to (None, None), meaning no size restriction by default.
'''
font_name = StringProperty(DEFAULT_FONT)
'''Filename of the font to use. The path can be absolute or relative.
Relative paths are resolved by the :func:`~kivy.resources.resource_find`
function.
.. warning::
Depending of your text provider, the font file can be ignored. However,
you can mostly use this without problems.
If the font used lacks the glyphs for the particular language/symbols
you are using, you will see '[]' blank box characters instead of the
actual glyphs. The solution is to use a font that has the glyphs you
need to display. For example, to display |unicodechar|, use a font such
as freesans.ttf that has the glyph.
.. |unicodechar| image:: images/unicode-char.png
:attr:`font_name` is a :class:`~kivy.properties.StringProperty` and
defaults to 'Roboto'. This value is taken
from :class:`~kivy.config.Config`.
'''
font_size = NumericProperty('15sp')
'''Font size of the text, in pixels.
:attr:`font_size` is a :class:`~kivy.properties.NumericProperty` and
defaults to 15sp.
'''
line_height = NumericProperty(1.0)
'''Line Height for the text. e.g. line_height = 2 will cause the spacing
between lines to be twice the size.
:attr:`line_height` is a :class:`~kivy.properties.NumericProperty` and
defaults to 1.0.
.. versionadded:: 1.5.0
'''
bold = BooleanProperty(False)
'''Indicates use of the bold version of your font.
.. note::
Depending of your font, the bold attribute may have no impact on your
text rendering.
:attr:`bold` is a :class:`~kivy.properties.BooleanProperty` and defaults to
False.
'''
italic = BooleanProperty(False)
'''Indicates use of the italic version of your font.
.. note::
Depending of your font, the italic attribute may have no impact on your
text rendering.
:attr:`italic` is a :class:`~kivy.properties.BooleanProperty` and defaults
to False.
'''
underline = BooleanProperty(False)
'''Adds an underline to the text.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`underline` is a :class:`~kivy.properties.BooleanProperty` and
defaults to False.
'''
strikethrough = BooleanProperty(False)
'''Adds a strikethrough line to the text.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`strikethrough` is a :class:`~kivy.properties.BooleanProperty` and
defaults to False.
'''
padding_x = NumericProperty(0)
'''Horizontal padding of the text inside the widget box.
:attr:`padding_x` is a :class:`~kivy.properties.NumericProperty` and
defaults to 0.
.. versionchanged:: 1.9.0
`padding_x` has been fixed to work as expected.
In the past, the text was padded by the negative of its values.
'''
padding_y = NumericProperty(0)
'''Vertical padding of the text inside the widget box.
:attr:`padding_y` is a :class:`~kivy.properties.NumericProperty` and
defaults to 0.
.. versionchanged:: 1.9.0
`padding_y` has been fixed to work as expected.
In the past, the text was padded by the negative of its values.
'''
padding = ReferenceListProperty(padding_x, padding_y)
'''Padding of the text in the format (padding_x, padding_y)
:attr:`padding` is a :class:`~kivy.properties.ReferenceListProperty` of
(:attr:`padding_x`, :attr:`padding_y`) properties.
'''
halign = OptionProperty('left', options=['left', 'center', 'right',
'justify'])
'''Horizontal alignment of the text.
:attr:`halign` is an :class:`~kivy.properties.OptionProperty` and
defaults to 'left'. Available options are : left, center, right and
justify.
.. warning::
This doesn't change the position of the text texture of the Label
(centered), only the position of the text in this texture. You probably
want to bind the size of the Label to the :attr:`texture_size` or set a
:attr:`text_size`.
.. versionchanged:: 1.6.0
A new option was added to :attr:`halign`, namely `justify`.
'''
valign = OptionProperty('bottom',
options=['bottom', 'middle', 'center', 'top'])
'''Vertical alignment of the text.
:attr:`valign` is an :class:`~kivy.properties.OptionProperty` and defaults
to 'bottom'. Available options are : `'bottom'`,
`'middle'` (or `'center'`) and `'top'`.
.. versionchanged:: 1.10.0
The `'center'` option has been added as an alias of `'middle'`.
.. warning::
This doesn't change the position of the text texture of the Label
(centered), only the position of the text within this texture. You
probably want to bind the size of the Label to the :attr:`texture_size`
or set a :attr:`text_size` to change this behavior.
'''
color = ListProperty([1, 1, 1, 1])
'''Text color, in the format (r, g, b, a).
:attr:`color` is a :class:`~kivy.properties.ListProperty` and defaults to
[1, 1, 1, 1].
'''
outline_width = NumericProperty(None, allownone=True)
'''Width in pixels for the outline around the text. No outline will be
rendered if the value is None.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`outline_width` is a :class:`~kivy.properties.NumericProperty` and
defaults to None.
'''
outline_color = ListProperty([0, 0, 0])
'''The color of the text outline, in the (r, g, b) format.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`outline_color` is a :class:`~kivy.properties.ListProperty` and
defaults to [0, 0, 0].
'''
disabled_outline_color = ListProperty([0, 0, 0])
'''The color of the text outline when the widget is disabled, in the
(r, g, b) format.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`disabled_outline_color` is a :class:`~kivy.properties.ListProperty`
and defaults to [0, 0, 0].
'''
texture = ObjectProperty(None, allownone=True)
'''Texture object of the text.
The text is rendered automatically when a property changes. The OpenGL
texture created in this operation is stored in this property. You can use
this :attr:`texture` for any graphics elements.
Depending on the texture creation, the value will be a
:class:`~kivy.graphics.texture.Texture` or
:class:`~kivy.graphics.texture.TextureRegion` object.
.. warning::
The :attr:`texture` update is scheduled for the next frame. If you need
the texture immediately after changing a property, you have to call
the :meth:`texture_update` method before accessing :attr:`texture`::
l = Label(text='Hello world')
# l.texture is good
l.font_size = '50sp'
# l.texture is not updated yet
l.texture_update()
# l.texture is good now.
:attr:`texture` is an :class:`~kivy.properties.ObjectProperty` and defaults
to None.
'''
texture_size = ListProperty([0, 0])
'''Texture size of the text. The size is determined by the font size and
text. If :attr:`text_size` is [None, None], the texture will be the size
required to fit the text, otherwise it's clipped to fit :attr:`text_size`.
When :attr:`text_size` is [None, None], one can bind to texture_size
and rescale it proportionally to fit the size of the label in order to
make the text fit maximally in the label.
.. warning::
The :attr:`texture_size` is set after the :attr:`texture`
property. If you listen for changes to :attr:`texture`,
:attr:`texture_size` will not be up-to-date in your callback.
Bind to :attr:`texture_size` instead.
'''
mipmap = BooleanProperty(False)
'''Indicates whether OpenGL mipmapping is applied to the texture or not.
Read :ref:`mipmap` for more information.
.. versionadded:: 1.0.7
:attr:`mipmap` is a :class:`~kivy.properties.BooleanProperty` and defaults
to False.
'''
shorten = BooleanProperty(False)
'''
Indicates whether the label should attempt to shorten its textual contents
as much as possible if a :attr:`text_size` is given. Setting this to True
without an appropriately set :attr:`text_size` will lead to unexpected
results.
:attr:`shorten_from` and :attr:`split_str` control the direction from
which the :attr:`text` is split, as well as where in the :attr:`text` we
are allowed to split.
:attr:`shorten` is a :class:`~kivy.properties.BooleanProperty` and defaults
to False.
'''
shorten_from = OptionProperty('center', options=['left', 'center',
'right'])
'''The side from which we should shorten the text from, can be left,
right, or center.
For example, if left, the ellipsis will appear towards the left side and we
will display as much text starting from the right as possible. Similar to
:attr:`shorten`, this option only applies when :attr:`text_size` [0] is
not None, In this case, the string is shortened to fit within the specified
width.
.. versionadded:: 1.9.0
:attr:`shorten_from` is a :class:`~kivy.properties.OptionProperty` and
defaults to `center`.
'''
is_shortened = BooleanProperty(False)
'''This property indicates if :attr:`text` was rendered with or without
shortening when :attr:`shorten` is True.
.. versionadded:: 1.10.0
:attr:`is_shortened` is a :class:`~kivy.properties.BooleanProperty` and
defaults to False.
'''
split_str = StringProperty('')
'''The string used to split the :attr:`text` while shortening the string
when :attr:`shorten` is True.
For example, if it's a space, the string will be broken into words and as
many whole words that can fit into a single line will be displayed. If
:attr:`split_str` is the empty string, `''`, we split on every character
fitting as much text as possible into the line.
.. versionadded:: 1.9.0
:attr:`split_str` is a :class:`~kivy.properties.StringProperty` and
defaults to `''` (the empty string).
'''
ellipsis_options = DictProperty({})
'''Font options for the ellipsis string('...') used to split the text.
Accepts a dict as option name with the value. Only applied when
:attr:`markup` is true and text is shortened. All font options which work
for :class:`Label` will work for :attr:`ellipsis_options`. Defaults for
the options not specified are taken from the surronding text.
.. code-block:: kv
Label:
text: 'Some very long line which will be cut'
markup: True
shorten: True
ellipsis_options: {'color':(1,0.5,0.5,1),'underline':True}
.. versionadded:: 2.0.0
:attr:`ellipsis_options` is a :class:`~kivy.properties.DictProperty` and
defaults to `{}` (the empty dict).
'''
unicode_errors = OptionProperty(
'replace', options=('strict', 'replace', 'ignore'))
'''How to handle unicode decode errors. Can be `'strict'`, `'replace'` or
`'ignore'`.
.. versionadded:: 1.9.0
:attr:`unicode_errors` is an :class:`~kivy.properties.OptionProperty` and
defaults to `'replace'`.
'''
markup = BooleanProperty(False)
'''
.. versionadded:: 1.1.0
If True, the text will be rendered using the
:class:`~kivy.core.text.markup.MarkupLabel`: you can change the
style of the text using tags. Check the
:doc:`api-kivy.core.text.markup` documentation for more information.
:attr:`markup` is a :class:`~kivy.properties.BooleanProperty` and defaults
to False.
'''
refs = DictProperty({})
'''
.. versionadded:: 1.1.0
List of ``[ref=xxx]`` markup items in the text with the bounding box of
all the words contained in a ref, available only after rendering.
For example, if you wrote::
Check out my [ref=hello]link[/ref]
The refs will be set with::
{'hello': ((64, 0, 78, 16), )}
The references marked "hello" have a bounding box at (x1, y1, x2, y2).
These co-ordinates are relative to the top left corner of the text, with
the y value increasing downwards. You can define multiple refs with the
same name: each occurrence will be added as another (x1, y1, x2, y2) tuple
to this list.
The current Label implementation uses these references if they exist in
your markup text, automatically doing the collision with the touch and
dispatching an `on_ref_press` event.
You can bind a ref event like this::
def print_it(instance, value):
print('User click on', value)
widget = Label(text='Hello [ref=world]World[/ref]', markup=True)
widget.on_ref_press(print_it)
.. note::
This works only with markup text. You need :attr:`markup` set to
True.
'''
anchors = DictProperty({})
'''
.. versionadded:: 1.1.0
Position of all the ``[anchor=xxx]`` markup in the text.
These co-ordinates are relative to the top left corner of the text, with
the y value increasing downwards. Anchors names should be unique and only
the first occurrence of any duplicate anchors will be recorded.
You can place anchors in your markup text as follows::
text = """
[anchor=title1][size=24]This is my Big title.[/size]
[anchor=content]Hello world
"""
Then, all the ``[anchor=]`` references will be removed and you'll get all
the anchor positions in this property (only after rendering)::
>>> widget = Label(text=text, markup=True)
>>> widget.texture_update()
>>> widget.anchors
{"content": (20, 32), "title1": (20, 16)}
.. note::
This works only with markup text. You need :attr:`markup` set to
True.
'''
max_lines = NumericProperty(0)
'''Maximum number of lines to use, defaults to 0, which means unlimited.
Please note that :attr:`shorten` take over this property. (with
shorten, the text is always one line.)
.. versionadded:: 1.8.0
:attr:`max_lines` is a :class:`~kivy.properties.NumericProperty` and
defaults to 0.
'''
strip = BooleanProperty(False)
'''Whether leading and trailing spaces and newlines should be stripped from
each displayed line. If True, every line will start at the right or left
edge, depending on :attr:`halign`. If :attr:`halign` is `justify` it is
implicitly True.
.. versionadded:: 1.9.0
:attr:`strip` is a :class:`~kivy.properties.BooleanProperty` and
defaults to False.
'''
font_hinting = OptionProperty(
'normal', options=[None, 'normal', 'light', 'mono'], allownone=True)
'''What hinting option to use for font rendering.
Can be one of `'normal'`, `'light'`, `'mono'` or None.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`font_hinting` is an :class:`~kivy.properties.OptionProperty` and
defaults to `'normal'`.
'''
font_kerning = BooleanProperty(True)
'''Whether kerning is enabled for font rendering.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`font_kerning` is a :class:`~kivy.properties.BooleanProperty` and
defaults to True.
'''
font_blended = BooleanProperty(True)
'''Whether blended or solid font rendering should be used.
.. note::
This feature requires the SDL2 text provider.
.. versionadded:: 1.10.0
:attr:`font_blended` is a :class:`~kivy.properties.BooleanProperty` and
defaults to True.
'''


Ocean [ad22], ocean, in Crystal Sea
Last updated Turn #126
Ocean [ad22], ocean, in Crystal Sea
------------------------------------------------------------------------
15: Sirocco Traveller [ja8y], ship, 10 hulls, 1 rowing port, 30 sails,
15: 4% damaged, arrived from Ocean [ad23], owner:
15: Toulouse [h1q], Pen, with one worker, 32 sailors
16: Sirocco Traveller [ja8y], ship, 10 hulls, 1 rowing port, 30 sails,
16: 4% damaged, departed for Ocean [ad21].
Routes leaving Ocean:
North, to Ocean [ac22], 6 days
East, to Ocean [ad23], 6 days
South, to Ocean [ae22], 6 days
West, to Ocean [ad21], 6 days
Inner locations:
Island [aa7o], island, 1 day, owner:
Cyclops [jb7a], cyclops, number: 27


--- layout: blank title: Landing(?) description: SIMONS WEBSITE MINECRAFT SERVER JOIN OUR DICSORD BUY APPLES $20 ADMIN(?) RANK body_attr: 'style="background-color: #ff60d2"' ---


Mini application for boardgame Eclipse
Calculation the probability of hits to the opponent.
Select number of cannons or rockets and set bonus. Press "Calc" for get results.
Types of counter:
Ion (yellow) - number of ion cannons or rockets
Plasma (orange) - number of plasma cannons or rockets
Antimatter (red) - number of antimatter cannons or rockets
Simulation throw of dices.
Select number of dices of each color. Press "Throw" for get results.
Calculation the probability of winning the battle.
Also, you can simulate one battle and get results.
Enter the parameters of each army using the characteristics of ships and their number.
Also choose which technologies have each army and attacking or defending side.
Ships characteristics:
Number - number of ships of this type
Hull - number of hulls
Morph - number of Morph Shields
Computer (white) - number of computers
Shield (black) - number of shields
Initiative - number of initiative
Cannons:
Ion (yellow) - number of ion cannons
Plasma (orange) - number of plasma cannons
Rockets (on a standard module is 2 rocket; need enter 2, not 1, for each module):
Ion (yellow) - number of ion rockets
Plasma (orange) - number of plasma rockets
Select number of battles calculation.
Algorithm will simulate a predetermined number of battles and display average statistics.
Attention, a lot of battles will lead to long-term calculation.
After select all parameters, press "Run Battle" for get results.
Select race for play by randomly.
Select the probability of selection of each race and press "Get random race" for get results.


|
OR-Tools
7.1
Google Optimization software suite
|
General utilities used by OR-Tools.
More...Files | |
| file | affine_relation.h [code] |
| file | bitset.h [code] |
| file | cached_log.h [code] |
| file | file_util.h [code] |
| file | fp_utils.h [code] |
| file | functions_swig_helpers.h [code] |
| file | functions_swig_test_helpers.h [code] |
| file | graph_export.h [code] |
| file | integer_pq.h [code] |
| file | monoid_operation_tree.h [code] |
| file | permutation.h [code] |
| file | piecewise_linear_function.h [code] |
| file | proto_tools.h [code] |
| file | random_engine.h [code] |
| file | range_minimum_query.h [code] |
| file | range_query_function.h [code] |
| file | rational_approximation.h [code] |
| file | return_macros.h [code] |
| file | rev.h [code] |
| file | running_stat.h [code] |
| file | saturated_arithmetic.h [code] |
| file | sigint.h [code] |
| file | sort.h [code] |
| file | sorted_interval_list.h [code] |
| file | stats.h [code] |
| file | string_array.h [code] |
| file | time_limit.h [code] |
| file | tuple_set.h [code] |
| file | vector_map.h [code] |
| file | vector_or_function.h [code] |
| file | zvector.h [code] |
General utilities used by OR-Tools.


THE WARRIORS A Film Review Copyright Dragan Antulov 1998
Labelling is sometimes everything. In original MAD MAX, the opening title set the plot of the movie in near future, thus making it one of the science fiction classics, despite the future world being almost exactly like our own. Walter Hill wanted the same opening title for his action classic THE WARRIORS. Producers weren't thrilled by that idea and consequently the movie lost all of its futuristic overtones. On the other hand, producers were right on the mark; Walter Hill was accused of actually promoting some disturbing trends that were quite visible in contemporary America. To make the movie even more distant from future, plot was loosely based on ANABASIS, historical book written by Xenophon, Greek mercenary soldier who had described his adventures in ancient Persia 2400 years ago.
Instead of ancient Persia, movie begins in contemporary Coney Island, where Cleon (Dorsey Wright), leader of the Warriors, local youth gang, gets invitation to the great gathering of all youth gangs from the city. The gathering, organised by Gramercy Park Riffs, most powerful gang in the city, is taking place in Bronx. That is far away from Warriors' home territory, but small and unarmed delegation of the Warriors gets there safely thanks to the general truce. On the gathering, Cyrus (Roger Hill), charismatic leader of the Riffs, announces his grand plan to unite all the gangs and take over the city. Crowd is enthusiastic, but the small gang of Rogues, led by psychopathic Luther (David Patrick Kelly) uses the opportunity to assassinate Cyrus. Police simultaneously raids the gathering, and in the commotion Warriors get blamed by the killing, and their leader gets killed by Riffs. The remaining eight, led by Cleon's lieutenant Swann (Michael Beck), must now try to get to Coney Island, but this time unprotected by truce and instead being chased by all the gangs.
Upon its release, despite the controversies and even some youth riots that were allegedly inspired by it, THE WARRIORS enjoyed immense popularity and very quickly received some kind of a cult status. However, despite being one of the best movies of that year, and being directed by talented action director Walter Hill at the peak of his career, the movie failed to leave as strong impression to the future generations as some other cinematic achievements of that same year. The reason for that probably lies in a fact that this movie aged very quickly. If Walter Hill's idea was to warn the public about problems of urban America, he failed miserably. The future was much worse than his vision. The youth gangs, as presented in THE WARRIORS, are far from shadowy armies, able to take over entire cities. Their members seem more interested in unorthodox fashion and their little petty feuds than such prosaic, and for the public more annoying, matters like crime. In their vocabulary, word "arms" is reserved for small knives and blunt objects, and only few of them use heavy artillery like handguns. They even have their own, very strict and detailed laws, upheld more strictly than some governments do with their own. Many people in American cities would be more than happy to see their young criminals behaving like those in THE WARRIORS. Some of the critics who accused Hill of actually praising youth crime had a lot arguments in their favour.
Despite those objections, THE WARRIORS have all the elements of a very good film. The plot is simple, and serves as good basis for numerous action scenes. The fights are brilliantly choreographed and quite realistic, although there isn't much bloodshed or gore in the movie. Editing is superb, events happen at quick pace, with the exception of middle, when boring moralistic exchanges between Swann and his would-be-girlfriend Mercy (Deborah van Valkenburgh) drag the plot from straight action to social drama territory. The soundtrack by Barry de Vorzon is very suggestive and recognisable. Yet, the trademark of this film are the actors who showed great talent, although most of them later sunk into anonymity. Best known of them is David Patrick Kelly, whose superb and original performance in this film later subscribed him to the roles of psychopathic villains. Michael Beck as cool, almost statesman-like leader of a gang, is also very good, and James Remar gives good contrast as his hot-shot contender for top spot. All in all, this movie is perhaps dated, yet in its hour and half can give a lot more entertainment than most of the contemporary movies.
RATING: 8/10 (+++)
Review written on October 18th 1998
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


Example: if the inspection is enabled for static methods and specifies the min method name length 4 (the default), the following static method
public static int max(int a, int b)
produces a warning because the length of its name is 3 which is less than 4.
Quick-fix to rename the method is suggested only in the editor.
Use the list below to specify which methods should be checked. When the checkbox for the method type is unchecked, checks for this kind of methods are skipped. For each type use the fields to specify minimum length, maximum length and regular expression expected for method names. Specify 0 in length fields to skip corresponding checks. Regular expressions are in standard java.util.regex format.


Top Scores
Seconds Remaining: 60
National Park Service Quiz
Test your knowledge on America's National Parks!
Click the "Start" button to begin your timed quiz!
Start


GERMAN FASHION WIZARDS James Steed | Fashion
This week we had the chance of interviewing two creative artists from Germany. These guys are simply amazing at what they do with the European fashion scene and this year at Paris Fashion Week they introduced their new collection.


JpGraph library is an OO graph library which makes it easy to both draw a "quick and dirty" graph with a minimum of code and quite complex graphs which requires a very fine grain of control. The library tries to assign sensible default values for most parameters hence making the learning curve quite flat since for most of the time very few commands are required to draw graphs with a pleasing esthetic look.
The following list makes no claim to be complete but it will give a birds view of some of the main (and in some cases unique) features of the library. The list will also illustrate the difference between the free and the pro-version.
Table 1.1. Feature matrix for JpGraph library
| Feature | Free version | Pro-version |
|---|---|---|
| Supports PNG, GIF, JPG image formats |
|
|
| Flexible scales, supports text-lin, text-log, lin-lin, lin-log, log-lin and log-log and integer scales |
|
|
| Supports both PNG, GIF and JPG graphic formats. Note that the available formats are dependent on the specific PHP installation where the library is used. |
|
|
| Supports caching of generated graphs to lessen burden of a HTTP server. |
|
|
| Supports batch mode to only generate images to a file |
|
|
| Supports client side image maps which makes it easy to produce drill down images. |
|
|
| Intelligent auto-scaling which gravitates towards esthetic values, i.e. multiples of 2:s and 5:s |
|
|
| Fully supports manual scaling, with fine grain control of position of ticks. |
|
|
| Multiple Y-axes (and scales) and multiple data series in the same graph |
|
|
| Supports background images with different formatting options |
|
|
| User specified grace for auto-scaling |
|
|
| Supports unlimited number of y-axes, |
|
|
| Supports, line-plots, filled line-plots, accumulated line-plots, bar plots, accumulated bar plots, grouped bar plots, error plots, line error plots, scatter plots, gantt-charts, radar plots, 2D and 3D pie charts. |
|
|
| Supports unlimited number of plots in each graph, makes it easy to compose complex graph which consists of several plot types |
|
|
| User specified position of axis |
|
|
| Designed as a flexible OO framework which makes it easy to add new types of plots |
|
|
| Supports automatic legend generation with custom formatting |
|
|
| Supports both vertical and horizontal grids |
|
|
| Supports anti-aliasing of lines |
|
|
| Supports background images as well as unlimited number of icons in the graph |
|
|
| Supports rotation of linear graphs |
|
|
| More then 400 named colors |
|
|
| Designed modularly - you don't have to include code which isn't used |
|
|
| Supports user specified callback for fine tuning scale labels |
|
|
| Support for text augmentation of graphs |
|
|
| Support for PHP Accelerator |
|
|
| Support for a large set of 1D barcodes (EAN-128, ...) |
|
|
| Support for Windrose plots |
|
|
| Support for discontinuities in graphs |
|
|
| Enhanced anti-aliasing for PieCharts |
|
|
| More advanced formatting of graph titles including 3D Bevel effects. |
|
|
| Additional 3D Bevel formatting feature for the entire Graph |
|
|
| Footer text on all graph types |
|
|
| Full support for color alpha blending |
|
|
| Advanced interpolation with cubic splines to get smooth curves from just a few data points. |
|
|
| Several different fill styles for line plots |
|
|
| Some image 3D effects built-in without external image manipulation programs |
|
|
| Additional built-in images for plot marks including 3D rendered markers like diamonds, squares, bevels, balls, pins etc |
|
|
| Support for calculation of linear regression |
|
|
| Text strings can be added to the plot using scale coordinates |
|
|
| Support for all primitive URL parameter types with CSIM graphs. |
|
|
| Hare/Niemeyer Integer compensation for Pie Plots |
|
|
| Possibility to use Vertical Gradient fill for line plots. |
|
|
| Improved error handling. The visual appearance of the error handling now tries to mimic any windows system window (in graphic) |
|
|
| Builtin support to display over 200 country flag and the possibility to use them as icons or markers in the graphs. All the flag images are builtin with JpGraph in an efficient pre-compiled data format. |
|
|
| Support for both Chinese and Japanese character sets |
|
|
| Support for custom TTF fonts |
|
|
| Support for 2D contour plots of 3D functions |
|
|
| Unlimited number of data points (up to memory and CPU limit of server) |
|
|
| Windrose plots |
| |
| Odometer plots |
| |
| Graphic excel like tables |
| |
| 1D Linear barcodes (e.g. EAN8,13,128, Code39, 128, 2of5, Code-11, Codabar etc) |
| |
| 2D-Barcode PDF417 |
| |
| 2D-Barcode Datamatrix |
| |
| 2D-Barcode QR-code |
| |
| Matrix visualization |
|
In addition to these high level features the library has been designed to be orthogonal
and consistent in its' naming convention. For example, to specify color each object (i.e.
axis, grids, texts, titles etc) within the graph implements the method
SetColor()
with the same signature.


Individual-centric Visualisation in Email Communication
Search:
GO
Received+Sent
Sent
Received
Received-Sent
Received/Sent
User Overview
CLOSE
CLOSE
User
Total Sent
Total Received
Total Communication Volume
Loading...


?2
3
Erythrina
Poeppigiana
(Walp.)
Cook
Det.
by
B.A.Krukoff,1988.
SMITHSONIAN
INSTITUTION
Fbom
THE
UNITED
STATES
NATIONAL
HERBARIUM
ÀLuwiJLi
c+XL
,
Ñ¥A
À4
È
_
PLANTS
OF
THE
DOMINICAN
REPUBLIC
^
.
-
Vff
(_^t_
cjL4r~
.
'tCrc^JL
}lc0ttosuwi*j
Pimentel,
Provlnela
Paclflcador;
near
sea
level
No.
t?
/
2Ñ
w.
L.
ABBOTT,
Collector
Jan.
20-25,
1921
1619016
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Contents of block 01...
Contents of block 02...
Contents of block 03...
Contents of block 04...
Contents of block 05...
Contents of block 06...
Contents of block 07...
Contents of block 08...
Contents of block 09...
Contents of block 10...


{% extends "layout.html" %} {% block page_title %} GP Details {% endblock %} {% block content %} {% include "../includes/phase_banner_beta.html" %} Back Your GP's details GP's name or surgery name Their address Building and street Town or city County (optional) Postcode Their phone number {% include "../includes/help.html" %} {% endblock %}


Epicodus Banking Industries
For the right interest rate, we'll approve anyone!
Enter your Name
Please enter your initial deposit:
Submit!
Deposit:
Withdrawal:
Current Balance:


Documentation
Part III - FlickerView: Implementing FeedView
In the previous part, Developing a Dojo Mobile Application, we built the general layout template and came up with a mockup of the application. This part will focus on updating the mockup to dynamically get data and display feeds from Flickr. You will learn how to initiate, get response and handle error from a JSON request, use a progress indicator while waiting for the server to respond, dynamically populate a list with ListItems, use a basic HTML template to create ListItems and format a date according to a specific locale. Are you ready? Let's go!
- Difficulty: Intermediate
- Dojo Version: 1.9
- Series: FlickrView
Application data structure
Our application needs to manage data to build a JSON request and to update its views with data from the JSON response. We will use a basic data structure declare in the global scope in our HTML file. This object will:
- contain the query parameters to build the JSON request used by the Feed view
- be updated by user inputs from the Settings view
require([ //... ], function (parser) { flickrview = {}; flickrview.QUERY = { tags: "famous,bridges", tagmode: "all", format: "json", lang: "en-us" }; //... });
That’s being done, any component is able to set and get flickrview.QUERY
.
FeedView properties
The Feed view will be in charge of getting and displaying a list of the most recent photos uploaded to Flickr. We’ll need a url and some options to pass to the JSONP request in order to contact Flickr public service:
// Flickr public feed URL to pull recent photo uploads from requestUrl: "http://api.flickr.com/services/feeds/photos_public.gne", // JSONP request options and query parameters requestOptions: { jsonp: "jsoncallback", preventCache: true, timeout: 10000, query: null },
The query parameter will be dynamically set before the JSON call. For more information on Dojo request options, you can have a look to the Dojo request Reference Guide.
Looking at the mockup, you'll also see that the photo list items must be specially formatted to include a photo with its title, published time and author information. Let's create a property which will accommodate a photo feed template :
// Create a template string for a photo ListItem flickrviewItemTemplateString: '' + '
' + '
${title}
' + '
${published}
' + '
${author}
' + '

',
Let’s also define a companion method to substitute the template variables:
substitute: function(template,obj) { return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, function(match,key){ return obj[key]; }); }
We will also keep record of the widgets references with which we will work on. Initialization will be done in the startup method
//... refreshButton: null, feedList: null, feedHeading: null, progressIndicator: null, detailsContainer:null, detailsHeading:null, //...
FeedView startup
Dojo widget startup method is called once, after parsing and creation of any child widgets has completed. Let's go through it line by line:
startup: function() { this.inherited(arguments);
The startup method is inherited from dojox/mobile/ScrollableView,
which in turn is inherited from dijit/_WidgetBase. This is why we
call this.inherited(arguments)
.
Startup is part of Dojo widgets lifecycle. You can find more information on Dojo widget lifecycle in dijit/_WidgetBase Reference Guide.
The method byId
from dijit/registry is used to
retrieve widgets references:
// retain widgets references this.refreshButton = registry.byId("refreshButton"); this.feedList = registry.byId("feedList"); this.feedHeading = registry.byId("feedHeading"); this.detailsContainer = registry.byId("detailsContainer"); this.detailsHeading = registry.byId("detailsHeading");
ProgressIndicator is a round spinning graphical representation which indicates that the current task is on-going. We will show this while the user waits for the view to refresh its content:
this.progressIndicator = ProgressIndicator.getInstance();
While it is simple to use it, you can find more information on how to use and customize the ProgressIndicator in the Reference Guide.
We add a click event to the refresh button. this.refresh
the reference
to the refresh method we will define in the next chapter. Note the use of
lang.hitch method to make sure our callback method
this.refresh
will be called in the context of the widget instance:
// add click handler to the button that call refresh this.refreshButton.on("click", lang.hitch(this, this.refresh) );
FeedView refresh
The refresh method is charged to get photo feed from Flickr and update the view with the result. First, we remove any existing content from the list to show up our progress indicator:
// remove all list items this.feedList.destroyDescendants(); // reset scroll to make sur progress indicator is visible this.scrollTo({x:0,y:0}); // add progress indicator this.feedHeading.set('label',"loading..."); this.feedList.domNode.appendChild(this.progressIndicator.domNode); this.progressIndicator.start();
Now we send a JSON request to Flickr:
// request feed from Flickr this.requestOptions.query = flickrview.QUERY; scriptRequest.get(this.requestUrl, this.requestOptions).then(lang.hitch(this, this.onFlickrResponse), lang.hitch(this, this.onFlickrError));
The actual work to update the list from the response is done in our 2 callback
methods onFlickrResponse
(successful response) and
onFlickrError
(error).
You can type this request in your browser to get an oversight of the data contain in the response: http://api.flickr.com/services/feeds/photos_public.gne?tags=famous,bridge&lang=en-us&format=json
Handling JSON response
Successful response is handled in onFlickrResponse
. Let's go through
it line by line. First thing to do is to stop/remove the progress indicator and
update the Heading:
// remove progress indicator this.progressIndicator.stop(); this.feedList.destroyDescendants(); // restore the title this.feedHeading.set('label','Feeds');
Now we can iterate through the result items:
// populate the list array.forEach(result.items, lang.hitch(this, function (resultItem)
For each item we create a dojox/mobile/ListItem and put it at the end of the list:
// Create a new ListItem at the end of the list var listItem = new ListItem({}).placeAt(this.feedList, "last");
We set the style and use our simple HTML template to inject the content of the ListItem:
// set custom style domClass.add(listItem.domNode, "photoListItem"); // create and insert content from template and JSON response listItem.containerNode.innerHTML = this.substitute(this.flickrviewItemTemplateString, { photo: resultItem.media.m, title: resultItem.title, published: locale.format(new Date(resultItem.published), {locale:flickrview.QUERY.lang}), author: resultItem.author });
Do not worry about the way we format the published
attribute, we will get
into this in detail later when we’ll talk about localization.
Clicking on an Item should trigger a transition to the Details view. Before transitioning we have to update the content of the details view. In order to do this we add a click handler on the ListItem:
listItem.onClick = lang.hitch(this, function(){ // update details view before transitioning to it this.detailsContainer.domNode.innerHTML = resultItem.description.replace(/href=/ig,"target=\"_blank\" href="); listItem.set("transition","slide"); listItem.transitionTo("details"); });
Note that we inject a target
attribute to force all links to open in
a new browser tab. This is a best practice when a link points to another site.
Because we programmatically trigger the transition, we set the moveTo
property to # to tell the widget not to handle the transition.
listItem.set("moveTo","#");
The error handling is straightforward: we stop the progress indicator, display the error message in the Heading and alert the user.
onFlickrError: function(error) { // remove progress indicator this.progressIndicator.stop(); this.feedList.destroyDescendants(); // display error message this.feedHeading.set('label',error); alert(error); }
We are almost ready to test our first “working release” of the application! We just need to configure the application for localization to format the published date.
Formatting the date using a specific locale
In the JSON request we specify the locale to be applied in the response data.
However, the date we receive is not formatted (it is a raw representation which
looks like this: 2013-09-15T07:57:04Z
). Dojo provides a lot of features
to localize your application. Here we use one method to format the date with the
same locale used to get the feed data:
published: locale.format(new Date(resultItem.published), {locale:flickrview.QUERY.lang}),
Because we force the locale (by default, Dojo uses the browser default locale), we
have to specify the list of locales Dojo must load in the configuration
(dojoConfig
in flickrview.html). To do so, we use
the config
parameter extraLocale:
dojoConfig = { async: true, baseUrl: './', parseOnLoad: false, mblHideAddressBar: true, extraLocale: ["en-us", "fr-fr", "de-de", "it-it", "ko-kr", "pt-br", "es-us", "zh-hk"], packages: [{ name: "flickrview", location: "js" }] };
That is it! Our refresh button is working. One last thing to add in our HTML file for the application to automatically refresh at startup:
// Parse the page for widgets parser.parse(); // refresh at startup registry.byId("feed").refresh();
We are all set. FeedView now get its content from Flickr! Click on the demo link to see the result and browse the full code. In the next part we will implement the Settings view to allow users to change the request options.
Download The Source
Resources & references
- Dojo Mobile Reference Guide
- The Dojo Toolkit API
- dijit/_WidgetBase (Reference Guide)
- dojox/mobile ProgressIndicator (Reference Guide)
- Dojo lang.hitch (Reference Guide)


Create
Student
Last Name
Required!
First Name
Required!
Email
Required!
Enrollment Date
Required!
Back to List


We are so excited to see you here! Let's see some posts, with their comments and all that blogie stuff you like


By Chen Hui Jing / @hj_chen
The entire network of networks that connect all the world's devices to each other.
Transmission Control Protocol / Internet Protocol
I imagined the web as an open platform that would allow everyone, everywhere to share information, access opportunities and collaborate across geographic and cultural boundaries.
—Sir Tim Berners-Lee
Finally, the browser renders the page on screen and you get annoyed that it all took too long
...however initial pageload feels drastically quicker because we serve up real HTML instead of waiting for the client to download JavaScript before renderingOur First Node.js App: Backbone on the Client and Server
—Spike Brehm (Airbnb)
A smaller site/app loads faster, costs less, and is more accessible.
The world is generally changed by people who just want to live out their ordinary lives. By people who are just trying to get home.Let Us Now Praise Ordinary People
—Mike Monteiro


Cryptocurrency exchange IDAX’s CEO reportedly missing with the company’s cold wallet
No one knows where they went
by Matthew BeedhamA relatively small cryptocurrency exchange has halted deposit and withdrawal services after its CEO has reportedly gone missing.
The IDAX exchange posted an announcement earlier today saying it had halted some operations after its staff were unable to make contact with the global CEO.
The CEO is said to have taken access to the company’s cold wallets with them. At this point, it’s not known why the CEO has supposedly vanished.
According to CoinMarketCap, IDAX serviced some $500 million worth of Bitcoin trades over the past 24 hours — compared to top ranking exchange BitMEX, which serviced over $2 billion. (These are reported figures, so bear that in mind and exercise caution.)
IDAX says it’s still trying to get a hold of the situation and understand what is going on.
The cryptocurrency exchange says it’s drawing up an emergency plan.
It has advised all users to refrain from using its platform and services for the time being.
IDAX hasn’t stated the value of cryptocurrency held in its cold wallets. However, the announcement did say that the cold wallets stored “almost all cryptocurrency balances on IDAX [which] have been restricted.”
No timeline has been given in regard to the emergency plan or when services can expect to be back online.
This is a developing story.
Earlier this year, Gerald Cotten the CEO of Canadian cryptocurrency exchange QuadrigaCX reportedly passed away taking the company‘s private keys and $134 million worth of cryptocurrency with him.


Watchdog Timer with interval timer capabilities.
More...
Watchdog Timer with interval timer capabilities.
Module Operation
MSP432 includes a standard watchdog module that is identical to the WDT_A module of MSP430. By using DriverLib, the user can configure all aspects of the watchdog peripheral including using the watchdog in interval mode as well as watchdog mode.
Watchdog Mode
Once the module is initiated in watchdog mode, the timer will reset part if the count expires. The reset can be set as either a soft or hard reset. This use case is useful when the programmer wants to make sure that the code execution isn't perpetually stuck/locked in an unrecoverable state.
To configure the WDT module in watchdog mode, the WDT_initWatchdogTimer function is used such as follows:
This will set the watchdog timer to be sourced from SMCLK and have a duration of 512,000 SMCLK cycles. This means that once started, if the watchdog timer goes 512,000 iterations without being reset a reset will occur. To reset the counter (after using WDT_startTimer to start the timer), the user should use the WDT_resetTimer function.
Interval Mode
MSP432 Driverlib can also configure the WDT module to work in interval mode. This turns the WDT into an ordinary 16-bit down counter with interrupt support. This can be used if the user needs access to another low power counter, however has already used other resources. To configure the module in interval mode, use the WDT_initIntervalTimer function such as follows:
This will configure the WDT module to be sourced from SMCLK and have a period of 32,000 cycles. In this example, we have previously configured SMCLK to be 64Khz making this timer's period be approximately half a second. After using the WDT_startTimer function to start the timer, the user can service interrupts from interval mode after enabling interrupts using the Interrupt_enableInterrupt function.
Setting Reset Type
The type of reset that occurs on watchdog timeout/password violation can be configured through the SysCtl module using the SysCtl_setWDTPasswordViolationResetType and SysCtl_setWDTTimeoutResetType APIs. These APIs will allow the user to change whether a soft or hard reset occurs on a watchdog timeout and password violation. For the user, the convenience functions WDT_setPasswordViolationReset and WDT_setTimeoutReset exist in the WDT APIs.
Programming Examples
The DriverLib package contains a variety of different code examples that demonstrate the usage of the WDT module. These code examples are accessible under the examples/ folder of the SDK release as well as through TI Resource Explorer if using Code Composer Studio. These code examples provide a comprehensive list of use cases as well as practical applications involving each module.
Below is a very brief code example showing how to configure the WDT module in interval mode:
| #define WDT_A_CLOCKSOURCE_SMCLK (WDT_A_CTL_SSEL_0) |
| #define WDT_A_CLOCKSOURCE_ACLK (WDT_A_CTL_SSEL_1) |
| #define WDT_A_CLOCKSOURCE_VLOCLK (WDT_A_CTL_SSEL_2) |
| #define WDT_A_CLOCKSOURCE_BCLK (WDT_A_CTL_SSEL_3) |
| #define WDT_A_CLOCKDIVIDER_2G (WDT_A_CTL_IS_0) |
| #define WDT_A_CLOCKDIVIDER_128M (WDT_A_CTL_IS_1) |
| #define WDT_A_CLOCKDIVIDER_8192K (WDT_A_CTL_IS_2) |
| #define WDT_A_CLOCKDIVIDER_512K (WDT_A_CTL_IS_3) |
| #define WDT_A_CLOCKDIVIDER_32K (WDT_A_CTL_IS_4) |
| #define WDT_A_CLOCKDIVIDER_8192 (WDT_A_CTL_IS_5) |
| #define WDT_A_CLOCKDIVIDER_512 (WDT_A_CTL_IS_6) |
| #define WDT_A_CLOCKDIVIDER_64 (WDT_A_CTL_IS_7) |
| void WDT_A_holdTimer |
( |
void |
| ) |
|
Holds the Watchdog Timer.
This function stops the watchdog timer from running. This way no interrupt or PUC is asserted.
- Returns
- None
Referenced by PCM_gotoLPM4().
| void WDT_A_startTimer |
( |
void |
| ) |
|
Starts the Watchdog Timer.
This function starts the watchdog timer functionality to start counting.
- Returns
- None
| void WDT_A_clearTimer |
( |
void |
| ) |
|
Clears the timer counter of the Watchdog Timer.
This function clears the watchdog timer count to 0x0000h. This function is used to "service the dog" when operating in watchdog mode.
- Returns
- None
| void WDT_A_initWatchdogTimer |
( |
uint_fast8_t |
clockSelect, |
|
|
uint_fast8_t |
clockDivider |
|
) |
| |
Sets the clock source for the Watchdog Timer in watchdog mode.
- Parameters
-
| clockSelect | is the clock source that the watchdog timer will use. Valid values are
- WDT_A_CLOCKSOURCE_SMCLK [Default]
- WDT_A_CLOCKSOURCE_ACLK
- WDT_A_CLOCKSOURCE_VLOCLK
- WDT_A_CLOCKSOURCE_BCLK
|
| clockIterations | is the number of clock iterations for a watchdog timeout. Valid values are
- WDT_A_CLOCKITERATIONS_2G [Default]
- WDT_A_CLOCKITERATIONS_128M
- WDT_A_CLOCKITERATIONS_8192K
- WDT_A_CLOCKITERATIONS_512K
- WDT_A_CLOCKITERATIONS_32K
- WDT_A_CLOCKITERATIONS_8192
- WDT_A_CLOCKITERATIONS_512
- WDT_A_CLOCKITERATIONS_64
|
This function sets the watchdog timer in watchdog mode, which will cause a PUC when the timer overflows. When in the mode, a PUC can be avoided with a call to WDT_A_resetTimer() before the timer runs out.
- Returns
- None
| void WDT_A_initIntervalTimer |
( |
uint_fast8_t |
clockSelect, |
|
|
uint_fast8_t |
clockDivider |
|
) |
| |
Sets the clock source for the Watchdog Timer in timer interval mode.
- Parameters
-
| clockSelect | is the clock source that the watchdog timer will use. Valid values are
- WDT_A_CLOCKSOURCE_SMCLK [Default]
- WDT_A_CLOCKSOURCE_ACLK
- WDT_A_CLOCKSOURCE_VLOCLK
- WDT_A_CLOCKSOURCE_BCLK
|
| clockIterations | is the number of clock iterations for a watchdog interval. Valid values are
- WDT_A_CLOCKITERATIONS_2G [Default]
- WDT_A_CLOCKITERATIONS_128M
- WDT_A_CLOCKITERATIONS_8192K
- WDT_A_CLOCKITERATIONS_512K
- WDT_A_CLOCKITERATIONS_32K
- WDT_A_CLOCKITERATIONS_8192
- WDT_A_CLOCKITERATIONS_512
- WDT_A_CLOCKITERATIONS_64
|
This function sets the watchdog timer as timer interval mode, which will assert an interrupt without causing a PUC.
- Returns
- None
| void WDT_A_registerInterrupt |
( |
void(*)(void) |
intHandler | ) |
|
| void WDT_A_unregisterInterrupt |
( |
void |
| ) |
|
| void WDT_A_setPasswordViolationReset |
( |
uint_fast8_t |
resetType | ) |
|
| void WDT_A_setTimeoutReset |
( |
uint_fast8_t |
resetType | ) |
|


ZIKV virus []. infection Zika viral cell immune cells host human type signaling replication {border-style proteins px;} #ffffff;} RNA [,]. death mechanisms cellular antiviral targets IFN response transmission Axl, levels Infect. Virus ZIKV, congenital entry evasion factors including inhibit microcephaly neural nonstructural pathways potential protein Furthermore, dengue fetal flaviviruses infection, interferon Axl DENV NSB associated demonstrated development flavivirus following identified induction innate multiple placental pregnancy studies various Host cases cells, downstream expression mechanism previously proteins, px; viruses {font-family Cell Microbe./j.chom... ability addition brain confirmed drugs font-size involved molecular pathogenesis pathogens placenta role target vitro IFNs Virol.e-./JVI.- [,,]. [,] activation apoptosis broad clinical double; high induces infections inhibits level primary receptor shown stem Akt-mTOR Cell./j.stem... Health Hofbauer IFITM III NSA, Nile Rep../j.celrep... Rev. STAT Stem Tyro ZIKV-induced ZIKV. border-color border-width detected detection exhibited genome global immunity important induce infects inhibited inhibition interaction leads models pathway possible progenitor replication, responses results severe sexual single solid; structural threat {font-style {font-weight Consequently, DENV, Despite Emerging Figure Flaviviruses Human IFITMs IL-, Microbiol../fmicb.. Mol. NS, NSA NSB, NSB-NS Sertoli TIM Viral West [,,,,]. abnormalities birth blood bold case caspase complex courier; cycle diagnosis early effect em; endothelial envelope evident exact example, family function functions health increased induced infection. inflammation mediates member mouse ocular pathways. patients persistence phase platforms possibility production protection pt;} range receptors replication. research result resulting roles serum sfRNA spectrum study therapeutic types utilized vaccine vertical


darth-fader.js adds a customizable
onfade event
to any specified <input type=range>
element in a page;
listen for and handle the event like any other
include the script, then add a stop-point list
of fade arrays in a data-param, and listen for the
default fade event;
the following is a simple example

<input id="fader0" type="range" data-fade="
color : [
'rgb(255, 255, 0)', 0,
'rgb(255, 0, 0)', 0.25,
'rgb(255, 255, 255)', 0.50,
'rgb( 0, 255, 255)', 0.75,
'rgb(255, 0, 255)', 1
],
size : [
' 20px', 0,
'100px', 0.5,
'380px', 1
]
"/>

the
event.detail of the fade event contains
a property for every listed fade in that input element
- for example, if you create a fade called 'height'
you would access the current interpolated value
from the handler's
event.detail.height property
each <input> element contains a list
of arrays to fade through;
they are specified as a
name for
that array, followed by a
colon,
then an array in
hard-brackets;
the array consists of string-percent pairs:
a
string for the desired value, and a
float percent as the stop-point
for that value
name : ['value', %, 'value', %, ... ]
values are entered as a string
in
single quotes - any numbers will
be extracted from the string and converted
to actual numbers - separate arrays with a comma
every fade added to the input's param also
creates an <input type="hidden">
element that will get submitted with the form -
the hidden input will be assigned an
id
that is the darth-fader input's id, combined by an
underscore to the fade's name
in the above example,
fader0 created
two hidden inputs, one named
fader0_color and another with the id
fader0_size; besides being submitted
with any form, the current value of a fade
can also be accessed from the darth-fader's
hidden inputs
there are many different options which may
be configured -
darth-fader.js itself
has defaults that may be overwritten by
the script tag's
data-param;
any options may also be specified by the
individual darth-fader's
data-param
let's take a look at an example of that

<input id="faderX" type="range"
data-fade="
price : ['$200', 0, '$1800', 1],
colors : [
'rgb(200, 100, 0)', 0,
'rgb(225, 175, 0)', 0.25,
'rgb(255, 255, 255)', 0.5,
'rgb(200, 0, 200)', 0.75,
'rgb(100, 0, 100)', 1
],
"
data-fade-opts="
eventName : 'faderXevent',
thumb : 'colors',
fix : 2
"
/>
alright, this will fade between several different
colors, aswell as between the prices of
two hundred dollars and
eighteen hundred dollars - but what do
all of these options mean?
- selector : this is what needs to follow
data- in the parameter in order for
darth-fader.js to recognize the element
as a darth fader; by default, anything with
<input data-fade> will be selected;
it can be any string
- eventName : the name of the event that
handlers need to listen for - by default, this is
also fade; in the example, faderX
has changed only its specific event's name to
faderXevent
- thumb : designates, by string,
the name of the fade that should be used to
color the thumb of the slider element;
in this example, the colors fade is
being used to color the thumb - this can also
be the boolean value true, in which case
darth-fader.js will color the thumb
using default colors
- snap : this is the string
name of the fade whose values you would like
the slider to snap at - darth-fader.js
will create a datalist element and use
that to snap the slider to the apropos values
denoted by the percentage stop-points of the fade
- steps : if, for some reason, you would
like the slider to move only in discreet steps,
set this value to the string name of
a fade and the slider will only move in as many
steps as there are percent-values in that fade;
alternatively, set this value to an integer
number of steps
- fix : if you want all numerically fadded
values to be only a fixed number of decimal places
long, enter the integer that specifies how
many decimal places each numerical value should have;
in this example, faderX has indicated
two decimal places, likely because of the
price fader using monetary values
- ignore : by default, all fades listed
in the data-param have a hidden input
element automatically created for them - these
hidden inputs are, ofcourse, form elements whose
values will get submitted if you use a darth-fader
in a form - this string is a comma-separated
list of the names of any fades for which you do NOT
want to have a hidden input element
there is a
minified version
that, for now, is just automatically minified by an
online minifier - eventually, there ought to be a more terse
version, intentionally designed to be as small as possible
if you are happy with the defaults, you can simply
include the
darth-fader.js script, label any
inputs with a
data-fade or
data-fade-opts parameter,
and write handlers for the
fade event

<input data-fade-opts="thumb:true,steps:5">
darth-fader.js will look for any <input>
that has either
data-fade or
data-fade-opts;
if the only information given is the
thumb:true option, the script automatically
creates a thumb-coloring slider
~queviva


Go Back
**more tests will be coming soon**
Let's take the test
Lung Cancer
... Cancer
.... Cancer
...... Cancer


Sylvie and Bruno Concluded
by Lewis Carroll
Chapter 17: “To the Rescue!”
Additional Information
- Year Published: 1893
- Language: English
- Country of Origin: England
- Source: Carroll, L. (1893). Sylvie and Bruno Concluded. London: Macmillan and Co.
-
Readability:
- Flesch–Kincaid Level: 6.5
- Word Count: 3,190
- Genre: Fantasy
- Keywords: 19th century literature, british literature, lewis carroll
- ✎ Cite This
Downloads
“It isn’t bed-time!” said a sleepy little voice. “The owls hasn’t gone to bed, and I s’a’n’t go to seep wizout oo sings to me!”
“Oh, Bruno!” cried Sylvie. “Don’t you know the owls have only just got up? But the frogs have gone to bed, ages ago.”
“Well, I aren’t a frog,” said Bruno.
“What shall I sing?” said Sylvie, skilfully avoiding the argument.
“Ask Mister Sir,” Bruno lazily replied, clasping his hands behind his curly head, and lying back on his fern-leaf, till it almost bent over with his weight. “This aren’t a comfable leaf, Sylvie. Find me a comfabler—please!” he added, as an after-thought, in obedience to a warning finger held up by Sylvie. “I doosn’t like being feet-upwards!”
It was a pretty sight to see the motherly way in which the fairy-child gathered up her little brother in her arms, and laid him on a stronger leaf. She gave it just a touch to set it rocking, and it went on vigorously by itself, as if it contained some hidden machinery. It certainly wasn’t the wind, for the evening-breeze had quite died away again, and not a leaf was stirring over our heads.
“Why does that one leaf rock so, without the others?” I asked Sylvie.  “I don’t know why,” she said. “It always does, if it’s got a fairy-child on it. It has to, you know.”
“And can people see the leaf rock, who ca’n’t see the Fairy on it?”
“Why, of course!” cried Sylvie. “A leaf’s a leaf, and everybody can see it; but Bruno’s Bruno, and they ca’n’t see him, unless they’re eerie, like you.”
Then I understood how it was that one sometimes sees —going through the woods in a still evening—one fern-leaf rocking steadily on, all by itself. Haven’t you ever seen that? Try if you can see the fairy-sleeper on it, next time; but don’t pick the leaf, whatever you do; let the little one sleep on!
But all this time Bruno was getting sleepier and sleepier. “Sing, sing!” he murmured fretfully, Sylvie looked to me for instructions. “What shall it be?” she said. “Could you sing him the nursery-song you once told me of? I suggested. “The one that had been put through the mind-mangle, you know. ’The little man that had a little gun,’ I think it was.”
“Why, that are one of the Professor’s songs!” cried Bruno. “I likes the little man; and I likes the way they spinned him—like a teetle-totle-tum.” And he turned a loving look on the gentle old man who was sitting at the other side of his leaf-bed, and who instantly began to sing, accompanying himself on his Outlandish guitar, while the snail, on which he sat, waved its horns in time to the music.
In stature the Manlet was dwarfish—
No burly big Blunderbore he:
And he wearily gazed on the crawfish
His Wifelet had dressed for his tea.
”Now reach me, sweet Atom, my gunlet,
And hurl the old shoelet for luck:
Let me hie to the bank of the runlet,
And shoot thee a Duck!
She has reached him his minikin gunlet:
She has hurled the old shoelet for luck:
She is busily baking a bunlet
To welcome him home with his Duck.
On he speeds, never wasting a wordlet
Though thoughtlets cling, closely as wax
To the spot where the beautiful birdlet
So quietly quacks.
Where the Lobsterlet lurks, and the Crablet
So slowly and sleepily crawls:
Where the Dolphin’s at home, and the Dablet
Pays long ceremonious calls:
Where the Grublet is sought by the Froglet:
Where the Frog is pursued by the Duck:
Where the Ducklet is chased by the Doglet—
So runs the world’s luck!
He has loaded with bullet and powder:
His footfall is noiseless as air:
But the Voices grow louder and louder,
And bellow, and bluster, and blare.
They bristle before him and after,
They flutter above and below,
Shrill shriekings of lubberly laughter,
Weird wailings of woe!
They echo without him, within him:
They thrill through his whiskers and beard:
Like a teetotum seeming to spin him,
With sneers never hitherto sneered.
”Avengement,” they cry, “on our Foelet!
Let the Manikin weep for our wrongs!
Let us drench him, from toplet to toelet,
With Nursery-Songs!
“He shall muse upon ‘Hey! Diddle! Diddle!’
On the Cow that surmounted the Moon:
He shall rave of the Cat and the Fiddle,
And the Dish that eloped with the Spoon:
And his soul shall be sad for the Spider,
When Miss Muffet was sipping her whey,
That so tenderly sat down beside her,
And scared her away!
“The music of Midsummer-madness
Shall sting him with many a bite,
Till, in rapture of rollicking sadness,
He shall groan with a gloomy delight:
He shall swathe him, like mists of the morning,
In platitudes luscious and limp,
Such as deck, with a deathless adorning,
The Song of the Shrimp!
“When the Ducklet’s dark doom is decided,
We will trundle him home in a trice:
And the banquet, so plainly provided,
Shall round into rose-buds and rice:
In a blaze of pragmatic invention
He shall wrestle with Fate, and shall reign:
But he has not a friend fit to mention,
So hit him again!”
He has shot it, the delicate darling!
And the Voices have ceased from their strife:
Not a whisper of sneering or snarling,
as he carries it home to his wife:
Then, cheerily champing the bunlet
His spouse was so skilful to bake,
He hies him once more to the runlet,
To fetch her the Drake!
“He’ssound asleep now,” said Sylvie, carefully tucking in the edge of a violet-leaf, which she had been spreading over him as a sort of blanket: “good night!”
“Good night!” I echoed.
“You may well say ‘good night’!” laughed Lady Muriel, rising and shutting up the piano as she spoke. “When you’ve been nid—nid—nodding all the time I’ve been singing for your benefit! What was it all about, now?” she demanded imperiously.
“Something about a duck?” I hazarded. “Well, a bird of some kind?” I corrected myself, perceiving at once that that guess was wrong, at any rate.
“Something about a bird of some kind!” Lady Muriel repeated, with as much withering scorn as her sweet face was capable of conveying. “And that’s the way he speaks of Shelley’s Sky-Lark, is it? When the Poet particularly says ’Hail to thee, blithe spirit! Bird thou never wert!’ “
She led the way to the smoking-room, where, ignoring all the usages of Society and all the instincts of Chivalry, the three Lords of the Creation reposed at their ease in low rocking-chairs, and permitted the one lady who was present to glide gracefully about among us, supplying our wants in the form of cooling drinks, cigarettes, and lights. Nay, it was only one of the three who had the chivalry to go beyond the common-place “thank you”, and to quote the Poet’s exquisite description of how Geraint, when waited on by Enid, was moved
“To stoop and kiss the tender little thumb
That crossed the platter as she laid it down,”
and to suit the action to the word—an audacious liberty for which, I feel bound to report, he was not duly reprimanded.
As no topic of conversation seemed to occur to any one, and as we were, all four, on those delightful terms with one another (the only terms, I think, on which any friendship, that deserves the name of intimacy, can be maintained) which involve no sort of necessity for speaking for mere speaking’s sake, we sat in silence for some minutes.
At length I broke the silence by asking “Is there any fresh news from the harbour about the Fever?”
“None since this morning,” the Earl said, looking very grave. “But that was alarming enough. The Fever is spreading fast: the London doctor has taken fright and left the place, and the only one now available isn’t a regular doctor at all: he is apothecary, and doctor, and dentist, and I don’t know what other trades, all in one. It’s a bad outlook for those poor fishermen—and a worse one for all the women and children.”
“How many are there of them altogether?” Arthur asked.
“There were nearly one hundred, a week ago,” said the Earl: “but there have been twenty or thirty deaths since then. ”
“And what religious ministrations are there to be had?”
“There are three brave men down there,” the Earl replied, his voice trembling with emotion, “gallant heroes as ever won the Victoria Cross!   Then there’s the Roman Catholic Priest. And there’s the Wesleyan Minister. They go amongst their own flocks mostly; but I’m told that those who are dying like to have any of the three with them. How slight the barriers seem to be that part Christian from Christian when one has to deal with the great facts of Life and the reality of Death!”
“So it must be, and so it should be— ” Arthur was beginning, when the front-door bell rang, suddenly and violently.
We heard the front-door hastily opened, and voices outside: then a knock at the door of the smoking-room, and the old house-keeper appeared, looking a little scared.
“Two persons, my Lord, to speak with Dr. Forester.”
Arthur stepped outside at once, and we heard his cheery “Well, my men?” but the answer was less audible, the only words I could distinctly catch being “ten since morning, and two more just—”
“But there is a doctor there?” we heard Arthur say and a deep voice, that we had not heard before, replied “Dead, Sir. Died three hours ago.”
Lady Muriel shuddered, and hid her face in her hands: but at this moment the front-door was quietly closed, and we heard no more.
 And, true enough, at the end of that interval—during which very little was said, none of us seeming to have the heart to talk—the front-door once more creaked on its rusty hinges, and a step was heard in the passage, hardly to be recognized as Arthur’s, so slow and uncertain was it, like a blind man feeling his way.
He came in, and stood before Lady Muriel, resting one hand heavily on the table, and with a strange look in his eyes, as if he were walking in his sleep.
“Muriel—my love—” he paused, and his lips quivered: but after a minute he went on more steadily. “Muriel—my darling—they—want me—down in the harbour.”
“Must you go?” she pleaded, rising and laying her hands on his shoulders, and looking up into his face with great eyes brimming over with tears. “Must you go, Arthur? It may mean—death!”
He met her gaze without flinching. “It does mean death,” he said, in a husky whisper: “but—darling—I am called. And even my life itself—” His voice failed him, and he said no more.
For a minute she stood quite silent, looking upwards in a helpless gaze, as if even prayer were now useless, while her features worked and quivered with the great agony she was enduring.  “Your life?” she repeated. “It is not yours to give!”
Arthur had recovered himself by this time, and could reply quite firmly, “That is true,” he said. “It is not mine to give. It is yours, now, my—wife that is to be!  Will you not spare me, my own beloved one?”
 She had never done such a thing in my presence before, and I knew how deeply she must be moved. “I will spare you”, she said, calmly and quietly, “to God.”
“And to God’s poor,” he whispered.
“And to God’s poor,” she added. “When must it be, sweet love?”
“To-morrow morning,” he replied. “And I have much to do before then.”
And then he told us how he had spent his hour of absence. He had been to the Vicarage, and had arranged for the wedding to take place at eight the next morning (there was no legal obstacle, as he had, some time before this, obtained a Special Licence) in the little church we knew so well. “My old friend here”, indicating me, “will act as ‘Best Man’, I know: your father will be there to give you away: and—and—you will dispense with bride’s-maids, my darling?”
She nodded: no words came.
“And then I can go with a willing heart—to do God’s work—knowing that we are one—and that we are together in spirit, though not in bodily presence—and are most of all together when we pray! Our prayers will go up together—”
“Yes, yes!” sobbed Lady Muriel. “But you must not stay longer now, my darling! Go home and take some rest. You will need all your strength to-morrow—”
“Well, I will go,” said Arthur. “We will be here in good time to-morrow. Good night, my own own darling!”
I followed his example, and we two left the house together. As we walked back to our lodgings, Arthur sighed deeply once or twice, and seemed about to speak—but no words came, till we had entered the house, and had lit our candles, and were at our bedroom-doors. Then Arthur said “Good night, old fellow! God bless you!”
“God bless you!” I echoed from the very depths of my heart.
We were back again at the Hall by eight in the morning, and found Lady Muriel and the Earl, and the old Vicar, waiting for us. It was a strangely sad and silent party that walked up to the little church and back, and I could not help feeling that it was much more like a funeral than a wedding: to Lady Muriel it was in fact, a funeral rather than a wedding, so heavily did the presentiment weigh upon her (as she told us afterwards) that her newly-won husband was going forth to his death.
Then we had breakfast; and, all too soon, the vehicle was at the door, which was to convey Arthur, first to his lodgings, to pick up the things he was taking with him and then as far towards the death-stricken hamlet as it was considered safe to go. One or two of the fishermen were to meet him on the road, to carry his things the rest of the way.
“And are you quite sure you are taking all that you need?” Lady Muriel asked. “All that I shall need as a doctor, certainly. And my personal needs are few: I shall not even take any of own wardrobe—there is a fisherman’s suit, ready-made, that is waiting for me at my lodgings. I shall only take my watch, and a few books, and—stay—there is one book I should like to add, a pocket-Testament—to use at the bedsides of the sick and dying—”
Take mine!” said Lady Muriel: and she ran upstairs to fetch it. “It has nothing written in it but ‘Muriel’,” she said as she returned with it: “shall I inscribe—” ‘, my own one,” said Arthur, taking it from her. “What could you inscribe better than that? Could any human name mark it more clearly as my own individual property? Are you not mine? Are you not,” (with all the old playfulness of manner) “as Bruno would say, ‘my very mine’?”
He bade a long and loving adieu to the Earl and to me, and left the room, accompanied only by his wife, who was bearing up bravely, and was—outwardly, at least—less overcome than her old father. We waited in the room a minute or two, till the sounds of wheels had told us that Arthur had driven away; and even then we waited still, for the step of Lady Muriel, going upstairs to her room, to die away in the distance. Her step, usually so light and joyous, now sounded slow and weary, like one who plods on under a load of hopeless misery; and I felt almost as hopeless, and almost as wretched as she. “Are we four destined ever to meet again, on this side the grave?” I asked myself, as I walked to my home. And the tolling of a distant bell seemed to answer me, “No! No! No!”


COM6510 Software Development for Mobile Devices
| Summary |
This module aims to provide a thorough grounding in the
principles of software development for mobile devices. The
Android platform will be used as an example,
although the modules emphasizes general principles that are
common across all mobile platforms. An important aim of the
module is to demonstrate the real-world application of
object-oriented programming principles and design patterns
in software for mobile devices. Students undertake a
substantial software implementation project, working in
pairs. The module will be taught primarily using Java and Swift languages.
PLEASE NOTE THE CONTENT OF THE COURSE HAS CHANGED COMPARED TO LAST YEAR.
Students should be aware that there are limited places available on this course. |
| Session |
Autumn 2018/19 |
| Credits |
15 |
| Assessment |
Coursework [100%]. Students will plan, design and develop
an Android application, working in groups. |
| Lecturer(s) |
Prof. Fabio Ciravegna |
| Resources |
|
| Aims |
- to develop an understanding of the software
architecture underlying modern mobile devices
- to develop an understanding of how design patterns
are used in software frameworks for mobile devices
- to develop skills in object-oriented programming
- to develop skills in team working
- to develop an understanding of usability in mobile
applications
- to develop an understanding of how to process data in a mobile application
- to develop an understanding of how to access programmatically and use efficiently a phone's sensors
- to develop an understanding of how to optimise the performance of mobile applications software
- to develop skills in implementing mobile software
applications that use text and touch input
|
| Objectives |
By the end of the unit, a candidate will be able to:
- Understand the software architecture of a modern
mobile device
- Understand how design patterns such as
model-view-controller are used in software frameworks
for mobile devices
- Implement mobile software applications that use text
and touch input as well as using input from sensors
- Understand the importance of usability in mobile
applications and know best practices in implementing mobile apps
- Understand the important role of navigation in mobile
application design, and be able to write an application
that is easily navigable
- Understand how to optimise performance of a mobile
device application and use threading
- Understand how to work effectively as part of a
programming team
- Understand how to store data in a mobile
application
- Know the basics of Android, having developed a reasonably sized project.
|
| Content |
- Introduction to mobile computing
- How to design a mobile app
- Android framework
- Tools and development environments
- App lifecycle
- Views and layouts
- Sensors
- Persistence and databases
- Creating background services
|
| Restrictions |
This module is only suitable for students who are strong
programmers in an object oriented language (Java is a requirement for Android) |
| Essential skills |
Students should be very experienced in object-oriented software development. |
| Teaching Method |
There will be 1 lecture a week in a lecture theatre, and 2 hours of lab-based lecture. Lectures provide the basic technical
material that students need to be able to understand.
Programming is a practical skill, so the lectures are
supplemented with lab-based classes in which specific technical topics are thought and applied. These classes support the
development of practical programming skills. |
| Feedback |
Feedback on solutions to laboratory exercise sheets,
throughout the semester
Feedback on interim and final stages of the project work |
| Recommended Reading |
- Android architecture components
https://developer.android.com/develop/index.html
- Android Interface guidelines
https://developer.android.com/guide/practices/ui_guidelines/index.html
- Android design guidelines
https://developer.android.com/design/get-started/principles.html
|
|


--- layout: post title: RIP, faithful phone date: '2011-07-04T16:22:18-04:00' tags: [] tumblr_url: http://timothymorton.com/post/7238196550/rip-faithful-phone ---
I am the least gadget-whoring programmer that I know.
As proof, I submit this fact: my recently-deceased phone was an original, 2g iPhone. It had become annoyingly slow recently, but I was not planning on forking over the cash to replace it. But now, sadly, it has decided that the “touch screen” does not care about touch, and will just be a screen.
It has served me well, since the 2007 price drop a few months after launch.
Now, bring on the shiny!


With over four years of web and application development for NASA, we know how to complete projects promptly. Whether taking your business to the web, optimizing your site for mobile devices, or just revamping your brand to draw in new customers, we guarantee you'll be impressed by the efficiency of our work!
Your business, your design! We work to make sure you are happy with the look and feel of your site. Care to run a promotion on Groupon, or accept online orders from Eat24? We will help set those up too! If you don't have too much input, we always have plenty of ideas for a dynamic and polished website.
We are a lean team with competitive pricing! We would love to consult with your business and discuss visions, while even building customized demos before you buy our services so you can see the improvements we want to make for you. Our quotes are project based, so there's no stalling on our end to get your work done, and you'll know exactly the cost!
Try shrinking or expanding your browser and watch the content adapt! If your site frustrates smartphone users, your business and first impressions suffer. All of our designs are responsive and optimized for browsing on any desktop, laptop, tablet, or smartphone.
Every client's needs are unique and so we can't give specific pricing, but we also understand the need for ballpark estimates sometimes. For this website, the quote would look like:
| Item | Rate | Quantity | Price |
|---|---|---|---|
| {{item.name}} | {{item.rate | currency}} | {{item.quantity}} | {{(item.rate* item.quantity) | currency}} |
| Total | {{total | currency}} |
** Pages aren't always an accurate metric, if your pages are simple it's cheaper, if they are rich with content, it may cost slightly more.
This is comparable to Wix's Unlimited Plan at $14/mo which equates to $504 over 3 years, or Squarespace's $12/mo Personal Plan for $432 over 3 years, and you have to supply the content and styling yourself. Let us handle it for you.
Additionally, if you already have your domain and hosting, our services become that much cheaper!


{% load staticfiles %}
Flowers For The People is a full service boutique Botanical design company. Family owned and operated by founders and siblings Mick and Olivia Payment.
Olivia and Mick grew up playing with flowers in their mother's flower shop, Bloomers of Bellevue on Old Main, just blocks from where FFTP opened their doors. Growing up in a flower shop and being second generation florists has given the pair a deep rooted appreciation for flowers, plants and design in general.
They go above and beyond to source, the freshest and luscious boutique ingredients, seasonally. When available, locally, sustainably sourced, and organically grown blooms are always the first choice.
They have a close friendship with their growers and a lot of them happen to be right here in the Pacific Northwest... It really does not get any more farm fresh than this. FFTP has fresh product in daily and, hand selecting each bunch of blossoms directly, so you can be confident that you are getting the absolute freshest and most beautiful flowe
Always on the cutting edge....they are constantly looking at what's next while still paying hommage to the past, their style can be described as fresh and modern while still maintaining a timeless and classic feel. Fusing their passion for fine vintage treasures, fashion, lifestyle design and of course plants and flowers, Mick and Olivia have crafted Flowers For The People into something that is "so much more than just a flower shop" as their customers have said time and time again.


{{template "header.html" .}} {{$g := .GraphOptions}} {{$gts := .GlobalTopicStats}}
Topic: {{.Topic}}
See Lookup for more information.
Messages will queue at the topic until a channel is created.
| Channel | Depth | Memory + Disk | In-Flight | Deferred | Requeued | Timed Out | Messages | {{if $g.Enabled}}Rate | {{end}}Connections |
|---|---|---|---|---|---|---|---|---|---|
| {{$c.ChannelName}} {{if $c.Paused}}paused{{end}} | {{if $g.Enabled}}{{end}} {{$c.Depth | commafy}} | {{$c.MemoryDepth | commafy}} + {{$c.BackendDepth | commafy}} | {{$c.InFlightCount | commafy}} | {{$c.DeferredCount | commafy}} | {{$c.RequeueCount | commafy}} | {{$c.TimeoutCount | commafy}} | {{$c.MessageCount | commafy}} | {{if $g.Enabled}}{{end}} | {{if $g.Enabled}}{{end}} {{$c.ClientCount}} |


{% extends "boards/view.html" %} {% block page_title %}Python code assessment of commit {{commit.commit}} of {{repository.name}} for {{board.name}}{% endblock %} {% block content %} {% include "repositories/commits/components/breadcrumbs.html" %}
{{pylinter_result.stdout}}
{{pylinter_result.stderr}}


Errors during transcription are rather common. Unintentional keystrokes can cause characters to be rearranged, dropped or inserted in manually typed text.
Luckily for the robots, you have ways to solve problems like this. Your CheckSum helps to reduce the likelihood of errors by introducing a final character that is calculated from the previous characters. With the proper reasoning, the final character can always be calculated. This way, when inputs are entered, you can instantly verify that the final character matches the character predicted by CheckSum. If the two do not match, the input is rejected. The end result is that you would see fewer data entry errors.
How CheckSum Works:
CheckSum reasoning will need map points. This is a definition lookup for how to process the input necessary to generate the
final character, which will be enable us instantly verify that our input is correct.
In other words, for each sequence character of the input, we are confident there
can only be one possible input, all thanks to this final character.
The steps you must take to obtain the final character are as follows:
- From the rightmost input, traverse from right to left, and apply 'map point character lookup' for even-indexed characters.
- Add map point results for even-indexed characters with the unchanged digits from the original number.
- Find the remainder of this sum with 10. For an example sum of 67, the remainder is 7. ( 67 modulo 10 = 7 )
- Your final character should be 0 if the sum is a multiple-of-10, but it should be 10 minus remainder if the sum is not a multiple-of-10.
To generate the 'map point character lookup' table:
- Double the value of a character.
- If the product of this doubling operation is greater than 9 (e.g: 7 * 2 = 14), reduce it by summing the digits of the product. (i.e., find its digital root. e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5) Only do this once. Even if the sum is greater than 9, leave it alone.
Could you give me an example please?
Okay, take a look this example for a (pretend) account number: "7992739871". We will add final character to it,
so it looks something like: "7992739871x," with x being the final character-to-be-found.
Here is what a 'map point character lookup' table looks like for 0 through 9:
| Digits |
: |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
| Doubled |
: |
0 |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
| Reduced |
: |
0 |
2 |
4 |
6 |
8 |
1+0 |
1+2 |
1+4 |
1+6 |
1+8 |
| Map Point |
: |
0 |
2 |
4 |
6 |
8 |
1 |
3 |
5 |
7 |
9 |
And here is how we will obtain final character:
| Index |
: |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
| Reversed |
: |
1 |
7 |
8 |
9 |
3 |
7 |
2 |
9 |
9 |
7 |
| From table |
: |
2 |
|
7 |
|
6 |
|
4 |
|
9 |
|
Total: 67 |
| Unchanged |
: |
|
7 |
|
9 |
|
7 |
|
9 |
|
7 |
| Final Character |
: |
10 - ( 67 % 10 ) = 10 - 7 = |
3 |
So, we can release the account number as follows:<PHONE_NUMBER> 3
Alphanumeric Input
To make this more interesting, we can use alphanumeric input, which is a possible combination of 10 digits and 26 capital letters. It means that we will have to upgrade our map point to support letters. How we achieve that? We use each character's ASCII value to help us determine the character sequence. For example: 'A' has an ASCII value 65. To determine its sequence in our map, we need to substract 48.
For this example, 'A' is 7 since 65 - 48 = 17, 17 * 2 = 34 and 3 + 4 = 7. (Remember to only apply 'map point character lookup' to even-indexed characters. If 'A' is an odd-indexed character, its value is 17)
Alphanumeric Example
Alright, we have another example here: "139MT". Let's see how we can obtain the final character...
| Reversed |
: |
T |
M |
9 |
3 |
1 |
| Sum of digits |
: |
9 |
29 |
9 |
3 |
2 |
Total: 52 |
| Final Character |
: |
10 - ( 52 % 10 ) = 10 - 2 = |
8 |
Here is detail for how we do it:
- T: ASCII of 84, 84 - 48 = 36, 36 * 2 = 72, and 7 + 2 = 9
- M: ASCII of 77, and 77 - 48 = 29
- 9: from map point is, 9, or ASCII of 57, 57 - 48 = 9, 9 * 2 = 18, and 1 + 8 = 9
- 3: just 3, or ASCII of 51, and 51 - 48 = 3
- 1: from map point is, 2, or ASCII of 49, 49 - 48 = 1, and 1 * 2 = 2
- Sum of digits is 52, since 9 + 29 + 9 + 3 + 1 = 52
- Final character is 8, since 10 - ( 52 % 10 ) = 10 - 2 = 8
Now it's time to test your CheckSum module!


{% extends 'base.html' %} {% block css %} {% block head %}
WizCode is a Magical themed School focused for every student of Technical field. You can get Free Roadmaps for certain career fields & paths. Projects. Notes. Group Chat. Games. Challenges. Events. & a lot more. It's UnOfficial & a Student Initiative. Only for SSTC Bhilai Students. For getting Admission in WizCode School of Witchcraft & Wizardry, Register below.
* Register below and Enroll in WizEnroll : WizCode Wizard Enrollment Porgram. ( WizEnroll : Will be availale soon. Stay tuned. )
Register in WizEnrollSSTC Folks Discord Server is for students of SSTC Bhilai. You'll have your year groups, boys/girls only group, Campus-Talk Section, private groups, gaming groups, memes section, harry potter novel themed groups & several more.


Education
Ph.D. in Mechanical Engineering
Carnegien Mellon University
Pittsburgh, Pennsylvania - 2016 to Present
Advisor: Professor B. Reeja Jayan
Master in Automotive Engineering
Tsinghua University
Beijing, China-2013 to 2016
Advisor: Professor Jianbo Zhang
Dissertation: Study of Energy Type Lithium-Ion Cell Degradation Behavior under Multiple Stresses (Outstanding Thesis in Tsinghua University in 2016)
Bachelor in Automotive Engineering
Hefei University of Technology
Heifei, China - 2009 to 2013
Dissertation: The Effect of Degradation on the Thermal Safety Issues in Lithium-Ion Battery (Outstanding Thesis in Hefei University of Technology)
Graduation with Outstanding Award in Hefei University