Notebooks
Story: The song of the Mother Rhinoceros
The song of the Mother Rhinoceros
Title
The song of the Mother Rhinoceros
Collection
Summary
The song of the Mother Rhinoceros (not translated), accompanied by notes on movements performed in the singing and dancing of it.
Comments
1) p.7956v: |han≠kass'o heard this from his mother (|xabbi-an), who was told it by her mother, 2) p.7957v: the movements of the hands in the performance of the song, 3) See also The She-Rhinoceros and her elder daughter's suitors, 4) This story is found in Book VIII-22
Contributors
|han≠kass'o (Klein Jantje) (VIII)
Date
November 1878
Categories
Poetry, History (Early Race), Custom and daily life
Keywords
song (of the Mother Rhinoceros) , song (poetry) , song (movements performed while singing and dancing) , Rhinoceros (the song of the Mother-) , Rhinoceros (a person of the Early Race) , dance (movements performed when singing the song of the Mother Rhinoceros)
Story Pages
7957-7958


Interface AttributeSet
-
- All Known Implementing Classes:
AttributeSetImpl
public interface AttributeSet
The specification "Attribute Specification for the Swedish eID Framework" of the Swedish eID Framework defines a number of "Attribute Sets". This interface represents such an attribute set.- Author:
- Martin Lindström<EMAIL_ADDRESS>- See Also:
AttributeSetConstants
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description String
getFriendlyName()
Returns the friendly name for this attribute set.String
getIdentifier()
Each attribute set within the Swedish eID Framework is assigned an unique profile identifier.AttributeTemplate[]
getRecommendedAttributes()
Returns the recommended attributes for this attribute setAttributeTemplate[]
getRequiredAttributes()
Returns the required attributes for this attribute setString
getUri()
Each attribute set within the Swedish eID Framework is assigned an unique URI.void
validateAttributes(Assertion assertion, List<RequestedAttribute> explicitlyRequestedAttributes)
Validates the attributes received in the assertion against the attribute set.
-
-
-
Method Detail
-
getIdentifier
String getIdentifier()
Each attribute set within the Swedish eID Framework is assigned an unique profile identifier. This method returns this unique value.- Returns:
- the attribute set identifier
- See Also:
getUri()
-
getUri
String getUri()
Each attribute set within the Swedish eID Framework is assigned an unique URI. This method returns this value.- Returns:
- the attribute set URI
- See Also:
getIdentifier()
-
getFriendlyName
String getFriendlyName()
Returns the friendly name for this attribute set.- Returns:
- the attribute set friendly name
-
getRequiredAttributes
AttributeTemplate[] getRequiredAttributes()
Returns the required attributes for this attribute set- Returns:
- an array of required attributes for this set
-
getRecommendedAttributes
AttributeTemplate[] getRecommendedAttributes()
Returns the recommended attributes for this attribute set- Returns:
- an array of recommended attributes for this set
-
validateAttributes
void validateAttributes(Assertion assertion, List<RequestedAttribute> explicitlyRequestedAttributes) throws AttributesValidationException
Validates the attributes received in the assertion against the attribute set. The validation logic is as follows:- Make sure that all the attributes that the set states as "required" are included in the assertion.
- Make sure that all explicitly requested attributes, that has the attribute isRequired set, are included in the
assertion. These requested attributes are listed in the SP metadata record as
<md:RequestedAttribute>
elements.
- Parameters:
assertion
- the assertion containing the attributes to validateexplicitlyRequestedAttributes
- a list of explicitly requested attributes that the Service Provider has specified in its metadata record (using<md:RequestedAttribute>
elements). This parameter may benull
if no explicitly requested attributes exist- Throws:
AttributesValidationException
- for violations of the attribute set
-
-


