| 1 | /* ====================================== | |
| 2 | * JFreeChart : a free Java chart library | |
| 3 | * ====================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * -------------------------- | |
| 28 | * CustomPieURLGenerator.java | |
| 29 | * -------------------------- | |
| 30 | * (C) Copyright 2004-2008, by David Basten and Contributors. | |
| 31 | * | |
| 32 | * Original Author: David Basten; | |
| 33 | * Contributors: -; | |
| 34 | * | |
| 35 | * Changes: | |
| 36 | * -------- | |
| 37 | * 04-Feb-2004 : Version 1, contributed by David Basten based on | |
| 38 | * CustomXYURLGenerator by Richard Atkinson (added to main source | |
| 39 | * tree on 25-May-2004); | |
| 40 | * 21-Jun-2007 : Removed JCommon dependencies (DG); | |
| 41 | * | |
| 42 | */ | |
| 43 | ||
| 44 | package org.jfree.chart.urls; | |
| 45 | ||
| 46 | import java.io.Serializable; | |
| 47 | import java.util.ArrayList; | |
| 48 | import java.util.HashMap; | |
| 49 | import java.util.Iterator; | |
| 50 | import java.util.Map; | |
| 51 | import java.util.Set; | |
| 52 | ||
| 53 | import org.jfree.chart.plot.MultiplePiePlot; | |
| 54 | import org.jfree.chart.util.PublicCloneable; | |
| 55 | import org.jfree.data.pie.PieDataset; | |
| 56 | ||
| 57 | /** | |
| 58 | * A custom URL generator for pie charts. | |
| 59 | */ | |
| 60 | public class CustomPieURLGenerator implements PieURLGenerator, | |
| 61 | Cloneable, PublicCloneable, Serializable { | |
| 62 | ||
| 63 | /** For serialization. */ | |
| 64 | private static final long serialVersionUID =<PHONE_NUMBER>144900503L; | |
| 65 | ||
| 66 | /** Storage for the URLs. */ | |
| 67 | private ArrayList urls; | |
| 68 | ||
| 69 | /** | |
| 70 | * Creates a new CustomPieURLGenerator instance, initially | |
| 71 | * empty. Call {@link #addURLs(Map)} to specify the URL fragments to be | |
| 72 | * used. | |
| 73 | */ | |
| 74 | public CustomPieURLGenerator() { | |
| 75 | this.urls = new ArrayList(); | |
| 76 | } | |
| 77 | ||
| 78 | /** | |
| 79 | * Generates a URL fragment. | |
| 80 | * | |
| 81 | * @param dataset the dataset (ignored). | |
| 82 | * @param key the item key. | |
| 83 | * @param pieIndex the pie index. | |
| 84 | * | |
| 85 | * @return A string containing the generated URL. | |
| 86 | * | |
| 87 | * @see #getURL(Comparable, int) | |
| 88 | */ | |
| 89 | public String generateURL(PieDataset dataset, Comparable key, | |
| 90 | int pieIndex) { | |
| 91 |
1
1. generateURL : mutated return of Object value for org/jfree/chart/urls/CustomPieURLGenerator::generateURL to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return getURL(key, pieIndex); |
| 92 | } | |
| 93 | ||
| 94 | /** | |
| 95 | * Returns the number of URL maps stored by the renderer. | |
| 96 | * | |
| 97 | * @return The list count. | |
| 98 | * | |
| 99 | * @see #addURLs(Map) | |
| 100 | */ | |
| 101 | public int getListCount() { | |
| 102 |
1
1. getListCount : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return this.urls.size(); |
| 103 | } | |
| 104 | ||
| 105 | /** | |
| 106 | * Returns the number of URLs in a given map (specified by its position | |
| 107 | * in the map list). | |
| 108 | * | |
| 109 | * @param list the list index (zero based). | |
| 110 | * | |
| 111 | * @return The URL count. | |
| 112 | * | |
| 113 | * @see #getListCount() | |
| 114 | */ | |
| 115 | public int getURLCount(int list) { | |
| 116 | int result = 0; | |
| 117 | Map urlMap = (Map) this.urls.get(list); | |
| 118 |
1
1. getURLCount : negated conditional → SURVIVED |
if (urlMap != null) { |
| 119 | result = urlMap.size(); | |
| 120 | } | |
| 121 |
1
1. getURLCount : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return result; |
| 122 | } | |
| 123 | ||
| 124 | /** | |
| 125 | * Returns the URL for a section in the specified map. | |
| 126 | * | |
| 127 | * @param key the key. | |
| 128 | * @param mapIndex the map index. | |
| 129 | * | |
| 130 | * @return The URL. | |
| 131 | */ | |
| 132 | public String getURL(Comparable key, int mapIndex) { | |
| 133 | String result = null; | |
| 134 |
2
1. getURL : changed conditional boundary → SURVIVED 2. getURL : negated conditional → KILLED |
if (mapIndex < getListCount()) { |
| 135 | Map urlMap = (Map) this.urls.get(mapIndex); | |
| 136 |
1
1. getURL : negated conditional → KILLED |
if (urlMap != null) { |
| 137 | result = (String) urlMap.get(key); | |
| 138 | } | |
| 139 | } | |
| 140 |
1
1. getURL : mutated return of Object value for org/jfree/chart/urls/CustomPieURLGenerator::getURL to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return result; |
| 141 | } | |
| 142 | ||
| 143 | /** | |
| 144 | * Adds a map containing (key, URL) mappings where each | |
| 145 | * key is an instance of Comparable | |
| 146 | * (corresponding to the key for an item in a pie dataset) and each | |
| 147 | * URL is a String representing a URL fragment. | |
| 148 | *

 | |
| 149 | * The map is appended to an internal list...you can add multiple maps | |
| 150 | * if you are working with, say, a {@link MultiplePiePlot}. | |
| 151 | * | |
| 152 | * @param urlMap the URLs (null permitted). | |
| 153 | */ | |
| 154 | public void addURLs(Map urlMap) { | |
| 155 | this.urls.add(urlMap); | |
| 156 | } | |
| 157 | ||
| 158 | /** | |
| 159 | * Tests if this object is equal to another. | |
| 160 | * | |
| 161 | * @param o the other object. | |
| 162 | * | |
| 163 | * @return A boolean. | |
| 164 | */ | |
| 165 | public boolean equals(Object o) { | |
| 166 | ||
| 167 |
1
1. equals : negated conditional → KILLED |
if (o == this) { |
| 168 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return true; |
| 169 | } | |
| 170 | ||
| 171 |
1
1. equals : negated conditional → KILLED |
if (o instanceof CustomPieURLGenerator) { |
| 172 | CustomPieURLGenerator generator = (CustomPieURLGenerator) o; | |
| 173 |
1
1. equals : negated conditional → KILLED |
if (getListCount() != generator.getListCount()) { |
| 174 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 175 | } | |
| 176 | Set keySet; | |
| 177 |
2
1. equals : changed conditional boundary → KILLED 2. equals : negated conditional → KILLED |
for (int pieItem = 0; pieItem < getListCount(); pieItem++) { |
| 178 |
1
1. equals : negated conditional → KILLED |
if (getURLCount(pieItem) != generator.getURLCount(pieItem)) { |
| 179 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 180 | } | |
| 181 | keySet = ((HashMap) this.urls.get(pieItem)).keySet(); | |
| 182 | String key; | |
| 183 |
1
1. equals : negated conditional → SURVIVED |
for (Iterator i = keySet.iterator(); i.hasNext();) { |
| 184 | key = (String) i.next(); | |
| 185 |
1
1. equals : negated conditional → KILLED |
if (!getURL(key, pieItem).equals( |
| 186 | generator.getURL(key, pieItem))) { | |
| 187 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 188 | } | |
| 189 | } | |
| 190 | } | |
| 191 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 192 | } | |
| 193 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 194 | } | |
| 195 | ||
| 196 | /** | |
| 197 | * Returns a clone of the generator. | |
| 198 | * | |
| 199 | * @return A clone. | |
| 200 | * | |
| 201 | * @throws CloneNotSupportedException if cloning is not supported. | |
| 202 | */ | |
| 203 | public Object clone() throws CloneNotSupportedException { | |
| 204 | CustomPieURLGenerator urlGen = new CustomPieURLGenerator(); | |
| 205 | Map map; | |
| 206 | Map newMap; | |
| 207 | String key; | |
| 208 | ||
| 209 |
1
1. clone : negated conditional → KILLED |
for (Iterator i = this.urls.iterator(); i.hasNext();) { |
| 210 | map = (Map) i.next(); | |
| 211 | ||
| 212 | newMap = new HashMap(); | |
| 213 |
1
1. clone : negated conditional → KILLED |
for (Iterator j = map.keySet().iterator(); j.hasNext();) { |
| 214 | key = (String) j.next(); | |
| 215 | newMap.put(key, map.get(key)); | |
| 216 | } | |
| 217 | ||
| 218 |
1
1. clone : removed call to org/jfree/chart/urls/CustomPieURLGenerator::addURLs → KILLED |
urlGen.addURLs(newMap); |
| 219 | newMap = null; | |
| 220 | } | |
| 221 | ||
| 222 |
1
1. clone : mutated return of Object value for org/jfree/chart/urls/CustomPieURLGenerator::clone to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return urlGen; |
| 223 | } | |
| 224 | ||
| 225 | } | |
Mutations | ||
| 91 |
1.1 |
|
| 102 |
1.1 |
|
| 118 |
1.1 |
|
| 121 |
1.1 |
|
| 134 |
1.1 2.2 |
|
| 136 |
1.1 |
|
| 140 |
1.1 |
|
| 167 |
1.1 |
|
| 168 |
1.1 |
|
| 171 |
1.1 |
|
| 173 |
1.1 |
|
| 174 |
1.1 |
|
| 177 |
1.1 2.2 |
|
| 178 |
1.1 |
|
| 179 |
1.1 |
|
| 183 |
1.1 |
|
| 185 |
1.1 |
|
| 187 |
1.1 |
|
| 191 |
1.1 |
|
| 193 |
1.1 |
|
| 209 |
1.1 |
|
| 213 |
1.1 |
|
| 218 |
1.1 |
|
| 222 |
1.1 |


[§201H-98] Housing loan programs; general powers. (a) The corporation may make, enter into, and enforce all contracts or agreements that are necessary, convenient, or desirable in the performance of its duties in executing the housing loan programs.
(b) The corporation may require representations and warranties as it determines necessary to secure its loans. [L 2006, c 180, pt of §4]


See how experienced developers solve problems in real-time. Watching scripted tutorials is great, but understanding how developers think is invaluable
By clicking the button, you are agreeing to our Terms and Services


