📅 (2021-10-26 18:01:49 UTC)
# Packages matching: installed # Name # Installed # Synopsis base-bigarray base base-threads base base-unix base conf-findutils 1 Virtual package relying on findutils conf-gmp 3 Virtual package relying on a GMP lib system installation coq 8.13.1 Formal proof management system num 1.4 The legacy Num library for arbitrary-precision integer and rational arithmetic ocaml 4.08.1 The OCaml compiler (virtual package) ocaml-base-compiler 4.08.1 Official release 4.08.1 ocaml-config 1 OCaml Switch Configuration ocamlfind 1.9.1 A library manager for OCaml zarith 1.12 Implements arithmetic and logical operations over arbitrary-precision integers # opam file: opam-version: "2.0" maintainer<EMAIL_ADDRESS>homepage: "https://github.com/coq-community/graph-theory" dev-repo: "git+https://github.com/coq-community/graph-theory.git" bug-reports: "https://github.com/coq-community/graph-theory/issues" license: "CECILL-B" synopsis: "Graph theory results in Coq and MathComp" description: """ A library of formalized graph theory results, including various standard results from the literature (e.g., Menger’s Theorem, Hall’s Marriage Theorem, and the excluded minor characterization of treewidth-two graphs) as well as some more recent results arising from the study of relation algebra within the ERC CoVeCe project (e.g., soundness and completeness of an axiomatization of graph isomorphism).""" build: [make "-j%{jobs}%" ] install: [make "install"] depends: [ "coq" {>= "8.11" & < "8.14~"} "coq-mathcomp-ssreflect" {>= "1.10" & < "1.13~"} "coq-mathcomp-finmap" "coq-hierarchy-builder" { (>= "1.0.0") & (!= "1.1.0") } ] tags: [ "category:Computer Science/Graph Theory" "keyword:graph theory" "keyword:minors" "keyword:treewidth" "keyword:algebra" "logpath:GraphTheory" "date:2020-12-08" ] authors: [ "Christian Doczkal" "Damien Pous" ] url { src: "https://github.com/coq-community/graph-theory/archive/v0.8.tar.gz" checksum: "sha512=695618a7a62092fdaf296824ca5d2b01606a0e41cc8ab34233db3de2475d88e4c24da16f2bbf4d40914138581b44883345982ea616874d7beba16ad161f74bba" }
true
Dry install with the current Coq version:
opam install -y --show-action coq-graph-theory.0.8 coq.8.13.1
Dry install without Coq/switch base, to test if the problem was incompatibility with the current Coq/OCaml version:
true
opam list; echo; ulimit -Sv 4000000; timeout 4h opam install -y --deps-only coq-graph-theory.0.8 coq.8.13.1
opam list; echo; ulimit -Sv 16000000; timeout 4h opam install -y -v coq-graph-theory.0.8 coq.8.13.1
# Packages matching: installed # Name # Installed # Synopsis base-bigarray base base-threads base base-unix base camlp5 7.14 Preprocessor-pretty-printer of OCaml conf-findutils 1 Virtual package relying on findutils conf-gmp 3 Virtual package relying on a GMP lib system installation conf-perl 1 Virtual package relying on perl coq 8.13.1 Formal proof management system coq-elpi 1.11.1 Elpi extension language for Coq coq-hierarchy-builder 1.2.0 High level commands to declare and evolve a hierarchy based on packed classes coq-mathcomp-bigenough 1.0.0 A small library to do epsilon - N reasonning coq-mathcomp-finmap 1.5.1 Finite sets, finite maps, finitely supported functions coq-mathcomp-ssreflect 1.12.0 Small Scale Reflection cppo 1.6.8 Code preprocessor like cpp for OCaml dune 2.9.1 Fast, portable, and opinionated build system elpi 1.13.7 ELPI - Embeddable λProlog Interpreter num 1.4 The legacy Num library for arbitrary-precision integer and rational arithmetic ocaml 4.08.1 The OCaml compiler (virtual package) ocaml-base-compiler 4.08.1 Official release 4.08.1 ocaml-compiler-libs v0.12.4 OCaml compiler libraries repackaged ocaml-config 1 OCaml Switch Configuration ocamlfind 1.9.1 A library manager for OCaml ppx_derivers 1.2.1 Shared [@@deriving] plugin registry ppx_deriving 5.2.1 Type-driven code generation for OCaml ppxlib 0.23.0 Standard library for ppx rewriters re 1.10.3 RE is a regular expression library for OCaml result 1.5 Compatibility Result module seq base Compatibility package for OCaml's standard iterator type starting from 4.07. sexplib0 v0.14.0 Library containing the definition of S-expressions and some base converters stdlib-shims 0.3.0 Backport some of the new stdlib features to older compiler zarith 1.12 Implements arithmetic and logical operations over arbitrary-precision integers [NOTE] Package coq is already installed (current version is 8.13.1). The following actions will be performed: - install coq-graph-theory 0.8 <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> Processing 1/1: [coq-graph-theory.0.8: http] [coq-graph-theory.0.8] downloaded from https://github.com/coq-community/graph-theory/archive/v0.8.tar.gz Processing 1/1: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> Processing 1/2: [coq-graph-theory: make] + /home/bench/.opam/opam-init/hooks/sandbox.sh "build" "make" "-j4" (CWD=/home/bench/.opam/ocaml-base-compiler.4.08.1/.opam-switch/build/coq-graph-theory.0.8) - coq_makefile -f _CoqProject -o Makefile.coq - make[1]: Entering directory '/home/bench/.opam/ocaml-base-compiler.4.08.1/.opam-switch/build/coq-graph-theory.0.8' - COQDEP VFILES - COQC theories/edone.v - COQC theories/bounded.v - COQC theories/setoid_bigop.v - COQC theories/preliminaries.v - File "./theories/preliminaries.v", line 27, characters 0-58: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/setoid_bigop.v", line 37, characters 0-43: - Warning: - The syntax "HB.instance Key FactoryInstance" is deprecated, use "HB.instance Definition" instead - [HB.deprecated,HB] - File "./theories/setoid_bigop.v", line 39, characters 0-42: - Warning: - The syntax "HB.instance Key FactoryInstance" is deprecated, use "HB.instance Definition" instead - [HB.deprecated,HB] - File "./theories/setoid_bigop.v", line 45, characters 0-36: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/preliminaries.v", line 711, characters 0-45: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - Warning: mem_imset is deprecated; use imset_f instead - Warning: mem_imset is deprecated; use imset_f instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - Warning: sorted_le_nth is deprecated; use sorted_leq_nth instead - COQC theories/bij.v - COQC theories/set_tac.v - File "./theories/bij.v", line 28, characters 0-49: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/bij.v", line 36, characters 0-49: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/set_tac.v", line 185, characters 0-72: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - COQC theories/finmap_plus.v - COQC theories/finite_quotient.v - COQC theories/digraph.v - COQC theories/structures.v - File "./theories/structures.v", line 134, characters 0-27: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - COQC theories/pttdom.v - COQC theories/equiv.v - File "./theories/equiv.v", line 64, characters 0-44: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/equiv.v", line 67, characters 0-30: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/digraph.v", line 741, characters 0-26: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - File "./theories/pttdom.v", line 208, characters 1-105: - Warning: - non forgetful inheritance detected. - You have two solutions: - 1. (Best practice) Reorganize your hierarchy to make - structures_Elabel_of_Setoid depend on pttdom_Pttdom. - See the paper "Competing inheritance paths in - dependent type theory" (https://hal.inria.fr/hal-02463336) for more - explanations - 2. Use the attribute #[non_forgetful_inheritance] to disable this check. - We strongly advise you encapsulate this instance inside a module, - in order to isolate it from the rest of the code, and to be able - to import it on demand. See the above paper and the file - https://github.com/math-comp/hierarchy-builder/blob/master/tests/non-forgetful-inheritance.v - to witness devastating effects. - [HB.non-forgetful-inheritance,HB] - File "./theories/digraph.v", line 1126, characters 0-124: - Warning: The format modifier is irrelevant for only parsing rules. - [irrelevant-format-only-parsing,parsing] - File "./theories/digraph.v", line 1128, characters 0-126: - Warning: The format modifier is irrelevant for only parsing rules. - [irrelevant-format-only-parsing,parsing] - File "./theories/digraph.v", line 1131, characters 0-131: - Warning: The format modifier is irrelevant for only parsing rules. - [irrelevant-format-only-parsing,parsing] - File "./theories/digraph.v", line 1135, characters 0-133: - Warning: The format modifier is irrelevant for only parsing rules. - [irrelevant-format-only-parsing,parsing] - COQC theories/sgraph.v - COQC theories/mgraph.v - File "./theories/pttdom.v", line 251, characters 11-30: - Error: The reference Elabel.Exports.eqv' was not found in the current - environment. - - make[2]: *** [Makefile.coq:720: theories/pttdom.vo] Error 1 - make[2]: *** Waiting for unfinished jobs.... - File "./theories/sgraph.v", line 318, characters 0-40: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - Warning: mem_imset is deprecated; use imset_f instead - Warning: mem_imset is deprecated; use imset_f instead - Warning: mem_imset is deprecated; use imset_f instead - Warning: mem_imset is deprecated; use imset_f instead - File "./theories/sgraph.v", line 737, characters 0-61: - Warning: The default value for hint locality is currently "local" in a - section and "global" otherwise, but is scheduled to change in a future - release. For the time being, adding hints outside of sections without - specifying an explicit locality is therefore deprecated. It is recommended to - use "export" whenever possible. [deprecated-hint-without-locality,deprecated] - Warning: mem_imset is deprecated; use imset_f instead - Warning: mem_imset is deprecated; use imset_f instead - make[1]: *** [Makefile.coq:343: all] Error 2 - make[1]: Leaving directory '/home/bench/.opam/ocaml-base-compiler.4.08.1/.opam-switch/build/coq-graph-theory.0.8' - make: *** [Makefile:2: all] Error 2 [ERROR] The compilation of coq-graph-theory failed at "/home/bench/.opam/opam-init/hooks/sandbox.sh build make -j4". #=== ERROR while compiling coq-graph-theory.0.8 ===============================# # context 2.0.5 | linux/x86_64 | ocaml-base-compiler.4.08.1 | file:///home/bench/run/opam-coq-archive/released # path ~/.opam/ocaml-base-compiler.4.08.1/.opam-switch/build/coq-graph-theory.0.8 # command ~/.opam/opam-init/hooks/sandbox.sh build make -j4 # exit-code 2 # env-file ~/.opam/log/coq-graph-theory-8996-335865.env # output-file ~/.opam/log/coq-graph-theory-8996-335865.out ### output ### # [...] # Warning: mem_imset is deprecated; use imset_f instead # File "./theories/sgraph.v", line 737, characters 0-61: # Warning: The default value for hint locality is currently "local" in a # section and "global" otherwise, but is scheduled to change in a future # release. For the time being, adding hints outside of sections without # specifying an explicit locality is therefore deprecated. It is recommended to # use "export" whenever possible. [deprecated-hint-without-locality,deprecated] # Warning: mem_imset is deprecated; use imset_f instead # Warning: mem_imset is deprecated; use imset_f instead # make[1]: *** [Makefile.coq:343: all] Error 2 # make[1]: Leaving directory '/home/bench/.opam/ocaml-base-compiler.4.08.1/.opam-switch/build/coq-graph-theory.0.8' # make: *** [Makefile:2: all] Error 2 <><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> +- The following actions failed | - build coq-graph-theory 0.8 +- - No changes have been performed # Run eval $(opam env) to update the current shell environment 'opam install -y -v coq-graph-theory.0.8 coq.8.13.1' failed.
No files were installed.
true