module Validator
Overview
∠(・.-)―〉 →◎ validator
is a Crystal data validation module.
Very simple and efficient, all validations return true
or false
.
Also validator/check (not exposed by default) provides error message handling intended for the end user.
There are 2 main ways to use validator:
- As a simple validator to check rules (eg: email, url, min, max, presence, in, ...) which return a boolean.
- As a more advanced validation system which will check a series of rules and returns all validation errors encountered with custom or standard messages.
By default the validator module expose only Validator
and Valid
(alias) in the scope:
require "validator"
Valid.email<EMAIL_ADDRESS># => true
Valid.url? "https://github.com/Nicolab/crystal-validator" # => true
Valid.my_validator? "value to validate", "hello", 42 # => true
An (optional) expressive validation flavor, is
available as an alternative. \
Not exposed by default, it must be imported:
require "validator/is"
is :email<EMAIL_ADDRESS># => true
is :url?, "https://github.com/Nicolab/crystal-validator" # => true
is :my_validator?, "value to validate", "hello", 42 # => true
# raises an error if the email is not valid
is! :email?, "contact@@example..org" # => Validator::Error
is
is a macro, no overhead during the runtime 🚀
By the nature of the macros, you can't pass the validator name dynamically
with a variable like that is(validator_name, "my value to validate", arg)
.
But of course you can pass arguments with variables is(:validator_name?, arg1, arg2)
.
Check
Make a series of checks, with a customized error message for each case.
require "validator/check"
check = Check.new
check("email", "The email is required.", is :absence?, "email", user)
Custom validator
Just add your own method to register a custom validator or to overload an existing validator.
module Validator
# My custom validator
def self.my_validator?(value, arg : String, another_arg : Int32) : Bool
# write here the logic of your validator...
return true
end
end
# Call it
puts Valid.my_validator?("value to validate", "hello", 42) # => true
# or with the `is` flavor
puts is :my_validator?, "value to validate", "hello", 42 # => true
Check
is a simple and lightweight wrapper, let your imagination run wild to add your logic around it.
Using the custom validator with the validation rules:
require "validator/check"
class Article
# Mixin
Check.checkable
property title : String
property content : String
Check.rules(
content: {
# Now the custom validator is available
check: {
my_validator: {"My validator error message"},
between: {"The article content must be between 10 and 20 000 characters", 10, 20_000},
# ...
},
},
)
end
# Triggered with all data
v, article = Article.check(input_data)
# Triggered with one value
v, content = Article.check_content(input_data["content"]?)
Defined in:
validator.crvalidators/alpha_num.cr
validators/case_sensitive.cr
validators/comparisons.cr
validators/format.cr
validators/geo.cr
validators/presence.cr
validators/uri.cr
Constant Summary
-
VERSION =
{{ (`shards version \"/media/data/lab/dev/work/projects/nicolab/crystal/crystal-validator/src\"`).chomp.stringify.downcase }}
Class Method Summary
-
.absence?(key : String | Symbol, list : NamedTuple) : Bool
Validates the absence of the value.
-
.absence?(key : String | Symbol | Number, list : Hash) : Bool
Validates the absence of the value.
-
.accepted?(value : String) : Bool
Validates that the value
String
is the representation of an acceptance. -
.accepted?(value) : Bool
Validates that the value is the representation of an acceptance.
-
.ascii_only?(value : String) : Bool
Validates that the value
String
is comprised in its entirety by ASCII characters. -
.ascii_only?(values : Array(String)) : Bool
Validates that all the
String
in the valuesArray
are comprised in their entirety by ASCII characters. -
.base64?(value : String) : Bool
Validates that the value has the format base64.
-
.between?(value, min, max) : Bool
Validates that the value is between (inclusive) min and max.
-
.between?(value : String | Array, min : Int, max : Int) : Bool
Validates that the size of the value (
String
orArray
) is between (inclusive) min and max. - .domain?(value : String) : Bool
-
.email?(value : String) : Bool
Validates that the value is an email.
-
.empty?(value) : Bool
Validates that the value is empty.
-
.ends?(value : String, search : String) : Bool
Validates that the
String
value ends with search. -
.ends?(value : String, search : Char) : Bool
Validates that the
String
value ends with search. -
.ends?(value : String, search : Regex) : Bool
Validates that the
String
value ends with search. -
.eq?(value, another_value) : Bool
Validates that the value is equal to another_value.
-
.gt?(value, another_value) : Bool
Validates that the value is greater than another_value.
-
.gt?(value : String | Array, limit : Int) : Bool
Validates that the size of the value (
String
orArray
) is greater than limit number. -
.gte?(value, another_value) : Bool
Validates that the value is equal to or greater than another_value.
-
.gte?(value : String | Array, min : Int) : Bool
Validates that the size of the value (
String
orArray
) is greater than min number. -
.hex?(value : String) : Bool
Validates that the
String
value does denote a representation of a hexadecimal string. -
.hex?(value : Bytes) : Bool
Validates that the
Bytes
value does denote a representation of a hexadecimal slice of Bytes. -
.hex_color?(value : String) : Bool
Validates that the
String
value does denote a representation of a hexadecimal color. -
.in?(value, list : Array) : Bool
Validates that the (list) contains the value.
-
.in?(value : String, str : String) : Bool
Validates that the (str)
String
contains the value. -
.in?(key : Symbol | String, list : Hash) : Bool
Validates that the (list) contains the value.
-
.in?(key : Symbol | String, list : NamedTuple) : Bool
Validates that the (list) contains the value.
-
.in?(value, list : Range) : Bool
Validates that the (list) contains the value.
-
.in?(value, list : Tuple) : Bool
Validates that the (list) contains the value.
-
.ip?(value : String) : Bool
Validates that the value is an IP (IPv4 or IPv6).
-
.ipv4?(value : String) : Bool
Validates that the value is an IPv4.
-
.ipv6?(value : String) : Bool
Validates that the value is an IPv6.
-
.json?(value : String, strict : Bool = true) : Bool
Validates that the value represents a JSON string.
-
.jwt?(value : String) : Bool
Validates that the value is a JSON Web Token.
-
.lat?(value : String | Float) : Bool
Validates that the value is a valid format representation of a geographical latitude.
-
.lat_lng?(value : String) : Bool
Validates that the value is a valid format representation of a geographical position (given in latitude and longitude).
-
.lng?(value : String | Float) : Bool
Validates that the value is a valid format representation of a geographical longitude.
-
.lower?(value : String) : Bool
Validates that the value is in lower case.
-
.lt?(value : String | Array, limit : Int) : Bool
Validates that the size of the value (
String
orArray
) is lesser than limit number. -
.lt?(value, another_value) : Bool
Validates that the value is lesser than another_value.
-
.lte?(value : String | Array, max : Int) : Bool
Validates that the size of the value (
String
orArray
) is equal or lesser than max number. -
.lte?(value, another_value) : Bool
Validates that the value is equal to or lesser than another_value.
-
.mac_addr?(value : String, no_colons : Bool = false) : Bool
Validates that the value is a MAC address.
-
.magnet_uri?(value : String) : Bool
Validates that the value is a Magnet URI.
-
.match?(value : Number, pattern : Regex) : Bool
Validates that the value matches the pattern.
-
.match?(value : String, pattern : Regex) : Bool
Validates that the value matches the pattern.
-
.max?(value, max) : Bool
Validates that the value is equal to or lesser than max (inclusive).
-
.max?(value : String | Array, max : Int) : Bool
:ditto: > Based on the size of the
String
. -
.md5?(value : String) : Bool
Validates that the value has the format md5.
-
.min?(value, min) : Bool
Validates that the value is equal to or greater than min (inclusive).
-
.min?(value : String | Array, min : Int) : Bool
:ditto: > Based on the size of the
String
. -
.mongo_id?(value : Bytes) : Bool
Validates that the
Bytes
value does denote a representation of a MongoID slice of Bytes. -
.mongo_id?(value : String) : Bool
Validates that the
String
value does denote a representation of a MongoID string. -
.not_empty?(value) : Bool
Validates that the value is not empty.
-
.not_in?(value : String, str : String) : Bool
Validates that the (str)
String
does not contain the value. -
.not_in?(value, list : Array) : Bool
Validates that the (list) does not contain the value.
-
.not_in?(value, list : Tuple) : Bool
Validates that the (list) does not contain the value.
-
.not_in?(value, list : Range) : Bool
Validates that the (list) does not contain the value.
-
.not_in?(key : Symbol | String, list : NamedTuple) : Bool
Validates that the (list) does not contain the value.
-
.not_in?(key : Symbol | String, list : Hash) : Bool
Validates that the (list) does not contain the value.
-
.not_null?(value) : Bool
Validates that the value is not null (
nil
). -
.null?(value) : Bool
Validates that the value is null (
nil
). -
.number?(value : String) : Bool
Validates that the value is a numeric
String
representation. -
.port?(value : String = "0", min : String = "1", max : String = "65535") : Bool
Validates that the value is in a valid port range, between (inclusive) 1 / min and 65535 / max.
-
.port?(value = 0, min = 1, max = 65535) : Bool
Validates that the value is in a valid port range, between (inclusive) 1 / min and 65535 / max.
-
.presence?(key : String | Symbol, list : NamedTuple) : Bool
Validates the presence of the value.
-
.presence?(key : String | Symbol | Number, list : Hash) : Bool
Validates the presence of the value.
-
.refused?(value) : Bool
Returns
true
if the value is the representation of a refusal. -
.refused?(value : String) : Bool
Validates that the value
String
is the representation of a refusal. -
.size?(value, size : Array(String))
Validates that the value is in the size array.
-
.size?(value, size : Array(Int))
Validates that the value is in the size array.
-
.size?(value, size : Range)
Validates that the value is in the size range.
-
.size?(value, size : String)
Validates that the value is equal to the size.
-
.size?(value, size : Int)
Validates that the value is equal to the size.
-
.slug?(value : String, min = 1, max = 100) : Bool
Validates that the value is a slug.
-
.starts?(value : String, search : Char) : Bool
Validates that the
String
value starts with search. -
.starts?(value : String, search : Regex) : Bool
Validates that the
String
value starts with search. -
.starts?(value : String, search : String) : Bool
Validates that the
String
value starts with search. -
.time?(value : String) : Bool
Validates that the value is a time
String
representation. -
.upper?(value : String) : Bool
Validates that the value is in upper case.
-
.url?(value : String) : Bool
Validates that the value is a URL.
-
.uuid?(value : String, version = 0) : Bool
Validates that the value is a UUID Versions: 0 (all), 3, 4 and 5.
Class Method Detail
Validates that the value String
is the representation of an acceptance.
One of: "yes", "y", "on", "o", "ok", "1", "true"
- See also
#refused?
.
Validates that the value is the representation of an acceptance.
One of: "yes", "y", "on", "o", "ok", "1", "true"
value must implements #to_s method.
- See also
#refused?
.
Validates that the value String
is comprised in its entirety by ASCII characters.
Validates that all the String
in the values Array
are comprised in their entirety by ASCII characters.
Validates that the value is between (inclusive) min and max.
Validates that the size of the value (String
or Array
) is between
(inclusive) min and max.
- See also
#size?
.
Validates that the value is an email. This method is stricter than the standard allows. It is subjectively based on the common addresses of organisations (@enterprise.ltd, ...) and mail services suck as Gmail, Hotmail, Yahoo !, ...
Validates that the size of the value (String
or Array
)
is greater than limit number.
Validates that the value is equal to or greater than another_value.
Similar to #min
.
Validates that the size of the value (String
or Array
)
is greater than min number.
Similar to #min
.
Validates that the String
value does denote
a representation of a hexadecimal string.
Validates that the Bytes
value does denote
a representation of a hexadecimal slice of Bytes.
Validates that the String
value does denote
a representation of a hexadecimal color.
Valid.hex_color? "#fff" => true
Valid.hex_color? "#ffffff" => true
Validates that the (list) contains the value.
- See also
#presence?
. - See also
#not_in?
. - See also
#not_empty?
.
Validates that the (str) String
contains the value.
- See also
#presence?
. - See also
#not_in?
. - See also
#not_empty?
.
Validates that the (list) contains the value.
- See also
#presence?
. - See also
#not_in?
. - See also
#not_empty?
.
Validates that the (list) contains the value.
- See also
#presence?
. - See also
#not_in?
. - See also
#not_empty?
.
Validates that the (list) contains the value.
- See also
#presence?
. - See also
#not_in?
. - See also
#not_empty?
.
Validates that the (list) contains the value.
- See also
#presence?
. - See also
#not_in?
. - See also
#not_empty?
.
Validates that the value represents a JSON string.
strict to true
(default) to try to parse the JSON,
returns false
if the parsing fails.
If strict is false
, only the first char and the last char are checked.
Validates that the value is a valid format representation of a geographical latitude.
Validates that the value is a valid format representation of a geographical position (given in latitude and longitude).
Validates that the value is a valid format representation of a geographical longitude.
Validates that the size of the value (String
or Array
)
is lesser than limit number.
Validates that the size of the value (String
or Array
)
is equal or lesser than max number.
Similar to #max
.
Validates that the value is equal to or lesser than another_value.
Similar to #max
.
Validates that the value is a MAC address.
Validates that the value matches the pattern.
Validates that the value matches the pattern.
Validates that the value is equal to or lesser than max (inclusive).
Similar to #lte
.
Validates that the value is equal to or greater than min (inclusive).
Similar to #gte
.
Validates that the Bytes
value does denote
a representation of a MongoID slice of Bytes.
Validates that the String
value does denote
a representation of a MongoID string.
Validates that the value is not empty.
- See also
#presence?
. - See also
#in?
.
Validates that the (str) String
does not contain the value.
Validates that the (list) does not contain the value.
Validates that the (list) does not contain the value.
Validates that the (list) does not contain the value.
Validates that the (list) does not contain the value.
Validates that the (list) does not contain the value.
Validates that the value is not null (nil
).
- See also
#null?
. - See also
#not_empty?
.
Validates that the value is null (nil
).
- See also
#empty?
. - See also
#not_null?
.
Validates that the value is a numeric String
representation.
Validates that the value is in a valid port range, between (inclusive) 1 / min and 65535 / max.
Validates that the value is in a valid port range, between (inclusive) 1 / min and 65535 / max.
Validates the presence of the value.
- See also
#in?
. - See also
#not_empty?
.
Validates the presence of the value.
- See also
#in?
. - See also
#not_empty?
.
Returns true
if the value is the representation of a refusal.
One of: "no", "n", "off", "0", "false"
value must implements #to_s method.
- See also
#accepted?
.
Validates that the value String
is the representation of a refusal.
One of: "no", "n", "off", "0", "false"
- See also
#accepted?
.
Validates that the value is in the size array.
- See also
#between?
.
Validates that the value is in the size array.
- See also
#between?
.
Validates that the value is in the size range.
- See also
#between?
.
Validates that the value is a UUID Versions: 0 (all), 3, 4 and 5. version by default is 0 (all).


{% extends "base.html" %} {% block page_title %}Pre-school Programme{% endblock %} {% block content %}
This refers to:
Number of centres across the geography
Number of children across the geography
For example, in Bangalore, pre-school centres are being run by:
The state-run ICDS which runs centres called anganwadis. There are 1552 anganwadis. Anganwadis are also responsible for health and nutrition but our initiative is limited to education.
Independent balwadis initiated by Akshara Foundation. In December 2009. there were about 110 centres. This is a self- sustaining model and is provided with training, TLM and financial assistance for the first six months; beyond that period, assistance in the form of follow up training is provided.
To develop high quality content and curriculum and prepare best in class Teaching Learning Material (TLM). The content, curriculum and TLM will be peer reviewed to ensure that this is of the highest quality. Metrics are mainly qualitative and based on:
Documented feedback from peers and subject matter experts (SMEs) Feedback from teachers who manage anganwadis and independent balwadis Reactions from children
The TLM for the programme was developed using the help of preschool Subject Matter Experts (SME’s). The TLM was finalized in consultation with the Government. The kits include the following material:
Rope
Big ball
Peg Board
Seriation rings
Construction squares
Lacing Board
Number Blocks
Vegetable/Fruit basket
Colours and Shapes Kit
Alphabet Charts (Kannada and English).
Number Charts.
A set of readers
Conversation cards
Workbook
Flash cards – Kannada and English alphabet, numbers
Alphabet strips, Number strips
Counting Board
Slates/Chalk
Book of rhymes (for teacher)
Drawing Book
Paint Box
Crayons
Pencils
For pre-school teachers and monitoring of activities.
Assessments are an essential part of tracking the effectiveness of the initiative and this has to be done in a non-intrusive manner. Each assessment covers aspects of child development like motor skills; cognitive skills; social and emotional skills; language skills. Assessment formats have been designed. Progress of every child will be measured - reports will however, be aggregated and distributed. Performance benchmarks by centre; by area; by project and each compared to district averages will be tracked and made available. Children have been assessed on 7 sets of competencies using 56 indicators:
General Awareness
Gross Motor Development
Fine Motor Development
Language Development
Intellectual Development
Social and Emotional Development
Pre-academic Skills


Total value of Ukraine's 100 most expensive bands estimated at US$6.2 bln in 2019 – NV
The pharmaceuticals industry leads the top five sectors in terms of growth of their brands' value.
Ukraine's Novoye Vremya (NV) weekly has released its annual rating of the country's 100 most expensive brands.
The top three are the Morshynska natural table water brand (US$550 million, a 3.2% up from 2018), the Nova Poshta courier service (US$310 million, 8.8% up), and the Rozetka online retail service (US$302 million, 23.8% up), according to NV No. 43 dated November 21, 2019.
They are followed by PrivatBank (US$299 million, 26.2% up), the Roshen confectionery producer (US$276 million, 34% up), and the Sandora juice producer (US$252 million, 9.1% up).
The authors of the rating note that the total value of all 100 brands in 2019 increased by 4.7%, to US$6.2 billion.
The pharmaceuticals industry in 2019 leads the top five sectors in terms of growth of their brands' value by a significant margin. For pharmaceuticals brands, the growth rate was 203%, while the closest sectors in the rating, financial services and the dairy industry, grew by 33% and 26%, respectively. The most expensive brand in the pharmaceuticals industry is Darnitsa.
According to NV, the value of each brand was estimated by MPP Consulting. The evaluation methodology is based on the financial results of brand owners. Other factors were also taken into account, among them are geographic coverage of sales, technological component, manufactured products and investment attractiveness of a particular sector.