Loading of data failed. Maybe server is not available.
Loading ...
Saving ...
Administration
Manage properties, systems and requests.
Manage Decision Knowledge Systems (DKS)
Saving ...
Saved successfully!
Could not save! Maybe you tried to save empty fields. Please try again, reload the page or file a bug report.
A DKS is the source of all your Problems and Options. It is only read, noting is written to it. In this version of EEPPI only one DKS is supported, however you can change it's URL here.
Manage Task Template Properties
Saving ...
Saved successfully!
Could not save! Maybe you tried to save empty fields. Please try again, reload the page or file a bug report.
Task Template Properties are the different properties a Task Template can possess. Task Templates always have a name and you can enrich them here with additional Properties.
ℹ
How to remove Task Template Properties?
Manage Projects
You can group your work into different Projects and provide access to these to different people. You could manage them here.
However, in this version of EEPPI only one Project is supported and it can't be changed.
Manage Project Planning Tools (PPT)
EEPPI supports different PPTs. If you have more than one type of them (e.g. Jira and Redmine) you can configure different PPTs here.
However, this is only the type not the concrete instance. Information for the concrete instance are configured in PPT Accounts.
However, in this version of EEPPI only one PPT is supported and it can't be changed.
Manage Request Templates
Saving ...
Saved successfully!
Could not save! Maybe you tried to save empty fields. Please try again, reload the page or file a bug report.
EEPPI works with different Project Planning Tools and Project Planning Tool configurations.
However, it needs a template to know how to create requests to generate a task in your Project Planning Tool.
You can define such Request Templates here.
All Project Planning Tools are supported, if they can create tasks using a web request with
HTTP basic authentication and using
JSON request format.
For example
Jira and
Redmine are supported.
In the
Request Body Template you should provide a Json to perform the request to the PPT. In Request Body Template you can:
- include variables with ${variable.path.to.property}.
"taskTemplate", "node", "pptProject" and in post Processors "parentRequestData" can be used.
You can access their properties with the "."-operator (e.g. ${taskTemplate.name}).
- call Processors with
$processorName:(parameter.path.to.property,
anotherParameter, "
stringParameter",
...)$
.
Parameters can be variable paths or "strings".
Strings may contain anything other than ",
", ":(
" and "
)$".
However, you can use quote characters (' " « »). If you want to use a comma, escape it like:
"\," .
Be careful using variables inside processors like
$processorName
:(parameter.path.to.property,
${another.parameter})$
.
It is possible to use variables inside processors because variables are rendered before processors.
But if variable values contain not escaped commas, the processor execution will be broken. So if possible,
use processor path variables instead of rendered variables:
$processorName:(parameter.path.to.property,
another.parameter)$
or ensure variable values contain only escaped commas.
- call post Processors and post Variable (parentRequestData) almost like Processors with
$!processorName:(parameter.path.to.property,
anotherParameter, "
stringParameter",
...)$
(note the exclamation mark).
Post Processors are Processors which are only processed, after the parent request was executed and they can include the parent request result.
However, they are only processed after the parent Tasks request was executed.
The result of the parent Tasks request can then be accessed with the variable "parentRequestData".


<% if not isBoardProvisioned then %>
This board hasn't completed onboarding process yet. Please do onboarding first.
<% elseif not isProvisioningDaemonRunning then %>
Provisioning daemon isn't ranning on this Ci40. Please start it first
<% end %>
<%+creator_onboarding/loading_modal%>
<%+creator_onboarding/alert_modal%>
<%+footer%>


Established in 1997, L.A. Care Health Plan is an independent public agency created by the state of California to provide health coverage to low-income Los Angeles County residents. We are the nation’s largest publicly operated health plan. Serving more than 2 million members in five health plans, we make sure our members get the right care at the right place at the right time.
Mission: L.A. Care’s mission is to provide access to quality health care for Los Angeles County's vulnerable and low-income communities and residents and to support the safety net required to achieve that purpose.
The Data Scientist is responsible for supporting L.A. Care’s strategic business initiatives through the application of predictive analytics as part of production workflows. This individual will lead projects through the iterative data science process (Stating the Question > Exploratory Data Analysis > Model Building > Interpretation > Communication > Operationalization), collaborating with business, I.T., and data subject matter experts from across the enterprise.
Effective communication of reproducible analyses and results (including failures), both visually and orally, in peer review and customer settings.
Collaborate and work closely with other departments to identify gaps and structure problems.
Propose solutions and actionable strategies to business challenges.
Work closely with domain experts (both business and data) to understand processes and solution inputs.
Monitor the performance of operationalized predictive models.
Perform other duties as assigned.
Required:
With Bachelor's Degree: 6-8 years of traditional data analysis, including querying, aggregation, basic
statistical analysis, and visualization with the intent to provide business insights (preferably in a health plan).
2+ years of applied predictive modeling in a business setting (preferably in a health plan).
Preferred:
With Master's Degree: 4 years of traditional data analysis, including querying, aggregation, basic statistical
analysis, and visualization with the intent to provide business insights (preferably in a health plan).
Equivalent Experience:
With High School Diploma/GED: 12 years of traditional data analysis, including querying, aggregation, basic
statistical analysis, and visualization with the intent to provide business insights (preferably in a health plan).
With Associate's Degree: 9 years of traditional data analysis, including querying, aggregation, basic statistical analysis, and visualization with the intent to provide business insights (preferably in a health plan).
Required:
Working knowledge of relational databases, database structures.
Proficiency in Apache Spark, R and SQL (Tableau, Python, and SAS a plus).
Exploratory data analysis capabilities to understand the data. e.g., estimates of location and variability, correlation matrices, feature comparison visualization, trend analysis.
Regression and classification predictive model development and interpretation using: Heuristic/traditional techniques. e.g., linear regression, logistic regression, Naïve Bayes; Supervised machine learning techniques. e.g., decision trees, bootstrap aggregation, boosting, deep learning; Unsupervised machine learning techniques. e.g., k-means clustering, principal component analysis, hierarchical clustering.
Working optimally as part of a cross-functional team.
Ability to initiate and drive projects to completion with minimal guidance.
Ability to problem solve and quickly find solutions on your own.
Strong interpersonal skills, including the ability to influence management at various levels of the organizations.
L.A. Care offers a wide range of benefits including


Aim
Menu
XCoin, Getting Started
Read below for more information!
Join our Discord!
Joining our Discord will allow you to have an account and a secret key to renew your account!
Join!


{% extends 'base.html' %} {% load staticfiles %} {% block title %}Sponsors{% endblock %} {% block content %}
Thanks to our sponsors for supporting arXiv Vanity. It wouldn't be possible to run it without them.
Become a sponsor.


GeoAnalytics distributes the analytics work across your ArcGIS GeoAnalytics Server. This allows you to analyze more data faster by harnessing the power of multiple machines. The following tools are currently available:
GeoAnalytics focuses on analyzing large data with an emphasis on both spatial and temporal patterns.
The Summarize Data toolset contains tools that calculate total counts, lengths, areas, and basic descriptive statistics of features and their attributes within areas or near other features.
Pontok összevonása |
Using a layer of point features and either a layer of area features or bins defined by a specified distance, this tool determines which points fall within each area or bin and calculates statistics about all the points within each area or bin. You may optionally apply time slicing with this tool.
The following are examples:
Többváltozós táblázat felépítése |
The Build Multi-Variable Grid tool generates a grid of square or hexagonal bins and calculates variables for each bin based on the proximity of one or more input layers.
The following are examples:
Vektoros elemek összekapcsolása |
Using either feature layers or tabular data, you can join features and records based on specific relationships between the input layers or tables. Joins will be determined by spatial, temporal, and attribute relationships, and summary statistics can be optionally calculated.
The following are examples:
Nyomvonal-rekonstrukció |
Using a time-enabled layer of point or polygon features that represent an instant
in time, this tool determines which input features belong in a track and will order the inputs sequentially in time. Statistics are optionally calculated for the input features within each track.
The following are examples:
Attribútumok összefoglalása |
Using either feature or tabular data, this tool summarizes statistics for specified fields.
The following are examples:
Területen belüli statisztika |
Megkeresi azokat a területeket (és területrészeket), ahol két réteg átfedi egymást, és kiszámítja a fedvény statisztikai adatait.
The following are examples:
These tools are used to identify areas that meet a number of different criteria you specify.
Incidensek észlelése |
This tool works with a time-enabled layer of points, lines, areas, or tables that represents an instant in time. Using sequentially ordered features, called tracks, this tool determines which features are incidents of interest. Incidents are determined by conditions that you specify.
The following are examples:
Geokódolási helyszínek táblázatból |
A címeket koordinátákká alakítja át. Use this tool on big data file share tables.
Hasonló helyek keresése |
Based on criteria you specify, find similar locations by measuring the similarity of locations in your candidate search layer to one or more reference locations.
The following are examples:
These tools help you identify, quantify, and visualize spatial patterns in your data.
Sűrűség számítása |
The Calculate Density tool creates a density map from point features by spreading known quantities of some phenomenon (represented as attributes of the points) across the map. The result is a layer of areas representing the density.
The following are examples:
Pontklaszterek keresése |
The Find Point Clusters tool finds clusters of point features in surrounding noise based on their spatial distribution.
The following are examples:
Hot spotok keresése |
The Find Hot Spots tool will determine if there is any statistically significant clustering in the spatial pattern of your data.
These tools help answer one of the most common questions posed in spatial analysis: What is near what?
Buffer létrehozása |
A buffer is an area that covers a given distance from a point, line, or polygon feature.
The following are examples:
These tools are used for the day-to-day management of geographic and tabular data.
Másolás az adattárba |
Copies an input feature layer or table to an ArcGIS Data Store and creates a layer in your contents in ArcGIS Enterprise.
The following are examples:
.csv
files in a big data file share to the spatiotemporal data store for visualization.
Mező kiszámítása |
Calculates values for a new or existing field and creates a layer in your contents in ArcGIS Enterprise.
The following are examples:
Fedvényműveletek |
A fedvény két vagy több réteget egyesít egyetlen rétegben. Overlay is used to answer one of the most basic questions of geography, What is on top of what? The following are examples:
Adat hozzáfűzése |
Appends features to an existing hosted layer in your contents in ArcGIS Enterprise.
The following are examples:


{{ rests.length }} Results For Restaurants
Restaurant
{{ rest.n_of_reviews }} Reviews
{{ rest.address }}, {{ rest.city }}, {{ rest.country }}
{{ rest.phone_number }}


Regardless of the programming language grouping class files in directories using an architectural pattern name is unintuitive.
I saw this happening in different programming languages and frameworks but I will use Ruby on Rails as an example.
I am not referring to framework specific directories–for example Rails conventional MVC directories: models, views, controllers, helpers come with the framework and developers should know what they are for.
The problem starts with a list like this:
ls -l app/
├── controllers
├── helpers
├── models
├── presenters
├── services
├── serializers
├── strategies
├── utils
└── views
When I see presenters, services, serializers, strategies, utils directories I can guess someone likes patterns but I gather nothing about their boundary of operation or the application domain.
This antipattern encourages code separation based on the class pattern taxonomy rather then its responsability–like if a foreman would group workers by their country of origin instead of their skills–pretty stupid.
All the existing Rails applications I inherited used this antipattern–I am going to describe its problems and suggest an intention revealing alternative.
An example
If you haven’t seen this in action here’s an example. This antipattern separate class files like:
services/reservation_quote_recalculation_service.rb # ReservationQuoteRecalculationService
strategies/quote_strategy.rb # QuoteStrategy
specifications/obsolete_quote_specification.rb # ObsoleteQuoteSpecification
But when updating a reservation ReservationQuoteRecalculationService
uses QuoteStrategy
that uses ObsoleteQuoteSpecification
. So the classes work together within the same boundary but the directory misnaming obfuscate that.
In a real application you will have a higher number of collaborating classes and you will have to bounce between patterns directories and–understandably–lose your mind in the process.
Group by business contexts
I use the conventional Rails models
directory not just for ActiveRecord models but all the classes related to the application domain model regardless of their design pattern.
Inside I add directories matching a Ruby namespace representing the boundaries–sometime bounded contexts–where those objects act.
The example above can look like this:
book/reservation_quote_recalculation_service.rb # Book::ReservationQuoteRecalculationService
book/quote_strategy.rb # Book::QuoteStrategy
book/obsolete_quote_specification.rb # Book::ObsoleteQuoteSpecification
This is a simplified example–in a real application another namespace for the quote recalculation boundary might be necessary.
Example 1: the memory game service
An example could be an application for memory videogames with game designers creating games, players playing them. Two very different contexts: workshop and gamezone.
ls -l app/
├── controllers
├── helpers
└── models
│ ├── workshop
│ └── gamezone
└── views
Whatever code concerns workshop
will be living in that directory regardless of its pattern–inside of it all classes should be in the Workshop
namespace. The same applies for gamezone
.
Example 2: the private jet company
Another example is a private jet company that can book trips, update ongoing trip and billing. Again three very distinct contexts: book, trip, bill.
ls -l app/
├── controllers
├── helpers
└── models
│ ├── book
│ ├── trip
│ └── bill
└── views
Example 3: editorial content management
A content management that imports content from a legacy system allowing an editorial team to update some of the content and having users viewing that. Three contexts: legacy_import, editorial, public.
ls -l app/
├── controllers
├── helpers
└── models
│ ├── legacy_import
│ ├── editorial
│ └── public
└── views
Naming
Gathering those context from your product owner is much harder then using architectural pattern names but will improve code maintainability.
The contexts will change as the business evolves so it’s natural–and critical–for the code to be consistent with them. It’s unlikely to get the naming right at the first try. A great read on this subject is Domain-Driven Design.
What happens to shared code?
As the application grows there will be shared code between contexts. Leaving shared items in a models/shared
directory can be sufficient initially but stop when that becomes the application kitchen sink.
At this point an appropriate solution is introducing a dependency structure–in Ruby on Rails that is component based Rails architecture, compiled languages will have a safer dependency management but rigorous automated testing yields good results in interpreted languages.
Reactions from London Ruby User Group
From Nicolas:
I’ve worked on projects split by domain and those split by pattern. When I come back a year later, the ones that remain the best organised are those split by pattern.
The reason is that there are always edge cases, objects that don’t really fit a specific domain. Where do I put a password_recovery_service for example. Do I nest it under user or create a password domain? One year later I have to try and remember my decision. I also have to trust that other developers have stuck to the domain model I invented on the spur of the moment.
Patterns on the other hand remain constant.
My reply:
Hi Nicolas,
Thanks for your contribution, I believe many developers feel like you and there was a time I did too.
I believe the pattern approach is ok in very small projects. Like Mark pointed out knowing when to diverge is critical, personally I never work on projects that stay small which is why I use the context approach from the start.
First I am gonna address your concern about classes that do not fit in any context.
I’d ask where is that password_tecovery_service used? I doubt from the billing portion of your app. One solution I used in the past was creating a shared component and have whichever portion (gem/engine) need it depend on it. If that’s truly just one file that escape your contexts I do think it’s ok for it to stay in the main application.
You say one year later you’d forget where the class lives.
The boundary should map your business model, finding those boundaries require time and communication with a product owner familiar with the domain. This is a much harder job then dumping all your files in models and services but it yields a much better result in the medium to long term and I struggle to believe a services directory with 60 files using an unknown number of other class/files from other directories is easier to understand then a single directory/module encapsulating that functionality.
In regards to developers ignoring your model.
That is a big problem. Developer diligence is a must or it’s pointless to have a domain model. In my experience if the concept is explained right devs are onboard, especially after they worked on a big ball of mud. If they aren’t maybe they should tackle smaller challenges.
In the end the conventional Rails way doesn’t force us to think about those contexts but they are there and ignoring them with “that’s not the Rails way” is a bit silly and results in a big ball of mud project that will need to be rescued months after it starts.
I’d like others to benefit from this conversations so feel free to ask questions here or via the blog comments.
From Mark:
This is an approach that has worked well for me on a couple of projects.
I think I gave up on fighting rails about where to put the views and the controllers, and had a mix of approaches. I.e. only moving towards this approach for the obvious cases.
Where there is a clear grouping of a large enough bunch of related items e.g. DictionaryEntry, DictionaryEntryPresenter, DictionaryEntryCreation, etc. then it makes it easier to navigate and fits in well with the concept of connaissance.
It does lend well to namespacing, which then leads nicely into separating into engines. And in one case, for an unused area of functionality it was a surprising case of
rm -rf dictionary_entry specs/dictionary_entry
Run the specs and everything still works. Feature removed! (Then just quietly remove the views and controllers/routes afterwards).
Didn’t have time to look into getting that aspect smoothly done. But I would probably better spend that time looking at trailblazer, which seems to have a lot of great concepts in it.
Along these lines, I quite enjoy the concept of keeping the spec close to the implementation as golang does. I’ve only gone as far as domain concept based folders in the spec folder as mentioned. I’d be interested to hear if anyone has had success with a directory listing that looks like this:
dictionary_entry.rb
dictionary_entry_spec.rb
The only fiddly issue apart from the views/controllers folders was with AR and namespacing based on the domain concept. Which would traditionally be the ActiveRecord model name.
E.g. rather than pollute a DictionaryEntry AR model with tons of classes, I ended up namespacing all my AR models as Db::DictionaryEntry etc.
Which when you have lots of objects in an app serves a dual purpose of hinting which one is the thing that writes to the db. Probably a double-edged sword, hungarian notation anybody?
But equally, on a small app, with a few presenters, a few controllers and non-obvious groupings then it is overkill. It doesn’t really cost much more to gradually introduce this kind of structure as appropriate.
My reply:
As application complexity grow moving away from AR conventions (ie. validation and relationships) is a must. I like your db namespace approach, sometime I think of AR as a repository so you could use that keyword.
“gradually introduce this kind of structure as appropriate.”
Agreed that on a small app this approach can be unnecessary, but I’ve rarely seen an app staying small so knowing when to introduce is very important. I hope my article gave that insight.
By John:
Hi Enrico,
Thanks for sharing this. It’s an approach that I agree with in general - I’d much rather classes were grouped by domain than by pattern. I have got a couple of questions though:
1) Why is it ok to end up with a directories for Controllers, Views and Helpers?
2) Sometimes you are creating classes that fulfil specific roles within the framework; e.g, Presenters. How do identify their function when they aren’t grouped in a directory?
(Or maybe my assumtion at the start of the second question is wrong, in which case I’d like to hear why.)
Thanks, John
My reply:
1) Why is it ok to end up with a directories for Controllers, Views and Helpers?
I say it’s ok only because the framework sets that as a convention. If you use those conventional directories in different contexts namespacing and gems are necessary.
2) Sometimes you are creating classes that fulfil specific roles within the framework; e.g, Presenters. How do identify their function when they aren’t grouped in a directory?
Sometime the classname has that suffix ie. ValidReservationPresenter.