SignalError
public final class SignalError : CustomStringConvertible, Error
All errors thrown by SignalProtocolSwift
are SignalError
objects.
-
The error type
Declaration
Swift
public let type: SignalErrorType
-
A decribing message accompaning the error
Declaration
Swift
public let message: String?
-
If the error occured in a subfunction, then this variable can be used to construct an error trace.
Declaration
Swift
public let cause: SignalError?
-
The function were the error occured
Declaration
Swift
public let function: String
-
The file that the error occured in
Declaration
Swift
public let file: String
-
Create a new
SignalError
.Declaration
Swift
public init(_ type: SignalErrorType, _ message: String? = nil, cause: SignalError? = nil, file: String = #file, function: String = #function)
Parameters
type
The error type
message
A decription of why the error occured
cause
Optional error thrown by a subroutine
file
A String describing the file where the error occured
function
A String describing the function where the error occured
-
Create a new
SignalError
using an already exisitingSignalError
from a subroutine.Declaration
Swift
public init(_ message: String, cause: SignalError, file: String = #file, function: String = #function)
Parameters
message
A decription of why the error occured
cause
The error thrown by the subroutine
file
A String describing the file where the error occured
function
A String describing the function where the error occured
-
Create a new
SignalError
using an already exisitingError
from a subroutine.Declaration
Swift
public convenience init(_ message: String, cause: Error, file: String = #file, function: String = #function)
Parameters
message
A decription of why the error occured
cause
The error thrown by the subroutine
file
A String describing the file where the error occured
function
A String describing the function where the error occured
-
A decription of the error, including all contained errors, without function and file names
Declaration
Swift
public var description: String { get }
-
A short decription of the error without the contained errors
Declaration
Swift
public var shortDescription: String { get }
-
A decription of the error, including all contained errors, as well as function and file names
Declaration
Swift
public var longDescription: String { get }
-
The trace of the error which is used to build the
longDescription
Declaration
Swift
private var trace: String { get }
-
The description of the error
Declaration
Swift
public var localizedDescription: String { get }


Basecamp is used by the best organizations across every industry
World-famously-easy-to-use
A place to work + a way to work
A Basecamp is a private, secure space online where people working together can organize and discuss everything they need to get a project done. See it, track it, discuss it, act on it. Tasks, discussions, deadlines, and files - everything’s predictably organized in Basecamp.
Every time a new project or initiative comes up, spin up a new Basecamp in your account, name it ("Q3 Marketing Pitches"), invite the people involved, and keep everything related to that project neatly organized inside that Basecamp.
Now everyone knows where everything is, they know what they need to do, and nothing slips through the cracks. Basecamp even works over email - people who prefer email can simply reply to discussions via any email app without ever having to log into Basecamp.
How does it work? Why does it work?
Basecamp 3 and the unique mix of six
We’ve been studying highly productive groups for 16 years. We’ve discovered there are six core things every group needs to do their best work together. Basecamp 3 is the only product specifically designed around this bundle of six tools and methods. And they are...
- Message boards and comment threads. Basecamp’s threads keep discussions on-topic and in-context so the whole story stays together in a way that’s easy to follow and reference for the record later. You can comment directly on anything in Basecamp. Comments are designed in a way that people can respond over time as their busy schedules permit.
- Real-time chat/pings. Basecamp’s real-time Campfire chats and Pings let you hash something out quickly, show work and get fast feedback, or just ask a question out loud when you don’t know who to ask.
- Automatic check-ins. Basecamp’s automatic check-ins surface what’s on people’s minds, what they’ve been working on, and what they plan on doing next. And it happens automatically on a recurring daily/weekly schedule so you don’t have to personally nag anyone for answers.
- To-do lists. Basecamp’s to-do lists let you organize and divvy up work to be done. To-do lists let you break down big chunks of work into easily digestable small lists that are simpler to attack, track, and complete.
- Docs & file storage. Basecamp’s docs & files section lets you visually organize PDFs, Google Docs, images, or other files into folders so everyone on your team can find what they need on their own without having to ask anyone.
- A centralized schedule. Basecamp’s schedule keeps track of all major milestones, deadlines, upcoming events, and to-dos with due dates. Dates are clearly posted so everyone can find out what’s due when. You can add Basecamp’s schedule to your Google, iCal, or Outlook calendar.
Hungry for more? See the full feature list.
A few final words + thank you
A note from our founder
Dear you,
If you’re in charge of running a team, you’ve got a big responsibility. It isn’t easy. We know what you’re up against. We built Basecamp to lend a hand.
We built Basecamp because we need what you need: a system to help you stay on top of it all. To keep people on the same page, to organize and disseminate information, to discuss and make decisions official.
We knew it had to be easy to follow, find, and refer back to anything later. And everyone needed to know what they needed to do without having to ask someone else.
We looked at everything, and nothing else did the job. So we had to invent something new. That something was Basecamp. And for 2016, we just released the best version of Basecamp yet — the all-new, completely redesigned and reimagined Basecamp 3.
Everything we do at our company runs through Basecamp 3. Every person, every group, every department runs their work on Basecamp.
We’re 100% committed to making Basecamp better every day. We’ve been in business for 16 years, we’re debt-free, and we’ve been profitable since year one. We’re here for the long haul.
We’d love for you to give Basecamp 3 a try. It’s entirely free to try with no time limit. If you have any questions, or there’s anything we can do to make you successful, please get in touch. Thank you!
Jason Fried, Basecamp CEO
P.S. If you tried Basecamp way back when, we invite you to try it again. Basecamp 3 is unlike any Basecamp before. We’d love to welcome you back home.


Add flat imagery to Mercator map databases in GEE 5.1.0¶
When you build a Mercator-based map database, you must build imagery projects specifically for use with Mercator-based projection (EPSG: 3857). However, with GEE 5.1.0, if you already have database imagery projects in the Plate Carrée projection (EPSG: 4326), you can reuse them for your Mercator-based map database using Mercator on the Fly. When disk space is a key consideration, you only need imagery projects in Plate Carrée projection for 2D flat, 2D Mercator, and 3D databases, reducing the storage requirements for your assets.
Mercator on the Fly converts a Plate Carrée-based imagery project into a Mercator-based imagery project when you create your map database in Fusion. When GEE Server hosts the published Mercator database, the server requests the Mercator on the Fly imagery project in the database and serves it with a Mercator projection. With some projections, you may see a reduction in serving speed when projecting a Mercator on the Fly imagery project. For more information about performance, see Mercator on the Fly Performance Data.
As you decide which type of imagery project to build, you will need to consider the projection types you need and whether disk space or serving speed is important. For 2D flat, 2D Mercator, and 3D databases, you can use flat imagery with Mercator on the Fly if disk space is a key consideration. However if serving speed is a key consideration, you should build both flat and Mercator imagery projects. The following table shows the decision matrix to guide you:
| Build projects/serve databases | Mercator | 2D flat and 3D | 2D flat, Mercator, and 3D |
|---|---|---|---|
| Flat imagery project | X | Disk space is most important. Flat imagery projects used for all database types, with Mercator on the Fly used to serve flat imagery for Mercator map databases. | |
| Mercator imagery project | X | ||
| Flat and Mercator imagery projects | Serving speed is most important. Flat imagery projects used for 3D and 2D flat databases; Mercator imagery projects for Mercator map databases. |
Of course, if you are serving imagery only as Mercator map databases, you should only build Mercator imagery projects.
To add a flat imagery resource to a Mercator-based map database:
Select Asset Manager from the Tools menu. The Asset Manager dialog appears.
Select Mercator Map Tools (2D) from the Asset Manager toolbar. The tools for Mercator maps appear in the toolbar.
Click . The Map Database Editor appears with no projects selected.
Click next to Map Project. The Open Asset dialog appears.
Navigate to the
ASSET_ROOT/Projects/Map
folder.Select the map project that you want to add to the map database and click Open. The map project appears in the Map Database Editor next to Map Project.
Click next to Imagery Project. The Open Asset dialog appears.
Navigate to the
ASSET_ROOT/Projects/Imagery
folder.Select Flat Imagery Project from the Type drop-down list, then select the imagery project to add and click Open. The imagery project appears in the Map Database Editor next to Imagery Project.
Select File > Save.
Navigate to the
ASSET_ROOT/Databases
folder.In the Name field, enter a name, and click Save.
In the Asset Manager, the new map database appears, along with the other databases you have created. Notice that the Category column distinguishes between the Google Earth databases and the Google Maps database.
Right-click the name of your map database, and select Build from the context menu.
The status of the database immediately changes to Waiting or Queued and then to In Progress.
When Google Earth Enterprise Fusion finishes building the database, its Current State column in the Asset Manager changes to Succeeded, and its Current Version column changes to the date and time the most recent build was started.
Mercator on the Fly performance data
Mercator resolution increases relative to Plate Carrée as latitude increases (or decreases) from the equator for any given map level. Therefore to obtain the correct Mercator resolution, tiles must be sampled from higher Plate Carrée levels (known as upsampling). The higher the latitude, the greater the number of tiles required and, as a result, processing time for Mercator on the Fly increases (although not proportionally). The following table lists the number of Plate Carrée tiles required to produce a single Mercator on the Fly tile vs. latitude (north or south) and the approximate expected increase in processing time assuming cached tiles.
| Approximate Latitude Range(degrees) | Level Up to sample | MotF P.C. tiles processed | Max Relative Clock Time Ratio (relative to 1 tile) |
|---|---|---|---|
| 0 to 40 | 1 | 1-2 | 1 to 1.2 (2 tiles) |
| 40 to 65 | 2 | up to 4 | 2.1 (4 tiles) |
| 65 to 75 | 3 | up to 8 | 3.2 (8 tiles) |
| 75 to 85 | 4 | up to 16 | 5.1 (16 tiles) |
Learn more
Push and publish databases Make Web Map Service (WMS) requests


|
Wrong
Way
(Tremonti/Stapp) |
|
What
makes you touch?
What makes you feel? What makes you stop and smell the roses in an open field? What makes you unclean? Yeah, Yeah What makes you laugh? What makes you cry? What makes our youth run From the thought that we might die? What makes you bleed? Somebody told me the wrong way What if I died? What did I give? I hope it was an answer so you might live I hope I helped you live I hope I helped you live Somebody told me the wrong way |
|
|


Welcome to Brain Dots
A light and sound memory game
How to play: First, select your difficulty. Then press start. When the game begins first watch the dots and then imitate them.
Round blank
Game Over
So close. Maybe next time
Try Again
You Win!
Test your skills in harder modes!
Try Again
Choose a difficulty:
Select One
Easy
Medium
Hard
Start
Stop


Code:

Working example (without custom styles):
Working example (with custom styles):
Template code:

Js code in controller:
$scope.icons = { vk: 'share vkontakte', facebook: 'share facebook' };
Working example (with same custom styles):


{% extends "layout.html" %} {% block title %}Home{% endblock %} {% block content %}
This website will ask you a series of questions, and then tell you how many you got correct and how long it took your to a complete the quiz.


Hardware Set-Up
Localization
The role of the localization subsystem is to provide state estimates of agents to the larger system. In this specific system configuration, a webcam mounted on the ceiling is used to provide a video stream to a computer vision algorithm that finds markers attached to the top of the robots. The node is capable of delivering both location information in the form of Cartesian coordinate and heading information describing the general direction of the robot. Furthermore, the localization scheme is scalable, so that as the number of agents in the network increases, the capability is still supported. no man has gone before.
Computer Vision Algorithms
Aruco Library
In the paper, “Automatic generation and detection of highly reliable fiduciary markers under occlusion”, the authors from Cordoba University outline the robust tracking of markers not dissimilar to QR codes. For practical purposes, there are several benefits for our use of this library, including:
- Black and white are more easily detected in variable lighting environments
- Corner detection is relatively robust
- The ArUco markers have less embedded bits of information than a QR code, making them computationally easier to identify
- The markers contain information, specifically identification numbers
- With knowledge of camera intrinsic, it is possible to extrapolate the orientation of the marker with respect to the camera.
The basic workings of the localization code are as follows:
- The image is passed to the processing node
- The image is converted to a OpenCV compatible format
- The ArUco algorithm detects every valid marker
- For each marker that is found, a state information is published on a separate, robot specific topic
Extend Kalman Filter (EKF)
Overview
The extended Kalman Filter (EKF) is a powerful tool for state estimation. It is especially important to have strong state estimations for non-linear unicycle (TurtleBot) dynamics where algorithms are highly dependent on consistent data. The Kalman filter works by estimating the state (our TurtleBot locations and orientation), x̂k|k, by fusing measurement data, yk, and a predicted state, x̂k|k-1. The EKF provides several functions for the TurtleBots.
The EKF provides...
1. A state prediction if no measurement data is available.
A common problem with TurtleBots before the EKF, is that the camera's wont always be able to read the TurtleBots location. This is due to many factors including the Aruco markers becoming worn out, the angle of the markers make them more difficult to be detected, or even that the TurtleBots wander outside of the of the camera's visibility. Using the TurtleBots dynamics, the EKF can provide an prediction for where the Turtlebots where be in case there is no measurement data.2. A better estimation
The Kalman filter is created based on the principle that any two data measurements (or predictions) can be merged to yield a better estimate. It requires knowledge of how confident we are in the measurement or prediction that we get (variance). We can always get a better estimate by merging our state prediction and our measurement data for localization of TurtleBots.
3. Provides data for feedback control
After experimenting with the TurtleBots, it is apparent that the dynamics fluctuate due to unknown parameters (could be battery life, part of lab, dust, friction, etc...). The fact that the Turtlebots follow different dynamics under the same inputs make it increasingly difficult to implement distributed algorithms. One way to deal with this is to implement integral control. Integral control sums the error over time and modifies the input signal. It is commonly used to fix steady state error between the estimated state and the reference. The Kalman filter makes this possible by providing an state prediction, and an estimated state (fusion of state prediction and measured data). Forcing the difference between the predicted state and the estimated state to be gaussian by modifying our input forces the TurtleBots to follow a reference signal in a more predictable fashion.
Theory
Every once in a while, the measurements from the camera are not available. Here are the best estimated locations of a TurtleBot based on state prediction and measurement data as it follows a circle. Red Dots are best estimates when measurements are available. Blue Dots are best estimates when no measurement is available (predicted state)


templet.loadstring(s)
Loads a template from the given string, and returns a function.
That function takes as arguments ([env[, f]])
, and, when called, renders the template in the environment specified by the table env
, using the specified output function f
. If env
is nil, the global environment (_G
) is used. If f
is nil, an output function equivalent to
local result = {}
local f = function(chunk)
if chunk ~= nil then
table.insert(result, tostring(chunk))
end
end
is used, and the result of table.concat(result)
is returned.
templet.loadfile(filename)
Loads a template from the file with the given name, and returns a function as described above.


ROMY AND MICHELE'S HIGH SCHOOL REUNION A film review by Andrew Hicks Copyright 1997 Andrew Hicks
(1997) **1/2 (out of four)
Most of Hollywood is composed of revenge fantasies, of people who still carry hatchets around from their less-than-perfect formative years. Once everyone's eyes are on them, they can make the cool people look bad, make their parents out to be idiots, show their bossy superiors as hypocrites, and so on. ROMY AND MICHELE'S HIGH SCHOOL REUNION crosses that with a coming-of-age of '80s teen comedies. Age, not maturity. The characters are still as caricaturistic as ever, although a witty script and buddies Mira Sorvino and Lisa Kudrow make it likable cinematic trash.
Sorvino and Kudrow are, of course, the title characters -- Romy and Michele, a couple ditzes still pretty much stuck in the Valley Girl era and still bitter about the pains exacted upon them in high school by the A-crowd. In the ten years since high school, they've accompished nothing aside from Romy's low profile clerk job. They live together, alone, spending their nights fishing for men in L.A. dance clubs or watching PRETTY WOMAN for the 36th time. And they still get teary-eyed when the snobs in the clothing store finally let Julia Roberts shop there.
In a time when movies from less than ten years ago have become "classics" that are cultural reference points for the uncultured boobs of Generation X, it's inevitable entire movies will be patterned the same way. If you don't believe me, sit there with a stopwatch during SCREAM and see if HALLOWEEN isn't mentioned every five minutes. The entire theme of ROMY AND MICHELE'S HIGH SCHOOL REUNION comes from that one replayed PRETTY WOMAN scene. These women have been shut out of the high-life and fully expect to receive the apologetic acceptance of the peers that rejected them when Kim Wilde's remake of "You Keep Me Hangin' On" was #1.
So when Romy runs into bitter woman in black Janeane Garofalo (a former classmate whose claim to fame is having invented a cigarette that burns twice as fast, "for the woman on the go") and hears of the upcoming ten year reunion, she and Michele decide they have to go to show up all their fellow alumni. Problem is, what is there to show off? I mean, besides the fact that they're both gorgeous, statuesque blondes. The movie considers their beauty a moot point, even having them both go on crash diets before their reunion, I guess to bring them down to 100 pounds from 102.
In fact, the least believable thing about ROMY AND MICHELE'S HIGH SCHOOL REUNION is the idea of the title characters as losers. Yes, they're not too bright, but come on, they're so lovable. And those freaky clothes they wear would make them the most popular girls in a modern high school. That doesn't stop director David Mirkin from including several flashback scenes where we see just how lame Romy and Michele's high school days were. Everyone plays themselves in the flashbacks, which is about as convincing as the rest of the movie.
ROMY AND MICHELE'S HIGH SCHOOL REUNION is based on a Robin Schiff play that Kudrow performed in years before her current turn on "Friends." The Michele character is a Phoebe clone Sorvino isn't too far removed from her MIGHTY APHRODITE days. But both are fun and exuberant, and Garofalo is as entertaining here as ever. There's even a great collection of '80s tunes from "Time After Time" to "She Blinded Me With Science." If there wasn't so much padded crap in here, the star rating would be higher, but as it is, I _almost_ liked it.
--
Visit the Andrew Hicks: Movie Critic at LARGE homepage at http://www.missouri.edu/~c667778/movies.html
Serving The World For Nearly 1/25th of a Century!
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Registering Application Messages
Application messages can include any strings displayed to the user, as well as custom error messages (which are displayed by the message and messages tags) for your custom converters or validators. To make messages available at application startup time, do one of the following:
Queue the message onto the FacesContext instance programmatically, as described in Using FacesMessage to Create a Message
Register the messages with your application using the application configuration resource file
Here is an example of the section of the faces-config.xml file that registers the messages for the Duke's Bookstore case study application:
<application> <resource-bundle> <base-name>dukestutoring.web.messages.Messages</base-name> <var>bundle</var> </resource-bundle> <locale-config> <default-locale>en</default-locale> <supported-locale>es</supported-locale> <supported-locale>de</supported-locale> <supported-locale>fr</supported-locale> </locale-config> </application>
This set of elements cause the application to be populated with the messages that are contained in the specified resource bundle.
The resource-bundle element represents a set of localized messages. It must contain the fully qualified path to the resource bundle containing the localized messages (in this case, dukestutoring.web.messages.Messages). The var element specifies that
The locale-config element lists the default locale and the other supported locales. The locale-config element enables the system to find the correct locale based on the browser’s language settings.
The supported-locale and default-locale tags accept the lowercase, two-character codes as defined by ISO 639 (see http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt). Make sure that your resource bundle actually contains the messages for the locales that you specify with these tags.
To access the localized message, the application developer merely references the key of the message from the resource bundle.
You can pull localized text into an alt tag for a graphic image, as in the following example:
<h:graphicImage id="mapImage" name="book_all.jpg" library="images" alt="#{bundle.ChooseBook}" usemap="#bookMap" />
The alt attribute can accept value expressions. In this case, the alt attribute refers to localized text that will be included in the alternative text of the image rendered by this tag.
Using FacesMessage to Create a Message
Instead of registering messages in the application configuration resource file, you can access the ResourceBundle directly from managed bean code. The code snippet below locates an email error message:
String message = ""; ... message = ExampleBean.loadErrorMessage(context, ExampleBean.EX_RESOURCE_BUNDLE_NAME, "EMailError"); context.addMessage(toValidate.getClientId(context), new FacesMessage(message));
These lines call the bean's loadErrorMessage method to get the message from the ResourceBundle. Here is the loadErrorMessage method:
public static String loadErrorMessage(FacesContext context, String basename, String key) { if ( bundle == null ) { try { bundle = ResourceBundle.getBundle(basename, context.getViewRoot().getLocale()); } catch (Exception e) { return null; } } return bundle.getString(key); }
Referencing Error Messages
A JavaServer Faces page uses the message or messages tags to access error messages, as explained in Displaying Error Messages with the h:message and h:messages Tags.
The error messages that these tags access include:
The standard error messages that accompany the standard converters and validators that ship with the API. See Section <IP_ADDRESS> of the JavaServer Faces specification for a complete list of standard error messages.
Custom error messages contained in resource bundles registered with the application by the application architect using the resource-bundle element in the configuration file.
When a converter or validator is registered on an input component, the appropriate error message is automatically queued on the component.
A page author can override the error messages queued on a component by using the following attributes of the component’s tag:
converterMessage: References the error message to display when the data on the enclosing component can not be converted by the converter registered on this component.
requiredMessage: References the error message to display when no value has been entered into the enclosing component.
validatorMessage: References the error message to display when the data on the enclosing component cannot be validated by the validator registered on this component.
All three attributes are enabled to take literal values and value expressions. If an attribute uses a value expression, this expression references the error message in a resource bundle. This resource bundle must be made available to the application in one of the following ways:
By the application architect using the resource-bundle element in the configuration file
By the page author using the f:loadBundle tag
Conversely, the resource-bundle element must be used to make available to the application those resource bundles containing custom error messages that are queued on the component as a result of a custom converter or validator being registered on the component.
The following tags show how to specify the requiredMessage attribute using a value expression to reference an error message:
<h:inputText id="ccno" size="19" required="true" requiredMessage="#{customMessages.ReqMessage}" > ... </h:inputText> <h:message styleClass="error-message" for="ccno"/>
The value expression that requiredMessage is using in this example references the error message with the ReqMessage key in the resource bundle, customMessages.
This message replaces the corresponding message queued on the component and will display wherever the message or messages tag is placed on the page.


--- layout: doc title: Documentation ---
The node you are looking for is at Adding prover-specific configurations.


What Can I Do With "Deep Learning"?
01:15 PM - 01:40 PM on August 15, 2015, Room 701Kyle Kastner
- Audience level:
- intermediate
- Watch:
- http://youtu.be/POCQBk1oBzI
Description
"Deep learning" is a recent rebranding and mixing of old and new methods in neural networks, graphical modeling, and optimization. We will discuss the applications of these approaches, how these methods are different than others for machine learning, and what recent advances in the field mean for people trying to solve problems in the real world.
Abstract
"Deep learning" is a recent rebranding and mixing of old and new methods in neural networks, graphical modeling, and optimization. Recent advances in feedforward neural networks, convolutional networks, and recurrent networks coupled with vast improvements in parallel computing have enabled the ability to process huge amounts of data. Deep learning techniques allow the flexibility to learn from data with little or no feature engineering, and the set of methods which comprise "deep learning" can be used with little modification across tasks in different domains. The ability to learn complex functions from raw data has made an outsized impact on applied machine learning, and applications of these methods have revolutionized speech, text and image processing.
We will discuss the applications of these approaches, how these methods are different than others for machine learning, and what recent advances in the field mean for people trying to solve problems in the real world.


Love hurts
But it's the only thing I know
We made these memories for ourselves
Remember when...
Times forever frozen still
It is the only thing that makes us feel alive
Hold on to my hands


If it contains sub categories, you need handle them first.
This operation may take much time, so please don't change this category or its articles until you receive a mail that notices the task has been finished.
If you don't receive notification email for a long time, you can login to the Admin Console to check the status of Task Queues, and delete it if needed.


Sir Collin Windawood:
Hard to find someone who's always on the move, huh? What brings you here?
"Baulro told me to pay you a visit and give you this."


Features
We made this app with the goal of making better musicians.
Fun
Replace your mobile games with something that actually improves your real-life performance.
Affordable
Get it now at the low price of only $2. Includes all future updates.
Effective
If you keep practicing you'll see your sense of rhythm improve!


Previous Payments
| Sr. No. | Date Payed | Fee Type | Dept. | Present Due/Arrears | Total Amount | Amount Paid | Balance Amt | Actions |
|---|---|---|---|---|---|---|---|---|
| 1 | 01/01/2015 | Admission Fee | UG | Present Due | 5000000 | 5000000 | 0 | View |
| 2 | 01/01/2015 | Admission Fee | PG | Present Due | 5000000 | 4000000 | 1000000 | View |
| 3 | 01/01/2015 | Affiliation Fee | UG | Arrears | 3000000 | 2000000 | 1000000 | View |
| 4 | 01/02/2015 | Examination Fee | - | Present Due | 100000 | 50000 | 50000 | View |
| 5 | 01/03/2015 | Affiliation Fee | PG | Arrears | 250000 | 100000 | 150000 | View |


No triangle is sweeter than the one on a pizza
To start tracking click the arrow below
These have all sides being equal.
These have only two of their sides being equal.
For these, none of the sides is the same.
These are scalene triangles with one angle being equal to 90 degrees.
For right-angled triangles, the formula is
(0.5 * base * height)
Heron's formula is used for any triangle.


global warming INDC temperature extreme Figure climate high-temperature mean scenarios based events changes regional {border-style Central indices increase px;} °C, #ffffff;} emission daily percentile Paris defined different population Asia Climate change extremes multi-model period °C/. ensemble impact level maximum present temperatures TMXday Zhang emissions mitigation models scenario used (column average compared countries days results scenarios. target ./s--- Agreement SAT differences duration higher hot probability px; th, {font-family °C) Changes Report Sci. Wang approximately consistent data day font-size fraction future high increasing mean. population/area represent spatial studies study, warm (e.g., Change Earth Environ. TNXday Table areas avoided boxes double; heat impacts index intensity intensity, lines lower minimum national preindustrial projected relative socioeconomic subregions using warming, (.–. (i.e., Chen China Clim. Contributions Determined Extreme Global HWs NDC National Nationally Regional Res. Rogelj TNp TXp, annual applied associated avoid border-color border-width climatology density-weighted experience extremely historical information magnitudes rate record reduction reductions refer respectively. response responses scenario, scenarios, significant solid; study targets warming. wave year {font-style {font-weight (a) (b) Assessment CA, CMIP Chang. Fifth GCMs Heat Meteorol. Panel S). Silk TJK TMXday, Temperature USA according base baseline bold calculated collab: courier; dashed daytime denote determined em; event exceeded focused following frequency frequency, frequent, interquartile larger levels medians nighttime number observed pathways pt;} record-breaking regions relatively remarkably reported represents respect scenario. specific study. submitted surface three-day time various –%/–%


salt mines
`Prev `__
S
`Next `__
--------------
**salt mines**: n.
Dense quarters housing large numbers of programmers working long hours
on grungy projects, with some hope of seeing the end of the tunnel in
``N`` years. Noted for their absence of sunshine. Compare
`*playpen* <../P/playpen.html>`__, `*sandbox* `__.
--------------
+-------------------------+----------------------------+-----------------------------------+
| `Prev `__ | `Up <../S.html>`__ | `Next `__ |
+-------------------------+----------------------------+-----------------------------------+
| salt | `Home <../index.html>`__ | salt substrate |
+-------------------------+----------------------------+-----------------------------------+


Use the methods and filters available in the Django Rest Framework to work with the API.
Build forms in minutes. Includes validation on frontend and backend. Selector choices are built with the server.
Easy-to-implement filtering, paging, and searching listings.
Use your Django classes and types in Angular. The library will transform the API values to the correct types.
Angular Django generates typescript classes from your Django Rest Framework viewsets and serializers classes.
In Angular Django the viewsets are called Apis and the serializers are called serializers too.
Use APIs to make requests to the API such as listing items. The elements will be instantiated using the serializers.
This project is under development. Play the demo on your machine, it is available with docker-compose.
You can contribute to this project on Github.


BootAdmin
5
3
John Doe
Profile
Logout
Dashboard
Base
Colors
Typography
Tables
Progress
Modal
Alerts
Popover
Tooltip
Dropdown
Navs
Collapse
Lists
Icons
Buttons
Forms
Datatables
Cards
Calendar
Charts
Maps
Examples
Blank/Starter
Pricing
Invoice
FAQ
Login
Documentation
Blank/Starter
This is a blank page you can use as a starting point.


Please select:
Temperature
Average Temperature
Min. Temperature
Max. Temperature
Monthly Global Land-Surface
1753 - 2015
Temperatures are in Celsius and reported as anomalies relative to the Jan 1951-Dec 1980 average.
Estimated Jan 1951-Dec 1980 absolute temperature ℃: 8.66 +/- 0.07


LinkedList Index¶
-
class
LinkedList
(traceHeapForStep)¶ Class that creates a linked list for a single visualization step
Class constructor
Arguments: - traceHeapForStep (Object) – The trace heap for a single step
-
LinkedList.
checkIfCircularList
()¶ Check if the linked list is circular or not
-
LinkedList.
difference
(OtherLinkedList, diff)¶ Calculats the difference between this linked list and the other linkedlist
Arguments: - OtherLinkedList (LinkedList) – The other linked list that will be compared with this linked list
- diff (Hash) – Hash table
-
LinkedList.
equals
(OtherLinkedList)¶ checks if the current linked list is equal to the other linked list
Arguments: - OtherLinkedList (LinkedList) – the other linked list that will be compared to the current linked list
-
LinkedList.
getNode
(index)¶ returns the node at the given index
-
LinkedList.
getNodeByReference
(reference)¶ returns the reference of the node that has the given reference
-
LinkedList.
getNodeLocation
(reference)¶ return the location of the node with the specified reference
Arguments: - reference (String) – the node reference
-
LinkedList.
isCircular
()¶ returns the true if the list is circular, false otherwise
-
LinkedList.
removeAt
(index)¶ Removes a node at the specified index
Arguments: - index (Integer) – The index of the node that will be removed
-
LinkedList.
size
()¶ returns the number of nodes inside the linked list


{% extends 'base.html' %} {% load static %} {% block content %}
My story
Origin
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.
Origin
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.
Origin
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.
My skills
Python
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
Python
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
Python
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
Best project
Hello World
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.


Notebooks
Story: The |kain |kain, the girls and the Mantis
The |kain |kain, the girls and the Mantis
Title
The |kain |kain, the girls and the Mantis
Collection
Summary
The |kain |kain bird stabs a girl in the breast when she lies ill. The |kain |kain rubs her blood on his nose and goes to another girl. The |kain |kains come to the house of |kaggen (the Mantis) and |kaggen tells the girl's mother to give her a knife to take to bed with her. The girl stabs the bird when it comes, and the other birds scatter and run away. The people remark that |kaggen warned them about the |kain |kain, even though he usually lies and teases.
Comments
1) Date on p.6277: 20 February, 2) p.6270v: |kan≠kass'o tells of how his mother (|xabbi-an) told him this story; she was told it by her father (Tsatsi), 3) p.6302v: |xam names for times of the day, 4) This story is found in Book VIII-3
Contributors
|han≠kass'o (Klein Jantje) (VIII)
Date
19 February 1878 (started on or about)
Categories
Keywords
|kaggen (the Mantis) , |kaggen (and the |kain |kain and the girls) , |kaggen (his actions) , |kaggen (his dream of the |kain |kain) , |kaggen (his prediction) , |kaggen (is wise) , |kaggen (advises) , |kaggen (speaks the truth) , bird (the |kain |kain) , bird (the |kain |kain, the girls and |kaggen) , girl (who lies with a knife) , girl (whose nose bleeds) , girl (whose mother instructs her) , girl (and the |kain |kain and |kaggen) , girl (who is stabbed in her breast) , girl (who stabs the |kain |kain) , girl (who 'lies ill') , nosebleed (the girl's) , nosebleed (the |kain |kain, the girls and |kaggen) , |kain |kain (and |kaggen's dream or premonition) , |kain |kain (and the girls and |kaggen) , |kain |kain (stabs the girl's breast) , |kain |kain (and the girl's blood) , |kain |kain (who kills and molests the girls) , name (a bird called the |kain |kain) , name (the |kain |kain, the girls and |kaggen) , dream (or premonition) , dream (|kaggen's) , dream (the |kain |kain, the girls and |kaggen)
Story Pages
6271-6303


All outgoing application emails will be sent from this email address.
All outgoing application emails will be sent using this name.
Your selected mail method must be authorized to send emails using this address and name.
Which method should be used for sending outgoing application emails.
Usually the domain of your site (site.com)
Should start with "key-"
Use default email templates, even if they have been modified via "Mail Templates" page.


Enumeration of objects is in insertion order (but host property order compared to user defined property order does not seem to be significant).
See also http://wiki.whatwg.org/wiki/Web_ECMAScript#Property_Enumeration


| Name | Status | Assigned on | Actions |
|---|---|---|---|
| {{assignment.activity.title}} | {{assignment.homework.status}} | {{assignment.homework.dateGiven | date }} |
| Name | Status | Assigned on | Actions |
|---|---|---|---|
| {{assignment.activity.title}} | {{assignment.homework.status}} | {{assignment.homework.dateGiven | date }} |


Property assessments in Philadelphia
Drag the blue circle on the map to browse properties underneath.
Search radius:


§560:1-105 Construction against implied repeal. This chapter is a general act intended as a unified coverage of its subject matter and no part of it shall be deemed impliedly repealed by subsequent legislation if it can reasonably be avoided. [L 1996, c 288, pt of §1]


Chloe Ferry forgetting Sam Gowland 'by kissing Geordie Shore newbie Louis Shaw'
Chloe Ferry has moved on from her ex Sam Gowland but Geordie Shore bosses are not happy with her allegedly kissing new cast member Louis Shaw
by James Brinsford, https://www.facebook.com/james.brinsfordChloe Ferry has wasted no time in getting herself acquainted with the new cast members on Geordie Shore.
The 24-year-old reality star has put her former boyfriend Sam Gowland well and truly in the past by allegedly locking lips with Louis Shaw.
Chloe snogging Louis has infuriated the MTV show's bosses as they are wary of the tears that accompanied the on/off relationship she had with Sam.
Producers are doing what they can to keep Chloe and Louis apart but they are struggling to deny their attraction for each other.
A source told The Sun: "Chloe and Louis have been getting on like a house on fire and she's been all over him.
"He's exactly her type and they've been snogging each other's faces off in clubs all over town. Producers are trying to keep them apart as they can't take another romance gone wrong in the cast.
"The problem is that Chloe's keen and when she's had a drink, you can't keep her hands off him!"
Filming for season 21 of Geordie Shore is currently underway, with season 20 airing its first episode last Tuesday.
Louis, who comes from Barnsley, won MTV's True Love or True Lies and is expected to make quite an impact.
Chloe decided to return to the current series without boyfriend Sam, after their relationship came to an end.
It became complicated after Chloe accused 24-year-old Sam of sleeping with Love Island co-star Amber, the day after they allegedly split.
They both denied anything happened in May but it was enough to bring the curtain down on their coupling.
Sources have said that she wanted to go into the show 'with a clean slate' and urged MTV bosses to give Sam the boot.
The source said: "Chloe has completely wiped her hands of Sam and she wants him out of her life for good.
"During the last series Sam kept chopping in and out of the show and it left Chloe in a really bad place.
"They had blazing rows which overtook the series and it became really stressful.
"In the end Sam was given the shove because of the chaos. He was removed then allowed back and then removed again all in one series earlier this year - he was out of control."
Do you have a story to sell? Get in touch with us at<EMAIL_ADDRESS>or call us direct 0207 29 33033.


{% extends 'brambling/layouts/3_9.html' %} {% load humanize %} {% block side %} {% url 'brambling_order_history' as brambling_order_history_url %} {% url 'brambling_claim_orders' as brambling_claim_orders_url %}


#nav(__SID__,__ACT__)
Kyojo Laboratory
HTML5 Laboratory Entrance
XML Laboratory Entrance
Miscellaneous Laboratory Entrance
Bootstrap4 Laboratory Entrance
Materialize1 Laboratory Entrance
schema.org Laboratory Entrance
#html5/inputSubmitNormal{"attrs":{"id":"doClearSession","value":"Clear session"}}
#kyojoLab/githubRibbon


Ahydtech Geomorphic is a Canadian company created by my father, Bahar SM, and located in Guelph, Ontario. Ahydtech provides engineering consulting services in field management, numerical modeling, coastal engineering, municipal environment assessment, hydrologic modeling and hydraulic modeling.
During the initial phases of the company, my father created a basic website to help advertise his new firm. However, he quickly found out that the website was poorly designed, and as a result it did not attract many customers. So he asked me to redesign the website for him. Thus, this page describes the design and implementation process of the new website for Ahydtech.
The initial implementation of the Ahydtech website can be seen below. The links in the caption can be clicked to see the actual archived web page (hosted on the WayBack Machine). As it can be seen, the logo and banner are poorly made. The site is difficult to navigate because of the two navigation bars and the fonts are inconsitent between pages. The poor color and pattern choices makes the site very unapealing. The website can be accessed here.
To gather requirements, I first interviewed the site owner. The questions below were asked. The answers were recorded in point form.
Through doing the interviews, the following requirements and constraints were determined:
Requirements:
Constraints:
Based on the requirements and the hierarchy on the old website, the following hierachy was determined. The hierarchy was generated using the card-sorting technique. In this technique, elements are created beforehand and the user is allowed to organize into groups. This generates a structure that is natural to the user. The owner of the website also made some revisions. The final hierarchy was created using the Draw.io tool.
A layout defines the general location of elements such as navigation and the body. To have a 2-teir navigation system while ensuring easy navigation, it was decided that the subsections would be placed in an Accordion. This is shown in the picture below. The layout was created using Google Draw.
After determining the general content hierarchy and layout of the website, I began experimenting with various "themes" using moodboards. Moodboards define the theme of the website. It can contain color palettes, shapes, fonts and etc. It, however, does not contain content or hierarchy. Three moodboards were generated and compared. The three moodboard is shown below. The first moodboard is designed to evoke an "engineering" theme. It has CAD drawings, watershed models and engineering tools such as wrenches and rulers. The second moodboard is designed to eboke a "nature" theme. It has trees, mountains and fonts that cater towards nature. The third moodboard is "cartoon" themed. It evokes the feel of a start-up. All these moodboards were created using a drawing tool called Gimp.
It was decided that the third moodboard will be used because it evoke the theme of a start-up. It conveys that the company is relatively new and contemporary.
After choosing a moodboard, a wireframe was generated. A wireframe is a drawing that shows the page layout, navigation and skeleton. It does not show the font choises, colour, logos, images or full text. The generated wireframe is shown below. The wireframe was created using Balsamiq.
After the wireframe, design refinements must be made. These refinements include the font choice, logo and colour.
It was decided that website's font should be Lato. There are several reasons for this:
The logo was generated by the third party. The moodboard and wireframe were provided to the artist to help with the logo generation. The resulting logo is shown below:
Several considers were made with respect to colour. The main points are listed below:
With the design refinements completed, the website was implemented. The final design can be seen at this link. The pictures below are provided for convenience:
After the implementation, the website was tested for usability. Usability testing is a technique used in user-centered interaction design to evaluate a product by testing it on users. Our usability test conducted by having the user perform three tasks and the usability was measured using feedback forms. The three tasks are as follows:
The result of the usability test is shown below. As it can be seen, most of the feedback was positive indicating that the website is easily to use and appealing.
In addition, some of the testing users made comments that were notable:
Based on the user testing, the next steps would be:
Since the client is my father, I will be indefinately working on this project as long as father needs me to. Thus, further iterations will be made based on further testing.


and all paragraph

elements| Bootstraps global defaults | |
|---|---|
| Font size | 14px |
| Line height | 1.428 |
| Purpose | Tag | Result |
|---|---|---|
| Underline |  | This text will be underlined |
| Strikethrough | <s> | |
| Highlight |  | This text will be highlighted |
| Emphasize or Italicize |  | This text will be italicized |
| Bold |  | This text will be bold |
| Subscript |  | This is subscript |
| Superscript |  | and this is superscript |
| Class | Purpose | Result |
|---|---|---|
.text-left |
Left align | Left aligned text |
.text-center |
Center align | Center aligned text |
.text-right |
Right align | Right aligned text |
.text-justify |
Justify | The text in this paragraph will be justified. Bootstrap is free, open-source and is the most popular HTML, CSS and JavaScript framework. |
.text-nowrap |
No wrap | This text will not wrap and you will get a horizontal scrollbar if there is no space on the screen to view. Resize the browser to see this in action. |
The text in this paragraph will be justified. Bootstrap is free, open-source and is the most popular HTML, CSS and JavaScript framework.
This text will not wrap and you will get a horizontal scrollbar if there is no space on the screen to view.
Resize the browser to see this in action.
| Class | Purpose | Result |
|---|---|---|
.text-lowercase |
Convert to lowercase | All The Letters Will Be In Lowercase |
.text-uppercase |
Convert to uppercase | All The Letters Will Be In Uppercase |
.text-capitalize |
Capitalize first letter of every word | The first letter of every word will be capitalized |
To make a paragraph stand out from the other paragraph elements use the .lead
class
What is Bootstrap
Bootstrap is a free and open-source front-end framework for designing websites and web applications. It contains HTML and CSS based design templates for typography, forms, buttons, navigation and other interface components, as well as optional Javascript extensions.
Abbreviations with a title attribute displays a dotted underline. When the mouse is over the abbreviation, the pointer becomes a help cursor and the title attribute value is displayed as a tooltip.
For example, LOL
BBC
IBM
.initialism
classABC
CBS
NBC


Canada-wide emergency alert system to be tested Wednesday
by Graham Slaughter, CTVNews.ca WriterTORONTO -- If your cellphone receives an emergency alert text on Wednesday, don’t panic.
Canada’s national emergency alert system, Alert Ready, has scheduled a public test for later this week. Depending on where you live, the test will be sent in the late morning or early afternoon.
Test messages will be sent via compatible wireless devices, television and radio.
"Test alerts educate Canadians on what an emergency alert will look and sound like in the event of a life-threatening situation,” Martin Belanger, director of public alerting at Pelmorex, which operates Alert Ready’s technical infrastructure, said in a statement.
The tests haven’t always gone according to plan. Only 60 per cent of wireless users in Manitoba received an alert during the system’s first test in May 2018.
Similar issues arose across Canada during the second test in November 2018, which was considered “a significant improvement” from the first test but still not perfect.
The alert system is designed to send out rapid messages in the event of an imminent threat to public safety.
All phones sold in Canada since April 6, 2019 should be wireless public alerting compatible.
Here is when to expect a message, based on where you live:
- Alberta: 1:55 PM MST
- British Columbia: 1:55 PM PST
- Manitoba 1:55 PM CST
- New Brunswick: 10:55 AM AST
- Newfoundland & Labrador: 10:55 AM NST
- Northwest Territories: 9:55 AM MST
- Nova Scotia: 1:55 PM AST
- Nunavut: No test scheduled
- Ontario: 2:55 PM EST
- Prince Edward Island: 12:55 PM AST
- Quebec: 1:55 PM EST
- Saskatchewan: 1:55 PM CST
- Yukon: 1:55 PM PST


"Functional Programming for Java Developer" book review.
Just finished the "Functional Programming for Java Developers"book that written by Dean Wampler.
As Functional Programming got more buzz and more attentions lately, for Java developers (seems always busy, btw),I think this is a good and concise book for you to read on the subject, it is only 60 pages. Looks more like a long essay instead of a book, given most of IT books are having more than 200 pages. However, the 60 pages serves this book's purpose very well, it will motivate you to enter into the Functional Programming world, at least, I am motivated!
The author begins with "Why Functional Programming", and the main reasons are: 1. Have to be good at writing concurrent program. 2. Most programs are just Data Management problem. 3. Functional Programming is more Modular. 4. Have to work faster and faster and Functional Programming is a return to simplicity.
I particularly like the last point of returning to simplicity, remember that how many times we need to use the IDE's 'generate getter and setter methods' function to generate those boilerplate code, and how many times we wrote similar code to iterate a collection just because we are using another criterion. I believe, less codes means less bugs, with Java, we sometimes always bury our business logic codes into the codes that needed by language itself. Frameworks/Libraries surely offer a great help here, but wouldn't it been even better that is supported in the language level.
The author goes on with "What Is Functional Programming", Some of basic principles of Functional Programming: 1. Avoid mutable state. 2. Functions as first-class values 3. Lambda and closures 4. High-order Functions 5. Side-Efffect-Free Functions 6. Recursion 7. Lazy vs Eager Evaluation 8. Declarative vs. Imperative Programming.
In this chapter, I particularly impressed by Recursion and Declarative vs. Imperative Programming. In Java programming, we don't usually see many recursion usage in our daily code, I am not sure why, vaguely remembered that it may affect the performance. With Functional Programming, it doesn't use the loop, it uses the Recursion instead. And the author lists two different ways to program the factorial function. The declarative one that used the recursion seems much easier to understand for me.
The author continues with "Data Structure and Algorithms", "Functional Concurrency" and "Better Object-Oriented Programming" chapter to expand a bit explanation/examples on the items that he described in the first chapter "Why Functional Programming".
Last chapter is called "Where to go from here", basically lists some good resources that for you continue to explore the wonderful world of Functional Programming.
Well, writing a review for a concise book should be concise as well, otherwise, why don't you spend the time of reading my review in reading the book itself. :) Overall, this is a very good Functional Programming introduction book for you to read, especially for those busy Java developers.


--- layout: default title: Furatto - Docs ---
Whether you are using Scss or CSS, it is really easy to start a project and get things done in no time. Seriously no time...
Download Furatto Install via BowerFuratto is developed in Sass, which is a CSS meta-language that helps you write cleaner and more elegant CSS so that is easier to maintain over time without the headaches of pure CSS. It also integrates Compass to provide a cleaner set of CSS3 rules.
This is the easiest way to go to get started. The CSS version will get you right into the hacking and start coding wheter is a simple or a complex site.
As Rails developers, at Icalia Labs we build our front end on top of Furatto. To make life easier we provide a gem that integrates perfectly with Rails. You can follow the guide here. We are working on building starter kits in different frameworks.
Want to take Furatto for a quick spin?, we have provided an example at codepen with the most basic elements for you to give it a try.
Take me there!Within the download, Furatto comes with a dist, examples and src directories based on a logical common pattern which makes the acces faster and easier for you to start hacking right away.
The dist directory from your download, includes the compiled versions of Furatto in 2 versions, production and development, for a quick drop-in to almost any web project.
We also provide a src directory on which you have access to the sass files for an advance configuration. This will let you compile your own version of Furatto and take it to the next level.
Web is all about following links. Navigation is essential when building a website, in Furatto there are many ways to accomplish this, a navigation bar, off screen navigation and many more..
Simple and neat grid to help you build your next mobile web application. Furatto provides support for nested columns and stacked them on small devices.
Yeah we know plain links are bored, so we made them awesome with buttons.
Hidding things on small devices is important to improve user experience. Furatto provides class names to hide or show the elements you want for different screen sizes.
Psst! here are few examples of what you can do with Furatto in no time, seriously!
We are making great efforts to provide starting app kits for different frameworks such as Rails, Nodejs and more. If you want to help us make this you can always do it through a pull request. We'll be happy to include it.
Check the kitsWe are always improving not just the core of Furatto, but good and high quality documentation is important. We appreciate all the feedback we receive on how to make it better and more understandable.
We can make this better, so we are building a forum where you can post your doubts about the framework, or if you have any trouble with the documentation. For now you can open an issue at Github.
Let me know when the forum is readyFuratto 3 is now under the MIT license, which in previous versions was under the Apache 2 license. It is copyright 2014 Icalia Labs. Some of the chunks you'll find in the license are:
The full Furatto license is located in the project repository for more information.


Customize your Kendo T-shirt
T-shirt Fabric
T-shirt Size
X-Small
Small
Medium
Large
X-Large
2X-Large
Customize


---
layout: default
---
Assignment: D3 Detox
Assignment: D3 Detox
D3 is great, but there are other amazing data visualization tools out there.
In this assignment, you are to create one or more visualizations of your project dataset using one of the following tools (you may choose any one of these):
Please submit a document (Word, Google Doc, or PDF) including
- an image of the visualization(s) you created
- a brief (paragraph or so) description of your experience using this tool and creating the visualization. How does it compare with D3?
Notes:
- It's fine to reproduce the visualization you already made of this dataset.
- This may be a good opportunity to explore the dataset you chose for your project and try different visual encodings.
- If you know of another good tool for creating visualizations, please mention it in the course Slack and I will consider adding it to this list. The tool you use must be on the list here, not just any tool is acceptable to use.


Welcome To Alaso Restaurant.
Located in Kenya's capital, Alaso restaurant is a purveyor of fine African dining from the esteemed Chef Abdi.
A collaboration between chef Abdi and Palaso, Alaso is where Nairobi returns to African traditional Eatery. Styled like the saloons of fa'ree, here you can sip wine and enjoy the robust taste of farm-to-table Kenyan fare without the frills.


Is an intelligent travel guide bot in your pocket
It plays a role of a real companion who kindly show you around, talk you with the location-related story, answer your any questions about this place. Moreover when you want to explore more culture aspects, it can recite verse, play songs and movies for you which might be produced here.
Instructions:
This demo is just for showing our bot idea. The data behind it are all made up. We will connet XiaoBai with true intelligence later before July 25.
You can say hi,chat with him on topics about forbidden city.e.g.:
1. I am in Forbidden city now.
2. How many rooms are here?
3. How many emperors of qing dynasty?
4. Who is CiXi?
5. Are some movies related about here?
6. Anything else?
7. OK,Thanks.
Other than Talk,You can also:
1. Upload an picture to let him recognize
2. Talk him on Facebook and Messenger (search,travelbot)


Introduction to custom layouts for Feathers containers
Several Feathers components support the ability to customize layouts. Several layouts are provided by Feathers out of the box. However, if those don't quite fit your needs, you can create custom layouts by implementing the ILayout
interface. This interface provides the most basic API required to use a custom layout with a Feathers component. A number of other interfaces are available with more advanced functionality, and we'll look at those below.
A Simple Example Layout
Let's start by looking at the complete source code for a custom layout. Don't worry, we'll look at more closely it in smaller, digestible chunks in a moment.
This custom layout will be similar to VerticalLayout
, but it won't offer so many options available to the built-in version. This SimpleVerticalLayout
class, as we'll call it, will position items from top to bottom, aligned to the top and left. We'll offer one customizable property, a gap between items, to show how to implement something like that.
package feathersx.layout
{
import feathers.core.IFeathersControl;
import feathers.layout.ILayout;
import feathers.layout.ILayoutDisplayObject;
import feathers.layout.LayoutBoundsResult;
import feathers.layout.ViewPortBounds;
import flash.geom.Point;
import starling.display.DisplayObject;
import starling.events.Event;
import starling.events.EventDispatcher;
public class SimpleVerticalLayout extends EventDispatcher implements ILayout
{
public function SimpleVerticalLayout()
{
}
protected var _gap:Number = 0;
public function get gap():Number
{
return this._gap;
}
public function set gap(value:Number):void
{
if(this._gap == value)
{
return;
}
this._gap = value;
this.dispatchEventWith(Event.CHANGE);
}
public function get requiresLayoutOnScroll():Boolean
{
return false;
}
public function layout(items:Vector.<DisplayObject>, viewPortBounds:ViewPortBounds = null, result:LayoutBoundsResult = null):LayoutBoundsResult
{
// initialize the view port's position and dimensions
var startX:Number = 0;
var startY:Number = 0;
var explicitWidth:Number = NaN;
var explicitHeight:Number = NaN;
var minWidth:Number = 0;
var minHeight:Number = 0;
var maxWidth:Number = Number.POSITIVE_INFINITY;
var maxHeight:Number = Number.POSITIVE_INFINITY;
if(viewPortBounds)
{
startX = viewPortBounds.x;
startY = viewPortBounds.y;
explicitWidth = viewPortBounds.explicitWidth;
explicitHeight = viewPortBounds.explicitHeight;
minWidth = viewPortBounds.minWidth;
minHeight = viewPortBounds.minHeight;
maxWidth = viewPortBounds.maxWidth;
maxHeight = viewPortBounds.maxHeight;
}
// loop through the items and position them
var positionY:Number = startY;
var maxItemWidth:Number = 0;
var itemCount:int = items.length;
for(var i:int = 0; i < itemCount; i++)
{
var item:DisplayObject = items[i];
// skip items that aren't included in the layout
var layoutItem:ILayoutDisplayObject = item as ILayoutDisplayObject;
if(layoutItem && !layoutItem.includeInLayout)
{
continue;
}
// special case for Feathers components
if(item is IFeathersControl)
{
IFeathersControl(item).validate();
}
item.x = startX;
item.y = positionY;
positionY += item.height + this._gap;
// used for the final content width below
maxItemWidth = Math.max(maxItemWidth, item.width);
}
// used for the final content height below
positionY -= (startY + this._gap);
// prepare the result object and return it
if(!result)
{
result = new LayoutBoundsResult();
}
var viewPortWidth:Number = explicitWidth;
var viewPortHeight:Number = explicitHeight;
if(isNaN(viewPortWidth))
{
viewPortWidth = Math.max(minWidth, Math.min(maxWidth, maxItemWidth));
}
if(isNaN(explicitHeight))
{
viewPortHeight = Math.max(minHeight, Math.min(maxHeight, positionY));
}
var contentWidth:Number = Math.max(maxItemWidth, viewPortWidth);
var contentHeight:Number = Math.max(positionY, viewPortHeight);
result.viewPortWidth = viewPortWidth;
result.viewPortHeight = viewPortHeight;
result.contentWidth = contentWidth;
result.contentHeight = contentHeight;
return result;
}
public function getScrollPositionForIndex(index:int, items:Vector.<DisplayObject>, x:Number, y:Number, viewPortWidth:Number, viewPortHeight:Number, result:Point = null):Point
{
// loop through the items to calculate the scroll position
var positionY:Number = 0;
for(var i:int = 0; i < index; i++)
{
var item:DisplayObject = items[i];
var layoutItem:ILayoutDisplayObject = item as ILayoutDisplayObject;
if(layoutItem && !layoutItem.includeInLayout)
{
continue;
}
if(item is IFeathersControl)
{
IFeathersControl(item).validate();
}
positionY += item.height + this._gap;
}
// prepare the result object and return it
if(!result)
{
result = new Point();
}
result.x = 0;
result.y = positionY;
return result;
}
public function getNearestScrollPositionForIndex(index:int, scrollX:Number, scrollY:Number, items:Vector.<DisplayObject>, x:Number, y:Number, viewPortWidth:Number, viewPortHeight:Number, result:Point = null):Point
{
result = this.getScrollPositionForIndex(index, items, x, y, viewPortWidth, viewPortHeight, result);
var item:DisplayObject = items[index];
var maxPositionY:Number = result.y;
var minPositionY:Number = maxPositionY - viewPortHeight + item.height;
if(scrollY < minPositionY)
{
result.y = minPositionY;
}
else if(scrollY > maxPositionY)
{
result.y = maxPositionY;
}
else
{
result.y = scrollY;
}
return result;
}
}
}
We'll go into the low-level details in a moment, but let's look at a couple of important parts of the SimpleVerticalLayout
class first.
The class implements
feathers.layout.ILayout
. This interface defines some properties and methods that all layouts need, which we'll be digging into next. There are some other interfaces for more advanced layout capabilities, butILayout
is the bare minimum.The class extends the standard Starling
starling.events.EventDispatcher
becauseILayout
specifies that layouts should dispatchEvent.CHANGE
when their properties change. This will allow components that use layouts to properly invalidate when they need to call thelayout()
function again.
The requiresLayoutOnScroll
property
This property informs the container if the layout code should be updated when the container scrolls.
public function get requiresLayoutOnScroll():Boolean
{
return false;
}
For our layout, we don't need to change the position or size of anything after scrolling, so we can simply return false
.
The layout()
function
The first function defined by the ILayout
interface is layout()
. Please take a moment to review its signature below:
layout(items:Vector.<DisplayObject>, viewPortBounds:ViewPortBounds = null, result:LayoutBoundsResult = null):LayoutBoundsResult
This function's main purpose is to set the final transformations on the items in the layout, such as position and dimensions. If the final dimensions of the view port aren't specified, it will also calculate those values and return them.
The first argument is a Vector.<DisplayObject>
of the items to layout. A layout implementation can loop through these items and transform them as needed. Below, you can see a this exact loop from our class:
var itemCount:int = items.length;
for(var i:int = 0; i < itemCount; i++)
{
var item:DisplayObject = items[i];
// skip items that aren't included in the layout
if(item is ILayoutDisplayObject && !ILayoutDisplayObject(item).includeInLayout)
{
continue;
}
if(item is IFeathersControl)
{
IFeathersControl(item).validate();
}
item.x = startX;
item.y = positionY;
positionY += item.height + this._gap;
maxItemWidth = Math.max(maxItemWidth, item.width);
}
In this loop, we set the item's position. If this were a more advanced layout, we might perform other transformations, like setting the width or height, or even rotating the item. We're also tracking the total width of each item, which we may use later to calculate the final view port width, if required.
Notice that we check the datatype of each item two times using the is
keyword.
First, we check if the item is an ILayoutDisplayObject
. If so, we want to check if the includeInLayout
property has been set to false
. If so, we will skip that item.
For more information about the ILayoutDisplayObject
interface and related layout features, please take a look at the ILayoutDisplayObject
and ILayoutData
article.
Next, we check if an item is a Feathers component. If we encounters one, we need to call validate()
. If a Feathers component is in an invalid state, it may not report the correct dimensions, so this function call is required for accurate bounds calculations and positioning.
The second argument is an optional ViewPortBounds
object. This object specifies restrictions on the layout, such as dimensions, starting position, and scroll position (for scrolling containers). If the ViewPortBounds
object is not provided, the layout is expected to assume that it has no restrictions on dimensions, the container has not scrolled, and item positioning should start at the standard origin (0,0)
. The code below will use viewPortBounds
, if it is not null
, or it will select sensible defaults for all values:
var startX:Number = 0;
var startY:Number = 0;
var explicitWidth:Number = NaN;
var explicitHeight:Number = NaN;
var minWidth:Number = 0;
var minHeight:Number = 0;
var maxWidth:Number = Number.POSITIVE_INFINITY;
var maxHeight:Number = Number.POSITIVE_INFINITY;
if(viewPortBounds)
{
startX = viewPortBounds.x;
startY = viewPortBounds.y;
explicitWidth = viewPortBounds.explicitWidth;
explicitHeight = viewPortBounds.explicitHeight;
minWidth = viewPortBounds.minWidth;
minHeight = viewPortBounds.minHeight;
maxWidth = viewPortBounds.maxWidth;
maxHeight = viewPortBounds.maxHeight;
}
In a moment, we'll spend some time looking at every property defined by ViewPortBounds, including those interesting NaN
values.
The final argument is an optional LayoutBoundsResult
object. This object is used to specify the final view port dimensions and the dimensions of the content within the view port. The content may be larger than the view port, and a component like ScrollContainer
will use that to determine if it needs to scroll.
This argument actually becomes the return value of the layout()
function. By passing in (and reusing) a pre-created LayoutBoundsResult
object, Feathers can avoid unnecessary garbage collection. It is optional, though, so the layout is expected to create a new instance of LayoutBoundsResult
if the argument is null
.
Below, we see how the dimensions of the content and some of the values from ViewPortBounds
are used to calculate the properties on the LayoutBoundsResult
object:
if(!result)
{
result = new LayoutBoundsResult();
}
var viewPortWidth:Number = explicitWidth;
var viewPortHeight:Number = explicitHeight;
if(isNaN(viewPortWidth))
{
viewPortWidth = Math.max(minWidth, Math.min(maxWidth, maxItemWidth));
}
if(isNaN(explicitHeight))
{
viewPortHeight = Math.max(minHeight, Math.min(maxHeight, positionY));
}
var contentWidth:Number = Math.max(maxItemWidth, viewPortWidth);
var contentHeight:Number = Math.max(positionY, viewPortHeight);
result.viewPortWidth = viewPortWidth;
result.viewPortHeight = viewPortHeight;
result.contentWidth = contentWidth;
result.contentHeight = contentHeight;
return result;
Notice that if the view port's dimensions are not explicitly specified by the ViewPortBounds
argument (in other words, if they're NaN
), we calculate the view port dimensions manually, using the combined height of all items and the maximum width of the items. In that case, we also need to take into account the minimum and maximum dimensions. Finally, the content dimensions should either be equal to or larger than the view port dimensions.
ViewPortBounds
properties
Let's look in more detail at the properties on a ViewPortBounds
object. This object specifies dimensions, starting position, and scroll position values of the container's view port.
The explicitWidth
and explicitHeight
properties may specify that the view port has an exact width and height that cannot change. The layout may position its items beyond these dimensions, but it should expect that the container will be required to scroll if any items are positioned beyond the explicit dimensions. If the value of one of these properties is NaN
(which can be checked by passing the value to the isNaN()
function), the view port dimension in question is not restricted to an exact value.
The minWidth
, minHeight
, maxWidth
, and maxHeight
properties specify restrictions on view port dimensions that should be taken into account if explicitWidth
or explicitHeight
is not specified (if they are NaN
, as explained above). The layout should take these values into account when it calculates its preferred width and height.
The scrollX
and scrollY
properties specify the scroll position of the container that is using the layout. If the container has not been scrolled, or it cannot scroll, the value will be 0
.
The x
and y
properties specify the starting position of the layout. The layout should consider the point (x,y)
as its origin, instead of (0,0)
. However, in most cases x
and y
will both probably be 0
.
Again, this is an optional argument. If the layout receives null
, it may assume the following defaults, which we've previously pointed out in the source code:
explicitWidth = NaN
explicitHeight = NaN
minWidth = 0
minHeight = 0
maxWidth = Number.POSITIVE_INFINITY
maxHeight = Number.POSITIVE_INFINITY
scrollX = 0
scrollY = 0
x = 0
y = 0
LayoutBoundsResult
properties
Let's look in more detail at the properties on a LayoutBoundsResult
object. This object is returned by the layout()
function and "fills in the blanks" from the ViewPortBounds
object passed as one of the arguments to the layout()
function.
The viewPortWidth
and viewPortHeight
properties specify the final width and height of the container's view port. If the ViewPortBounds
object specifies an explicitWidth
or explicitHeight
, those values should always be used. If not, then these values must be calculated by the layout (how they are calculated depends on the layout algorithm), using minWidth
, minHeight
, maxWidth
, and maxHeight
as restrictions.
The contentWidth
and contentHeight
properties specify the width and height of the content. They may be the same as viewPortWidth
and viewPortHeight
, but if the view port contains content that goes beyond its bounds, these values may be larger, which allows a layout to tell the container that its view port should scroll, if the container supports scrolling.
The contentX
and contentY
properties specify where the content begins for scrolling containers to set the minimum scroll positions. These values are typically set to 0
(zero), but they may also be negative.
The getScrollPositionForIndex()
function
The second function defined by ILayout
is getScrollPositionForIndex()
. Please take a moment to review its signature below:
getScrollPositionForIndex(index:int, items:Vector.<DisplayObject>, x:Number, y:Number, viewPortWidth:Number, viewPortHeight:Number, result:Point = null):Point
This function may be called by a component that supports layout to calculate a scroll position that ensures that a specific item is fully visible in the view port. The item's exact position within the view port is determined entirely by the layout. A custom layout might consider aligning the item to the center, or it might align it to one of the edges. The only rule is that the item must be fully visible when the view port is scrolled to that position. If you're calling this function, you should make no other assumptions about the item's position.
The first argument is the zero-based index of the item that needs to be fully visible in the view port. You can see that this is used for the ending condition in the for
loop:
for(var i:int = 0; i < index; i++)
In other words, we don't need to loop through every item to see where the final scroll position will be unless we need the final scroll position for the final item.
Next, the full list of items are passed in. In the code below, we loop through the items mentioned above, adding each item's height and the gap between the items, similar to the layout()
function, except that we aren't setting the positions of items:
var positionY:Number = 0;
for(var i:int = 0; i < index; i++)
{
var item:DisplayObject = items[i];
if(item is ILayoutDisplayObject && !ILayoutDisplayObject(item).includeInLayout)
{
continue;
}
if(item is IFeathersControl)
{
IFeathersControl(item).validate();
}
positionY += item.height + this._gap;
}
As above, we need to check if the item is included in the layout or not, and we need to validate Feathers controls before we can access their correct dimensions.
For the next arguments, it's important to understand that getScrollPositionForIndex()
must always be called after layout()
. With that in mind, we don't pass a ViewPortBounds
object to getScrollPositionForIndex()
like we do for layout()
. We know the final x, y, width and height values now, so minimum and maximum dimensions are irrelevant.
The third and fourth arguments are the x and y position of the view port. These values match up with the x and y values of the ViewPortBounds
object passed to layout()
. These values often are not needed.
The fifth and sixth arguments are the final dimensions of the view port. They're equivalent to the viewPortWidth
and viewPortHeight
properties of the LayoutBoundsResult
object returned by layout()
. We don't need these values in this example, but other layouts may use them if items need to be resized based on the width and height of the view port.
The seventh, and final, argument is an optional flash.geom.Point
object where the x
and y
properties are equivalent, respectively, to horizontalScrollPosition
and verticalScrollPosition
values of a scrolling container.
If the result value isn't null
, getScrollPositionForIndex()
must use it as the return value. By passing in (and reusing) a pre-created Point
object, Feathers can avoid unnecessary garbage collection. It is optional, though, so the layout is expected to create a new instance of Point
if the argument is null
.
Below, we can see how we check if the result is null
or not, and the final scroll position is set before returning:
if(!result)
{
result = new Point();
}
result.x = 0;
result.y = positionY;
return result;
The getNearestScrollPositionForIndex()
function
The getNearestScrollPositionForIndex()
function is very similar to the getScrollPositionForIndex()
function. The main difference is that getNearestScrollPositionForIndex()
tries to scroll the minimum amount possible to fully show an item in the view port, while getScrollPositionForIndex()
may try to center it or display it in some kind of ideal position. getNearestScrollPositionForIndex()
is called when using the keyboard arrow keys to navigate in a List.
First, we're going to take advantage of the fact that our implementation of getScrollPositionForIndex()
will position the item at the top of the view port.
result = this.getScrollPositionForIndex(index, items, x, y, viewPortWidth, viewPortHeight, result);
The y
value of the result will become the maximum possible position that we'll scroll to where the item is completely visible:
var maxPositionY:Number = result.y;
Next, we want to know the minimum possible position. We can calculate that with some simple arithmetic:
var minPositionY:Number = maxPositionY - viewPortHeight + item.height;
Now that we know the range of possible scroll positions, we can simply ensure that the value of scrollY is within that range:
if(scrollY < minPositionY)
{
result.y = minPositionY;
}
else if(scrollY > maxPositionY)
{
result.y = maxPositionY;
}
else
{
result.y = scrollY;
}
If the vertical scroll position is less than minPositionY
, we'll set it to minPositionY
. If it's greater than maxPositionY
, we'll set it to maxPositionY
. Otherwise, we know that the item is fully visible already, so we'll return the scrollY
value that was passed into the function.


Matching Game
0
Moves | Time:
0
sec
You have Finished!
Congratulations Player
Your Score
Stars:
Moves:
0
Time(s):
0
Play Again?