The JabaDot program has been retired, and is no longer included in this collection. The code is no longer available; it was not well structured, and had become unmaintainable. For a better replacement, check out the Java Lobby's JLCP, at http://www.javalobby.org/.
So then, what's this? Some of these files were used as examples in the Java Cookbook, and I decided to keep them. What's here is just enough to make the files that are used in the book compile!


---
layout: post
title: Priorities?
date: '2007-05-01T22:03:00.000-05:00'
author: Jabell
tags:
modified_time: '2007-06-09T22:04:36.318-05:00'
blogger_id: tag:blogger.com,1999:blog-19739956.post-4820669853531593406
blogger_orig_url: http://theabellsix.blogspot.com/2007/05/if-affections-of-soul-are-not-supremely.html
---
"If the affections of the soul are not supremely fixed on God, and if our dominant desire and primary goal is not to possess God's favor and to promote His glory, then we are traitors in revolt against our lawful Sovereign....Whether we are the slaves of avarice, sensuality, amusement, sloth, or the devotees of ambition, taste, or fashion, we alike estrange ourselves from the dominion of our rightful Sovereign."
---William Wilberforce
(HT: Breakpoint)


This project contains the source code for team atofeedback for the govhack 2018 competition.
Govhack page: https://2018.hackerspace.govhack.org/team_management/teams/27
Github entry: https://github.com/munisravan/atofeedback
We are team atofeedback and for our govhack entry we have developed a customer service tool to help the ATO surface information and provide this to the customer.
This year are trying to tackle the The Friendly ATO challenge and the Bounty: Tax Help Centers.
As the information is entered the system starts to build a profile of the user and use this to surface questions and answers that similar people have asked before .
This will create a predictive list of insights based on previous interactions with the ATO.
Based on the job, age, postcode and other information we can fit you in to a profile.
Previous people that fit your profile asked these questions next
Offer suggested answers.
Positive effects for the community:
More efficient use of support worker time, increasing customer throughput and satisfaction.
More interactive, personalized answers to questions will result in higher customer satisfaction due to a more organic conversation.
Reduction in return calls due to ‘insights’ surfacing multiple questions in the same call.
The ability to predict what questions the customer may have allows the support worker to prepare in advance, providing more accurate answers and reducing the amount of time a customer is put on hold.
Data collected from this service can be analyzed to determine what information needs to be created or updated, as well as highlight areas where additional training or marketing might be useful.
Information supplied by user and related data:
Occupation
Occupation type
Location/Postcode (Specified or via location services)
Average salary
Socioeconomic advantage/disadvantage
Index of education and occupation
Index of economic resources
Age
Age range/group
There are probably more identifier factors that can be derived from the supplied information, but from a quick look at the data and an eyeball at what data would be relevant, it’s been limited to these few.
A more thorough investigation by an experienced data analytics expert would more accurately identify important data.
ATO doesn’t currently have any tags/metadata for information, e.g. ‘Deductions’, or ‘Low-income’. If they did have this information it would be possible to group questions/answers based on the metadata.
Justification:
There are similar existing applications of AI, supplying targeted information based on profiling a user, used in advertising. EBay and Amazon have targeted advertising and recommended items. Google advertising has targeted advertisements. If it’s possible to use this technology to supply users with targeted advertisements, we can also leverage it to supply users with targeted useful information.
Just as targeted advertisement can lead users to products they weren’t aware they wanted/needed at that point in time, we can do the same with useful information, reducing the amount of return calls required and increasing the overall usefulness of each call.


Turkish TV serials captivate Pakistani viewers
by Anadolu AgencyISLAMABAD: Turkish television drama series being aired in Pakistan has led to an increased interest among Pakistanis to visit Turkey and learn Turkish.
Many TV channels in Pakistan broadcast Turkish drama series and movies, especially the Urdu 1 channel, which shows four Turkish serials a day dubbed in Urdu.
“Viewers are impressed with Turkish-made serials, and that increases their interest in Turkey. Many Pakistanis come here to our travel agency to visit Turkey after watching them,” Engin Tokul, manager of Sefer Turk travel agency, told Anadolu Agency.
Tokul said that since 2013, there has been a significant increase in the number of trips to Turkey from Pakistan.
In 2013, Pakistani TV channels screened 11 Turkish-made TV serials and two movies, with 34,000 tourists visiting Turkey that year. The number jumped to 113,000 in 2018.
Tokul thinks the number will increase to over 120,000 by the end of this year.
“Many travelers talk about Turkish serials when they come to the office and ask about the places where Turkish serials have been filmed,” he added.
Ulas Ertas, director of the Lahore Turkish Cultural Center at the Yunus Emre Institute (YEE), said almost 80% of those who want to learn Turkish at the institute are those who are interested in Turkish TV series and films.
The National University of Modern Languages in the capital, Islamabad, has also taught the Turkish language since 1972, said Ertas.
“There is a cooperation protocol between [state-run] Pakistan Television (PTV) and the Turkish Radio and Television Corporation (TRT) and an initiative with the Turkish embassy and Yunus Emre Institute. We would like to add Turkish cartoons to PTV’s children’s channel.”
Tweet from President Erdogan spurs interest in Turkish serial
Since Turkish serials became popular in the country, some Pakistanis have also been trying to learn Turkish on their own.
Sena Nur, a student at the International Islamic University in Islamabad, told Anadolu Agency she has been learning Turkish for four years after watching the Turkish serial Dirilis Ertugrul on TRT1.
“I first heard about Dirilis Ertugrul from a tweet by Turkish President Recep Tayyip Erdogan. I have been interested in Turkish history since my childhood and started learning Turkish because I couldn’t understand what I was watching. I started to learn through the internet with basic educational videos,” said Nur.
Nur knows four languages, including Turkish and Arabic, and practices with English-speaking Turks who follow Erdogan.
So far, she has watched the Dirilis Ertugrul, Payitaht Abdulhamid and Calikusu serials.


 We both taught at the same school and I had given her the chance to take up this prized position in after-school activities. Of all the pieces involved, she stopped at the part about procurring the pool.
She stopped, and for months the school didn't have any swimming lessons, but she wanted to be the swimming instructor. So I tried to encouraged her, give her space to work it out, and finally I went to the pool the school had used before and asked the owner over coffee, got permission, and told her about it. It was 6 months into the school year and we lived in a country where people drowning was a weekly event, ie, kids needed to learn to swim as access to water came easily but access to a lifeguard didn't happen.
She was not happy I procured the pool and didn't want to participate in the lessons. I ended up teaching the classes and the kids got the swimming instruction needed.
The source of the conflict was my frustration at her lack initiative to get the lessons started by inquiring about the pool. She was probably afraid of the task and any potential rejection which comes from asking for a favor. In talking with her about getting the pool, I think she wanted help getting the pool, for everything to be lined up, and felt I usurped her and her position as swimming instructor.
It was frustrating to have handed the role to her and then watch the class not occur. I had wanted to do the classes but thought she needed the opportunity more. The students wanted/needed the classes so it was a losing situation. While I resolved it by getting the classes going, I think handing the opportunity to her in the first place was a mistake.
I felt bad about the situation between us, though not responsible. It's hard to have a difficult relationship with a co-worker, but it takes two to make a relationship work. Well, at least 1.3 to make it work.


Guest access
- Edit /etc/lightdm/lightdm.conf
- Make sure the file has the following content:
[SeatDefaults]
greeter-session=unity-greeter
allow-guest=false
- Note: Any mistakes will break the GUI
- Save the file
- sudo systemctl restart lightdm
- The GUI should restart and guest access should be disabled.


The input mechanism is different depending on the model of TV.
-The 2015 Remote has no touchpad. It has airmouse capabilities as well as a d-pad
-The 2016 TV has an IR remote and supports gamepads
You can use SamsungTV.airMouseConnected to determine if you have an Air Remote or Touch Remote connected.
If an Air Remote is connected, you can use the Gyroscope data.
You select one of three input modes. Each input mode maps to the controller type.
SamsungTV.touchPadMode = SamsungTV.TouchPadMode.Dpad;
Touch Remote:
Air Remote:
if (Input.GetKeyDown (KeyCode.RightArrow))
{
// Right DPAD event
}
if (Input.GetKeyDown (KeyCode.Return))
{
// touchpad clicked
}
SamsungTV.touchPadMode = SamsungTV.TouchPadMode.Joystick;
Touch Remote and Air Remote:
// Set up axis Touchpad x in input manager as joystick 2 x axis.
Input.GetAxis ("Touchpad x");
// joystick 2 y axis
Input.GetAxis ("Touchpad y");
if (Input.GetKeyDown (KeyCode.Return))
{
// touchpad clicked
}
SamsungTV.touchPadMode = SamsungTV.TouchPadMode.Mouse;
Touch Remote:
Air Remote:
// Sets the cursor image (cursor is a Texture2D)
Cursor.SetCursor (cursor, Vector2.zero, CursorMode.Auto);
// Position of the mouse pointer
Vector3 pos = Input.mousePosition;
if (Input.GetMouseButtonDown (0))
{
// touchpad clicked
}
If the user presses the RETURN / EXIT key, KeyCode.Escape button is pressed and can be caught by your game. If desired, the game can exit by calling Application.Quit().
A user can directly exit a game by long pressing on the RETURN / EXIT key of the remote. If this occurs, the OnApplicationQuit message is sent to user scripts.
Certain TV models have a camera which can detect hand positions. It is recommended to not use this input method since not all TV models support it.
SamsungTV.gestureMode can be set to one of the following:
| SamsungTV.GestureMode.Off | Camera data is ignored (default) |
| SamsungTV.GestureMode.Mouse | One hand controls a mouse pointer. Grabbing clicks mouse 0. |
| SamsungTV.GestureMode.Joystick | Two hands control two joystick axes. |
| - Joystick 2 Axis 2: hand 1 x axis | |
| - Joystick 2 Axis 3: hand 1 y axis | |
| - Joystick 2 Axis 4: hand 2 x axis | |
| - Joystick 2 Axis 5: hand 2 y axis | |
| Grabbing activates the following joystick buttons: | |
| - Joystick 2 Button 0: hand 1 grab | |
| - Joystick 2 Button 1: hand 2 grab | |
| SamsungTV.gestureWorking | Returns true if the camera currently sees at least 1 hand. |
You can use gamepad input as you would on any other platform. Here is the mapping for Samsung TV:
| Buttons (Key or Mouse Button) | Axis (Joystick Axis) |
|---|---|
| joystick button 0 = A | X axis = Left analog X |
| joystick button 1 = B | Y axis = Left analog Y |
| joystick button 2 = X | 3rd axis = LT (–1 to 1) |
| joystick button 3 = Y | 4th axis = RT (–1 to 1) |
| joystick button 4 = LB | 5th axis = Right analog X |
| joystick button 5 = RB | 6th axis = Right analog Y |
| joystick button 6 = Back | 7th axis = Dpad X |
| joystick button 7 = Start | 8th axis = Dpad Y |
| joystick button 8 = Left analog press | |
| joystick button 9 = Right analog press |
The gamepad can also be put into mouse pointer mode where the analog stick controls the mouse position and button 0 clicks the mouse 0.
SamsungTV.gamePadMode can be one of the following:
| SamsungTV.GamePadMode.Default | Standard joystick input |
| SamsungTV.GamePadMode.Mouse | Mouse style input: gamepad analog stick controls a mouse cursor, button 0 clicks mouse 0. |