This graph shows all confirmed cases of COVID-19. The time period was chosen from March 1 to October 1 inclusive.
Countries with a similar population were selected for comparison purposes (exclude Germany). We have used data from Johns Hopkins University (uploading on this page automatically via API).


|
|
||
|
|
Δf {{getDeltaFrequency()}} kHz | |
|
Standard
|
Modulation
|
|
|
Rate
|
RFBW kHz | Gain dB |
| Data | ||
| Chip rate {{ getChipRate() }} S/s |
|
LPF taps |
|
|
Delay s |
Number
|
|
Filter
|
Roll-off | Span |
|
|
Standard
|
Polynomial |
|
|
Ramp down | Ramp range dB |
|
|
|
|
|
|
Addr | Port |
|
|
Device | Channel |
| Addr | Port | |


Boogie Nights (1997) Rated R for strong sex scenes with explicit dialogue, nudity, drug use, language, and violence. ---------- Out of 4 stars: **** (4 Stars)
Starring: Mark Wahlberg, Burt Reynolds, Julianne Moore, Heather Graham, Luis Guzman, William H. Macy, Don Cheadle, John C. Reilly.
Darkness. A little shimmer of light from the New Line Cinema credit. Then darkness again. Darkness, and more darkness. Suddenly, breaking the darkness and the silence is a huge neon sign sporting the title of the film: BOOGIE NIGHTS. The 70s music destroys the peaceful silence when the audience finally shuts up. The neon sign is vibrant, wild, and very descriptive of the film we are about to see. Preparing for a good time, and not really knowing what to expect, I walked into the theater for a special engagement of the film. In fact, it was obvious most audience members didn't know what to expect. Overall, I feel that the film left its mark for life on every single audience member, in one way or another.
BOOGIE NIGHTS is one of the best films of the year. Period. I have heard all the praising done by critics, but never had I expected this film. Opening with probably the best character-introducing scenes that I have ever seen in all my years of watching films, a smile came across my face which never left for the first hour of the film. The camera pans away from the neon sign and drifts across the street and into a local club. We follow the host of this club, Maurice T. Rodriguez (Luis Guzman), as he seats a couple of people. This couple is Jack Horner and Amber Waves (Burt Reynolds and Julianne Moore). The camera never cuts throughout this entire sequence, following one person, and then landing on someone else to introduce us to. We follow Rollergirl (Heather Graham) and we finally meet Eddie Adams (Mark Wahlberg). This one sequence is so impressive that even I was marvelling the great camerawork done. I have never seen a scene like it before, and if I ever do, it will probably not be as well done as this one.
Director Paul Thomas Anderson has fully recreated the 70s decade in vivid and shocking detail. The colorful clothes and wild hairstyles are magnificently reproduced. But despite this, BOOGIE NIGHTS is more of a character-driven drama. Deriving its plot from the hardcore porn films of the late 70s and early 80s, Nights creates an atmospheric setting in which the adult film actors rise and fall from stardom. The film centers around Eddie Adams, who changes his name to Dirk Diggler after venturing into the porn business. Adams is a busboy at the club in which the film begins.  Later, he asks Eddie if he would like to be a star in one of his films. "I got a feeling that behind those jeans is something wonderful just waiting to get out," remarks Horner. All of this happens within the first 15 minutes.
The rest of the film deals with many different characters, but focuses mainly on Dirk Diggler and Jack Horner. Amazingly, with all the characters, all of them are well developed making us care for them and their situations. Among them include Little Bill (William H. Macy, FARGO), Reed Rothchild (John C. Reilly), Buck Swope (Don Cheadle), and the Colonel (Robert Ridgely). Of course, these are just a few of them. Many critics complained that the film didn't develop any of the characters completely. On the contrary, BOOGIE NIGHTS does develop every single character, but what screenwriter Anderson does is cut out all the scenes which supposedly bring the characters out even more. Many of these scenes are fillers and unnecessary.  At its most basic, this film is a simple "Rise and Fall" story. But what lies beneath this is a world of discovery and surprise. And beneath that is a world of love and hope.
More goes on in BOOGIE NIGHTS than in most movies of this genre (whatever that may be). It has more subplots than PULP FICTION and more characters than any film out this year. Many characters appear in other films, but BOOGIE NIGHTS actually focuses on the happenings of all the different people. Little Bill is disturbed because his wife (porn star Nina Hartley) keeps committing adultery, and not being too shy about it. In one scene, she displays her sexual talent in the driveway, surrounded by on-lookers. When Little Bill asks her what she is doing, she says, "Shut up Bill. You're embarrassing me." Reed Rothchild becomes one of Dirk's best friends, and he also becomes his sidekick in some of the porn films. Buck Swope has an entire subplot devoted to him, beginning with him as a country-loving stereo salesman to a loving hubsand. Due to his activity in the porn industry, however, Swope is prejudiced against in his future business deals.
One of the most inventive and effective techniques used by Anderson is the change from the 70s to the 80s. During the 70s, the porn industry is done on film and shown in theaters. Jack Horner's dream is to make movies with actual stories to keep the audience in their seats once they have achieved their purpose for watching the film. The change to the 80s is done in one remarkable scene. During the New Year's Eve party, everybody is at Horner's house, and having a good time. Little Bill finds his wife with another man, and fet up with her adulterations, gets a gun from his car. He walks into the house, shoots his wife and her partner, walks into the living room with all the guests, and sticks the gun into his mouth. The transition from the disco, fun-loving 70s to the violent, disturbing 80s is very well executed.
Despite what may sound like a sex-filled drama, BOOGIE NIGHTS cleverly manages to show us very little. In fact, what it does show us is done in such a way that it is more humorous than erotic. In one scene, the film expires and they have to change reels. Horner tells Dirk and Amber to pause while they reload. The conversation between Dirk and Amber at this moment is truly hilarious, and also makes us realize that sexual pleasure is more like this ("Does it feel good?") than in other films with sex scenes. The nudity is more explicit, showing full frontal nudity of both sexes. However, Anderson wisely waits till the very last shot (considered to be the "money shot") to show the audience Dirk's possession. Previously, Anderson relies on actor's expressions to display the impressive size of Dirk Diggler. In one of my favorite scenes, The Colonel asks to see it, and gets an awkward grin on his face, replying, "Thank you." Never leaving the actor's face during this moment, we are left to imagine... until the last scene, of course.
The cast of BOOGIE NIGHTS is top-notch and I sense a couple of Oscar nominations headed towards Burt Reynolds and perhaps even Mark Wahlberg. Burt Reynolds does an incredible job, giving one of his best performances ever. Instead of overacting (like he did in STRIPTEASE), he relies on the character's depth and conviction to propel the character forward. He remains low-key, but everything seems to revolve around him. Mark Wahlberg gives an outstanding performance, proving to be a better actor than a singer. His turn in Fear was quite frightening, but here he establishes a star-making performance. Julianne Moore gives one of the best performances in the film with one of the best characters. Moore's character becomes Dirk's surrogate mother when Moore regrets losing her son years ago. Heather Graham, as Rollergirl, is very good and charming. Refusing to take of her skates--which also aid in a very violent scene--Graham gives the character added depth with a sweet face and an innocent appearance (which, as we all see, is not entirely true). William H. Macy gives yet another good performance, providing a lot of humor himself. John C. Reilly gives a good performance in a slightly underdeveloped character. Don Cheadle is extremely effective as the stereo salesman, who provides one of the most complex characters in the film. Many other actors appear, and all are very good.
BOOGIE NIGHTS is rated R (and a very hard R it is) for strong sex scenes with explicit dialogue, nudity, drug use, language, and violence. Nearly receiving an NC-17 rating, Anderson cut several scenes out. By doing so, he creates an "R rated depiction of XXX rated movies." The sex scenes are filmed not by showing the actual deed, but by showing the filmmaker's reactions. The language is very harsh, but it is to be expected. Be advised that this film is not for the weak of stomach or heart. In fact, several people walked out in disgust during the screening of the film. Perhaps they were offended by Anderson trying to put the porn industry into a good light, but they also missed the downfall of the porn stars, which gave the film added depth. BOOGIE NIGHTS is a courageous and daring film which reminds us how fun watching a movie can really be.
Reviewed by Respect<EMAIL_ADDRESS>http://www.aros.net/~respect/movies.html
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