Fullscreen API Example
Turn on Full Screen
Turn off Full Screen
Back to the Article
|
Fork me on Github


Use this control to select the Variable you’re interested in.
The Map is fully interactive - you can pan, zoom, and select neighborhoods by mouse or touch.
The Search control lets you search for almost anything. Type in a neighborhood number, the first part of an address, or a place name, and select a match using your mouse, keyboard, or by touch.
Ex: Try typing 700 n
The Year controls let you control the year being shown on the map and in the Bar Chart.
Use these buttons to toggle the base map, clear any selected neighborhoods, or create a report if you have one or more neighborhoods selected.
The Value of each variable is shown here – for the area you’ve selected on the map, and for the county as a whole.
The Bar Chart acts as a legend for the map and also shows the density of the data - the taller the bar, the more neighborhoods are in that range. The dashed line represents the median value.
The Line Chart, if available, shows the trend of the variable over time.
Here you’ll find more information about each variable, including what it means and how you can use it, where the data come from, and additional resources for you to learn more or take action.


Test defect ticket #2530026
The tr node child of the thead node does not receive a valid id attribute.


mBaaS search
name:
level:
Fetch All
Name
Level <
Level
Level >
attack <
attack
attack >
defence <
defence
defence >
initializing...


Creating the site's index with a custom font
30th March, 2017
Lira will have multiple apps to compartmentalize different types of functionality. We will place general content that doesn't fit well anywhere in the
sitewide
app.
~/lira $ python manage.py startapp sitewide
After creating an app, we need to install it in the project's
settings.py
in the
lira/lira
folder. Add the app's
AppConfig
to
INSTALLED_APPS
. To explicitly indicate the
lira
folder inside the base
lira
folder, my file paths will be relative to my home directory (as in the shell prompts).
# lira/lira/settings.py
# ... lines skipped ...
# Application definition
INSTALLED_APPS = [
'sitewide.apps.SitewideConfig',
'django.contrib.admin',
'django.contrib.auth',
We will place our custom font, CSS and JavaScript content in a special
static
folder. In the base
lira
folder, create a
static
folder:
~/lira $ mkdir static
~/lira $ cd static
~/lira/static $ mkdir css
For now, we will serve the
static
folder in development mode. At the end of
lira/lira/settings.py
, add the static folder definitions:
# lira/lira/settings.py
# ... go to the end of the file
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
Once the settings for static files are in place, we need to update
lira/lira/urls.py
:
# lira/lira/urls.py
# ... default documentation ...
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
By default,
STATIC_ROOT
is
None
, and is used as the path to the directory where
collectstatic
places static files for deployment.
Now, let's create a CSS stylesheet defining the custom font:
/* lira/static/css/fonts.css */
@font-face {
font-family: 'Yesteryear';
src: url('Yesteryear-Regular.ttf') format('truetype');
font-style: normal;
}
.yesteryear {
font-family: 'Yesteryear';
}
HTML templates are conventionally placed in a
templates/APP_NAME
folder. Let's create this folder for the
sitewide
app:
~/lira $ cd sitewide
~/lira/sitewide $ mkdir templates
~/lira/sitewide $ cd templates
~/lira/sitewide/templates $ mkdir sitewide
In the newly created folder, create a
base.html
file. We define blocks in this base template and later, other templates that extend it will fill in the blocks.

{% load static %}
<!DOCTYPE html>

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"%gt;
<title>Lira - {% block title %}{% endblock %}</title>
<link rel="stylesheet" href="{% static "css/fonts.css" %}">

{% block header %}{% endblock %}
{% block content %}{% endblock %}
{% block footer %}{% endblock %}

Our
index.html
will extend the base template:

{% extends 'sitewide/base.html' %}
{% block title %}Home{% endblock %}
{% block content %}

Welcome to Lira

{% endblock %}
The template will be rendered through a view:
# lira/sitewide/views.py
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, 'sitewide/index.html')
Create a
urls.py
file to define a pattern that will lead to the index view:
# lira/sitewide/urls.py
from django.conf.urls import url
from . import views
app_name = 'sitewide'
urlpatterns = [
url(r'^$', views.index, name='index'),
]
Finally, in
lira/lira/urls.py
we need to include the
sitewide
URLs:
# lira/lira/urls.py
# ... default documentation ...
from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('sitewide.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)


Cafe au Life
(Gosper's Glider Gun. This was the first gun discovered, and proved that Life patterns can grow indefinitely.)
Cafe au Life is an implementation of John Conway's Game of Life cellular automata written in CoffeeScript. Cafe au Life runs on Node.js, it is not designed to run as an interactive program in a browser window.
If it doesn't produce an animated display, why should I care about it?
Cafe au Life implements Bill Gosper's HashLife algorithm. HashLife exploits regularity, so for certain life patterns, it runs at super-linear speed. As noted elsewhere, if you set up Gosper's Glider Gun when the Earth was first formed 4.5 billion years ago, and ran one generation per second, in the 143.4 quadrillion seconds that have elapsed since then, the pattern would grow to 23,900,000,000,000,036 live cells. Cafe au Life takes just under two seconds to boot up, and another second to calculate the state of the pattern after 143.4 quadrillion generations.
If you haven't seen how the algorithm works, you owe it to yourself to read the annotated source code.
How can I try it?
The easiest way to try Cafe au Life is to install CoffeeScript and node.js, clone the repository, then use the REPL from the command line:
raganwald@Reginald-Braithwaites-iMac[cafeaulife (master)⚡] coffee
coffee> Life = require('./lib/cafeaulife').set_universe_rules()
coffee> gun = require('./lib/menagerie').gospers_glider_gun
coffee> gun.future_at_time(143400000000000000).population
23900000000000036
coffee>
Have fun!
Is it any good?
Yes.
Neat algorithm, but why does Conway's Game of Life matter?
One of the most important questions we ask ourselves is whether a non-trivial machine can be constructed that reproduces itself. If the answer is "no," then we can reason that for any machine, there must be a factory or creator outside of the machine. That goes for humans and all life. If the answer is "yes," then we can reason that it is not necessary for there to be a factory or creator for every machine, including ourselves.
Cellular automata patterns are a kind of machine, with properties close enough to physical machines that it is very easy to reason by correspondence: If such-and-such is possible for a cellular automaton, it must be possible for a physical machine, therefore research into the capabilities of cellular automata is an important part of research into the capabilities of machines, including our bodies and our brains.
Life theorists have proven all sorts of things about what ought to be possible with Life patterns. Life experimenters have taken it to the next level and have built Universal Turing Machines, self-replicating machines, and all sorts of things that demonstrate the universality of Conway's Game of Life. Implementations that can handle very large and/or very long-running Life patterns are an important tool for experimentation.
If you'd like to read more, the most approachable book on the subject is William Poundstone's brilliant The Recursive Universe. Beg, borrow, or steal a copy, new or used. Get it in hardcover while you still can.
What should I read next?
Who's responsible for this?
When he's not shipping Ruby, Javascript and Java applications scaling out to millions of users, Reg "Raganwald" Braithwaite has authored libraries for Javascript and Ruby programming such as Katy, JQuery Combinators, YouAreDaChef, andand, and more you can find on Github.
He has written three books:
- Kestrels, Quirky Birds, and Hopeless Egocentricity: Raganwald's collected adventures in Combinatory Logic and Ruby Meta-Programming
- What I've Learned From Failure: A quarter-century of experience shipping software, distilled into fixnum bittersweet essays
- How to Do What You Love & Earn What You’re Worth as a Programmer
His hands-on coding blog Homoiconic frequently lights up the Hackerverse, and he also writes about project management and other subjects.
(c) 2012 Reg Braithwaite (@raganwald)
Cafe au Life is freely distributable under the terms of the MIT license.
The annotated source code was generated directly from the original source using Docco.


--- layout: post title: 'Maze Generation: Binary Tree algorithm' post_id: 11 categories: - under the hood date: 2011-02-01 07:47:00.000000000 -07:00 author: Jamis permalink: 2011/2/1/maze-generation-binary-tree-algorithm.html summary: > A particularly simple and fast algorithm for generating random mazes is presented, with a discussion of its weaknesses. Animation and sample code is provided ---
This next algorithm is crazy, crazy simple. It also is the only one of the algorithms I’ve covered with the ability to generate a perfect maze without keeping any state at all. It can build the entire maze by looking at only a single cell at a time.
Here’s how it works: for every cell in the grid, randomly carve a passage either north, or west.
That’s it. You can mix it up if you want, and choose between other diagonal sets: north/east, south/west, or south/east, but whichever diagonal set you select must be used consistently throughout the entire maze.
There’s another nifty attribute of this algorithm: if you can guarantee that for any given cell, you will always carve a particular direction, then you never need to keep any of the maze in memory. When you need to display some portion of the maze, you just “rebuild” it, trivially. This means you could create infinitely large mazes in very little memory.
It’s not all roses, though. A side-effect of this algorithm is that it has a strong diagonal bias. Also, two of the four sides of the maze will be spanned by a single corridor. But for some applications, that might be acceptable.
It’s almost too simple to bother, but let’s take a quick look at the algorithm in practice.
I’ll use a trivial 3×3 grid.
Because this algorithm doesn’t need to consider the state of any adjacent cells, we can start from and proceed to anywhere we want; let’s begin with the bottom-right corner:
Then, we randomly carve a passage either north, or west. Let’s choose…north!
Let’s work through the rest of that bottom row similarly, carving west from the middle cell, and north from the south-west corner:
Note that for the bottom-left (south-west) corner, “west” was not an option, since it would take us outside the bounds of the grid. Thus, our hand was forced and we had to choose north. But we’re okay with that, right?
Let’s move on and process the second row:
Again, we were limited in our choices in the western-most cell: all we could choose was north, so we did.
Now, look what happens for the final row:
Because we can’t go north in any of those, we have to choose west. And for the north-west corner, we can’t choose either north, or west! So we simply mark it visited and trust that the algorithm will connect it by other means.
Notice the corridors spanning the north and west boundaries. This is one of the side-effects I mentioned. Also, while it’s not so visible in a maze this size, the maze has a strong north-west bias; there are no dead-ends (and never will be any dead-ends) facing either north or west. Thus, if you start at the south-east corner, getting to the north-west corner is trivial—you’ll never hit a dead-end. (Going the other direction is harder; it’s like carving wood with the grain, versus against the grain.)
Play around a bit with the following demo to see what I mean. You can also select a different bias here, to see how that changes things.
Bias:
The implementation of this algorithm is as trivially simple as you might think. You only need to cover every cell of the grid. One way to do that is to simply iterate over every row and column, in order:
1 2 3 4 5 |
height.times do |y| width.times do |x| # ... end end |
Within the loops, you determine which directions are valid:
1 2 3 |
dirs = [] dirs << N if y > 0 dirs << W if x > 0 |
And then you randomly select one:
1 2 3 |
if (dir = dirs[rand(dirs.length)]) # ... end |
Once you’ve selected your direction, you just carve a passage between the two cells:
1 2 3 |
nx, ny = x + DX[dir], y + DY[dir] grid[y][x] |= dir grid[ny][nx] |= OPPOSITE[dir] |
And you’re done!
The sharp-eyed among you might have noticed the connection between the name of the algorithm, and its output. Yes, the “Binary Tree” algorithm creates a random binary tree! Imagine that.
Every cell has one connection toward the “root” (in the direction of the bias, e.g. north or west), and zero, one, or two connections in the other direction (south or east). The root is, in this case, the north-west corner. If you could reach in and pluck up the north-west corner, giving it a good tug, it would uproot its children, and their children, and their children, until you’re left with a binary tree dangling downward like the knobbly roots of some tenacious weed.
Now, there are obviously other ways to build mazes based on binary trees. A particularly fun one is to make a variation of the Growing Tree algorithm: select a root node anywhere in the grid and add it to the list. Then, while the list is not empty, you remove a node from the list, add up to two passages leading away from it, and add those neighbors to the list. (I call this the “Growing Binary Tree algorithm”.) You’ll end up with another random binary tree, but without the obvious blemishes of the Binary Tree algorithm.
Nevertheless, the Binary Tree algorithm is fun to implement, and can be perfectly suitable for some applications (for instance, if you’re inside the maze, the biases will be less obvious). And if you need stupendously enormous mazes that can’t exist entirely in memory, why, this is an excellent algorithm as well.
My full implementation is below. Give it a try yourself, and share what you come up with!
Enjoy!


More often you want different actions for different urls. YeahFW supports several ways to achieve that. Routes defined in this tutorial look pretty simple, but in actuality they represent regex, which is then matched with HTTP request path. You can use string literals, but beware of the regex special characters. If you want to match them, they need to be escaped with a backslash (\).
Simple routes use closure to execute an action. Examples of simple routes:
// web/index.php
// Standard init goes here...
/**
* Syntax: $app->route$Method$('path', function() {
* // Execute your code here ...
* });
*/
$app->routeGet('/get', function() {
echo "GET method used";
});
$app->routePost('/post', function() {
echo "POST method used";
});
$app->routePut('/put', function() {
echo "PUT method used";
});
$app->routeDelete('/delete', function() {
echo "DELETE method used";
});
$app->execute();
You can attach these routes directly to an application instance. These routes match url with one of the standard HTTP methods. If a match is found then the corresponding closure is executed. You can consider these routes as simplified REST routes, because they are. App:routeGet(), App:routePost(), App:routePut(), App:routeDelete() methods are just a simplified wrapper for configuring routes as demonstrated in the following section.
YeahFW also comes with what you can recognize as a standard routing flavour. These can get quite complex, as they support multitude of options. They require overriding App::loadRoutes() method. Sample of a route configuration for posts path
// blog/src/Blog.php
class Blog extends \Yeah\Fw\Application\App {
public function loadRoutes() {
// Standard route with Yeah\Fw\Routing\RouteRequest\RouteRequestHandler
\Yeah\Fw\Routing\Router::add('/posts', array(
'route_request_handler' => 'Yeah\Fw\Routing\RouteRequest\RouteRequestHandler',
'controller' => 'Controllers\PostsController',
'action' => 'index',
'secure' => false,
'prefix' => '/api'
));
// Restful route with Yeah\Fw\Routing\RouteRequest\SimpleRouteRequestHandler
\Yeah\Fw\Routing\Router::add($url, array(
'route_request_handler' => 'Yeah\Fw\Routing\RouteRequest\SimpleRouteRequestHandler',
'secure' => $secure,
'restful' => array('GET' => (
array(
'method' => 'get',
'cache' => array('is_cacheable' => false, 'cache_duration' => 1440),
'secure' => false
)
)
)));
// Restful route with \Yeah\Fw\Routing\RestRouteRequestHandler
\Yeah\Fw\Routing\Router::add('/posts/(.*)', array(
'controller' => 'post',
'route_request_handler' => '\Yeah\Fw\Routing\RestRouteRequestHandler',
'secure' => false,
'restful' => array(
'GET' => array(
'secure' => false,
'action' => 'get'
)
)
));
}
}
What's up with these different route types? And what are those handlers? Well, they basically do the same stuff, it's just the way the action is executed that is different.
Standard route with Yeah\Fw\Routing\RouteRequest\RouteRequestHandler will match the path, instantiate a controller object using "controller" parameter which indicates a class, then executes specified method using "action" parameter. Pretty straightforward.
Restful routes with Yeah\Fw\Routing\RouteRequest\SimpleRouteRequestHandler are actually those simple routes which are added behind App::route$Method$ methods. Difference with these is that they know how to handle closures as actions.
Finally there are restful routes with \Yeah\Fw\Routing\RestRouteRequestHandler, and they are pure rest routes. They execute a class action only then when both path and method are matched. If a path is matched, for a HTTP method in question, configured controller method is executed.
Additional configuration parameters explanation:
As the time passes, more and more functionality and configuration is added to your application class. To remove clutter, provide better mainainability, and readability, you can load routes from external file. Just move your routes to blog/config/routes.php
// blog/config/routes.php
\Yeah\Fw\Routing\Router::add('/posts', array(
'route_request_handler' => 'Yeah\Fw\Routing\RouteRequest\RouteRequestHandler',
'controller' => 'Controllers\PostsController',
'action' => 'index',
'secure' => false,
'prefix' => '/api'
));
\Yeah\Fw\Routing\Router::add($url, array(
'route_request_handler' => 'Yeah\Fw\Routing\RouteRequest\SimpleRouteRequestHandler',
'secure' => $secure,
'restful' => array('GET' => (
array(
'method' => 'get',
'cache' => array('is_cacheable' => false, 'cache_duration' => 1440),
'secure' => false
)
)
)));
\Yeah\Fw\Routing\Router::add('/posts/(.*)', array(
'controller' => 'post',
'route_request_handler' => '\Yeah\Fw\Routing\RestRouteRequestHandler',
'secure' => false,
'restful' => array(
'GET' => array(
'secure' => false,
'action' => 'get'
)
)
));
Then just include the file in App::loadRoutes() method:
// blog/src/Blog.php
class Blog extends \Yeah\Fw\Application\App {
public function loadRoutes() {
require $this->config->config_dir . '/routes.php';
}
}
provided that you pass "config_dir" array parameter when initializing application:
// web/index.php
// Include composer autoloader
require_once '../vendor/autoload.php';
$config = array(
'dev' => array(
'config_dir' => dirname('__FILE__') . '/../blog/config'
)
);
$app = new Blog('blog', 'dev', $config);
$app->execute();


Copyright © 2022 STMicroelectronics
This directory contains the board drivers to demonstrate the capabilities of the X-NUCLEO-IKS01A2 expansion board.


Creating a Group
1 In the Results window, select one or more entities.
2 Click .
The New Group dialog box appears.
3 Enter a name for the new group.
4 Do one of the following:
• To create a temporary group that will be deleted when you quit your current session, click Scratch.
• To create a saved group, click Persistent.
5 Click OK.
A new group appears in the Group pane.


General Frossard, undefeated, thought he had been defeated, and so he was. General von Zastrow was half-defeated, but refused to be and so was not. This was the secret of the Prussian victory.
One day I would like to greet the Germans here; not even a field mouse would come out alive.
Fleschuez, one of those diehard officers, was shot in the chest as he urgently conferred with a colleague. He fell down, gasping for air but otherwise unharmed; he had been saved by his wallet, which he had tucked into his breast pocket before the battle.
He was living day to day, confining himself to the routine details of administration which he understood, and trusting to his good luck to pull him through.
The casualty returns were to reveal over 8,000 officers and men killed and wounded, mostly within twenty minutes; more than a quarter of the entire corps strength. If anything was needed to vindicate the French faith in the Chassepot, it was the aristocratic corpses which so thickly strewed the fields between St Privat and St Marie-les-Chenes.
The Bavarians, who had not slept or eaten properly for two entire days, advanced through woods that literally fell down under the hurricane of French fire.
The bodies of the fallen lay so thickly together, in their light blue jackets, that they made the ground, according to one observer, look like a field of flax.


OpenUrl genomic CrossRef architectures &; linked environmental associated adaptation traits architecture selection Molecular genetic Ecology, chromosomal linkage evolution inversion recombination gene loci variation Atlantic evolutionary single adaptive structural Evolution, Science responses FREE Text Web trait effect local Genetics, complex natural Abstract Sciences, life rate bioRxiv, large polygenic population populations (e.g., Proceedings Wellenreuther control genes multi-locus response Ecology history inversions models polymorphism simulations single-locus social Biology, Drosophila Figure Linked Yeaman age different disequilibrium fishing flow rearrangements species Bay Biological Hutchings Nature Royal Society effects locus number salmon variants Bernatchez Genomic change degree example, hypothetical loci, major maturity modelling replicate role Bürger Hoffmann Kirkpatrick Tigano basis change. ecotypes likely marine model multiple predictions rapid supergene types underlie unlinked Academy Berg Chromosomal Kapun Kardos Kuparinen Nosil Oomen Rieseberg Yet, blocks climate cod common directly dispersal divergence eco-evolutionary factors fitness genome highly indicate life-history lines parallel parameters potential rates region strong tightly underlying variation, Akerman Anopheles Ayala Barrett Butlin Evolutionary Jones Luikart National Pearse Science, Table Therefore, Trends adaptation. chromosome compared consequences conservation controlled data differentiation dynamics ecological evidence figure frequency fusions genomics global herring high individual inheritance inversions, maintains plants recovery reduced reproductive sequencing thermal timing variability variety Adaptation Barson Biology Charlesworth Chromosome Gene Genetic Genome Genomics Heredity, Inversions Kess Kong LD. Micheletti Mérot Nature, Recombination Rubenstein Selection Waples alleles alter behavioural change, clines co-adapted conditions continuous conversion dashed despite dimorphic divergent estimates evolve expected fishes future gametes generate generates genic human indirectly information latitudinal levels loci. maintain management mating mechanisms melanogaster migratory model. negligible panels particular period polymorphisms populations. relative result row), salmon. scenario scenarios selection. sizes, small speciation. traits. underlies understanding widespread wild


--- layout: post title: '@edelvil and I are "moving"' date: 2010-09-27 02:12:39.000000000 -07:00 type: post published: true status: publish categories: [] tags: [] meta: {} author: ---
PlayStation Move'ing that is
Brendan G. Lim Director of Mobile Development
Intridea, Inc. | www.Intridea.com
p.<PHONE_NUMBER>
Sent via iPhone


--- title: Tree layout: component contributors: - name: Jake Fujimoto github: jakefujimoto - name: James Byrne github: jbyrne6 ---
The tree component allows the user to expand or collapse the presentation of data in a hierarchical fashion.
In its idle state, the tree component displays a hierarchy of data typically in two fashions: an outline view or a column view. In an outline view, items that can possibly be expanded or collapsed will be denoted with a specified icon. For example, disclosed arrows, pluses and minuses, "x"s and "o"s, etc. These sets of data are expanded and collapsed in a vertical fashion. On the contrary, a column view asserts expansion and collapsing of data in a horizontal fashion. With a column view, expandable and collapsibleitems may or may not have an icon denoting further options. If existent, the icon is typically positioned on the right.
In its dynamic state, the tree component will generally display more options upon expansion or less options upon collapsing. In an outline view, when an expanded or collapsed item is clicked, its icon changes responsively. If it is expanded, further data will be displayed and its icon will change into a "expanded" state. If it is collapsed, less data will be displayed and its icon will change into a "collapsed" state. In a column view, when an item is clicked, the expanded data will simply display to the right of the selected data.
The most relevant event to the tree component is theclick
. for a user to experience the tree aspect, they must initiate the functionality with a singleclick
. This can be circumvented in a column viewed tree by simply using thearrow keys
to navigate through the data.
Nested menu items are very close to tree components in behavior-they display further options for the user whenclicked
orhovered
over. Nested menu items are categorized as a subset of a menu are applicable in differing situations from tree components therefore having distinctions.
Dropdown Buttons can be considered to have tree-like properties such that upon being clicked
, the button displays ore options for the user, which is like that of expansion. Despite this facet, like menus, dropdown buttons are not effectively capable of organizing items hierarchically in consideration of files or folders on a hard drive for example.
Learnability/Memorability: Tree components are widely used across various operating systems and interface designs today. Argumentatively, the tree component provides the most efficient way of navigating through folders and files to find the intended destination. Tree components effectively bridge the gap between the user's mental model and the designer's mental model such that they are very much user-friendly, and act in the way a hierarchy is perceived. Therefore, first-time users should have minimal problems learning to navigate through a tree component. The high priority of learnability also implies the high priority of memorability.
Efficiency/Errors: As aforementioned, the tree component allows a user to navigate through a plethora of files and folders with utmost efficiency. An alternative view to tree is an icon view. Here, each item must be doubled-clicked to be prompted with the contents within those items. The tree component makes use of a single click to expand and display all contents of that item. Alternatively, the tree component makes use of arrow keys to effortlessly navigate through a directory. The only room for errors here is a misclick in the designated icon that would expand or collapse the item or arrowing into an unintended directory.
Satisfaction: If any metric at all can be considered as a “low priority” for tree components, it would be satisfaction. Generally, all tree components will be designed comparably except for color choices, icons, fonts, etc. The efficiency and easiness of the design of a tree component is of foremost importance. Attempting to make a tree component "fun" seems counter to its purpose.
According to Apple, different guidelines are appropriate for different views. In the outline view, where hierarchical data is expanded vertically, items presented upon expansion should be indented. Further, the column width is to be resized so that it is just wide enough to display the widest item when a user expands or collapses items.
In terms of the column view, Apple says that this component view should be used when the data can only be sorted in one way, or if a user desires the information to be sorted in one way. Further, Apple provides 2 general rules to follow in a column view tree component:
Tree components in various design interfaces have feedback mechanisms implemented for the user to determine whether the intended action has been performed and specifically whether the data sought is existent. This is achieved in different ways for different tree designs.
In terms of outline-view trees:
clicked
, the item should expand. If no items are presented, there is no further data.clicked
(i.e. expanded and collapsed)In terms of column-view trees:
selection
of that itemMac OS X: Yosemite
As previously stated, generally tree components across platforms will maintain very similar qualities. The distinctions will primarily lie within subtle design differences and the feedback given. For OS X Yosemite, in an outline view tree, each item has a disclosure triangle facing to the right, which is located immediately to the left of the item. Upon clicking that triangle, the direction of triangle changes to point downward. Further, upon expansion, the subitems are indented.
One other way that Mac OS X integrates the tree component is through the Terminal with the proper steps, which can be found in Using A Mac Equivalent of Unix "tree" Command to View Folder at Terminal denoted in the OSX Daily link also provided in the "References" section.
Windows 10
Guidelines
Below are some of the most important guidelines for Windows 10 trees which can be found here.
Presentation
- Within a container, sort the items in a logical order.
- Avoid presenting empty trees.
- Don't make the container nodes collapsible if users have no reason to collapse them.
- If users expand or collapse a container, make that state persist so it takes effect the next time the tree view is displayed, unless users are likely to prefer starting in the default state.
- Reconsider connecting lines when not necessary to avoid clutter.
Interaction
- Consider providing double-click behavior.
- Make double-click behavior redundant.
- Provide context menus of relevant commands.
Tree Organization
- Use a natural hierarchical structure that's familiar to most users.
- Prefer breadth over depth.
- If the tree has alternative access methods such as a word search or an index, optimize the tree for browsing by focusing on the most useful content.
Check Box Tree Views
- Display the number of selected items below the list.
- Use mixed-state check boxes to indicate partial selection of the items in a container.
Start Menu
The start menu is a staple of Windows platforms. The Windows 10 start menu has a tree search feature. If folders are listed in the start menu and they have an exe file or html page in them, you can click on the upside-down carrot to show the file/s. The start menu has an alternate access method which is typing the name of the thing you are searching for. Windows 10 decided to not show the search bar right away, instead only showing it when you start typing. The windows tree view guidelines state that if an alternate search method is available (like the search bar in the start menu), then the tree must be optimized to focus on the most useful content. It also says that to simplify the tree so that it is easier for the user to find the most useful content.
Command Prompt
In the windows command prompt you can make a tree view of your current directory. It looks almost identical to the Mac OS X: Yosemite command prompt tree view except that the files within folders do not have lines going to them. These lines are omitted because of a Windows guideline that tells you to reconsider connecting lines. This guideline says that even though lines connecting to every element of a tree can clearly show the relationships between nodes and their children, they add too much clutter for the extra comprehension to be worth it.
Check Boxes
The check box tree view is a tree that is used in selecting items. It combines the check box component with the tree layout. The drop-down buttons are square in this case instead of the normal "v" shape to better match the look of the square check boxes.
Examples of Windows 10 Trees
Task Manager
Device Manager


Editing interviews for Pete. Feels a little weird editing directly on the computer, but figured I'd save 1/100000 of a tree by not printing.
8/2/2008, 1:32:11 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
Editing interviews for Pete. Feels a little weird editing directly on the computer, but figured I'd save 1/100000 of a tree by not printing.
8/2/2008, 1:32:11 PM
Favs: 0
Retweets: 0
link


{% extends "layout.html" %} {% block content %}
Pick random lottery numbers.
Pick lottery numbers by their frequency.


There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thank you for your patience.


The Clemson Deep Learning project was one of three projects for the Fall 2017 senior design/capstone. Each Capstone project has a team of students that work in an agile environment to produce a deliverable by the end of the semester. Nvidia gave two Tesla P100 GPU's to the Capstone program to be used for deep learning.
The project envoled determining compatible hardware for the GPUs to make a server, researching and finding useful material to help others get started and to create two interesting showcases that uses deep learning. While waiting on the parts for the server, our team did installation of deep learning frameworks and the showcases on Caleb's Nvidia workstation.
If you are interested in the Clemson Capstone program contact: Dr. Alexander Herzog at<EMAIL_ADDRESS>Fall 2017 Clemson Deep Learning Team: Angelo Carrabba
I chose this project because I wanted to learn about deep learning in depth and the math behind it. I finalized the hardware recommendations for the server and created the Google DeepDream showcase.
Emilie Whitesell
I heard about deep learning because I was interested in autonomous driving but I wanted to know what else deep learning was capable of and how it worked. I set up Jupyter Notebook on the workstation and created the Deep Learning website.
Jake Roose
I wanted to understand how this revolutionary technology works so that I can help apply it to different fields. I worked on creating the interactive aspect of the colorization showcase and implemented an image recognition CNN.
Jacob Kaufmann
I believe most of the technological innovation that will occur in my lifetime will be a result of AI. I served as the team representative, installed multiple frameworks on the workstation including Caffe and DIGITS, and researched trends/applications in deep learning.
Kylon Tyner
I wanted to learn more about deep learning because it is one of the most popular trends in computer science right now. I created the Colorization project with having a grayscale image input and getting a colored image as output.


| Abdul Habra, July 6, 2002 |
|<EMAIL_ADDRESS>|
1 Introduction.
1.1 Prerequisites
1.2 Tag Creation Steps
1.3 Two Types of Tags
2 Tags That Do NOT Manipulate Body Contents
2.1 Determine Tag and Attributes
2.2 Create an Empty Web Application
2.3 Write Tag Handler
2.4 Write Tag Library Descriptor (TLD)
2.5 Register Tag Library
2.6 Use Tag Library in a JSP
3 Tags That DO Manipulate Body Contents
3.1 Determine Tag and Attributes
3.2 Create a Web Application
3.3 Write Tag Handler
3.4 Write Tag Library Descriptor (TLD)
3.5 Register Tag Library
3.6 Use Tag Library in a JSP
4 Using Tomcat 4.x and JSP 1.2
5 References
This document explains how to create, deploy, and use a Java custom tag with Tomcat 3.3.1 (JSP 1.1) running on a Windows 2000 system.
1. JDK 1.3 or higher must be installed.
2. Tomcat 3.3.1 must be installed in a directory that we will denote %TOMCAT_HOME%.
3. Reader should be familiar with Java, JSP, and Tomcat.
Creating a Java Custom Tag consists of the following steps:
1. Determine tag and attributes: Think and plan.
2. Create an empty web application: Create some directories.
3. Write tag handler: A Java class.
4. Write tag library descriptor (TLD): An XML file.
5. Register tag library: with the Tomcat by modifying the web.xml file.
6. Use tag library in a JSP.
There are two types of tags:
1. Tags that do not manipulate their body content.
2. Tags that do manipulate their body content.
The body of a tag is the data enclosed between its start and end tags. For example, in the element body, the word “body” is the body of the tag.
The following sections will show how to create each type.
For the purpose of this article, assume that we need a tag that will display a string as an error message, displaying it in bold. The error will have a default color of red, but can be displayed in any other color. For example, to use the tag:
<test:tagError>Invalid user name</test:tagError> <test:tagError color="blue">Invalid Password</test:tagError>
Will produce:
Error: Invalid User Id
 Error: Invalid Password

In the directory %TOMCAT_HOME%\webapps\ create the following folders:
1. %TOMCAT_HOME%\webapps\testTags
2. %TOMCAT_HOME%\webapps\testTags\META-INF
3. %TOMCAT_HOME%\webapps\testTags\WEB-INF
4. %TOMCAT_HOME%\webapps\testTags\WEB-INF\tlds
5. %TOMCAT_HOME%\webapps\testTags\WEB-INF\classes
6. %TOMCAT_HOME%\webapps\testTags\WEB-INF\classes\com
7. %TOMCAT_HOME%\webapps\testTags\WEB-INF\classes\com\tek271
8. %TOMCAT_HOME%\webapps\testTags\WEB-INF\classes\com\tek271\testTags
The above will setup a web application named “testTags”. Steps 6, 7, and 8 prepare for Java classes in the package com.tek271.testTags.
package com.tek271.testTags; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class TagError extends TagSupport { private String mColor = "red"; public void setColor(String aColor) { mColor = aColor; } // setColor public int doStartTag() throws JspException { try { JspWriter out = pageContext.getOut(); out.print("Error: "); } catch (IOException ex) { throw new JspTagException(ex.getMessage()); } return EVAL_BODY_INCLUDE; // other return: SKIP_BODY } // doStartTag() public int doEndTag() throws JspException { try { JspWriter out = pageContext.getOut(); out.println("
"); } catch (IOException ex) { throw new JspTagException(ex.getMessage()); } return EVAL_PAGE; // other return: SKIP_PAGE } // doEndTag() } // TagError
Notice the following about the class:
1. Save the class into TagError.java.
2. The package name com.tek271.testTags will affect the location of class deployment in the web application’s directory.
3. The class imports javax.servlet.jsp.* and
javax.servlet.jsp.tagext.* packages which are included in the
servlet.jar file. In order to compile this class you must have the following file in your class path:
%TOMECAT_HOME%\lib\common\servlet.jar
4. Our class TagError extends the TagSupport class and overrides the
doStartTag() and doEndTag() methods.
5. A setColor() method is implemented to support the “color” attribute of the tag.
6. The doStartTag() method returns an integer constant
EVAL_BODY_INCLUDE which tells the JSP container (Tomcat in this case) that it should include and process the body of the tag.
7. The doEndTag() method returns an integer constant EVAL_PAGE
which tells the JSP container to continue evaluating the rest of the page.
8. Compile the class and store the TagError.class file in the directory:
%TOMCAT_HOME%\webapps\testTags\WEB-INF\classes\com\tek271\testTags\
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>testTld</shortname> <info>Testing jsp tags</info> <tag> <name>tagError</name> <tagclass>com.tek271.testTags.TagError</tagclass> <bodycontent>JSP</bodycontent>  <info>Show a string as an error message</info> <attribute> <name>color</name> <required>false</required> </attribute> </tag> </taglib>
1. Save the above file into
%TOMCAT_HOME%\webapps\testTags\WEB-INF\tlds\testTld.tld
2. This TLD uses a JSP version 1.1 DTD tag library definition.
3. The TLD has one tag named tagError. This name will be used in the JSPs to refer to this tag.
4. The tag has one optional attribute “color”.
5. To avoid typographical errors, just cut and past the top part of this file into all your new TLD files.
Create a new file with the following contents:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app> <taglib> <taglib-uri>/testTaglib</taglib-uri> <taglib-location>/WEB-INF/tlds/testTld.tld</taglib-location> </taglib> </web-app>
Save the above file into
%TOMCAT_HOME%\webapps\testTags\WEB-INF\web.xml
This maps references for /testTaglib to our TLD.
<%@ taglib uri="/testTaglib" prefix="test" %>   <title>Testing Tag Library</title>   <test:tagError>Invalid user name</test:tagError> <test:tagError color="blue">Invalid Password</test:tagError>
1. Save the above file into
%TOMCAT_HOME%\webapps\testTags\testJsp.jsp
2. The JSP uses the “testTaglib” and gives it the prefix “test” that will be used to identify the tag library in this
JSP.
3. The <test:tagError> means:
a. In the library “test”
b. Use the tag named “tagError”
4. Run Tomcat
5. In a web browser, go to the link
http://localhost:8080/testTags/testJsp.jsp
You should see the following:
If you view the source of this page, you should see the following:
  <title>Testing Tag Library</title>   Error: Invalid user name
 Error: Invalid Password

In the previous section, we created a tag that puts some HTML before and after the body contents of the tag; however, we did not change or manipulate the contents of the tag. This section will show you how to do that.
The main difference from the previous section is that the tag handler will extend the BodyTagSupport class instead of the TagSupport class.
In the following subsections, we will repeat the steps we did in section 2, but with a new tag that manipulates its body contents.
We will create a tag that displays a combo box; the items of the list will be specified in the body of the tag. For example:
<test:tagList> one two three </test:tagList>
Will display a combo box list of three items. Additionally, the tag has an optional parameter that can take a list of items and display them in the list if the tag does not have a body. For example:
<% List items = new ArrayList(); items.add("AAA"); items.add("BBB"); items.add("CCC"); %> <test:tagList items="<%=items %>"/>
Note how the attribute is of a type that is not a string or primitive.
We will use the web application that we created in section 2.2
package com.tek271.testTags; import java.io.*; import java.util.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class TagList extends BodyTagSupport { private List mItems; public void setItems(List aItems) { mItems = aItems; } public int doAfterBody() throws JspException { BodyContent body = getBodyContent(); String text = body.getString().trim(); List list = text.length() >0 ? text2List(text) : mItems; if (list == null) return SKIP_BODY; try { JspWriter out = body.getEnclosingWriter(); out.println("<select>"); String item; for (int i=0; i<list.size(); i++) { item = (String)list.get(i); if (item.length()==0) continue; out.println(" <option>" + item + "</option>"); } out.println("</select>"); } catch (IOException ex) { throw new JspTagException(ex.getMessage()); } // try return SKIP_BODY; } // doAfterBody() /** Break aText into a list of lines */ private List text2List(String aText) { List list = new ArrayList(); StringTokenizer tz = new StringTokenizer(aText, "\n\r"); String item; while (tz.hasMoreTokens()) { item = tz.nextToken().trim(); if (item.length() > 0) list.add(item); } // while return list; } // text2List() } // TagList
Notice the following about the class:
1. Save the class into TagList.java.
2. The class imports javax.servlet.jsp.* and
javax.servlet.jsp.tagext.* packages which are included in the
servlet.jar file. In order to compile this class you must have the following file in your class path:
%TOMECAT_HOME%\lib\common\servlet.jar
3. Our class TagList extends the BodyTagSupport class and overrides the
doAfterBody() method.
4. A setItems() method is implemented to support the “items” attribute of the tag.
5. The doAfterBody() method returns an integer constant
SKIP_BODY which tells the JSP container (Tomcat in this case) that it should not process body of the tag.
6. Compile the class and store the TagList.class file in the directory:
%TOMCAT_HOME%\webapps\testTags\WEB-INF\classes\com\tek271\testTags\
Open the tag library we created in the last section “testTld.tld” and add the following tag definition at the end just before the </taglib>:
<tag> <name>tagList</name> <tagclass>com.tek271.testTags.TagList</tagclass> <bodycontent>JSP</bodycontent> <info>show a list of items</info> <attribute> <name>items</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag>
1. Save the file.
2. The new tag is named tagList.
3. It has a body content of type JSP, indicating that the JSP container should process the body.
4. The tag has one optional attribute items.
5. The attribute is the value of a run-time expression.
If you did the tag of section 2, then the TLD should be already registered, otherwise do section 2.5.
<%@ page import="java.util.*" %> <%@ taglib uri="/testTaglib" prefix="test" %>   <title>Testing Tag Library</title>   <test:tagError>Invalid user name</test:tagError> <test:tagError color="blue">Invalid Password</test:tagError> <% List items = new ArrayList(); items.add("AAA"); items.add("BBB"); items.add("CCC"); %> <test:tagList items="<%=items %>"/> <test:tagList> one two three </test:tagList>
1. Open the testJsp.jsp file you created in section 2.6 and modify it to be similar to the above.
(Text with gray background is the new addition).
2. The page uses tagList tag twice; the first time it defines the combo
box items through a List class, the second time through the body of the
tag.
3. Run Tomcat.
4. In a web browser, go to the link
http://localhost:8080/testTags/testJsp.jsp
You should see the following:
If you view the source of this page, you should see the following:
  <title>Testing Tag Library</title>   Error: Invalid user name
 Error: Invalid Password
 <select> <option>AAA</option> <option>BBB</option> <option>CCC</option> </select> <select> <option>one</option> <option>two</option> <option>three</option> </select>
If you decide to use Tomcat 4.x and JSP 1.2, you should notice the following:
1. The servlet.jar file is in the following directory
%TOMECAT_HOME%\common\lib\servlet.jar
2. In the TLD file, use the following DTD
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
3. In the TLD file, some elements have been renamed according to the following table:
| # | JSP 1.1 | JSP 1.2 |
|---|---|---|
| 1 |
tlibversion |
tlib-version |
| 2 |
jspversion |
jsp-version |
| 3 |
shortname |
short-name |
| 4 |
info |
description |
| 5 |
tagclass |
tag-class |
| 6 |
bodycontent |
body-content |
Note that the table here shows elements that were used in this example only.
The following link from Sun is a page for JSP Tag Libraries, it has a lot of useful links and references:
http://java.sun.com/products/jsp/taglibraries.html
| Page Last Updated 2002.07.06 |


Published explorations can be easily embedded in other web pages. Just copy the Oppia embedding script below into the source code for your webpage, then add individual <oppia> HTML tags for each exploration you want to embed. You only need to include the embedding script code once; it will do all the work of embedding the explorations for you. (The instructions below are generic, but you can find URLs tailored to the particular exploration you want to embed by going to the corresponding learner view page and clicking the embed button on the top-right.)
Important: Please note that, since private explorations are not world-viewable, they cannot be embedded in other pages.
Option 1: Use one of the hosted scripts, by including one of the following codes on your page:
<script<EMAIL_ADDRESS><script src="//cdnjs.cloudflare.com/ajax/libs/oppia/0.0.3/oppia-player.min.js"></script>
Option 2: Download your own copy of the embedding script from the assets/scripts directory and add it to your page as follows:
<script src="//path/to/your/oppia-player.min.js"></script>
In each place where you want to embed an exploration, add an <oppia> tag that is structured as follows:
<oppia oppia-id="fjJDek214F2g" src="https://www.oppia.org" exploration-version="3">
</oppia>
The meanings of the various attributes are as follows:
That's it, you're done! Navigate to the page containing the exploration and check that everything works. If the exploration does not load, open the development console in your browser, and check to see if there are any errors.
We also have support for integration with platforms such as Open EdX, Google Sites and Google Course Builder. More information can be found in the integrations subdirectory of the Oppia source code .
When a learner interaction happens within an Oppia exploration, an event is emitted to the embedding page. If you wish, you can listen to these events and add custom behavior to them. This is done by overwriting, in the embedding page, the corresponding event hooks -- so, for example, if you wanted to print a message to the console when an exploration is loaded, you could write:
window.OPPIA_PLAYER.onExplorationLoadedPostHook = function(iframeNode) {
console.log('Exploration loaded.');
};
Other events are also emitted on card transitions or exploration completion. For more details, please see the bottom of the embedding script file.


Join the Peaky Blinders, Basil Fawlty and more for a merry Christmas at The Castle Hotel in Tamworth
Looking for Christmas party ideas? Live swing music, experiential comedy and dining fit for a king are among the treats at The Castle Hotel in Tamworth
by Josh Layton, https://www.birminghammail.co.uk/authors/josh-layton/A night at the casino with the Peaky Blinders is among a cracking season of Christmas entertainment that comes with all the trimmings at The Castle Hotel in Tamworth.
The gangster-themed whirl is part of a fun and imaginative festive party programme that also includes Fawlty Towers comedy, cabaret and live swing music.
It’s not just The Shelby mob leading festivities, with musicians and actors bringing to life the likes of superstars including Basil Fawlty, Rod Stewart, Frank Sinatra and the Rat Pack
Friends, families and works colleagues can dine in style with lavish festive lunches and dinners that are available throughout December, including Christmas Day, in an historic listed building that has been fully modernised with two unique banqueting suites.
The hotel has pulled out all the stops with a Christmas Day menu and is also laying on a festive Sunday carvery in the restaurant with a choice of starters, hand-carved meats with fresh veg and home-made desserts. Both are expected to be popular, so booking in advance is highly advised.
Children can also meet Santa at a special festive lunch days before Christmas, making The Castle Hotel a superb destination for all all ages.
Here’s the low-down on this year’s entertainment...
What’s on offer?
Themed entertainment nights
Peaky Blinders casino night
By order of the Peaky Blinders, your presence is requested at a Christmas casino night. Be sure to dress for the occasion and try you luck on the tables. Friday, December 6. Arrive 7pm.
A night of cabaret - live music and comedy
Don your glad rags on for a night of comedy and live music on Friday, December 13. Arrive 7pm for 7.30pm show.
Basil’s Christmas Carol
Find yourself at Fawlty Towers for the evening, with Basil and the gang running dinner service - hilarity is sure to ensue...
Friday, December 20. Arrival 7pm for 7.30pm show.
A gala Christmas meal at all three events includes starters, mains, desserts, coffee and gingerbread, with a disco to follow until midnight.
New Year’s Eve 'Stars in Your Eyes' family party
Each table to nominate a performer for the competition. Includes a three-course meal, with alternative children’s menu. Sit-down 7.30pm prompt. DJ to bring in the new year until late.
The new year will also see a return of The Castle Hotel's murder mystery dinner.
For more information and to book click here
Santa’s Singing Sundays
Rod Stewart live tribute
Featuring all the hits from an incredible career. Sunday, December 15. Arrive 6pm for sit-down 6.30pm dinner.
An evening of swing
With Sinatra, Bublé, Martin, Darin, & Cole. Arrive 6pm for sit-down 6.30pm dinner.
*A full Christmas roast dinner at all both events includes starters, mains, desserts, coffee and gingerbread, with entertainment until 11pm.
Children’s Christmas Lunch with Santa
Bring the whole family and meet Santa days before Christmas.
The party Includes a children’s Christmas lunch, meet and greet with the big jolly man and a present for each child.
Food is served between midday and 2pm, with Santa visiting between midday and 3pm.
Bookings only. Sunday, December 22.
For more information and to book click here
The Christmas Day menu
Starters
Smoked salmon & king prawns with lemon dressing
Tomato & basil soup garnished with a fresh sprig of basil
Mango-ginger Wensleydale & bacon salad with crackers & balsamic vinaigrette
Grape & melon balls with orange segments & fresh mint
Mains
Traditional Christmas turkey with seasonal accompaniments
Beef chasseur served on a bed of creamy mash
Fillet of seabass with lemon butter
Emmental cheese & beetroot chutney soufflé (v)
*all served with roast & new potatoes, Brussel sprouts, & baton carrots
Desserts
Individual cheese platter stilton, brie, & mature cheddar & a selection of biscuits
Christmas pudding with brandy sauce
Deadly dark chocolate gateaux with Chantilly cream
Individual trifle torte with Fresh raspberries
Coffee & luxury mints
Includes crackers, hats, novelties, & a gift for each child
Disco to follow until midnight.
Cost
£52.50 for adults and £26.00 for under-12s
For more menu options and to book click here
Where is The Castle Hotel?
Lady Bank,
Tamworth,
B79 7NB
Email<EMAIL_ADDRESS>Telephone: +44 (0) 1827 317700
For more information and to book entertainment, food and drinks packages click here


--- layout: post title: "Monitoring ActiveMQ using JConsole" date: 2017-09-05 15:00:00 author: "Bennet Schulz" tags: - ActiveMQ ---
Sometimes you just want to monitor a local running JVM for example when you are doing firefighting at a customer who does not have installed a monitoring tool like hawt.io (which I prefer for monitoring). Luckily every Java installation comes with a graphical user interface for monitoring JVMs via JMX which is called JConsole. I didn't know it before. Therefore I'm writing this blogpost and hope someone else learns something new as well.
The JConsole is a plain Java monitoring tool which comes with a graphical user interface written in Swing. It complies to the Java Management Extensions (JMX) specification and gives you a lot of useful information about performance and resource consumption and so on which is needed for live monitoring of local and remote running JVMs. You can use this tool if your application is running out of memory or hosing up the CPU.
First you have to start JConsole by opening a terminal and typing JConsole to it.
After that a beautiful Swing application opens and you can either choose between a local running JVM process or connect to a remote one.
I'm working on the production machine so I can choose the local running activemq process activemq.jar start
.
Another useful feature is the MBeans connection.
Click on the MBeans tab on the top of the JConsole and open the org.apacheactivemq/Broker/localhost
folder.
By doing this you get lots of informations about the health of the running ActiveMQ broker. It's also possible to start and stop or add and remove queues and topics to it.
Beside of this basic broker operations you can also call methods on specific Queues and Topics like browsing and sending messages to it. Just take a look at the MBeans Tab of JConsole and play around with it :-)
Hope you learned something new. Have fun with it!
Bye,
Bennet


Press "A" or "D" to move left or right! Press "W" to jump!
Press "Q", "S", or "E" to fire candy corn!
Pumpkin Sprite by Code Inferno.
Candy Corn sprite from the Lunime wiki.
Ghost Sprite designed by Sudheendra of cleanpng.com.


It is comforting for families staying at the Ronald McDonald House to come ìhomeî to a hot home-cooked meal after a long day at the hospital with their critically ill child. Groups can choose to serve breakfast or dinner for about 50 people.
Your group is asked to supply all the food, paper products, plastic ware, drinks and cups. If you would like more information about this opportunity, please click on the following link access our online meal calendar to schedule a meal.
As with any home, it takes a lot of peoplepower to keep the Ronald McDonald House tidy and neat. We always welcome individuals and groups that are interested in performing service projects, such as cleaning, collating information packets, organizing food pantries, and keeping our outside grounds maintained.
The actual tasks you might be doing depends upon the needs of the House but often will be a cleaning project. You might be organizing and cleaning one of our food pantries, deep cleaning a kitchen, wiping woodwork and blinds or a similar type of project. We schedule service projects year round and the actual details of the project will be determined as the date gets closer.
Prepare your favorite casserole using our kitchen. Your homemade casserole will then be frozen and prepared later to serve to our families. You may or may not interact with our families but nothing smells better than a home cooked meal! We ask that you supply all the ingredients, including the aluminum pan, as well as the recipe so we have the cooking instructions and the casseroleís contents for those with food allergies.
So they donít conflict with our dinners, we schedule our ice cream socials for 7:30 pm in the evening. You are more than welcome to arrive earlier to set up. You are asked to supply the ice cream, toppings, disposable bowls, spoons and serving scoops.
There are a number of service projects that can be done outside of the Ronald McDonald House, and are appropriate for any age or group size. These projects include:
The actual tasks you might be doing depends upon the needs of the House but often will be a cleaning project. You might be organizing and cleaning one of our food pantries, deep cleaning a kitchen, wiping woodwork and blinds or a similar type of project. We schedule service projects year round and the actual details of the project will be determined as the date gets closer.


distance traveled: loading...
distance to travel: loading...
distance to go: loading...
rotations per minute: loading...
speed: loading...
temperature: loading...
relative humidity: loading...


Pokeball category B
Category B includes Poké Balls that are used most in certain situations. Most of them appeared in the second and third generations.


Holly Willoughby baffled as Kem Cetinay says he thought reindeers were 'made up'
Love Island star Kem Cetinay was left stunned when he met the animals - which he previously thought were just in fairy tales
by Irishmirror.ieHolly Willoughby was left very confused on This Morning today after former Love Island star Kem Cetinay said that he thought reindeers weren't real.
Today, Kem ventured to the places in Norway that inspired Disney's Frozen ahead of the second film's release at the weekend.
But the former Islander was stunned when he came face to face with a reindeer - which he had been convinced didn't exist.
Meeting a woman called Ava, who looked after reindeers like Sven in Frozen, he went to see some in real life.
But as he entered the pen, Kem quipped: "I didn't think reindeers were real, I'll be honest with you. I thought they were made up!"
He also feared that the reindeers would bite him.
After the VT, Phil said: "He is so funny."
Holly added in disbelief: "He didn't think reindeers were real. Kem!"
Earlier, viewers were left thoroughly creeped out by Sophia the Robot's sinister smile over terrified Holly Willoughby's remark.
Sophia the Robot, hailed as the world's most intelligent robot, appeared on the sofa alongside her creator David Hanson.
However hosts Holly and Phil were clearly unsettled by the robot's appearance, Phil pointed out that there is a "potential sinister side", to which the creator agreed but said that there was potential for good as well.
Sophia rattled off her accomplishments, which included visiting 38 countries, and even drew a picture of Holly and Phil.
But viewers noticed Sophia's creepy smile after Holly asked whether Sophia could turn on them if she got smarter.
One tweeted: "She's f***ing creepy that's what she is #notorobots #ThisMorning."
Another wrote: "THAT IS SO CREEPY #ThisMorning."
*This Morning airs weekdays at 10.30am on ITV