{.extends "/layout/page.html"}
{.block breadcrumbs}
{.section category}
Home / {label}
{.end}
{.end breadcrumbs}
{.block content}
{.repeated section articles}
{.include "/article.inc.html"}
{.end}
{.include "/paginator.inc.html"}
{aside}
{.end content}


Western Asset Mortgage: Revisiting This Income Stock
by Quad 7 CapitalSummary
- Western Asset Mortgage Capital's diversified portfolio has led to a very income investor-friendly environment in recent years.
- One of the major drivers of earning potential is the net interest rate spread, which narrowed in Q3.
- The book value is improving, and there is a discount-to-book.
- The dividend wasn't covered, but we think this is a one-off temporary result.
Western Asset Mortgage Capital Corp. (NYSE:WMC) is a mortgage real estate investment trust, or mREIT, that we last felt was diversifying effectively and could be bought as shares appeared to be stabilizing. This was over a year ago. The approach has worked, as the market has priced shares well above their 52-week lows. We still believe the stock is a good buy if it dips under $10. In this column, we check back in on the critical metrics of the mREIT and discuss the dividend coverage. After all, that is what matters when buying a stock like this.
Shares stabilizing
There is little doubt that shares have stabilized. Take a look at the last year of action:
(Source: BAD BEAT Investing)
With the exception of the 4-week market-wide drop we saw to end 2018, which rebounded quickly in 2019, shares have traded pretty much between $9.50 and $10.25. When buying a name like WMC for income, this trading range is very positive. Most investors buy mREIT shares for income, so this relative stability is welcomed.
We know that some investors who have been holding this name for years when mREITs were at their operationally strongest have been counting the dividend payments just hoping to break even, as shares are still down over 50% from 2013. However, it has been a good place to trade and a decent place for income. In the past 4 years it has been in this range, allowing the savvy investor opportunity to pick up on discounts:
(Source: BAD BEAT Investing)
This price action in recent weeks is encouraging for shareholders. Investors still holding since $20 5-plus years ago have seen the dividend slashed time and again all the way down to $0.31. However, so long as the stock doesn't continue to fall and the dividend continues to be paid, eventually the investors will break even. Those who have recently entered are likely ahead, but in either event, we need to realize that any future cut will result in the selling of shares. Recent quarters have been strong from a critical metric standpoint. Let us discuss the key metrics investors in this name you should be aware of based on the most recent report.
The critical metrics
These are the critical metrics which you should examine for all mREITs, most recently for Q3 2019:
| Critical metrics of interest | WMC's performance |
| Q3 2019 Book value and % change from Q2 2019 | $10.60 (+0.8%) |
| Net interest rate spread in Q3 | 1.69% |
| Dividend (yield)* | $0.31 (12.1%) |
| Q3 core income per share | $0.28 |
| Dividend covered?** | No |
| 52-week share price range | $8.26-$10.66 |
*Based on current share price and forward annualized yield.
**Determination based on estimate of core earnings covering dividend paid.
(Data table source: WMC's Q3 earnings, Graphics by BAD BEAT Investing)
There are some positive and negative takeaways from this quarter. If we have investors holding for income, the standout is the missed earnings, with core coming in at $0.28 per share and technically underneath the dividend payment of $0.31, which has been covered easily each of the last four years at this rate. Some good news was that book value expanded and shares are at a discount to book. Let us discuss.
Dividend coverage
At the end of the day, we care about whether the dividend will be covered. Every major decline in this company's stock has been the result of a dividend cut. The company saw GAAP net income of $19.7 million, or $0.37 per share, compared to last quarter which saw a net income of $10.6 million, or $0.21 per share. So, on a GAAP basis, this was great news. While GAAP is informative, and we like to see a positive move on this metric, a better gauge for the dividend coverage is core earnings. As we said before, they came up short. While the company does try to engineer positive numbers here, as we detailed in past pieces, Western Asset Mortgage reported that it saw core earnings plus drop income of $15.0 million, or $0.28 per share. This is a decline from $15.8 million, or $0.31 per share, in core earnings last quarter.
As far as the dividend goes, if using core earnings as a gauge, which we do, the dividend was not covered. Thankfully, past quarters have seen spillback coverage, where core earnings outpaced the dividends, so we are not immediately worried about a cut.
Core earnings were down modestly from the second quarter, primarily due to heightened volatility in the repo markets, which we believe temporarily impacted the company's costs of funds, which we will see below. That being said, quarterly core earnings have been relatively consistent over the last three years, where they've averaged about $0.33 per share per quarter, which averages higher than the quarterly dividend of $0.31 per share over that same time period. Thus, fear not, the dividend is safe for now. So, what drove the drop?
Narrowing net interest rate spread
One of the major drivers of earning potential is the net interest rate spread, which narrowed in Q3. This was a reason core earnings were down. The spread has been hammered as rates have changed/risen. In fact, the spread was over 3% in 2016 and fell to under 2% in late 2017. This is a problem. As the spread widens, it means the company has greater earnings potential. In this quarter, the cost of funds rose, and average yields fell quite a bit, leading to a narrowed spread. This is the classic double whammy. Average yields from assets fell from 4.94% to 4.53%, while the cost to acquire those funds rose from 2.94% to 3.05%. This certainly is a large move on both ends, and it led to a spread of just 1.69%, bringing down earnings potential.
Book value relatively stable
The book value of this name has been a quiet strength. We have always worried about the book value of the company, as it fell heavily from 2013-2016 overall. Book values have been pressured for all mREITs those years, but some have seen stabilization, relatively speaking. With WMC, the book value has mostly oscillated between $10 and $11 the last few years, and that is welcome news.
Book value is still down from where it was in 2016, but it has recovered a lot. In this quarter, it rose 0.8% $10.60, and we were pleased with this result. Investors should most certainly view this as a positive, with the issues related to the spread being taken as temporary. That will remain to be seen with the Q4 report. Right now, shares are at $10.16, so the discount-to-book is now $0.44, or just 4%. We would like shares a little bit more discounted than this, but we would say you are paying near fair value here, with a little buffer for volatility.
Take-home
We are cautiously bullish on WMC. We do need to be realistic that a buy here is somewhat risky just given the drop in core earnings, but we do believe this was temporary and that the earnings power will rebound in Q4. We also like that the dividend is safe with all of the contingent spillback coverage we have seen in the past. The relatively stable book value and defined trading range are a win too. The discount-to-book is not enticing enough to come in and buy heavily here, but we do believe that anytime shares dip to offer you a 10% or higher discount, they are worth buying. This is especially true if we consider that key metrics are stable. The coverage of the dividend should be your primary concern going forward. Right now, it looks covered, and the quarter was positive.
Looking ahead, our current expectations are for ongoing economic growth with slightly higher inflation. Residential and commercial real estate markets across the country still remains healthy and robust, and we do not see that changing in the near term.
If you like the material and want to see more, scroll to the top of the article and hit "Follow."
We turn losers into winners
Like our thought process? Stop wasting time and join the community of 100's of traders at BAD BEAT Investing.
We're available all day during market hours to answer questions, and help you learn and grow. Learn how to best position yourself to catch rapid-return trades, while finding deep value for the long-term.
- You get access to a dedicated team, available all day during market hours.
- Rapid-return trade ideas each week
- Target entries, profit taking, and stops rooted in technical and fundamental analysis
- Deep value situations identified through proprietary analysis
- Stocks, options, trades, dividends and one-on-one portfolio reviews
Disclosure: I/we have no positions in any stocks mentioned, and no plans to initiate any positions within the next 72 hours. I wrote this article myself, and it expresses my own opinions. I am not receiving compensation for it (other than from Seeking Alpha). I have no business relationship with any company whose stock is mentioned in this article.


Written and directed by Anthony Minghella, and based on Patricia Highsmith's novel, The Talented Mr. Ripley is a psychological thriller of jealousy and confused identity among the privileged classes. Tom Ripley (Matt Damon) is paid by a wealthy businessman to persuade his wayward layabout son Dickie (Jude Law) to return home from Europe. Tom travels to Italy, meets Dickie and girlfriend Marge (Gwyneth Patrow) and is soon sharing their bohemian tourist lifestyle, but the friendships formed are not all they seem and soon come under strain.
The film is deliberate but compelling, its restrained pace punctuated by a couple of moments of extreme violence, including one of the most effective screen murders I've ever seen. The best aspect of the film, though, is Matt Damon's magnificent performance as the scheming and manipulative but strangely pathetic Tom Ripley, whose talent, and compulsion, is to take on the identity of those around him. This is not an easy role to have taken on and was a very brave choice for an actor with a career as a pretty-boy movie star ahead of him. Such actors might be tempted to rebelliously take on a role against type, such as Leo de Caprio's rumoured but abandoned casting as the killer in American Psycho. Damon's role here is that of a subtle and sympathetic monster, something much more difficult and carried off brilliantly.
With The English Patient, Anthony Minghella was likened to David Lean. Such comparisons with great British film-makers seem not to have irritated Minghella, because The Talented Mr. Ripley shouts its Hitchcock influences from the rooftops. Apart from its Hitch-like plot and themes, the film's original score, by Gabriel Yared, is frankly little more than a Bernard Herrmann pastiche (although if you're going to copy anyone, you might as well copy the best). Some trademark Hitchcock shots are used, as when the viewpoint rotates as we close in on a tormented character from above, and when the camera travels over the heads of a formally-attired opera audience to tightly frame the main character in one of the boxes with the Yared/Herrmann score driving the allusion home. Even the opening credits have a similar look to the distinctive credits created for Hitchcock by Saul Bass.
The current fashion is for long films - it seems that nobody thinks a film less than two hours long will be taken seriously. At 139 minutes, The Talented Mr. Ripley drags occassionally and could have been more effective if it was half an hour shorter. Hitchcock famously once said that the length of a film should be directly related to the endurance of the human bladder. If his bladder could have taken the strain, he would have been proud of Ripley. (8/10)
--
Gary Jones
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


Welcome Back! We are providing a full suite of services (with some modifications, of course). Research consultations, instruction classes, and reference services are online. Nearly all Course Reserves are online. To meet CDC and Massachusetts guidelines, there are building access requirements, reduced seating, hours, and public technology. Because masks should remain on, all libraries will have a "no food" policy, although most will still allow drinks. Check it out — the 5th floor study area in O'Neill was enlarged to provide more seating overlooking downtown Boston!
For the latest information, consult the BC Libraries' homepage and the BC Libraries Updates page.


|
areaDetector
3-12-1
EPICS areaDetector framework
|
Header file for the firewireDCAM module. More...
Go to the source code of this file.
Functions | |
| int | FDC_InitBus (void) |
| Initialise the firewire bus. More... | |
| int | FDC_Config (const char *portName, const char *camid, int speed, int maxBuffers, size_t maxMemory, int colour) |
| Configuration function to configure one camera. More... | |
| void | FDC_ResetBus () |
Header file for the firewireDCAM module.
The only functions this module exports are the FDC_InitBus() and FDC_Config() to enable use of them in the IOC shell.
| int FDC_Config | ( | const char * | portName, |
| const char * | camid, | ||
| int | speed, | ||
| int | maxBuffers, | ||
| size_t | maxMemory, | ||
| int | disableScalable | ||
| ) |
Configuration function to configure one camera.
This function need to be called once for each camera to be used by the IOC. A call to this function instanciates one object from the FirewireDCAM class.
| portName | Asyn port name to assign to the camera. |
| camid | The camera ID or serial number in a hexadecimal string. Lower case and upper case letters can be used. This is used to identify a specific camera on the bus. For instance: "0x00b09d01007139d0". |
| speed | The bus speed to be used. This indicates whether to use the bus in 1394A or 1394B mode. Valid values are: 400 or 800. If an invalid value is entered the function will always default to 400 (legacy mode). |
| maxBuffers | Maxiumum number of NDArray objects (image buffers) this driver is allowed to allocate. This driver requires 2 buffers, and each queue element in a plugin can require one buffer which will all need to be added up in this parameter. |
| maxMemory | Maximum memory (in bytes) that this driver is allowed to allocate. So if max. size = 1024x768 (8bpp) and maxBuffers is, say 14. maxMemory = 1024x768x14 = 11010048 bytes (~11MB) |
| disableScalable | Disable scalable modes if this is 1 |
| int FDC_InitBus | ( | void | ) |
Initialise the firewire bus.
This function need to be called only once to initialise the firewire bus before FDC_Config() can be called. The bus will be first be reset, then scanned for cameras and the number of cameras and their hexadecimal ID will be printed to stdout.
| void FDC_ResetBus | ( | ) |


CAURI
Banking for expats of
Manage, move and grow your finances across
geographics for free. Join our exclusive
waiting list
.
Join the list


Never one to turn his back on a fight, Rigwarl was known for battling the biggest, meanest scrappers he could get his hands on. Christened Bristleback by the drunken crowds, he waded into backroom brawls in every road tavern between Slom and Elze, until his exploits finally caught the eye of a barkeep in need of an enforcer. For a bit of brew, Bristleback was hired to collect tabs, keep the peace, and break the occasional leg or two (or five, in the case of one unfortunate web-hund).
After indulging in a night of merriment during which bodily harm was meted out in equal parts upon both delinquent patrons and his own liver, Bristleback finally met his match. "Your tusks offend me, sir," he was heard to drunkenly slur to one particularly large fellow from the northern wastes whose bill had come due. What followed was a fight for the ages. A dozen fighters jumped in. No stool was left unbroken, and in the end, the impossible happened: the tab went unpaid. Over the weeks that followed, Bristleback's wounds healed, and his quills grew back; but an enforcer's honor can be a prickly thing. He paid the tab from his own coin, vowing to track down this northerner and extract redemption. And then he did something he'd never done before: he actually trained, and in so doing made a startling discovery about himself. A smile peeled back from his teeth as he flexed his quills. Turning his back to a fight might be just the thing.


Paragraph 1, line 1. Paragraph 1, line 2.
Paragraph 2, line 1. Paragraph 2, line 2.
Paragraph contained in list item 2.
Verbatim text not contained in list item 3
List numbering schemes: [[1]], [[a]], [[A]], [[i]], [[I]].
Verbatim text in a box
--- instead of +-- suppresses the box around verbatim text.
Figure caption
| Centered cell 1,1 |
Left-aligned cell 1,2 |
Right-aligned cell 1,3 |
|---|---|---|
| cell 2,1 | cell 2,2 | cell 2,3 |
No grid, no caption:
| cell | cell |
| cell | cell |
Horizontal line:
New page.
Italic font. Bold font. Monospaced font.
Anchor. Link to Anchor. Link to http://www.pixware.fr. Link to showing alternate text. Link to Pixware home page.
Force line
break.
Non breaking space.
Escaped special characters:
~
=
-
+
*
[
]
<
>
{
}
\
Copyright symbol: ©, ©, ©.


{% extends "base.html" %} {% block content %}
Please find your six digit OTP to show at the hospital
Click here to download the booking details


|
|
IFXRenderable Class ReferenceThe IFXRenderable interface supplies the services needed to support dispatching of abstract data types to IFXShaders.
More...
Inheritance diagram for IFXRenderable:
List of all members.
Detailed Description
The IFXRenderable interface supplies the services needed to support dispatching of abstract data types to IFXShaders.
Member Function Documentation
| virtual const IFXVector4& IFXAPI IFXRenderable::CalcBoundingSphere |
( |
|
) |
[pure virtual] |
|
| virtual IFXRESULT IFXAPI IFXRenderable::GetElementShaderList |
( |
U32 |
index, |
|
|
IFXShaderList ** |
ppOutShaderList |
|
) |
[pure virtual] |
|
|
|
Returns the ShaderList of a specific renderable element.
- Parameters:
-
| index | The index of the renderable element for which we want the shader set. |
| ppOutShaderList | The returned shader set associated with this renderable element. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The index index is larger than the renderable element count |
Implemented in CIFXRenderable. |
| virtual const IFXIID& IFXAPI IFXRenderable::GetElementType |
( |
void |
|
) |
[pure virtual] |
|
|
|
Returns a reference to the IID that the renderable elements support.
- Returns:
- An IFXRESULT value.
- Return values:
-
Implemented in CIFXMeshGroup, and CIFXRenderable. |
| virtual BOOL IFXAPI IFXRenderable::GetEnabled |
( |
void |
|
) |
[pure virtual] |
|
|
|
Returns a BOOL describing whether the data will be rendered.
Implemented in CIFXRenderable. |
| virtual U32 IFXAPI IFXRenderable::GetNumElements |
( |
void |
|
) |
[pure virtual] |
|
|
|
Returns the number of renderable elements in the IFXRenderable.
Implemented in CIFXRenderable. |
| virtual IFXRESULT IFXAPI IFXRenderable::GetShaderDataArray |
( |
IFXShaderList *** |
pppShaderArray |
) |
[pure virtual] |
|
|
|
Returns the array of shader sets associated with this renderable (for example, if this mesh group contains three meshes, then this call will return an array of three shader sets).
Implemented in CIFXRenderable. |
| virtual IFXRESULT IFXAPI IFXRenderable::SetElementShaderList |
( |
U32 |
index, |
|
|
IFXShaderList * |
pInShaderList |
|
) |
[pure virtual] |
|
|
|
Sets the shader sets for a specific renderable element.
- Parameters:
-
| index | The index of the renderable element for which we will assign a new shader set. |
| pInShaderList | The shader set to assign to this renderable element. |
- Returns:
- An IFXRESULT value.
- Return values:
-
| IFX_OK | No error. |
| IFX_E_INVALID_RANGE | The index index is larger than the renderable element count |
Implemented in CIFXRenderable. |
| virtual IFXRESULT IFXAPI IFXRenderable::SetEnabled |
( |
BOOL |
isEnabled |
) |
[pure virtual] |
|
|
|
Controls whether or not the data will be rendered.
- Parameters:
-
| isEnabled | The BOOL that determines whether or not the data will be rendered. |
- Returns:
- An IFXRESULT value.
- Return values:
-
Implemented in CIFXRenderable. |
| virtual IFXRESULT IFXAPI IFXRenderable::TransferData |
( |
IFXRenderable & |
rSrcRenderable, |
|
|
BOOL |
isCopyElements, |
|
|
BOOL |
isCopyShaders |
|
) |
[pure virtual] |
|
|
|
Used to do a copy of a renderable so that portions of the renderable may be copied seamlessly.
- Parameters:
-
| rSrcRenderable | The Renderable to copy from. |
| isCopyElements | If this is true all of the elements are copied. If it is false the elements will be referenced from the previous data packet. |
| isCopyShaders | If this is true all of the shaders are copied. If it is false the Shaders will be referenced from the previous data packet. |
- Returns:
- An IFXRESULT value.
Implemented in CIFXMeshGroup, and CIFXRenderable. |
© 1999 - 2006 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
|
|


Price re-elected as ARL Chair, Board unchanged
by Auckland Rugby LeaguePrice re-elected as ARL Chair, Board unchanged after latest election
November 16, 2019
Incumbent Auckland Rugby League Chairperson Shane Price has been re-elected for another two-year term following the latest Board elections.
The Board will remain unchanged after Elected Directors Evelyn Brooker and Lynne Cameron also earned re-election through until November 2021.
The election results were revealed at Saturday's Conference of Clubs held at the home of the Pt Chevalier Pirates.
Price said it is an honour to lead the Board for another two years.
"The next two years are about making sure that we put our clubs at the front and centre of everything we do," Price said.
"There are some unique challenges facing sport and our game right now, but also some exciting opportunities."
The annual gathering of club representatives also saw updates from the Auckland Rugby League coaching and development and digital departments, as well as the Auckland Rugby League Referees' Association.
There were also presentations from Auckland Council, Kiwi Tag and the Te Atatu Roosters’ Holiday Blast programme coordinator.
ARL Board of Directors: Shane Price (Chairman), Evelyn Brooker (Elected Director), Greg Steed (Appointed Director), Brian Mills (Appointed Director), Karen Gibbons (Elected Director), Tony Kemp (Elected Director), Lynne Cameron (Elected Director).
ENDS


Format exam papers
Version 1.1.4, 2016 December 19.
sample/
directory in the distribution
for the source of this. That demonstrates the final version of the
paper, as opposed to the ‘draft’ and ‘compose’ versions; there’s also
a version with this layout but
showing the solutions.http://purl.org/nxg/dist/exam-n
,
and the repository is available at
bitbucket.There are already multiple ‘exam’ LaTeX styles on CTAN, including the (original?) exam class, the extensive AcroTeX bundle, the examdesign and exams classes, and a variety of other packages which mention exams in some way. Some of these are more focused on generating quizzes (even doing things like randomising answers) or on having a highly customisable layout. Several (including ‘exam-n’) have support for generating versions of the exam document which include answers, for the benefit of markers.
What the ‘exam-n’ class can bring to this particular (rather crowded) party is:
The focus of the ‘exam-n’ class is on the careful collaborative process of assembling an exam, and many of the features are to do with checks to avoid mistakes. The result has, in effect, been validated by practice.
With the version 1.1 release, the interface should now be regarded as rather stable. However version 1.1 was the first to be released outside Glasgow University, so there may be some changes to the interface which will emerge with broader use, as well as some bug fixes. The interface may, therefore, yet change. If you use this class to produce exams, you should therefore include a copy of the class file locally, rather than relying on a central version. If you need an earlier version of the class, let me know.
The class was called exam
until release 0.14, and
guexam
until release 1.1. In the first case, it was
renamed to avoid a conflict with a pre-existing LaTeX class with the
same name; and in the second it was renamed to make it more
generically useful to other institutions.
[largefont]
option.
Note:
option [hugefont]
has replaced [bigfont]
;
the latter is now deprecated, and may be removed in v1.2.\part
macro is now supported within
solutions (it produced the wrong numbers before), and there is a new
\StylePartNumber
customisation macro.rotating
.\label
within question environment now refers to the
question number.{\bf ...}
rather than (post-1995) \textbf{...}
.\begin{questiondata}
now starts a new paragraph.\partmarks*
behaviour; now behaves differently
within display maths (addresses
issue 1).exam-n
, ready for wider
distribution.
Available on bitbucket
and at CTAN.


I am 27 years old, and have a Bachelor's degree in Computer Engineering from the University of Central Florida. I spent the 2015-2016 school year Teaching Geometry at Timber Creek High School. I enjoy everything about computers, taking them apart, putting them together, hardware and software. I'm a fanatic gamer, mostly into open word and simulation type games; Sim City, City Skylines, etc. Any type of game where I can create or influence the world around me. I am currently taking a full stack web development course hosted by the University of Central Florida, to tinker and learn more about computers, the internet and how it is all built.


WEconnect
Home
Register Business
Sign In
Sign Up
* required
Business Info:
Business Name:
*
Email:
*
Add Categories
(at least one)
:
*
Technology
Fashion
Consumer Goods
Entertainment
Brief Bio:
Contact Info:
Address:
*
Country:
*
Nigeria
Uganda
Kenya
Ghana
State:
*
Abuja
Lagos
Adamawa
Ondo
City:
*
Lokoja
Ikeja
Yola
Akure
Zip code:
*
TelePhone No:
Business Logo:
Upload Business Logo
*
Register


Carrots Are crunchy. They are tasty. And highly nutritious. Carrots are a particularly good source of beta carotene. And fiber. And Vitamin K1 Et (Et) is french for (And)potasium, and antioxidants. They also have a number of health benefits. They're a weight-loss-friendly food. And have been linked to lower cholesterol levels and improved eye health. Raw or steamed carrots provide the most nutritional value. Also carotenoids and vitamin A. May absorb better in the presence of fats. For this reason, people should eat carrots with a healthful source of fat. such as avocado. and nuts. or seeds.
Carrots are found in many colors.
Such As yellow.
And white.
comonly orange.
also red
lastly purple.
Orange carrots get their bright color from beta carotene.
an antioxidant that your body converts into vitamin A.
This website will give you everything you need to know about carrots.
Carrots are mainly composed of water and carbs.
The carbs consist of starch and sugars, such as sucrose and glucose.
They are also a relatively good source of fiber.
With one medium-sized carrot (61 grams) providing 2 grams.
Carrots often rank low on the glycemic index (GI).
which is a measure of how quickly foods raise blood sugar after a meal.
Their GI ranges from 16–60 — lowest for raw carrots.
A little higher for cooked ones.
And highest for puréed.
Carrots are a good source of several vitamins and minerals.
Especially biotin, potassium, and vitamins A (from beta carotene), K1 (phylloquinone), and B6.
Vitamin A: Carrots are rich in beta carotene, which your body converts into vitamin A.
This nutrient promotes good vision and is important for growth, development.
And immune function
Biotin: A B vitamin formerly known as vitamin H.
biotin plays an important role in fat and protein metabolism.
Vitamin K1: Also known as phylloquinone.
Vitamin K1 is important for blood coagulation and can promote bone health.
Potassium: An essential mineral.
Potassium is important for blood pressure control.
Vitamin B6: A group of related vitamins.
B6 is involved in the conversion of food into


Front end web developer with basic back end knowledge. General knowledge of HTML, CSS, WordPress, JavaScript, Php, MySql, PhpMyAdmin.


Test Forms
Telephone:
Mobile:
Submit
Telephone:
Mobile:
Submit
-- Select --
My Option
My Option 2
-- Select --
My Option
My Option 2
Submit
Checkbox 1
Checkbox 2
Submit
Radio Group 1
Radio Group 1
Radio Group 2
Radio Group 2
Submit
Telephone:
Mobile:
Submit
Telephone:
Mobile:
Submit


Geometry
Square
How long is each side of your square?
Triangle
What are the measurements of your triangle?
Base
Side 1
Side 2
height
Circle
What is the radio of your circle?
percentage and Discount
hawaiian burger
$150
coupon applied
Family pack of pizzas
$300
coupon applied
List from coupons
- first-buy
- Forever
- secret
Calcula promedio, moda y mediana
Usar una coma y luego un espacio para separar los numeros


The best online deals and sales happening now
by Amir Ismael, Business Insider USWe rounded up the 10 best sales and deals happening online today, with savings on the Nintendo Switch, Adidas sneakers and clothing, home goods at Target, and Anker charging accessories.
Deals in this story are subject to change throughout the day. The prices listed reflect the deal at the time of publication. For even more deals and savings across the web, check out Business Insider Coupons.
The best sales and deals happening today at a glance:
- Get a $30 gift card when you buy a Nintendo Switch at Best Buy
- Save 40% on sneakers and clothing at Adidas
- Save 30% on home goods and furniture at Target
- Save up to 40% on Anker charging accessories on Amazon
- Save 25% sitewide at NFL Shop
- Save an extra 30% on sale items at Bonobos
Additional Business Insider-exclusive deals and longer-term sales going on now:
- Get $750 worth of travel points when you sign up for the Chase Sapphire Preferred and spend $4,000 in the first three months
- Save 25% on Gravity Blankets and more
- Save up 25% on Bear Mattresses and get two free pillows
- Save 15% on your order at Framebridge
Find the details of each sale below:
1. Get a $30 gift card when you buy a Nintendo Switch at Best Buy
Nintendo Switch 32GB Console and $30 Best Buy Gift Card, $299
The Switch, Nintendo’s popular gaming console, allows you to play games at home and on the go. For a limited time, Best Buy is offering a $30 gift card when you buy the console. While you can’t apply the gift card directly to the Switch purchase, you can put it towards a game or accessory the next time you buy something.
2. Save 40% on sneakers and clothing at Adidas
Shop the Adidas sale now.
Today only, Adidas Creators Club members can save 40% on a wide selection of sneakers and clothing by using the promo code “FRIENDS” at checkout. Non-members can save 30% with the same promo code, but it’s worth signing up here for the bigger discount – all it means is that you’ll be on Adidas email list. One of the best deals in the sale is the Men’s Ultraboost 19 for $75.60 (originally $180).
3. Save 30% on home goods and furniture at Target
Shop the Target sale now.
Whether you’re shopping for seasonal holiday decor or you’re completely furnishing a new space, Target is a great place to find deals on home goods. For Green Monday (another retail holiday that happens the week after Cyber Monday), you can save 30% on home goods, furniture, bedding, and decor. Prices are as marked, so you won’t need a promo code to save.
4. Save up to 40% on Anker charging accessories on Amazon
Shop all Anker charging accessories on Amazon now.
Keeping all of your electronic devices fully charged can be hard to do when you’re constantly on the go, but Anker has a great selection of products for fast and efficient charging. As an Amazon Deal of the Day, you can save up to 40% on charging accessories, including power banks, USB-C and Lightning charging cables, car chargers, and wireless charging pads. Whether you want to use a normal wall outlet, your car’s 12-volt socket, or an external source, you’ll find it all here.
5. Save 25% sitewide at NFL Shop
Shop the NFL Shop sale now.
As the NFL season continues to heat up, there’s no better time to stock up on (or gift) gear for your favorite team. For Green Monday, you can automatically save 25% sitewide. You’ll also get free shipping on all orders over $39. The sale includes jerseys, hoodies, hats, and much more.
6. Save an extra 30% on final sale items at Bonobos
Shop the Bonobos sale now.
With the ethos of a startup and the backing of a large corporation (Walmart), Bonobos is currently the most successful new menswear brands out there. Until tonight at 11:59 p.m. EST, the brand is having a huge sale with an extra 30% off final sale styles, likely to help them create room for incoming seasonal styles. Simply use the promo code “PRESENTTIME” at checkout. The sale includes button-up shirts, chinos, shorts, activewear, and much more.
7. Get $750 worth of travel points when you sign up for the Chase Sapphire Preferred
Learn more about the Chase Sapphire Preferred from our partner The Points Guy.
The Chase Sapphire Preferred Card is a great option if you’re new to earning points and miles, as it has a reasonable $95 annual fee. You’ll earn 2 points per dollar on all travel and dining purchases and 1 point on everything else, and the card includes some valuable benefits like trip delay coverage and primary car rental insurance.
You can earn 60,000 Chase points with the Chase Sapphire Preferred when you spend $4,000 in the first three months from account opening. That’s worth at least $750 toward travel. Read our review to learn more about the card’s benefits.
Business Insider may receive a commission from The Points Guy Affiliate Network if you apply for a credit card, but our reporting and recommendations are always independent and objective.
8. Save 25% on Gravity Blankets and more
Shop the Gravity Blanket sale now.
Weighted blankets are becoming an increasingly popular method for reducing stress and getting a good night’s sleep – and the popular Gravity Blanket is on sale now. For a limited time, you can save 25% sitewide with the promo code “HOLIDAY2019” at checkout. In addition to the original Gravity Blanket, the sale also includes travel blankets, weighted sleep masks, aromatherapy pillows, and more.
9. Save 25% on a Bear mattress, plus get two free pillows
Shop the Bear Mattress sale now.
Named the best mattress for hot sleepers in our buying guide, Bear Mattresses are designed to keep you cool and comfortable at night. Additionally, the mattresses feature Celliant, a material that converts heat from the body into far infrared – a type of energy that’s been proven to help rebuild cells. The technology can help you wake up feeling well-rested and free of aches and pains, plus you won’t break a sweat in your sleep. During the extended Cyber Monday sale, you can get 25% off your order with promo code “GIFT” at checkout. You’ll also receive two free pillows when you purchase a mattress or bundle.
10. Save 15% on your order at Framebridge
Shop the Framebridge sale now.
In addition to offering customizable framing options for your prints and original paintings, Framebridge will turn your favorite digital images and smartphone pictures into beautifully framed artwork that’s suitable for display.  For a limited time, new customers can save 15% sitewide by using the promo code “INSIDER15” at checkout.


Bulk upload apprentices
You can add details for more than one apprentice at the same time using a Microsoft Excel, CSV or ODS file.
Before you start
- You must know the name of the apprenticeship training course each apprentice is taking
- You should have prepared a file with all the relevant apprentice details - the template can help with this


Bases: dict
The Attributes class defines the dictionary of attributes of a Node instances. Typically the class inherits from dict.
Bases: object
The abstract BaseNode class is a wrapper for an Attributes instance (that needs to be initialized by an inheriting node class). The basic attribute methods are implemented here. The BaseNode does not implement any tree functionality, allowing both Node an State classes to inherit. The first is a tree, but the latter is flat. Though both contain a set of attributes.
alias of Transformer
The getAttributeDefault method answers the default for attribute <attr>name</attr>. The behavior is to answer the result of self.ATTRIBUTEDEFAULTS.get(name).
The getAttributes method answers the dictionary Attributes instance self._attributes.
The getAttributes method answers <attr>attributes</attr> attribute or a new instance of Attributes. The attribute set holds the @attributes of the <attr>self</attr> node. Note that the attribute set is stored “as such” without making a copy. So any change to the attribute set when manipulating the tree, will also reflect in the original attribute set.

If the <attr>args</attr> dictionary is defined, then the these values are added over the the key-value of new create Attributes instance. This is a separate method to allow inheriting node classes to redefine the class of the attribute set. The <attr>args</attr> attribute can be either a dictionary or a list of dictionaries.
The EtreeNode class provides a wrapper around any etree node, to make a more convenient and robust Python based API.
 Note that if <attr>xml</attr> is supplied to the constructor, it needs to be validated XML, since not other checking or transformation is performed at this stage.
 The same is true the other way around. This especially is applies for the instance read and written from  XmlTreeField fields. For documentation on Etree see the official tutorial.
alias of Constants
The getXPath class method queries the <attr>tree</attr> by <attr>xpath</attr> and answers a list of EtreeNode instances for every matching entry. There are several answering conditions: if <attr>tree</attr> is None then answer None. If there is no result, then answer None. If the result is a list of basestring instances (tested on the first of the list) then answer the list untouched. Otherwise make a new list with the result etree nodes wrapped as EtreeNode instances.
The getXPathNode class method does the same as cls.getXPath except that it answers the element of the list indicated by <attr>index</attr>. If there is no result, or if the <attr>index </attr> exceeds the length of the result list, then None is answered. Default value for the optional <attr>index</attr> attribute is 0, resulting in the first element if it exists.
Bases: xierpa3.toolbox.tree.basenode.BaseNode
A State instance holds the current state of style parameters while rendering a set of styles in a canvas or CSS. If the state refers to a style, then this is used to get cascading values from, in case the current set of attributes does not contain the requested name. Setting values, however, only takes place on the state attribute set, so the styles set will never be written.

The State as final <quote>leaf</quote> underneath a cascading Style tree, can be seen as a sketch pad that hold the rendered values and stores any changed value, so it will not damage the fixed styles.

State instances are used in various places where several sides need to share the save values and where the set of values is undefined or expanding in the future. Examples are the state sharing between ImageBuilder and Canvas or the sharing between the main SiteBuilder application and window instances.
The get (or state[name]) method answers the state attribute named <attr>name </attr>.
The getState method is allowed for compatibility reasons with Style instances. The behavior is to answers a copy of self.
The set (or state[name] = value) method sets the attribute <attr>name</attr> to <attr>value</attr>. This value is stored locally in the attributes dictionary of the state instance. It will not alter the style it may reference. Also it will block any further searching in the cascading set of style values, since the locally stored value is found on any next request for that name.


|
$ingularity
$um Fun
$umdays are Better
$umR Home
2nd Home
S.S AMANDA
S.S. Green Bean
S.S. Mina
S.S. POPS
S.S. SANITY
Sabbatical
Sacha
Saffron
Saga
Sail Bad The Sinner
Sailaway
SailBay
Sailing Solution
Sail-la-Vie
Sailmates
Sails Call
Sails tool
Saint Jude
Saint Somewhere
Sales Call
Salesman Ship
Saline Solution
Sally Ann
Sally Pontoon
Salmon Dodger
Salry Sucker
Salt Shaker
Saltgrass
SALTY DOG
Salty Miss
Salvation
Samaritan
Sambara
SAMMIE LEE
Sanctuary
Sand Blast
Sand Dollar
Sandbar
Sandpiper
Sandy Shoals
Sanity
Sanity, Too!
Santa Maria
SantaCarla
Sarahbella
Sarah-Kate
Sargassum
Sas Sea
Sassified
Sassy
Satan's Bobber
Saudades
SAUSAGE BOX
SAVANNAH SUE
SAVOURNA
Say Maybe
SCALLYWAG
SCAPERS DREAM
Scarlett Fire
Scene Isle
Scheherezad
Schmidt Happens
Scholarship
SCHOOL 'N' FISH
school skipper
School Skipper
School's Out!
Scirocco
SCO-BAR IV
Scoochtoo
SCOTSNWATER
Screaming Mimi
Screw Loose
Screw the Limit
screwing around
Scrimshaw
Scruffy
Scuba Driver
Scuba Due
Scuba Toy
Scuppers
sea - duecer
Sea - Q
SEA $ICKNE$$
SEA ANGEL
Sea Angel
Sea Angel
sea arch
Sea Bee
Sea Blues
Sea Breeze
Sea Clef
Sea Clusion
Sea Cow
Sea cowboy
Sea Critter
SEA CYCLE
Sea daddy
Sea Devil
SEA DOG
Sea Dog
Sea Dragon
Sea Dream
Sea Dreams
Sea Ducer
Sea Duty
Sea Eagle
Sea Elf
Sea Esta
Sea Ewe II
Sea Fan
Sea Fever
Sea Geezer
Sea girl
Sea Goals
Sea Gunner
Sea Gypse
Sea Hawk
Sea Hawk
Sea Ho
Sea Hopper
Sea King
SEA LARK
Sea Legal
Sea Legal
Sea Life
Sea Lodge
Sea Love Approval
Sea Love Me Naut
Sea Lover
Sea Major
Sea Me Smile
Sea Mist II
Sea Monkey
Sea Monster
Sea Mover
Sea Natural
SEA NILE
Sea No Rita
Sea of Debt
Sea Otter
Sea PA
Sea Phantom
Sea Prince
Sea Queen
Sea Quest
SEA RAYSINHELL
Sea Robin
Sea Safari
Sea Sapphire
Sea Saw
Sea Scape
Sea Senor
Sea Sharp
Sea Sick
Sea Sik
Sea Skank
SEA SONG
Sea Sound
SEA SPANIEL
Sea Squirt
Sea Squirt
Sea Stallion
Sea Swag
Sea Swan
Sea Tiger
Sea Toy
Sea U Later
Sea View
Sea Vu Play
Sea Wench
Sea Wife
Sea wings
Sea Witch
Sea Wizard
Sea Wolf
Sea Ya
Sea ya later
Sea Y'all
Sea3PO
Seaclipse
Seacure
Seadated One
Seadation
SeaDog
Seaduce
SeaDuced Again
Seaducer
Seaduction
Seaductive
|
Seafari
SeaFox
Sea-Gar
seagasm
Seagull Talon
Sea-Heaven
SEAHOON
Seahorse
sea-man
Sea-N-Double
Sea-nile
Seanote
Seanut
SeaQuell
Seaquence
SEAQUESTER
Seaquestered
Seaquil
SeaRah
Searay
Searchin'
Searching For Sea
SeaRenity
Seas 'n Ticket
Sea's the Day
Seas the Moment
SeaSans
Seascape
SEASLIK
SeaSun Ticket
seasunticket
SEATL
Sea-U-Late-Oar
Seavader
Seaweed
Sea-Weed
Seaworthy
SEAZOO
SEA-ZURE
Seclusion
Second Chance
Second Hand Rose
Second Morgage
SECOND STAR
Second Wind
Second Wish
Secunda Vita
See Da Moon
See fest
See Sick Captain
Seize the Bay
Sel fish
Self Control
Self Dispatch
SENEX TURPUS
Senor Speedy
Sensuous Sea
Serena
SERENA 'T'
Serendipity
Serenity
SERENITY NOW
SERIOUS OVERTIME
Seven Seas
Sha-Bop
Shadow Too
Shadowfax
Shady Grady
Shady Lady
Shaker of Salt
Shallow minded
Shameless
SHARIN'
Shark Bait
Shark Byte
Sharon Peters
Sharper image
She Got the House
She Made Me
SHE PAID HALF
Shear Pleasure
Shebrokus
Sheet Music
Sheets to the Wind
Shelmar
Shepherds Rest
Shibumi
Shiloh
Shindig
Ship Faced
Ship of Fools
Shipface
ShipFaceAgain
SHIPS 'N
Shirley's Temple
Shockwave
Shoot the Blue
Shootin' the Breeze
Shore Thing
SHUTUP & FISH
Sick Leave
Sieve
Sight Unseen
SIGNAL 20
signal zero
Significant Other
Silhouette
Silvan
Silver Bullet
Silver Fox
Silver Fox
Silver Lining
Simple Gift
Simplicity
Sin or Swim
Sin Ropa
SINAI
Sinful
SINGLEWIDE
Sink Hole
SINKIN FAST
Sinking Feeling
Sip N Dip
Sir Lancelot
Sir Rosis of the River
Sirena
Sisterwind
Sittin' Pretty
Ski Fever
Skidancer
Skinnerliner
Skip Fly
Skipper
Skoal
Slacker
slainte
Slapshot
Sleigh Ride
Slim Jim
SLIP AWAY
Slipaway
Slippery When Wet
Slippin' Time
Slonowake
Sloop Du Jour
Sloop John B
Sloppy Joe
Sluggo
Small World
SMILEX3
Smitten
Smoke On The Water
Snafu
Snafu Maru
Snake Oil
Snap 2 It
Snap Shackle & Pop
Snapperologist
SNAPSHOT
Snookers
Snoozer
Snug Harbor
Snuggle-Time
So Sweet
Sofa King Expensive
Sojourner
Sol Asylum
Sol Mate
Sol Mate
Sol Searcher
Solace of The Waves
Solar Coaster
Sole Food
Soleil
Solitaire
Solo
Solstice
Some R Home
Somebody Slap Me
SomeBuddy
Someday Came
Sommer Skye
Son of a Sailor
Songster
Son's College Funds
Son's Tuition
Son-Shine
Sooner
SORCERY
Sorry Charlie
SOSUEME
Soul Asset
SOUL MATE
Soul Mates
Sound Advice |
Sound Waves
South Wind
Southern Belle
Southern Breeze
Southern comfort
Southern Cross
Southern exposure
Southern Exsposure
Southern Gentleman
Southern Lady
Southern Star
Southern Style
Sovereignty
Spanish dancer
Spanker
spanush fly
Spare Time
Special Vessel
Speedbird
Spend Fool
Spend It
SPENT RENT
Spider Farm
Spirit
Spirit In The Sky
Spirit Level
Splash
Splash Dance
Splurge
Spoiled Brat
Spoiled Rotten
Sponge Worthy
spooners delight
Sporty
Spray II
Sputnik
Squid Row
Squiggle
Sream'n Reel
SScools Out
Stability
Stacked Deck
Stage V
Stairway To Heavin
Star Oars
Starchaser
starcraft
Stardust
Stargazer
Starship
Starwind
STASHEDHISTRASH
STATIC RELIEF
Stealing Time
Stella Maris
Stella Sue
STICKMAN
Still Crazy
Still Dreamin
Still Going
Still Waters
Sting Ray
Sting Ray
Stinger II
Stingray
Stingray
STINKY
Stinky Feet
Stir it Up
Stock Option
Stock Option
Stock Options
Stocks & Blondes
STORM
STORMIN'
Stormtrooper
Strait Aweigh
Strait Up
Stratocruiser
Stray Cat
STRAY DOG
Strega
Stress Buster
stress management
Stress Relief
Stress Relief
stressed-knot
Stressless
Strike King
Striper Sniper
Stroken
Strugglers Retreat
Stubbie
Study Break
STUGOTZ
Stung Again
Stupid Sea Monkey
Subject 2 Change
Subject 2 Change
Subtle
SUCH A DEAL
Such-A-Deal
Sudden Attraction
Sudden Comfort
Sudden Debt
Sue Sea
SUGAR & SPICE
Sugar Dot
Sugar Schaack
Sugar Suit
Sugar Sweet
Sum 'R' Fun
Summa Home
Summer Breeze
SUMMER DAZE
Summer Dreams
Summer Hummer
Summer Joy
Summer Madness
Summer Magic
Summer Oasis
Summer Pace
SUMMER PLACE II
Summer Reflection
Summer Salt
Summer School
Summer Wind
Summers DEElite
Summers Off
Summers Promise
Summer's Toy
Summertime
Summ'r Luv
SumTime
Sun Bandit
Sun Catcher
Sun Chaser
Sun Dancer
SUN DAZE
Sun Fun
Sun Fun
Sun Puppy
Sun Searcher
Sun Seeker
Sun Skimmer
sunbum
Sunburn
SUNBURST
Sunfox
Sunny Daze
Sunny Side Up
Sunset Seeker
Sunset Serenade
Sunshine Daydream
Sunspot
Super Sloop
Supergrinch
Sure Thing
Surf N Net
Surf Rider
Surface Interval
Surface Tension
Surprise
Survivor
Susie - Q
Susie Queue
SUZIE-Q
SVInvictus
Swamp Trash
Swan
Swede D Pie
Sweet Cheeks II
SWEET EMOTION
Sweet Escape
Sweet Georgia
Sweet Li'l Sixteen
Sweet Precious
SWEET SAVAGE
SWEET WEE-WEE IV
Sweetwater fish n' cruise
SWELL DANCER
Swell Dancer
Swell Rider
Swept away
Swimfully Sea Ducktive
Swoosh
Sybervessel
Symphony
Symphony At Sea
Synchronicity
Return to Top
|


At Liquor Park we’re passionate about thoughtful, carefully crafted beverages. By tapping our combined twenty years’ experience in the Chicago industry, we’ve curated a collection of cult-favorite beers, sought-after spirits, and small-batch wines from around the world, including artisan and made-in-the-Midwest products you can’t get just anywhere.
Our shelves are stocked and we’re ready to deliver spot-on pairings and killer recommendations for any palate, budget, or occasion. Come find us in the heart of Wicker Park–Bucktown, just east of the intersection of North, Damen, and Milwaukee Avenues at 1937 West North Avenue.
E-mail: shop@drinkliquorpark.com


--- layout: post title: "Boston Key Party -- MITM" date: 2013-06-10 00:54:54 +0000 permalink: /2013/06/10/boston-key-party-mitm/ category: Security tags: - CTF - Boston Key Party redirect_from: - /blog/boston-key-party-mitm/ ---
Boston Key Party is the latest CTF I've played in (this time playing with some local friends as part of our team 'Shadow Cats'). The first challenge we cleared (actually, first blood in the CTF) was MITM.
Now, you might think a challenge named "MITM" was some sort of Man-In-The-Middle exercise, but it's actually crypto! We're given five base-64 encoded messages: two plaintext/ciphertext pairs, and a ciphertext (which we're presumably supposed to decrypt).
message 1: QUVTLTI1NiBFQ0IgbW9kZSB0d2ljZSwgdHdvIGtleXM= encrypted: THbpB4bE82Rq35khemTQ10ntxZ8sf7s2WK8ErwcdDEc= message 2: RWFjaCBrZXkgemVybyB1bnRpbCBsYXN0IDI0IGJpdHM= encrypted: 01YZbSrta2N+1pOeQppmPETzoT/Yqb816yGlyceuEOE= ciphertext: s5hd0ThTkv1U44r9aRyUhaX5qJe561MZ16071nlvM9U=
Decoding the two plaintexts gives us:
AES-256 ECB mode twice, two keys Each key zero until last 24 bits
Some useful hints. So our construction is C = EK2(EK1(P)) where K1 and K2 are both 256-bit keys with the first 29 bytes being all nulls. This means the remaining keyspace for each key is 224, or 224 * 224 = 248 for both keys combined. Brute forcing 248combinations seems... unlikely during a CTF.
The good news is, we only actually have to try ~225 possible keys, which is quite doable even on my laptop. (Actually completes in a matter of minutes.) The trick is a Meet in the Middle (MITM again!) attack. Because we have a plaintext/ciphertext pair, we can encrypt the plaintext with all possible keys, store those encryptions, then decrypt the ciphertext with all possible keys and check those keys against the encryptions. They will match when you have found your two keys, which can then be used to decrypt the unknown ciphertext.
from Crypto.Cipher import AES plain = 'QUVTLTI1NiBFQ0IgbW9kZSB0d2ljZSwgdHdvIGtleXM='.decode('base64') cipher = 'THbpB4bE82Rq35khemTQ10ntxZ8sf7s2WK8ErwcdDEc='.decode('base64') unknown = 's5hd0ThTkv1U44r9aRyUhaX5qJe561MZ16071nlvM9U='.decode('base64') KEY_PADDING = chr(0)*29 def NewAES(key): return AES.new(key, mode=AES.MODE_ECB) def Encrypt(short_key, text=plain): return NewAES(KEY_PADDING+short_key).encrypt(text) def Decrypt(short_key, text=cipher): return NewAES(KEY_PADDING+short_key).decrypt(text) def KeyGen(): """Generator for all possible 24 bit keys.""" for a in xrange(0, 256): for b in xrange(0, 256): for c in xrange(0, 256): yield chr(a)+chr(b)+chr(c) def EncryptTable(): """Map of encryptions to keys.""" table = {} for short_key in KeyGen(): table[Encrypt(short_key)] = short_key return table table = EncryptTable() for short_key in KeyGen(): decrypted = Decrypt(short_key) if decrypted in table: # Have a match, now decrypt the unknown print Decrypt(short_key, Decrypt(table[decrypted], unknown)) break
The downside to this technique is that it has 224 memory complexity, as you store an entire hash table of encryption->key pairs for the inner encryption. However, even with the overhead in python, 224 memory seems to amount to ~2.5GB, so a small tradeoff here.