NatImage
public class NatImage : UIView
Note
This component is available in the following variants:- ✅ Standard
- ✅ Highlight
With the following attribute status:
- Radius:
- ✅
None
- ✅
Medium
- ✅
Circle
- ✅
- Fade:
- ✅
Top
- ✅
Bottom
- ✅
Left
- ✅
Right
- ✅
- ✅ Fallback
NatImage is a class that represents the image component from the design system.
It can be configured with the variants:
- Standard (default)
- Highlight
Example of usage:
let image = NatImage()
image.configureFade(.top)
image.configure(setImage: YourUIImage())
image.configureRadius(.medium)
Requires
It’s necessary to configure the Design System with a theme or fatalError will be raised.
DesignSystem().configure(with: AvailableTheme)
-
Undocumented
Declaration
Swift
public init()
-
Sets the component with the chosen variant interface.
Declaration
Swift
public func configure(variant: ImageType)
Parameters
variant
an option from ImageType enum
-
Sets the value for the border radius. The radius is equally applied in all corners. If the chosen option is
circle
, the height of the view (a CGFloat) must be sent as a parameter. Default option isnone
.Declaration
Swift
public func configureRadius(_ radius: ImageRadius = .none)
Parameters
radius
an option from ImageRadius enum
-
Applies a fade overlay to the component and sets its direction. Default option is
bottom
. Optionnone
is used to remove the fade overlay.Declaration
Swift
public func configureFade(_ fade: ImageFadeDirection = .bottom)
Parameters
fade
an option from ImageFadeDirection enum
-
Sets an image as a fallback, which will be displayed if the configuration with an URL or nil UIImage fails.
Declaration
Swift
public func configure(fallback: UIImage?)
Parameters
fallback
an UIImage
-
Sets an image as a fallback, which will be displayed if the configuration with an URL or nil UIImage fails.
Declaration
Swift
public func configure(fallback: URL?)
Parameters
fallback
an URL that will return an image
-
Configures the component with an image.
Declaration
Swift
public func configure(setImage: UIImage?)
Parameters
setImage
an UIImage
-
Configures the content mode for the image.
Declaration
Swift
public func configure(contentMode: UIImageView.ContentMode)
Parameters
contentMode
a contentMode option
-
Configures the component with an image from an URL.
Declaration
Swift
public func configure(setImageFromURL: URL?)
Parameters
setImageFromURL
an URL that loads an image
-
Undocumented
Declaration
Swift
public func configure(setBorderRadius: Bool)
-
Undocumented
Declaration
Swift
public func configure(setOverlay: Bool)
-
ImageFadeDirection is an enum that represents the fade options for NatImage
See moreDeclaration
Swift
public enum ImageFadeDirection
-
ImageRadius is an enum that represents the radius values for NatImage
See moreDeclaration
Swift
public enum ImageRadius
-
Imagetype is an enum that represents the variants for NatImage
See moreDeclaration
Swift
public enum ImageType


|
Generated by JDiff |
||||||||
| FRAMES NO FRAMES |
The percent change statistic reported for all elements in each API is defined recursively as follows:
Percentage difference = 100 * (added + removed + 2*changed) ----------------------------------- sum of public elements in BOTH APIsWhereadded
is the number of packages added,removed
is the number of packages removed, andchanged
is the number of packages changed. This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. The definition ensures that if all packages are removed and all new packages are added, the change will be 100%. Values are rounded here, so a value of 0% indicates a percentage difference of less than 0.5%.The overall difference between the two APIs is approximately 27%.
| Percentage Difference |
Frequency | Percentage Frequency |
| 16 | 0.07692307692307693 | |
| 20 | 0.07692307692307693 | |
| 21 | 0.07692307692307693 | |
| 25 | 0.15384615384615385 | |
| 28 | 0.07692307692307693 | |
| 36 | 0.07692307692307693 | |
| 39 | 0.07692307692307693 | |
| 40 | 0.07692307692307693 | |
| 42 | 0.07692307692307693 | |
| 44 | 0.07692307692307693 | |
| 83 | 0.07692307692307693 | |
| 96 | 0.07692307692307693 |
| Percentage Difference |
Frequency | Percentage Frequency |
| 0 | 0.02531645569620253 | |
| 1 | 0.02531645569620253 | |
| 4 | 0.012658227848101266 | |
| 6 | 0.02531645569620253 | |
| 8 | 0.012658227848101266 | |
| 9 | 0.012658227848101266 | |
| 11 | 0.012658227848101266 | |
| 15 | 0.012658227848101266 | |
| 17 | 0.012658227848101266 | |
| 25 | 0.02531645569620253 | |
| 40 | 0.012658227848101266 | |
| 42 | 0.012658227848101266 | |
| 50 | 0.5063291139240507 | |
| 60 | 0.012658227848101266 | |
| 77 | 0.02531645569620253 | |
| 80 | 0.012658227848101266 | |
| 83 | 0.012658227848101266 | |
| 95 | 0.02531645569620253 | |
| 100 | 0.20253164556962025 |
The numbers of program elements (packages, classes. constructors, methods and fields) which are recorded as removed, added or changed includes only the highest-level program elements. That is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.
| Number of Differences | ||||
| Removals | Additions | Changes | Total | |
| Packages | 0 | 0 | 13 | 13 |
| Classes and Interfaces | 19 | 26 | 79 | 124 |
| Constructors | 1 | 5 | 2 | 8 |
| Methods | 19 | 50 | 224 | 293 |
| Fields | 0 | 0 | 0 | 0 |
| Total | 39 | 81 | 318 | 438 |


Toggle nav
Hello, Sidhant!
CSE Bank Preferred Client
<EMAIL_ADDRESS>|
Update Profile
Personal Info
Full Name:
Account Type:
Registered Address:
1230 E. Lemon Street
SSN:
Registered Accounts:
Registered Accounts
*** 865
*** 482
Available Balance
Registered Email:
Registered Email:
Registered Security Feature:


The paper systematically investigates when does curriculum learning help.
Implicit curricula refers to the order in which a network learns data points when trained using stochastic gradient descent, with iid sampling of data.
When training, let us say that the model makes a correct prediction for a given datapoint in the $i^{th}$ epoch (and correct prediction in all the subsequent epochs). The $i^{th}$ epoch is referred to as the learned iteration of the datapoint (iteration in which the datapoint was learned).
The paper studied multiple models (VGG, ResNet, WideResNet, DenseNet, and EfficientNet) with different optimizers (Adam and SGD with momentum).
The resulting implicit curricula are broadly consistent within the model families, making the following discussion less dependent on the model architecture.
Maps a data point to a numerical score of difficulty.
Choices:
Loss function for a model
learned iteration
Estimated c-score - It captures a given model’s consistency to correctly predict a given datapoint’s label when trained on an iid dataset (not containing the datapoint).
The three scoring functions are computed for two models on the CIFAR dataset.
The resulting six scores have a high Spearman Rank correlation. Hence for the rest of the discussion, only the c-score is used.
This function, denoted by $g(t)$, controls the size of the training dataset at step $t$.
At step $t$, the model would be trained on the first $g(t)$ examples (as per the ordering).
Choices: logarithmic, exponential, step, linear, quadratic, and root.
Order in which the data points are picked:
Curriculum - Ordering points from lowest score to highest and training on the easiest data points first.
Anti Curriculum - Ordering points from highest score to lowest and training on the hardest data points first.
Random - Randomly selecting the data points to train on.
The paper performed a hyperparameter sweep over 180 pacing functions and three orderings for three random seeds over the CIFAR10 and CIFAR100 datasets. For both the datasets, the best performance is obtained with random ordering, indicating that curricula did not give any benefits.
However, the curriculum is useful when the number of training iterations is small.
It also helps with noisy data training (which is simulated by randomly permuting the labels).
The observations for the smaller CIFAR10/100 dataset generalize to slightly larger datasets like FOOD101 and FOOD101N.


Please provide a new password for your account:
Your password has been changed. A notification has been sent to your email address
Oh snap! It seems like we have a disagreement here.
Apparently we cannot find the combination of your username and the current password.
Maybe you made a typo in the current password!?
Hmm... something went wrong on the server :-(
Wait for a while and then try again.


{% extends "base.html" %} {% block title %}HT Phenotyping - Register a Data Source{% endblock %} {% block body %}
To register a new data source with the HT Phenotyping service, please fill out and submit the form below. An administrator will be notified and they will contact you to finalize your registration.


Our team and project "Construction and application of a multi-domain platform for screening and predicting mental diseases
" managed to get access to the final
SEEDS is an acronym for “Science & Engineering Enhanced Education for Distinguished Students” and is a program for aspiring high school students who want to quickly touch the world's most advanced science and technology
Goal is to have a wide range of small curiosity buds about science by touching a wide range of research at Osaka University


{% include 'navbar.html' %} {% load static %}
{{ ticket.id }} - {{ ticket.title }}
|
{% if ticket.assigned_to %} Assigned to: {{ ticket.assigned_to }} {% endif %} Status: {{ ticket.status }} {% if ticket.completed_by %}Completed by: {{ ticket.completed_by }}{% endif %}Submitted on: {{ ticket.date_filed }} Reported by: {{ ticket.creator }} |
Description {{ ticket.description }} |


Makes you indestructible for 1 second.
Unlocks immediately the next level.
Turns water in stone for 1 second.
Slows down the bugs for 1 second.
Freezes the bugs for 1 second.
LIVES :
LEVEL : 1


WITNESS LIST Ways & Means Committee March 7, 2001-2:00P HB 16 For: Amezquita, Michael (Self and Metropolitan Council of Appraisal Districts, Texas Association of Appraisal Districts) HB 438 For: Boerner, Ben (Texas Grain and Feed Association) Dougherty, Stephen W. (International Destribution) Frasier, A.K. (Network Distribution, Inc.) Kelley, Larry (Self and Texas Warehouse Association) Poteet, H.A.(Bob) (The Texas Cotton Association) Vetters, Bob (Self and Texas Warehouse Association) Against: Gill, Jim (City of Houston) Lavine, Dick (Center for Public Policy Priorities) On: Heleman, John (Comptroller of Public Accounts) HB 863 For: Lavine, Dick (Center for Public Policy Priorities) Lewis, Linda J. (Texas Alliance for Human Needs Membership) Against: Moore, Mickey (Texas Retailers Association) On: Ancira Jr., Jesse (Comptrollers Office) HB 1053 For: Austin, Bruce A. (Harris County Community Development Department) Braquet, Sidney J. (Harris County Community Development Department) Gonzales, Jim (Harris County Community Development) HB 1098 For: Lawler, Gale (Print Tax Services) On: Heleman, John (Comptroller of Public Accounts) HB 1241 For: Nunley, Mickey (National Fuel) On: White, Steve (Comptroller of Public Accounts) HJR 25 For: Boerner, Ben (Texas Grain and Feed Association) Dougherty, Stephen W. (International Destribution) Frasier, A.K. (Network Distribution, Inc.) Kelley, Larry (Self and Texas Warehouse Association) Poteet, H.A.(Bob) (The Texas Cotton Association) Vetters, Bob (Self and Texas Warehouse Association) Against: Gill, Jim (City of Houston) Lavine, Dick (Center for Public Policy Priorities) On: Heleman, John (Comptroller of Public Accounts)


Add 'Open with Notepad' to the Context Menu for All Files
I often use Notepad to open plain text files. If the extension of file is of unknown type then I have to browse a list of applications to open that file which is quite painful. Here is a small registry tweak which adds “Open with Notepad” to right click context menu for all file types.
Continue Reading »


wmic
https://docs.microsoft.com/en-us/windows/desktop/wmisdk/wmic
Windows Management Instrumentation Command-Line
Examples
List services
wmic service list brief
List installed apps
wmic product
Commands for service permission check (wmic and icacls used)
for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> c:\windows\temp\permissions.txt
for /f eol^=^"^ delims^=^" %a in (c:\windows\temp\permissions.txt) do cmd.exe /c icacls "%a"
List installed patches
wmic qfe get Caption,Description,HotFixID,InstalledOn
Grep specific patches
wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB.." /C:"KB.."


Public Member Functions | |
Constructors | |
| XMLStringTokenizer (const XMLCh *const srcStr, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager) | |
| Constructs a string tokenizer for the specified string. | |
| XMLStringTokenizer (const XMLCh *const srcStr, const XMLCh *const delim, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager) | |
| Constructs a string tokenizer for the specified string. | |
Destructor. | |
| ~XMLStringTokenizer () | |
Management Function | |
| bool | hasMoreTokens () |
| Tests if there are more tokens available from this tokenizer's string. | |
| unsigned int | countTokens () |
| Calculates the number of times that this tokenizer's nextToken method can be called to return a valid token. | |
| XMLCh * | nextToken () |
| Returns the next token from this string tokenizer. |
The XMLStringTokenizer methods do not distinguish among identifiers, numbers, and quoted strings, nor do they recognize and skip comments
A XMLStringTokenizer object internally maintains a current position within the string to be tokenized. Some operations advance this current position past the characters processed.
| XMLStringTokenizer::XMLStringTokenizer | ( | const XMLCh *const | srcStr, | |
| MemoryManager *const | manager = XMLPlatformUtils::fgMemoryManager | |||
| ) |
Constructs a string tokenizer for the specified string.
The tokenizer uses the default delimiter set, which is "\t\n\r\f": the space character, the tab character, the newline character, the carriage-return character, and the form-feed character. Delimiter characters themselves will not be treated as tokens.
| srcStr | The string to be parsed. | |
| manager | Pointer to the memory manager to be used to allocate objects. |
| XMLStringTokenizer::XMLStringTokenizer | ( | const XMLCh *const | srcStr, | |
| const XMLCh *const | delim, | |||
| MemoryManager *const | manager = XMLPlatformUtils::fgMemoryManager | |||
| ) |
Constructs a string tokenizer for the specified string.
The characters in the delim argument are the delimiters for separating tokens. Delimiter characters themselves will not be treated as tokens.
| srcStr | The string to be parsed. | |
| delim | The set of delimiters. | |
| manager | Pointer to the memory manager to be used to allocate objects. |
| XMLStringTokenizer::~XMLStringTokenizer | ( | ) |
| bool XMLStringTokenizer::hasMoreTokens | ( | ) |
Tests if there are more tokens available from this tokenizer's string.
Returns true if and only if there is at least one token in the string after the current position; false otherwise.
| unsigned int XMLStringTokenizer::countTokens | ( | ) |
Calculates the number of times that this tokenizer's nextToken method can be called to return a valid token.
The current position is not advanced.
Returns the number of tokens remaining in the string using the current delimiter set.
| XMLCh* XMLStringTokenizer::nextToken | ( | ) |
Returns the next token from this string tokenizer.
Function allocated, function managed (fafm). The calling function does not need to worry about deleting the returned pointer.


{% extends "material_layout.html" %} {% block body %}
Prioritises genetic mutations in patients based on their phenotypes described using the Human Phenotype Ontology.
Exomiser, PubmedScore, Phenogenon, SimReg, Bevimed and SKAT score genetic variants and phenotypes.
Using the gene or phenotype view you will be able to understand the spectrum of phenotypes that mutations in a given gene can lead to.


1.8. Writing JUnit Tests¶
1.8.1. Writing JUnit Tests¶
We have reviewed good design for test code and how to design modular and meaningful test code. This tutorial will show a basic series of tests on a binary search tree.
Before you start, be sure you have familiarized yourself with the basics of the
Junit/student.TestCase classes
.
For this exercise I will be using a BST written by a V.S. Adamchik
Here is the full BST source code.
While this class contains many methods this tutorial will only be testing a few.
import student.TestCase;
public class TestBST extends TestCase{
private BST<Integer> bst;
public void setUp() {
bst = new BST<Integer>();
}
public void testAdd() {
bst.insert(new Integer(8));//We see this tree on the Wikipedia as an example of a bst
bst.insert(new Integer(3));//We will use it to test our insert function since we
bst.insert(new Integer(1));//know how the traversal at the end should work. There
bst.insert(new Integer(6));//are other ways to do this, however, this structure should
bst.insert(new Integer(4));//provide us not only with a series of inserts that will hit
bst.insert(new Integer(7));//every line of code in the insert method and produce results
bst.insert(new Integer(10));//that we can expect
bst.insert(new Integer(14));
bst.insert(new Integer(13));
bst.insert(new Integer(13));//Handle inserting an element that already exists
bst.preOrderTraversal();
assertFuzzyEquals("8 3 1 6 4 7 10 14 13", systemOut().getHistory());
//systemOut().getHistory() returns all information printed to the terminal
//We use fuzzy equals as there may be leading/following whitespace and
//we do not want to have to work to make a direct match
systemOut().clearHistory();//Clear the history so the next time we print
//so we do not have to worry about the past output.
bst.inOrderTraversal();
assertFuzzyEquals("1 3 4 6 7 8 10 13 14", systemOut().getHistory());
}
public void testRemove() {
Exception d = null;
try{
bst.delete(new Integer(1));//It possible to throw an exception if
//deleting on an empty tree
} catch(Exception e) {
d = e;
assertEquals(e.getMessage(), "cannot delete.");
assertEquals(e.getClass(), RuntimeException.class);
//There are a number of ways to test exceptions
//One way would be to get the message that it prints, however, that
//message will likely change in most exceptions (i.e. FileNotFound will
//throw information about the file location). The other way to test an
//exception would be to check the type of exception thrown. In addition,
//it is wise to make sure an that the catch block is reached by setting
//a marker value to guarantee it has been reached.
}
assertNotNull(d);//Make sure an exception was thrown
String tree = "";
for(int i=10; i < 20; i++) {
bst.insert(new Integer(i));
tree += i+" ";
}
for(int k=9; k > -1; k--) {
bst.insert(new Integer(k));
tree = k+" "+tree;
}
for(int j=0; j < 10; j++) {
bst.delete(new Integer(j));//Test basic delete functionality
tree = tree.replaceFirst(Integer.toString(j), "");
systemOut().clearHistory();//Clear system so we only haver current tree
bst.inOrderTraversal();//After each removal
assertFuzzyEquals(tree, systemOut().getHistory());//See if the tree is what we expect
}
for(int l=19; l > 9; l--) {
bst.delete(new Integer(l));
tree = tree.replaceFirst(Integer.toString(l), "");
systemOut().clearHistory();
bst.inOrderTraversal();
assertFuzzyEquals(tree, systemOut().getHistory());
}
bst.insert(new Integer(10));//Handle the edge cases of deletion
bst.insert(new Integer(8));//Deleting a leaf
bst.insert(new Integer(9));
bst.insert(new Integer(6));
bst.insert(new Integer(7));
bst.delete(new Integer(6));
systemOut().clearHistory();
bst.inOrderTraversal();
assertFuzzyEquals("7 8 9 10", systemOut().getHistory());
bst.insert(new Integer(6));//Deleting an internal node
bst.delete(new Integer(7));
systemOut().clearHistory();
bst.inOrderTraversal();
assertFuzzyEquals("6 8 9 10", systemOut().getHistory());
bst = new BST<Integer>();
bst.insert(new Integer(10));//Deleting an internal node and pushing
bst.insert(new Integer(8));//the new node up
bst.insert(new Integer(9));
bst.insert(new Integer(7));
bst.delete(new Integer(8));
systemOut().clearHistory();
bst.inOrderTraversal();
assertFuzzyEquals("7 9 10", systemOut().getHistory());
bst = new BST<Integer>();
bst.insert(new Integer(10));//Deleting an internal node and progressing
bst.insert(new Integer(8));//down the left subtree to the rightmost
bst.insert(new Integer(9));//node found in it.
bst.insert(new Integer(6));
bst.insert(new Integer(7));
bst.delete(new Integer(8));
systemOut().clearHistory();
bst.inOrderTraversal();
assertFuzzyEquals("6 7 9 10", systemOut().getHistory());
}
}
The above source code shows a possible approach to testing the BST class add and delete methods. Given that a binary search tree is a well documented data structure, there are a number of sites one may refer to for information to test. In this case I referred to the wikipedia entry and pulled the first example of a binary search tree available. Those familiar with tree traversals know that for a given set of values an in order traversal will display the values in order from least to greatest, so after adding all the values to the tree, it is simple to know what to expect. In order to guarantee that the tree has been properly constructed I have chosen to test the Pre-Order traversal as well. Testing the delete function is a bit tougher. There are several cases that must be considered in order to get proper code coverage namely: deleting a leaf node, deleting an internal node with one child, deleting an internal node with 2 children, and deleting an internal node which does not immediately link to a leaf node. In addition to all of this examination of the delete function shows that it is possible for that function to throw a RuntimeException. In order to test this the test code attempts force the delete function to throw the exception, however, it is possible that the exception will not be thrown and no actual test on the Exception could be performed. As such the test code makes use of a canary value to guarantee that that the exception is thrown. Or else the tests will fail. After testing the Exception, the function then tries to test the series of cases that the delete function has.
In many cases testing for equality will satisfy the what is needed to properly test code. However not all information may be tested for strict equality as data representations may not always provide exact information. For example when working with floats or doubles it is important to test the results, however, doing so for strict equality is no simple task. By making use of additional functional of assertEquals method it is possible ot assign an acceptable threshold of difference between two values consider the below code.
public void testsquareroot(){
assertEquals(Calculator.squareroot(2), 1.4142, .001);
assertEquals(Calculator.squareroot(2), 1.4142, .000000000001);
}
The first test would succeed, but the second will fail. Why? Well in the second test the threshold is much finer and Java will fail as 1.4142 is not close enough to 1.4142135623730951. Keep this information in mind as you develop code and choose data types.


HostGator gives you a vast array of tools to take your idea or business online today! From site building tools and templates, to our one-click application installer, everything you need to launch a website is literally at your fingertips.
HostGator provides every customer with the necessary tools to get a fully-functional website up and running as quickly as possible. From our partnership with Weebly, providing an incredibly convenient drag-and-drop website builder, to our own QuickInstall application installer, you can have an amazing website online in no time!
Our dedicated Migrations Team is standing by to transfer your existing content from your prior host and configure it to perform optimally on our platform. We can also transfer domain registrations from other registrars in order to provide you complete management of your entire online portfolio all in one place! View Details
Our support staff is available 24/7/365 to assist you via Telephone, LiveChat, or Email with any hosting-related issues.
Try our services at no risk! If you're not completely satisfied, you can cancel within 45 days for a complete refund.
The availability of your website is our top priority. We stand by that fact with our uptime guarantee of 99.9% Uptime


[1]
Some filters produce cloudy-looking water filters I 've used.
[2]
This is by far the more effective water filters I 've used.


Journey maps are a common UX tool. They come in all shapes, sizes, and formats. Depending on the context, they can be used in a variety of ways. This article covers the basics: what a journey map is (and is not), related terminology, common variations, and how we can use journey maps.
Definition of a Journey Map
A journey map is a visualization of the process that a person goes through in order to accomplish a goal.
In its most basic form, journey mapping starts by compiling a series of user actions into a timeline. Next, the timeline is fleshed out with user thoughts and emotions in order to create a narrative. This narrative is condensed and polished, ultimately leading to a visualization.
Touch points don't matter the same way they once did when so much is happening online. Now, this isn't 100% applicable to every business and every consumer, but it's so widely understood that it hardly matters anymore.
Most journey maps follow a similar format: at the top, a specific user, a specific scenario, and corresponding expectations or goals in the middle, high-level phases that are comprised of user actions, thoughts, and emotions; at the bottom, the takeaways: opportunities, insights, and internal ownership.
Key Components of a Journey Map
Journey maps come in all shapes and sizes. Regardless of how they look, journey maps have the following 5 key elements in common:
1. Actor: The actor is the persona or user who experiences the journey. The actor is who the journey map is about — a point of view. Actors usually align with personas and their actions in the map are rooted in data. Provide one point of view per map in order to build a strong, clear narrative.
2. Scenario + Expectations: The scenario describes the situation that the journey map addresses and is associated with an actor’s goal or need and specific expectations. Scenarios can be real (for existing products and services) or anticipated — for products that are yet in the design stage. Journey maps are best for scenarios that involve a sequence of events (such as shopping or taking a trip), describe a process (thus involve a set of transitions over time), or might involve multiple channels.
3. Journey Phases: Journey phases are the different high-level stages in the journey. They provide organization for the rest of the information in the journey map (actions, thoughts, and emotions). The stages will vary from scenario to scenario; each organization will usually have data to help it determine what these phases are for a given scenario. Some examples are discover, try-buy-use-seek support, engagement-education-research-evaluation-justification, purchase-adoption-retention-expansion-advocacy.
4. Actions, Mindsets, and Emotions: These are behaviors, thoughts, and feelings the actor has throughout the journey and that are mapped within each of the journey phases.
- Actions are the actual behaviors and steps taken by users. This component is not meant to be a granular step-by-step log of every discrete interaction. Rather, it is a narrative of the steps the actor takes during that phase.
- Mindsets correspond to users’ thoughts, questions, motivations, and information needs at different stages in the journey. Ideally, these are customer verbatims from research.
- Emotions are plotted as single line across the journey phases, literally signaling the emotional “ups” and “downs” of the experience. Think of this line as a contextual layer of emotion that tells us where the user is delighted versus frustrated.
5. Opportunities:
Opportunities (along with additional context such as ownership and metrics) are insights gained from mapping; they speak to how the user experience can be optimized. Insights and opportunities help the team draw knowledge from the map:
What needs to be done with this knowledge?
Who owns what change?
Where are the biggest opportunities?
How are we going to measure improvements we implement?


Supermetalband
Here is a place for supermetalband
Band Images
Upcoming Shows
March 14: Portland, OR
April 3: Sanfrancisco, CA
April 24: New York, NY


Introduction
Concurrently with our seventh game project at The Game Assembly, we had the opportunity to specialize; to plan an independent foray into a subject which we wanted to explore further.
For my specialization I chose to try and implement volumetric lighting in our custom game engine. My main goal was to implement a volumetric directional light, and to optimize it best I could. Would there be time left, my secondary goal was to extend this implementation to point lights, spot lights and what I called “box” lights.
We had five weeks half-time to do this, as well as setting up our personal portfolio. I planned for letting my secondary goal slide, and to focus on my main goal.
I based my implementation on a talk at Digital Dragons by Benjamin Glatzel for Deck 13’s Lords of The Fallen.
After loading the Crytek Sponza scene using our model loading pipeline, I set out to create a first working version of a volumetric directional light. Shadowmapping was ready for the directional light so I started with ray marching in the fragment shader of a separate light pass.
Implementation
The current fragment’s world position is extracted from the depth map. Then the world space camera position and fragment position are transformed into light view space and the ray marching direction is calculated from these. An upper limit on the ray marched distance is set using this difference prior to normalization, and the size of each ray marching step is determined using a tweakable number of samples.
View Code
PixelOutput main(VertexToPixel input)
{
PixelOutput output;
float raymarchDistanceLimit = 999.0f;
float3 worldPosition = PixelShader_WorldPosition(input.myUV).rgb;
float3 camPosition = cameraPosition.xyz;
worldPosition -= directionalLightPosition.xyz;
float3 positionLightVS = mul(toDirectionalLightView, worldPosition);
camPosition -= directionalLightPosition.xyz;
float3 cameraPositionLightVS = mul(toDirectionalLightView, camPosition);
float4 invViewDirLightVS = float4(normalize(cameraPositionLightVS.xyz - positionLightVS.xyz), 0.0f);
float raymarchDistance = clamp(length(cameraPositionLightVS.xyz - positionLightVS.xyz), 0.0f, raymarchDistanceLimit);
float stepSize = raymarchDistance * numberOfSamplesReciprocal;
float3 rayPositionLightVS = positionLightVS.xyz;
// The total light contribution accumulated along the ray
float3 VLI = 0.0f;
[loop]
for (float l = raymarchDistance; l > stepSize; l -= stepSize)
{
ExecuteRaymarching(rayPositionLightVS, invViewDirLightVS.xyz, stepSize, l, VLI);
}
output.myColor.rgb = directionalLightColor.rgb * VLI;
output.myColor.a = 1.0f;
return output;
}
In the ExecuteRaymarching
function, the ray position is incremented towards the camera position and the accumulated light contribution is calculated using the in-scattering term of the
Radiative Transfer Equation, ignoring multiple scattering.
In the directional light case, there is no world space attenuation calculated here, but the source power of the light and the scattering probability can be tweaked outside of the shader.
View Code
void ExecuteRaymarching(inout float3 rayPositionLightVS, float3 invViewDirLightVS, float stepSize, float l, inout float3 VLI)
{
rayPositionLightVS.xyz += stepSize * invViewDirLightVS.xyz;
float3 visibilityTerm = ShadowFactor(rayPositionLightVS.xyz).xxx;
// Distance to the current position on the ray in light view space
float d = length(rayPositionLightVS.xyz);
float dRcp = rcp(d); // reciprocal
float3 intensity = scatteringProbability
* (visibilityTerm * (lightPower * 0.25 * PI_RCP) * dRcp * dRcp)
* exp(-d * scatteringProbability)
* exp(-l * scatteringProbability)
* stepSize;
VLI += intensity;
}
Without any optimizations, this render pass is prohibitively expensive, requiring between 64 and 128 samples per fragment on a full resolution target to look serviceable.
Optimization
The two primary optimizations I implemented were rendering volumetrics to a half-resolution accumulation buffer, and interleaved sampling (see Glatzel slide 42). Rendering to a half-resolution target meant having to blur the accumulation buffer in order to hide the fact. Together with interleaved sampling, the number of samples required per fragment was minimized to the point that performance increased in the end, however.
Before executing the ray marching, an offset to the starting position is calculated based on an 8 by 8 grid and the number of samples is reduced, taking advantage of the fact that the intensity differs by small amounts between neighboring fragments. This reduces the number of necessary samples to as low as 16 samples.
View Code
PixelOutput main(VertexToPixel input)
{
[...]
float stepSize = raymarchDistance * numberOfSamplesReciprocal;
// Input position offset by 0.5f from center of fragment
float2 interleavedPosition = fmod(input.myPosition.xy - 0.5f, INTERLEAVED_GRID_SIZE);
float index = (floor(interleavedPosition.y) * INTERLEAVED_GRID_SIZE + floor(interleavedPosition.x));
// lightVolumetricRandomRayIndices contains the values 0..63 in a randomized order
float rayStartOffset = lightVolumetricRandomRayIndices[index] * (stepSize * INTERLEAVED_GRID_SIZE_SQR_RCP);
float3 rayPositionLightVS = rayStartOffset * invViewDirLightVS.xyz + positionLightVS.xyz;
float3 VLI = 0.0f;
[loop]
for (float l = raymarchDistance; l > 2.0f * stepSize; l -= stepSize)
{
ExecuteRaymarching(rayPositionLightVS, invViewDirLightVS.xyz, stepSize, l, VLI);
}
[...]
}
After rendering to the accumulation buffer a bilateral Gaussian blur is applied, separated in horizontal and vertical passes. The advantage of a bilateral blur is that it is edge preserving, contrary to a regular Gaussian blur.
The bilateral passes will smear the inside of the light volumes while preserving the edges.
View Code
// Horizontal
PixelOutput main(VertexToPixel input)
{
PixelOutput returnValue;
float texelSize = 1.0f / (myResolution.x / 8.0f);
float3 blurColor = float3(0.0f, 0.0f, 0.0f);
float normalizationFactor = 0.0f;
float bZ = 1.0 / normpdf(0.0, SIGMA);
float colorFactor = 0.0f;
float3 originalPixelValue = fullscreenTexture1.Sample(defaultSampler, input.myUV.xy).rgb;
unsigned int kernelSize = 5;
float start = (((float) (kernelSize) - 1.0f) / 2.0f) * -1.0f;
for (unsigned int i = 0; i < kernelSize; i++)
{
float2 uv = input.myUV.xy + float2(texelSize * (start + (float) i), 0.0f);
float3 resource = fullscreenTexture1.Sample(defaultSampler, uv).rgb;
colorFactor = normpdf3(resource - originalPixelValue, SIGMA) * bZ * gaussianKernel5[i];
normalizationFactor += colorFactor;
blurColor += resource * colorFactor;
}
returnValue.myColor.rgb = blurColor / normalizationFactor;
returnValue.myColor.a = 1.0f;
return returnValue;
};
If the colorFactor
variable is not weighted by an appropriate measure (such as depth) the result may look noisy or pixelated around the edges of the volume, especially for hard-to-define fading edges where attenuation takes place. This is not done above, as I could not produce satisfying results.
Honorable Mentions
Having a fairly quick initial setup, I tried accomplishing my secondary goal prior to optimizing. Point lights were implemented but had utilized no shadowmapping, so I started with ray marching from the point lights and created two other light types from scratch hoping I would have the time to realize shadow mapping for all of them.
The other two light types were spot lights and what I called “box” lights. Box because they differ from the usual rectangle or area lights in that they have no angular falloff at the edges, essentially working as localized directional lights.
All the lights were provided geometry; a cube for point lights, a pyramid shape for spots and a cuboid for the box lights. They all functioned as light sources, but while I solved the actual volumetrics for box and point lights, I ran out of time before I could accurately provide shadow mapping for either of them. This meant the visibility function could not be evaluated, rendering them virtually unusable for volumetric lighting.
I did explore different phase functions however, using the Henyey-Greenstein phase function as the default on the box light, with a tweakable g
-value (g = 0
, isotropic scattering above).
Note the noisy edges of the directional light in the right picture above, as well as at the ends of the box light itself.
Reflections
All in all I am satisfied in reaching my primary goal, which was to implement a volumetric directional light and to try and optimize it best I could.
I would not underestimate the time needed to create the other light types from scratch again though. I found myself working on the basic lighting of the box light and spot light more than I expected, and if given the choice again I would have focused on optimizing for the directional light prior to working with new light types.
I ventured to try out all the steps of the optimization outlined by Glatzel, including “nearest depth up-sampling” (see slide 38), to further make up for the fact that we are rendering to a half-resolution target. I could not make this work to satisfaction, but it would be greatly beneficial in making the volumetric directional light look good I believe.


| # | Who | = | Penalty | * | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | nickluo | 6 | 177 | + 00:05 | + 00:11 | + 00:22 | + 00:28 | + 00:41 | + 01:10 | |
| 2 | KrK | 6 | 184 | + 00:04 | + 00:10 | + 00:20 | + 00:29 | + 00:46 | + 01:15 | |
| 3 | NoLongerRed | 6 | 185 | + 00:03 | + 00:09 | + 00:37 | + 00:06 | + 00:31 | + 01:39 | |
| 4 | Anadi | 6 | 200 | + 00:02 | + 00:08 | + 00:18 | + 00:21 | +1 00:51 | +1 01:20 | |
| 5 | neal | 6 | 204 | + 00:02 | + 00:05 | + 00:14 | + 00:11 | + 00:34 | +2 01:58 | |
| 6 | hank55663 | 6 | 211 | + 00:03 | + 00:11 | + 00:16 | + 00:19 | + 00:42 | +2 01:40 | |
| 6 | jiangly | 6 | 211 | +2 00:05 | + 00:13 | + 00:29 | + 00:32 | + 00:44 | + 01:08 | |
| 8 | hitonanode | 6 | 220 | + 00:02 | + 00:15 | +1 00:24 | + 00:34 | + 00:48 | +1 01:17 | |
| 9 | xyz32768 | 6 | 221 | + 00:06 | +2 00:14 | + 00:22 | + 00:28 | +1 00:54 | + 01:07 | |
| 10 | uwi | 6 | 229 | + 00:04 | + 00:14 | + 00:28 | + 00:34 | + 00:47 | +1 01:32 | |
| 11 | quailty | 6 | 235 | + 00:02 | + 00:10 | + 00:37 | + 00:26 | + 01:01 | + 01:39 | |
| 12 | junukwon8 | 6 | 236 | + 00:03 | +1 00:14 | + 00:22 | + 00:31 | + 00:59 | + 01:37 | |
| 13 | CrescentRose | 6 | 269 | + 00:04 | + 00:13 | + 00:29 | + 00:43 | +1 01:00 | + 01:50 | |
| 14 | Haxenggu | 6 | 273 | + 00:03 | + 00:13 | +1 00:27 | + 00:49 | + 01:09 | + 01:42 | |
| 14 | HNO2 | 6 | 273 | + 00:02 | + 00:10 | +1 00:29 | + 00:41 | + 01:05 | + 01:56 | |
| 16 | Hard_To_Name | 6 | 278 | + 00:10 | + 00:20 | + 00:33 | + 00:38 | +1 01:04 | + 01:43 | |
| 17 | wucstdio | 6 | 281 | + 00:18 | +2 00:49 | + 00:23 | + 00:27 | + 00:42 | +1 01:32 | |
| 18 | Egor | 6 | 283 | + 00:02 | + 00:11 | + 00:27 | + 00:44 | + 01:51 | + 01:28 | |
| 19 | zhongyuwei | 6 | 284 | + 00:07 | + 00:14 | + 00:31 | +1 00:50 | + 01:03 | + 01:49 | |
| 20 | Shayan.P | 6 | 288 | +1 00:35 | + 00:12 | + 00:22 | + 00:28 | +1 00:58 | + 01:53 | |
| 21 | risujiroh | 6 | 290 | + 00:03 | +2 00:47 | + 00:22 | + 00:14 | + 01:11 | + 01:53 | |
| 22 | AghaSeyed | 6 | 291 | + 00:04 | + 00:32 | + 00:41 | + 00:22 | + 01:46 | + 01:26 | |
| 23 | A_Fan_of_the_AK_King--lk | 6 | 296 | +1 00:47 | + 01:07 | + 00:58 | + 00:50 | + 00:14 | +1 00:40 | |
| 24 | Retro3014 | 6 | 316 | + 00:03 | +2 00:32 | + 00:39 | +1 00:47 | + 01:05 | + 01:40 | |
| 25 | playf | 6 | 322 | + 00:07 | + 00:21 | + 00:34 | + 00:55 | + 01:35 | + 01:50 | |
| 26 | RUSH_D_CAT | 6 | 452 | + 01:29 | +1 01:30 | + 01:21 | + 01:10 | + 01:02 | +1 00:40 | |
| 27 | rainboy | 6 | 477 | + 01:34 | + 01:31 | + 01:25 | + 01:17 | +1 01:13 | + 00:47 | |
| 28 | antontrygubO_o | 5 | 85 | + 00:01 | + 00:07 | + 00:16 | + 00:19 | + 00:42 | ||
| 29 | Maksim1744 | 5 | 89 | + 00:02 | + 00:08 | + 00:17 | + 00:23 | + 00:39 | ||
| 30 | Rubikun | 5 | 108 | + 00:04 | + 00:10 | + 00:17 | + 00:30 | + 00:47 | ||
| 31 | icecuber | 5 | 111 | + 00:02 | + 00:10 | + 00:20 | + 00:26 | + 00:53 | ||
| 32 | natsugiri | 5 | 116 | + 00:04 | + 00:12 | + 00:24 | + 00:31 | + 00:45 | ||
| 33 | waynetuinfor | 5 | 120 | + 00:03 | + 00:32 | + 00:26 | + 00:19 | + 00:40 | ||
| 33 | pr3pony | 5 | 120 | + 00:04 | + 00:12 | + 00:25 | + 00:30 | + 00:49 | ||
| 35 | yogahmad77 | 5 | 123 | + 00:03 | + 00:11 | + 00:18 | + 00:33 | + 00:58 | ||
| 36 | IgorI | 5 | 124 | +1 00:24 | + 00:21 | + 00:07 | + 00:14 | + 00:48 | ||
| 37 | pwild | 5 | 132 | + 00:03 | + 00:10 | + 00:20 | + 00:25 | +1 01:04 | ||
| 38 | dlalswp25 | 5 | 137 | + 00:03 | + 00:10 | + 00:27 | + 00:34 | + 01:03 | ||
| 38 | Shayan | 5 | 137 | + 00:02 | +1 00:13 | + 00:21 | + 00:36 | + 00:55 | ||
| 40 | UnstoppableChillMachine | 5 | 138 | + 00:02 | + 00:11 | + 00:24 | + 00:42 | + 00:59 | ||
| 40 | fedoseev.timofey | 5 | 138 | + 00:04 | +1 00:11 | + 00:17 | + 00:36 | + 01:00 | ||
| 42 | _Karuna | 5 | 145 | + 00:02 | + 00:12 | +1 00:53 | + 00:22 | + 00:46 | ||
| 43 | filwSodaine | 5 | 146 | + 00:04 | + 00:16 | + 00:25 | + 00:36 | + 01:05 | -4 | |
| 43 | StripedAbyss | 5 | 146 | + 00:07 | + 00:16 | + 00:29 | + 00:36 | + 00:58 | ||
| 45 | DP_l_J_K_L_M_N_O_P | 5 | 148 | + 00:11 | + 00:10 | + 00:18 | + 00:31 | +1 01:08 | ||
| 46 | qazswedx2 | 5 | 149 | + 00:03 | +1 00:18 | + 00:27 | + 00:36 | + 00:55 | ||
| 47 | cerberus97 | 5 | 152 | + 00:05 | + 00:11 | + 00:27 | + 00:41 | + 01:08 | -2 | |
| 48 | leaf1415 | 5 | 158 | + 00:05 | + 00:15 | + 00:26 | + 00:45 | + 01:07 | -1 | |
| 49 | gsyz | 5 | 159 | + 00:04 | + 00:13 | + 00:33 | + 00:44 | + 01:05 | ||
| 49 | twangal | 5 | 159 | + 00:06 | + 00:13 | + 00:27 | + 00:48 | + 01:05 | ||
| 51 | aviroop123 | 5 | 161 | + 00:04 | + 00:17 | + 00:31 | + 00:39 | + 01:10 | ||
| 52 | Anachor | 5 | 162 | + 00:03 | +1 00:15 | + 00:27 | + 00:30 | + 01:17 | ||
| 53 | Heltion | 5 | 165 | + 00:04 | + 00:12 | + 00:25 | + 00:46 | + 01:18 | ||
| 54 | PhoenixFly | 5 | 166 | + 00:04 | + 00:15 | + 00:46 | + 00:32 | + 01:09 | ||
| 55 | ix35 | 5 | 167 | + 00:04 | + 00:14 | + 00:27 | + 00:46 | + 01:16 | ||
| 56 | icpc_loser | 5 | 171 | + 00:04 | + 00:17 | + 00:35 | + 00:46 | + 01:09 | ||
| 56 | cxaphoenix | 5 | 171 | + 00:04 | +1 00:16 | + 00:26 | + 00:37 | + 01:18 | ||
| 58 | Hamsterw | 5 | 173 | + 00:04 | + 00:12 | + 00:30 | + 00:45 | + 01:22 | ||
| 59 | walfgun | 5 | 174 | + 00:05 | + 00:16 | + 00:31 | + 00:41 | + 01:21 | ||
| 59 | usertab34 | 5 | 174 | +1 00:05 | + 00:12 | + 00:24 | + 00:29 | + 01:34 | ||
| 61 | CYBBB | 5 | 175 | + 00:03 | + 00:13 | + 00:27 | + 00:34 | +1 01:28 | ||
| 61 | smurf | 5 | 175 | + 00:04 | + 00:14 | + 00:26 | + 00:44 | + 01:27 | ||
| 63 | Frame_. | 5 | 179 | +2 00:04 | + 00:11 | + 00:19 | + 00:33 | +2 01:12 | ||
| 63 | QYHamster | 5 | 179 | + 00:05 | + 00:15 | +1 00:39 | + 00:25 | +1 01:15 | ||
| 65 | dimas.kovas | 5 | 180 | + 00:04 | +1 00:17 | + 00:30 | + 00:48 | + 01:11 | ||
| 66 | osu | 5 | 181 | + 00:03 | + 00:09 | + 00:25 | + 01:12 | +2 00:52 | ||
| 66 | ForestSolo | 5 | 181 | + 00:04 | + 00:21 | +1 00:43 | + 00:35 | + 01:08 | -1 | |
| 68 | SidneyUranus | 5 | 182 | + 00:05 | + 00:16 | + 00:29 | + 00:46 | + 01:26 | ||
| 69 | l9ll6lll | 5 | 183 | + 00:02 | +2 00:24 | + 00:31 | + 00:47 | + 00:59 | ||
| 70 | gs15120 | 5 | 184 | + 00:03 | + 00:14 | + 00:23 | + 00:54 | + 01:30 | ||
| 71 | Sonechko | 5 | 185 | +1 00:04 | + 00:13 | + 00:29 | + 00:46 | +1 01:13 | ||
| 72 | tamionv | 5 | 186 | + 00:03 | +1 00:13 | + 00:25 | +3 00:43 | + 01:02 | ||
| 73 | hqwertyh | 5 | 187 | +2 00:07 | + 00:19 | + 00:34 | + 00:43 | + 01:04 | -4 | |
| 73 | StepMommy | 5 | 187 | + 00:04 | + 00:16 | + 00:36 | + 00:48 | + 01:23 | ||
| 75 | _quq | 5 | 188 | + 00:06 | + 00:15 | + 00:36 | + 00:48 | +1 01:13 | ||
| 76 | 74TrAkToR | 5 | 189 | + 00:02 | +1 00:08 | + 00:28 | + 00:52 | +1 01:19 | ||
| 77 | tmwilliamlin168 | 5 | 190 | + 00:02 | +3 00:45 | + 00:20 | +1 00:28 | + 00:55 | -3 | |
| 77 | Tak3n | 5 | 190 | + 00:06 | + 00:20 | + 00:30 | + 00:45 | + 01:29 | ||
| 77 | Alchemist0 | 5 | 190 | + 00:03 | + 00:16 | + 00:28 | + 00:49 | + 01:34 | ||
| 77 | Lovely_Min | 5 | 190 | + 00:03 | + 00:17 | + 00:27 | + 00:51 | + 01:32 | ||
| 77 | Makabaka | 5 | 190 | + 00:07 | +3 00:26 | + 00:19 | + 00:37 | + 01:11 | ||
| 82 | pyf | 5 | 191 | + 00:10 | + 00:16 | + 00:33 | + 00:42 | +1 01:20 | -2 | |
| 83 | dorijanlendvaj | 5 | 194 | +1 | + 00:02 | + 00:12 | +2 00:25 | + 00:25 | + 01:50 | |
| 84 | lyly_61 | 5 | 195 | + 00:04 | + 00:15 | + 00:34 | + 00:57 | + 01:25 | ||
| 85 | Apsara | 5 | 196 | +1 00:05 | + 00:12 | + 00:26 | + 01:18 | + 01:05 | ||
| 86 | msuwakow | 5 | 197 | + 00:03 | +2 00:16 | + 00:34 | + 00:42 | + 01:22 | ||
| 86 | codelegend | 5 | 197 | + 00:02 | -1 | + 00:09 | + 00:25 | + 01:00 | + 01:41 | |
| 86 | kort0n | 5 | 197 | + 00:03 | +3 00:18 | + 00:23 | + 00:55 | + 01:08 | ||
| 89 | hellomath | 5 | 198 | +1 00:05 | + 00:13 | +1 00:30 | + 00:37 | + 01:33 | ||
| 89 | upobir | 5 | 198 | + 00:05 | + 00:14 | + 00:30 | + 00:38 | +2 01:31 | ||
| 89 | Taran_1407 | 5 | 198 | + 00:03 | + 00:47 | + 00:17 | + 00:21 | +1 01:40 | ||
| 89 | jjang36524 | 5 | 198 | -3 | + 00:03 | +1 00:19 | + 00:45 | + 00:32 | + 01:29 | |
| 93 | btsgr | 5 | 200 | + 00:12 | + 00:46 | + 00:34 | + 00:28 | + 01:20 | ||
| 94 | Ant_Man | 5 | 201 | + 00:08 | + 00:32 | + 00:39 | + 00:16 | + 01:46 | ||
| 94 | theory_and_me | 5 | 201 | + 00:04 | + 00:14 | + 00:31 | + 00:50 | + 01:42 | ||
| 94 | WYXkk | 5 | 201 | + 00:04 | + 00:22 | + 00:36 | + 00:46 | +1 01:23 | ||
| 94 | A_Le_K | 5 | 201 | + 00:04 | + 00:13 | + 00:32 | + 00:49 | + 01:43 | ||
| 98 | tzc_wk | 5 | 203 | + 00:02 | + 00:11 | + 00:26 | + 00:36 | +1 01:58 | ||
| 98 | L0TUS | 5 | 203 | + 00:03 | + 00:30 | + 00:35 | + 00:53 | + 01:22 | ||
| 100 | cheissmart | 5 | 204 | + 00:05 | + 00:28 | + 00:29 | + 00:52 | + 01:30 | ||
| 101 | HeRaNO | 5 | 205 | + 00:05 | + 00:30 | + 00:40 | + 00:17 | +1 01:43 | ||
| 101 | Bhj2001 | 5 | 205 | + 00:05 | + 00:19 | + 00:39 | + 00:51 | + 01:31 | ||
| 103 | Bohun | 5 | 206 | + 00:03 | +1 00:32 | + 00:30 | + 00:57 | + 01:14 | ||
| 104 | SheepRanger | 5 | 207 | + 00:04 | + 00:16 | + 00:32 | +2 00:56 | + 01:19 | ||
| 105 | vsriram1012 | 5 | 208 | + 00:03 | + 00:16 | + 00:27 | + 00:55 | +1 01:37 | ||
| 106 | ToMmyDong | 5 | 209 | + 00:16 | + 00:10 | + 00:35 | +1 00:56 | + 01:22 | ||
| 106 | __Taday | 5 | 209 | + 00:07 | +1 00:55 | + 00:21 | + 01:15 | + 00:41 | ||
| 106 | antguz | 5 | 209 | + 00:06 | + 00:15 | + 00:36 | + 00:49 | +1 01:33 | ||
| 106 | Torta | 5 | 209 | + 00:07 | + 00:14 | + 00:26 | + 01:29 | + 01:13 | ||
| 110 | AcidWrongGod | 5 | 210 | + 00:02 | + 00:20 | + 00:34 | + 00:40 | +2 01:34 | ||
| 111 | DebNatkh | 5 | 211 | + 00:03 | + 00:12 | + 00:22 | + 01:27 | +1 01:17 | ||
| 111 | beginend | 5 | 211 | + 00:05 | +2 00:20 | +1 00:35 | + 00:45 | + 01:16 | ||
| 111 | anatolik | 5 | 211 | + 00:05 | + 00:17 | + 00:29 | + 00:49 | +1 01:41 | ||
| 114 | Celesta | 5 | 212 | + 00:03 | + 00:14 | +1 00:29 | + 00:39 | + 01:57 | ||
| 115 | ZXyang | 5 | 213 | +1 00:04 | + 00:19 | + 00:29 | + 00:17 | +3 01:44 | ||
| 116 | wythend | 5 | 214 | + 00:05 | + 00:16 | + 00:34 | + 00:47 | + 01:52 | ||
| 116 | betrue12 | 5 | 214 | + 00:03 | + 00:20 | + 00:32 | + 00:47 | + 01:52 | ||
| 116 | INVWVZ | 5 | 214 | + 00:06 | + 00:44 | + 00:56 | + 00:28 | + 01:20 | ||
| 119 | kulezi | 5 | 215 | + 00:02 | + 00:16 | + 00:27 | + 01:09 | + 01:41 | ||
| 119 | Azunya | 5 | 215 | + 00:03 | + 00:42 | + 00:28 | + 01:02 | + 01:20 | ||
| 121 | Jeel_Vaishnav | 5 | 216 | + 00:04 | + 00:50 | + 00:14 | + 00:58 | + 01:30 | ||
| 121 | Redhood | 5 | 216 | + 00:03 | +1 00:20 | + 00:32 | + 00:45 | +1 01:36 | ||
| 123 | -is-this-fft- | 5 | 217 | + 00:04 | +1 00:13 | +2 00:40 | + 01:09 | + 01:01 | ||
| 124 | katzper01 | 5 | 218 | + 00:04 | + 00:15 | + 00:21 | +3 01:22 | + 01:06 | ||
| 125 | Mitsuhaw | 5 | 219 | + 00:04 | + 00:18 | + 00:33 | + 00:58 | + 01:46 | ||
| 125 | kmjp | 5 | 219 | + 00:02 | -4 | + 00:24 | + 00:36 | + 01:08 | + 01:29 | |
| 125 | costle | 5 | 219 | + 00:05 | +1 00:37 | + 00:24 | + 00:48 | + 01:35 | ||
| 128 | pichulia | 5 | 220 | + 00:04 | +1 00:21 | +1 00:32 | + 00:36 | +2 01:27 | ||
| 129 | MaximOboznyi | 5 | 222 | + 00:04 | + 00:14 | + 00:24 | +3 00:53 | +1 01:27 | ||
| 129 | DeD_TihoN | 5 | 222 | + 00:03 | +1 00:22 | + 00:30 | + 00:50 | +1 01:37 | ||
| 129 | red1108 | 5 | 222 | + 00:03 | + 00:17 | +1 00:37 | + 00:55 | +1 01:30 | ||
| 129 | Medeowex | 5 | 222 | + 00:03 | + 00:18 | + 00:23 | +1 01:00 | + 01:48 | ||
| 133 | stratoes | 5 | 223 | + 00:05 | +1 00:20 | + 00:34 | + 01:03 | + 01:31 | ||
| 133 | HCPS42 | 5 | 223 | + 00:05 | + 00:56 | +1 00:29 | + 00:42 | + 01:21 | ||
| 135 | BinGoo0o0o | 5 | 224 | + 00:04 | + 00:46 | + 00:19 | + 01:00 | + 01:35 | -1 | |
| 136 | P.Alizadeh | 5 | 225 | + 00:05 | + 00:22 | + 00:39 | + 01:10 | + 01:29 | ||
| 137 | __Salty_ | 5 | 227 | +1 00:04 | +1 00:17 | + 00:34 | + 00:43 | + 01:49 | ||
| 137 | Dongyu1997 | 5 | 227 | + 00:07 | + 00:14 | + 00:33 | +1 00:55 | +1 01:38 | ||
| 139 | Mucosolvan | 5 | 228 | +1 | + 00:03 | + 00:13 | +1 00:30 | + 00:56 | +1 01:46 | |
| 139 | 8-_-8 | 5 | 228 | +2 00:06 | +2 00:21 | +1 00:39 | + 00:43 | + 01:09 | ||
| 139 | idsigma | 5 | 228 | + 00:04 | + 00:16 | + 00:29 | +1 00:56 | + 01:53 | ||
| 139 | poorwill | 5 | 228 | + 00:06 | + 00:15 | + 00:34 | + 00:55 | +1 01:48 | ||
| 139 | MediationalField | 5 | 228 | +1 00:06 | + 00:23 | + 00:27 | + 00:54 | +1 01:38 | ||
| 144 | ALILILILILI-KHAN | 5 | 229 | + 00:05 | +2 00:18 | + 00:37 | + 00:54 | + 01:35 | ||
| 145 | njupt_lyy | 5 | 230 | + 00:06 | + 00:22 | + 00:39 | + 00:50 | + 01:53 | ||
| 146 | _LeMur_ | 5 | 232 | +1 00:04 | +1 00:28 | + 00:24 | + 00:56 | +1 01:30 | ||
| 146 | andr0901 | 5 | 232 | +2 00:06 | + 00:57 | + 00:16 | + 00:51 | + 01:22 | ||
| 148 | __santongding | 5 | 234 | + 00:04 | + 00:17 | + 00:38 | + 01:05 | + 01:50 | ||
| 149 | Violet2020 | 5 | 235 | + 00:26 | + 01:00 | + 00:38 | + 00:22 | + 01:29 | ||
| 149 | .Isaunoya | 5 | 235 | + 00:09 | + 00:42 | + 00:25 | + 00:45 | + 01:54 | ||
| 149 | crackersamdjam | 5 | 235 | + 00:04 | + 00:19 | + 00:32 | + 00:47 | +3 01:43 | ||
| 149 | shogier | 5 | 235 | +1 00:12 | + 00:18 | + 00:30 | + 00:42 | +3 01:33 | ||
| 149 | _Ash__ | 5 | 235 | +1 00:05 | + 00:21 | + 00:28 | + 01:05 | +1 01:36 | ||
| 154 | NoTeamName | 5 | 236 | + 00:05 | +1 00:35 | +1 00:44 | + 00:51 | + 01:21 | ||
| 155 | vivace_jr | 5 | 237 | + 00:04 | + 00:21 | + 00:40 | + 01:10 | + 01:42 | ||
| 155 | Diego | 5 | 237 | + 00:04 | +1 00:16 | +1 00:31 | + 00:47 | +2 01:39 | ||
| 155 | s34vv1nd | 5 | 237 | + 00:04 | + 00:18 | + 00:45 | + 01:03 | +1 01:37 | ||
| 158 | xyx0711 | 5 | 238 | + 00:04 | + 00:22 | + 00:48 | + 01:00 | + 01:44 | ||
| 158 | AQT | 5 | 238 | +1 00:05 | +1 00:50 | + 00:30 | + 00:46 | + 01:27 | ||
| 158 | LordVoIdebug | 5 | 238 | + 00:05 | +1 00:34 | + 00:48 | + 00:55 | + 01:26 | ||
| 158 | nehnait | 5 | 238 | + 00:04 | + 00:17 | +1 00:42 | + 00:50 | + 01:55 | ||
| 158 | cscse | 5 | 238 | +1 | + 00:08 | + 00:26 | + 00:40 | + 01:02 | +1 01:32 | |
| 163 | AyoAyowei | 5 | 239 | +1 00:09 | + 00:43 | + 00:28 | + 00:56 | + 01:33 | ||
| 164 | dantrag | 5 | 240 | + 00:03 | + 00:21 | + 00:40 | + 00:58 | + 01:58 | ||
| 164 | Mohammad_Yasser | 5 | 240 | + 00:07 | + 00:19 | + 00:33 | + 01:06 | + 01:55 | ||
| 164 | alimq | 5 | 240 | + 00:04 | +1 00:25 | + 00:31 | + 00:51 | + 01:59 | ||
| 164 | aryanc403 | 5 | 240 | + 00:02 | + 00:25 | + 00:32 | +1 01:08 | +1 01:33 | ||
| 168 | BetterThanPi | 5 | 241 | + 00:03 | + 00:43 | + 00:18 | + 00:28 | +3 01:59 | ||
| 168 | curlink | 5 | 241 | + 00:02 | +1 00:11 | + 00:30 | + 01:00 | +1 01:58 | ||
| 170 | ADJA | 5 | 242 | + 00:06 | + 00:22 | + 00:30 | + 01:09 | +1 01:45 | ||
| 171 | wyyxhjth | 5 | 243 | +1 00:06 | + 00:21 | + 00:40 | + 01:11 | + 01:35 | ||
| 171 | lyuankai | 5 | 243 | + 00:06 | + 00:18 | + 00:36 | + 00:53 | +2 01:50 | ||
| 171 | Jason__Zhan | 5 | 243 | + 00:07 | +1 00:22 | +2 00:40 | + 00:47 | +1 01:27 | ||
| 174 | Kostya_Smirnov | 5 | 244 | + 00:17 | + 00:12 | +1 00:32 | +1 00:53 | +2 01:30 | ||
| 174 | anonymous_Bunny | 5 | 244 | +1 00:05 | + 00:20 | + 00:35 | + 01:09 | + 01:45 | ||
| 176 | SecondThread | 5 | 245 | + 00:04 | +2 00:37 | + 00:26 | + 01:01 | + 01:37 | ||
| 177 | Rtx_ | 5 | 246 | + 00:05 | + 00:28 | + 00:43 | + 01:11 | + 01:39 | ||
| 177 | RedTea | 5 | 246 | + 00:06 | + 00:21 | + 00:36 | + 01:15 | + 01:48 | ||
| 177 | Evirir | 5 | 246 | +1 00:05 | + 00:33 | + 00:18 | + 01:09 | + 01:51 | ||
| 180 | snow39 | 5 | 247 | + 00:04 | + 00:44 | + 00:22 | +1 01:09 | +1 01:28 | ||
| 180 | atodo | 5 | 247 | +1 00:05 | +3 00:16 | +1 00:34 | + 00:47 | +2 01:15 | ||
| 182 | I-Love-Islam | 5 | 248 | + 00:09 | + 00:33 | + 00:22 | + 01:11 | +1 01:43 | ||
| 182 | ConanYu | 5 | 248 | +4 | +1 00:05 | +1 00:32 | + 00:27 | + 01:04 | + 01:40 | |
| 182 | love_wjn | 5 | 248 | +1 00:08 | + 00:59 | + 00:43 | + 00:13 | + 01:55 | ||
| 182 | whoosh | 5 | 248 | +1 00:09 | + 00:21 | + 00:31 | + 01:06 | + 01:51 | ||
| 182 | Grice | 5 | 248 | +1 00:07 | + 00:23 | + 00:29 | +1 00:55 | + 01:54 | ||
| 187 | kotamanegi | 5 | 250 | +1 00:04 | + 00:11 | +1 00:22 | + 00:35 | +7 01:28 | ||
| 188 | cheetose | 5 | 251 | + 00:02 | +1 01:00 | + 00:25 | + 00:40 | + 01:54 | ||
| 189 | DimmyT | 5 | 252 | -1 | + 00:06 | +1 00:56 | + 00:12 | +1 00:49 | + 01:49 | |
| 189 | Cinque | 5 | 252 | + 00:11 | + 00:39 | + 00:19 | + 01:00 | +2 01:43 | ||
| 191 | O_O_Zzz | 5 | 253 | + 00:03 | + 00:15 | + 00:41 | + 00:52 | +3 01:52 | ||
| 191 | bktl4ever | 5 | 253 | + 00:03 | + 00:35 | +1 00:14 | + 01:13 | + 01:58 | ||
| 193 | Unsainted | 5 | 254 | + 00:10 | + 00:26 | +2 00:41 | + 00:56 | + 01:41 | ||
| 194 | p6pou | 5 | 256 | + 00:03 | +1 00:30 | + 00:45 | + 00:53 | +1 01:45 | ||
| 194 | 21August | 5 | 256 | + 00:07 | + 00:45 | + 00:22 | + 01:33 | + 01:29 | ||
| 194 | MetB | 5 | 256 | + 00:06 | +3 01:19 | + 00:30 | + 00:44 | + 01:07 | ||
| 197 | gaurav172 | 5 | 257 | + 00:04 | + 00:19 | + 00:32 | + 00:47 | +5 01:45 | ||
| 198 | besieger | 5 | 258 | + 00:08 | + 00:23 | + 00:38 | + 01:15 | + 01:54 | ||
| 199 | _overrated_ | 5 | 259 | +1 01:07 | + 00:07 | +1 00:23 | + 00:58 | + 01:24 | ||
| 200 | ub33 | 5 | 260 | + 00:05 | +1 00:20 | +1 00:38 | + 01:01 | + 01:56 | ||
|
Accepted
Tried |
8219 8987 |
2239 4783 |
2878 4448 |
1430 1778 |
303 447 |
40 58 |


Clash Royale Cards
Legendary Cards
In Clash Royale, players are ranked by their level and trophy count.
The highest level is thirteen, with players levelling up by gaining more experience points through donating or upgrading cards.
Trophies are won or lost through multiplayer battles; a player wins a battle by destroying more towers than the opponent (each destroyed tower being represented as a 'crown'), or by destroying the opponent's King's Tower, resulting in an automatic "three-crown" victory.


Notebooks
Story: Karu on |xue
Karu on |xue
Title
Karu on |xue
Collection
Summary
Karu did not speak of |xue at night, but only in the daytime. When Karu told !nanni (during the day) about the doings of |xue, !nanni was afraid of |xue and cried. Karu put !naxane into a dish and !nanni stopped crying and sat down to eat it.
Comments
1) This story is found in Book XI & XII-7
Contributors
Date
20 January 1880 (?)
Categories
Keywords
|xue (Karu speaks of him) , |xue (what Karu told !nanni about him) , |xue (!nanni was afraid of him and cried) , |xue (Karu did not speak of him at night) , |xue (is spoken of during the day) , |xue (the !kun fear him) , |xue (is not spoken of at night) , !nanni (what Karu told him about |xue) , !nanni (was afraid of |xue and cried) , !nanni (and his paternal grandfather, Karu) , !nanni (his personal history) , personal history (an occasion when Karu told !nanni about |xue) , plant (!naxane) , plant (!kun name of) , plant (and Karu on |xue) , !naxane (a plant) , !naxane (and Karu on |xue) , !naxane (given to !nanni to eat) , Karu (!nanni's paternal grandfather) , Karu (tells !nanni about |xue) , Karu (speaks of |xue in daytime) , day (-time) , day (when Karu spoke of |xue)
Story Pages
9556-9558


%include templates/parts/head.html
%include templates/parts/navBar.html
Assignment by Chris Gregg
February 6, 2017
This problem has a recursive part, and a sorting part, and it tests your ability to solve a problem.
This is an individual assignment. Write your own solution and do not work in a pair/group on this program.
It is fine to write "helper" functions to assist you in implementing the recursive algorithms for any part of the assignment. Some parts of the assignment essentially require a helper to implement them properly. It is up to you to decide which parts should have a helper, what parameter(s) the helpers should accept, and so on. You can declare function prototypes for any such helper functions near the top of your .cpp file. (Don't modify the provided .h files to add your prototypes; put them in your own .cpp file.)
In Assignment 2, you wrote an encryption program that used the Transposition Cipher to encrypt and decrypt text based on a key. The field of cryptanalysis focuses on breaking codes that have been encoded in a particular way, and there have been many stories of the importance of codebreaking throughout history. In particular, British codebreakers located at Bletchley Park in England were successful in breaking the German Enigma code through the use of a computer (one of the very first!) to brute-force solutions based on information about how the code was generated. The leader of this codebreaking group, Alan Turing, was one of the most famous computer scientists in the world, and his story has been told in a number of books and films, most recently in the film, The Imitation Game, staring Benedict Cumberbatch.
For this assignment, you will modify your program from that assignment to include
an option to attempt brute-force-decryption without knowing the key!
We provide you with starter code in transposition_decryption.cpp
that provides a couple of constants and a function prototype called bruteForce()
.
You should copy and paste your entire program from Assignment 2 into the starter code, and then
add one more option, as follows:
3) brute force decrypt without the key
Using this option, you need to implement the code to perform the decryption. We will give you some guidance about the method to perform the decryption, but you will have to figure out the details.
Recall from the previous assignment that the transposition cipher scrambles the plaintext by first fitting the text into rows based on the key length, and then peeling off the columns, based on the alphabetization of the key. As long as the key isn't too long (we are limiting it to nine characters), it is possible to create a list of all possible alphabetizations of a string of characters as long as the potential keys, and then checking the decryption of each potential key to see if it created a plausible plaintext.
You might think that you have to check each potential key lengths up to nine (the maximum key length we will be checking), but because the key must evenly divide into the ciphertext length, you only need to check key lengths that fall into that criteria.
You also might think that you will have to check a very large number of keys, because there are 26 letters in the alphabet, plus there are upper- and lowercase letters, plus there are other characters, etc. However, there are many fewer possible ways to alphabetize any set of characters. For example, the words "secret" and "SECRET" both produce the same alphabetization for their characters (i.e., both words can be used to decrypt a ciphertext that was encrypted with our method). But, so do "pedler", "scales", "teapot", "hedges", and "medley". In other words, you simply need to look at the permutation of a unique set of letters, and you will (by definition) get all of the possible alphabetizations. Our suggestion is that you use the string "abc...i" for the possible set of letters, and simply find a permutation of those letters. For example, for the letters "abc", all of the possible alphabetizations for any three letter key are "abc", "acb", "bac", "bca", "cab", and "cba".
In order to determine if a plaintext is plausible, you can assume that it was written in English, and you should check each word in the decryption to see if it is in the English dictionary (which is provided in the starter code). Because there could be multiple possible decryptions, you are required to print out the top X plaintext solutions, with the percentage of words in each sentence that are in English. For instance, if a decryption produced a sentence that had 8/10 words in the dictionary, you would report that this was an 80% match (see the example output and match the style presented).
You must implement the following function to complete the decryption: You must write the function with exactly the header shown here, but it is fine to have "helper functions" as needed.
Vector<DecryptionGuess> bruteForce(string ciphertext);
The DecryptionGuess
struct is defined as follows:
struct DecryptionGuess { string potentialPlaintext; double wordPercentage; };
The "topX" parameter refers to the top number of guesses that you should return. Do not hardcode this value -- there is a TOP_X constant that defines how many guesses to return. You should make your function generic enough so that it can return any number of guesses.
You will have to do some sorting of your results to return the top X results. You must write any sorting code yourself (i.e., you cannot use a C++ built-in sort function, or a data structure that sorts values for you). See the hints section below for an idea of how to do this.
When you are checking the words that appear in your possible plaintext,
you should ignore all punctuation. The easiest way to do this is to walk
through each character in your plaintext, and use the isalpha(char)
function to determine if a character is a letter. Then, use the isspace(char)
function to determine if a character is a space (it also returns true for newlines and tabs).
Convert all space charcters into a literal space (' ')
. Finally,
ignore all other characters that aren't alphabetic or spaces.
string decrypt(string ciphertext, string key);
function
from assignment 2: use it! Don't re-invent the wheel: focus on
calling that function for all permutations, and analyzing the results.decrypt()
function from within the recursive function,
but it is probably better to simply have the recursive function return
a vector of possible permutations, and then use that vector to do the
test decryptions.insert
function.
If you start with an empty Vector, it is (by definition) already sorted,
and this assumption makes writing the insertion code very simple.
Also, because you know you have a limit to how many results you need to
print out (the TOP_X constant), you don't need to store all decryptions:
if you decrypt a phrase and it does not make it into the TOP_X number
so far, it never will, so you can discard it.string alphaAndSpaceOnly(string plaintext)
.As in other assignments, you should follow our Style Guide for information about expected coding style. You are also expected to follow all of the general style constraints emphasized in the Homework 1-3 specs, such as the ones about good problem decomposition, parameters, using proper C++ idioms, and commenting. The following are additional points of emphasis and style contraints specific to this problem:
Recursion and backtracking: Part of your grade will come from appropriately utilizing recursion to solve the permutations problem.
Redundancy in recursive code is another major grading focus; avoid repeated logic as much as possible. As mentioned previously, it is fine (sometimes necessary) to use "helper" functions to assist you in implementing the recursive algorithms for any part of the assignment.
Variables:
While this constraint is not new to this assignment, we want to stress that you should not make any global variables or static variables (unless they are constants declared with the const
keyword).
Do not use globals as a way of getting around proper recursion and parameter-passing on this assignment.
Loops/Collections: Loops and collections *are* allowed on this problem. But your fundamental algorithm must be recursive and not based on looping to perform the entire word search. You must use recursion to handle the self-similar aspects of the problem.
Commenting: Of course you should have a comment header at the top of your code file and on top of each function. But we want to remind you that you should also have inline comments inside functions to explain complex sections of the code. Don't forget to place descriptive inline comments as needed on any complex code in the bodies to describe nontrivial parts of your algorithms.
For each assignment problem, we receive various frequent student questions. The answers to some of those questions can be found by clicking the link below.
Here are some ideas for extra features that you could add to your program:
Indicating that you have done extra features: If you complete any extra features, then in the comment heading on the top of your program, please list all extra features that you worked on and where in the code they can be found (what functions, lines, etc. so that the grader can look at their code easily).
Submitting a program with extra features: Since we use automated testing for part of our grading process, it is important that you submit a program that conforms to the preceding spec, even if you want to do extra features. If your feature(s) cause your program to change the output that it produces in such a way that it no longer matches the expected sample output test cases provided, you should submit two versions of your program file: a first one with the standard file name without any extra features added (or with all necessary features disabled or commented out), and a second one whose file name has the suffix -extra.cpp with the extra features enabled. Please distinguish them in by explaining which is which in the comment header. Our turnin system saves every submission you make, so if you make multiple submissions we will be able to view all of them; your previously submitted files will not be lost or overwritten.


Graffiti insulting PM Lee removed from DBS bank branch in Hong Kong
SINGAPORE: Graffiti on a DBS branch in Hong Kong that contained offensive language directed at Prime Minister Lee Hsien Loong and the People's Action Party has been removed.
Responding to CNA's queries on Thursday (Nov 14), a spokesperson from the Singapore bank said: "The graffiti on the branch in Hong Kong was cleaned off as soon as it was discovered this morning."
READ: DBS branch in Hong Kong not damaged by fire seen in online video
READ: Hong Kong protesters fire arrows at police as city-wide demonstrations continue
Photos on social media showed the words spray-painted in black on the outside of the branch's glass walls.
The incident comes amid a marked escalation of violence across the city, with protesters firing arrows at police, forcing school closures and blocking highways and other transport links.
On Tuesday night, a neighbouring unit of a DBS branch on Yee Wo Street in Causeway Bay was seen engulfed in flames in an online video. The bank has since released a statement saying that the branch was not damaged by the fire and that its employees were safe.


By default, sorting is enabled. To set the sorted column and direction, you may pass an GoTableSortConfig
class to the sortConfig
property on the GoTableConfig
object.
This property determines which column to set as the default sort as a string.
To sort a column in a nested object in the array, you may pass the path to the property. "address.state"
This property determines the direction to sort the data. By default, it will sort ascending
.
This property is an enum, SortDirection
(see below).
Sometimes we want a table to be sortable, but only want certain columns to be sortable. This can be done in one of two ways. We can either make the table sortable by default and then disable sorting on certain columns, or we can disable sorting by default on the table and enable it on a couple columns we want to be sortable.
This property exists on go-table-column
and can be used to turn sorting on or
off for a specific column.


---
layout: post
title: First Journal Entry
categories: []
tags: []
status: publish
type: post
published: true
meta:
_original_post_id: ''
_original_import_author: John Duprey
author:
---
I signed up for this
Live Journal service to see what it has to offer. The older I get, the less interested I am in maintaining a whole web site. Although I *do* host a web site on my personal computer at
iDuprey.com, I find that keeping it secure and up-to-date less is less interesting. For the sake of my
personal photo's, I plan to keep the site running indefintely. However, if my blogs can be hosted elsewhere, great!
I purchased a 2 month subscription to the service to see if it is worth it.


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 2-3
Dietary
The cinnamon and cloves in this dish lend a sweet, heady aroma to a warming lentil stew.
Place the black and green lentils into a medium saucepan, add the water and bring to the boil. Reduce the heat and simmer for 20 minutes, or until tender. Drain, then mash the lentils and set aside.
Heat the olive oil in a frying pan, add the onion and fry until it starts to colour. Add the garlic and fry for a few seconds.
Stir in the finely chopped chillies, turmeric, cumin, cinnamon, cloves, salt and freshly ground black pepper and cook for one minute, stirring constantly.
Stir in the chopped tomato, the sugar and a squeeze of lemon juice and cook for 2-3 minutes.
Add the mashed lentils and bring to the boil.
Stir in a large handful of chopped coriander and serve.


About Us
Our team consists of six senior computer science majors at Carleton College.
Pictured above (from left to right): Andy, Kate, Charlie, Sam, Chris, Oscar
A special thanks to Layla Oesper who helped us at every step of the way!
Also to Mike Tie for server help and maintenance.
And finally to Max Leiserson from the University of Maryland for advice on PPI networks.


An object to represent a .ufo font source, wrapped in a few useful functions.
Build anchors in selected glyphs based on accents dict.
Build glyph with the given glyph_name from components based on the project’s accents or composed libs.
Create guidelines using data from the project’s vmetrics lib.
The name of the .ufo file, without the extension.
Return the full name of the font, made of the hProject.name and font.style_name.
Generate an .otf for the font using the given options.
A dictionary to contain this font’s guidelines, once the basic vertical metrics have been defined and set.
Import glyph names and order from encoding file, and stores them in a lib.
Initiate hFont object from RFont, get parent project, parse name parts.
Automatically set the order of the glyphs in the font based on the project’s groups lib.
Return the default path for .otf font generation, in the project’s _otfs/ folder.
Paints and orders the glyphs in the font based on the project’s groups lib.
| Parameters: | crop (bool) – If True, remove from the font all glyphs which don’t belong to any group. |
|---|
A dictionary with the parameters which identify this particular font in the family’s variation space.
The parent hProject object to which the font belongs.
Round points in all given glyphs in the font to the given gridsize.
Set the PostScript blue zones from the font’s vertical metrics and guidelines dict.
The styleName of the font, parsed from the name of the .ufo file on initialization. See init_from_filename().
The .ufo file containing the actual font.


History
Originally founded as an Earth-based oil company in the 20th century, Ellingson Mineral Corporation peaked in the mid-1990s. At the corporation’s greatest extent, it held rights to numerous oil wells, operated at over a dozen refineries, and coordinated a supertanker fleet in the double digits.
In 1995, the corporation was engulfed in a scandal involving a Mr. Eugene “The Plague” Belford, then Computer Security Officer of the company, and a Ms. Margo Wallace, then head of Public Relations, who attempted to discreetly extort and steal millions from the company through a scheme involving the use of a computer virus and the framing of a group of computer hackers. In the aftermath of the botched caper, investor and creditor confidence deteriorated and Ellingson Mineral Corporation was driven to near bankruptcy as the company was exposed as wholly unready for the challenges of the 21st century, resulting in the acquisition of Ellingson by a rival firm in the oil and gas sector.
Over the next 900 years, the name and assets of Ellingson Mineral Corporation would continue to be sold, acquired, and reorganized, until ultimately being spun off from Covalex Shipping in 2904 to a small group of merchants. Once an unprofitable and forgotten business branch involved in niche fuel transport routes, today, some four decades later, Ellingson Mineral Corporation continues to be primarily involved in the shipping and transport sector. With the added flexibility of a closely held small corporation, it is able to take on various roles and revenue streams, diversifying into many freelancing activities at the whims of the humbly sized board of directors.


---
layout: default
---
{% include breadcrumbs.html parent="Organizations" %}
This organization has been
saved and the page is currently regenerating.
There was an error saving this page
{% if page.logo != "" %}
{% else %}
{% endif %}
{{ page.title }}
Edit
{{ page.description }}
{% assign dataset_count = site.datasets | where: "organization", page.title | size %}
{{ dataset_count }} datasets
{% include organization-form.html organization=page %}


Home
Motivational Content
Videos
Quotes
About
Gallery
Contact
“When you feel like giving up, just remember the reason why you held on for so long.” – Unknown
“Suicide doesn’t end the chances of life getting worse, it eliminates the possibility of it ever getting any better.” – Unknown
“If you are looking for a sign not to kill yourself, this is it.” – Unknown
“When you get into a tight place and everything goes against you, till it seems as though you could not hang on a minute longer, never give up then, for that is just the place and time that the tide will turn.” – Harriet Beecher Stowe “The person who completes suicide, dies once. Those left behind die a thousand deaths, trying to relive those terrible moments and understand … Why?” – Clark (2001)


Instructions
Select an item from the list to show the response message.
Option 1
Option 2
Option 3
Option 4
Resend Single Option Message
First
Second
Third
Fourth
Fifth
Resend Multi Option Message
Message History
Single
Multi


---
title: Guides
navbar: Guides
layout: default
---
You can find all of the current course guides here. This is a growing list. These guides are also linked from the course schedule.
{%- assign ordered = 'general,eclipse,sql,homework,projects' | split: ',' -%}
{%- for name in ordered %}
{%- assign collection = site.collections | where: 'label', name | first -%}
{%- assign items = collection.docs | sort: 'key' -%}


--- layout: default title: Page Foundation Example description: This is what comes with foundation install ---
To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.
Once you've exhausted the fun in this document, you should check out:
Foundation Documentation
Everything you need to know about using the framework.
Foundation on Github
Latest code, issue reports, feature requests and more.
@foundationzurb
Ping us on Twitter if you have questions. If you build something with this we'd love to see it (and send you a totally boss sticker).
This is a twelve column section in a row. See Foundation Grid documentation
Six columns
Six columns
Four columns
Four columns
Four columns
Check me out! I'm a super cool Tab panel with text content!
Check me out! I'm a super cool Tab panel with text content!
Check me out! I'm a super cool Tab panel with text content!
Simple Button
Hollow Button
Tiny Button
Tiny Hollow Button
Success Btn
Alert Btn
Secondary Btn
A whole kitchen sink of goodies comes with Foundation. Checkout the docs to see them all, along with details on making them your own.
Go to Foundation Docs


| Libcroco Reference Manual | ||||
|---|---|---|---|---|
| Top | Description |
struct CRAttrSel; enum CRStatus cr_attr_sel_append_attr_sel (CRAttrSel *a_this
,CRAttrSel *a_attr_sel
); void cr_attr_sel_destroy (CRAttrSel *a_this
); void cr_attr_sel_dump (CRAttrSel const *a_this
,FILE *a_fp
); CRAttrSel * cr_attr_sel_new (void
); enum CRStatus cr_attr_sel_prepend_attr_sel (CRAttrSel *a_this
,CRAttrSel *a_attr_sel
); guchar * cr_attr_sel_to_string (CRAttrSel const *a_this
);
struct CRAttrSel { CRString *name ; CRString *value ; enum AttrMatchWay match_way ; CRAttrSel *next ; CRAttrSel *prev ; CRParsingLocation location ; };
CRAdditionalSel abstracts an attribute selector. Attributes selectors are described in the css2 spec [5.8]. There are more generally used in the css2 selectors described in css2 spec [5] .
enum CRStatus cr_attr_sel_append_attr_sel (CRAttrSel *a_this
,CRAttrSel *a_attr_sel
);
Appends an attribute selector to the current list of attribute selectors represented by a_this.
|
the this pointer of the current instance of CRAttrSel. |
|
selector to append. |
Returns : |
CR_OK upon successfull completion, an error code otherwise. |
void cr_attr_sel_destroy (CRAttrSel *a_this
);
Destroys the current instance of CRAttrSel. Frees all the fields if they are non null.
|
the "this pointer" of the current instance of CRAttrSel. |
void cr_attr_sel_dump (CRAttrSel const *a_this
,FILE *a_fp
);
Dumps the current instance of CRAttrSel to a file.
|
the "this pointer" of the current instance of CRAttrSel. |
|
the destination file. |
enum CRStatus cr_attr_sel_prepend_attr_sel (CRAttrSel *a_this
,CRAttrSel *a_attr_sel
);
Prepends an attribute selector to the list of attributes selector represented by a_this.
|
the "this pointer" of the current instance *of CRAttrSel. |
|
the attribute selector to append. |
Returns : |
CR_OK upon successfull completion, an error code otherwise. |


CURRENT: 0.0 GPA
CUMMULATIVE: 0.0 GPA
0 GPA Hours
0 Quality Points
CURRENT: 3.82 GPA
CUMMULATIVE: 3.82 GPA
17 GPA Hours
65 Quality Points
CURRENT: 3.59 GPA
CUMMULATIVE: 3.71 GPA
17 GPA Hours
61 Quality Points
CURRENT: 3.82 GPA
CUMMULATIVE: 3.75 GPA
17 GPA Hours
65 Quality Points
CURRENT: 4.0 GPA
CUMMULATIVE: 3.80 GPA
13 GPA Hours
52 Quality Points
CURRENT: 4.0 GPA
CUMMULATIVE: 3.84 GPA
19 GPA Hours
76 Quality Points
CURRENT: -- GPA
CUMMULATIVE: -- GPA
-- GPA Hours
-- Quality Points
Founded in 1867, Howard University is a private, research university comprised of 13 schools and colleges. Students pursue studies in more than 120 areas leading to undergraduate, graduate and professional degrees. To date, Howard has awarded more than 120,000 degrees in the arts, the sciences, and the humanities. The historic main campus sits on a hilltop in Northwest Washington blocks from the storied U Street and Howard Theatre. We are two miles from the U.S. Capitol where many students intern, and scores of alumni shape national and foreign policy.
Truth and Service


Pixel Pal (PART 5) : Data augmentation
Posted on Sat 25 April 2020 in Linux, HiDPI, PixelPal
Pixel Pal is a project I have started whose purpose is to bring new life to old icon themes. Many old icon themes are in raster format and are not available for HiDPI screens (their resolution are too small). Currently the only way to handle old icon themes is to resample them by the desired factor, but the icons look pixelated. The goal of this project is to use deep learning to upsample small icons into icons for HiDPI screens.
This is the fifth article about this project. Here are the other four:
- Part #1 Explaining the project.
- Part #2 Building the dataset
- Part #3 Measuring model quality
- Part #4 Training models
One of the big challenges in deep learning is getting enough data. Neural networks can easily have millions of parameters and it requires large quantity of data to fine tune these parameters. Getting enough data is a challenge but what makes it worse that data itself is not sufficient, you need labelled data, and if possible quality labelled data.
When you don't have enough data you have a problem. There are many ways to tackle this issues:
- Reducing the number of parameters to learn. One such way is to resuse the weights (parameters) from an already learned task and then only retrain parts of the model. This is a form of transfer learning. For instance VGG-16 is taught to do image classification for general public purpose. You can take this model and only retrain parts of it, assuming the other parts are good enough to generalise to your task.
- Training parts of the model on the input data alone using autoencoders. This is fairly technical. The idea is that you build a model which compresses the input data and then decompress the data back with no loss of quality. Such a model is easier to train as you usually have lots of input data (but not necessarily output data). Then you use the trained autoencoder and you split in two : the compression network and the decompression network. You can then work with the compressed features coming out of the compression network as a replacement of the original input data. The benefit here is that the compressed features are smaller and as a result the network you need to train mapping the compressed features to the output data is smaller and thus simpler to teach.
- Use data augmentation. This method consists of building new data from the currently existing one. This method is especially good as a way to produce neural network that generalise well. Through data augmentation you can tell what a neural network should not rely on. For instance one way to augment image data is to flip the image horizontally and vertically, this way you can easily quadruple the amount of data available and tell the network it should be not rely on the image on being a certain way like having shadows at the bottom.
For the purpose of this project I will rely on data augmentation. My training data set is around 9 000 images, which is fairly good for networks having 10 of thousands of parameters. But through data augmentation my neural network can be better and by simply flipping horizontally and vertically I can easily get around 36 000 images. Thus allowing me to investigate deeper neural networks.
| modification | no horizontal flip | horizontal flip |
|---|---|---|
| no vertical flip | ||
| vertical flip |


abstract class AbstractTextParser<ResultType> : TextParser<ResultType>
An abstract base class for all parsers that allow to parse text in order to convert it into data of another type.
ResultType
- The type of the data, the text should be converted to
Author
Michael Rapp
Since
2.1.0
AbstractTextParser()
An abstract base class for all parsers that allow to parse text in order to convert it into data of another type. |
abstract fun onParse(text: CharSequence): ResultType
The method that is invoked on implementing subclasses in order to parse a specific (eventually pre-processed) text. |
|
open fun parse(text: CharSequence): ResultType
Parses a specific text in order to convert it into data of another type. |
|
open fun setPostProcessor(postProcessor: (ResultType) -> ResultType): Unit
Sets a postProcessor that is applied to the converted data, after it has been processed by the parser. |
|
open fun setPreProcessor(preProcessor: (CharSequence) -> CharSequence): Unit
Sets a preProcessor that is applied to a text before it is processed by the parser. |
class GradualTextParser<InputTokenType : Token, ResultType> : AbstractTextParser<ResultType>
A parser that allows to parse text by first splitting it into tokens using a Tokenizer and then gradually processing the resulting TokenSequence by applying a Processor or ProcessorChain to it. |


Getting started with QA GUI testing
So how do you Automate GUI testing for web applications?
There’s an interesting site called csste.st which is a good source to find more some directions for some CSS Testing tools, however, I’d like to expand this post to include some others.
- We’re not talking about Unit Testing here, but about consistently testing and accurately recording the the user flow of web appications, there isn’t a great deal of tools available to the Dev
However, it’s a great opportunity to outline a few tools that CAN help to this regard.
Defacto: “BrowserStack” isn’t great if you’re trying to hustle, but incredibly powerful if you’re able to fork $20 a month. That basic plan doesn’t give you all the bells and whistles, but it will give you enough to get pretty far on your Frontend Dev.
Pricey Alternative: “Mogotest” is a prety interesting site that is trying to compete against BrowserStack, though the plans are pretty expensive.
#Tools
CSSCritic is incredibly lightweight and I’d only recommend it for a quick comparison during your dev cycle. It is basically a screen capture plugin to compare two versions of a site which will highlight elements which are out of alignment compared to the original picture.
Lightweight OpenSource Alt: “PhantomCSS” is an alternative to CSSCritic which offers a little more
Hardy.io is the big brother to GhostStory
BBC News Wraith is incredibly impressive. Running on Ruby, this uses a rake
task to run automated screen capture tests which are saved on the local directory. I particularly like how you can run the rake task to pull the requested web pages and then save a comparision of two pages as a highlighted image within a gallery context. Another thing I particularly like is how you can specify the screen sizes of the pages that you want the screen shots to be captured.
#Automated Recorders
Selenium is a Firebox plugin which allows the user to run browser automation tests. You can program on a plethora of programming languages though I do dislike the fact that you are required to have firefox as a prerequesite.
- Getting Started on Selenium
- More in-depth Selenium
- like Youtube Tutorials?
I like how you can export to Python or Ruby via Web Driver, but I’m a little disappointed that you can’t import back into Selenium IDE after you’ve exported out. - Selenium-WebDriver
Sikuli is a python based IDE for automated testing. I tried to use this during my brokerage days to automate financial reporting, but the only caveat is that Sikuli doesn’t play nicely when you have buttons that are incredibly small within properietary software. There hasn’t been much development for a while, which leads me to consider other alternatives - Node-Sikuli Here is Sikuli to be used for node.
#CLI tools
#Takeaways
There’s some underlying similarities between the different tools currently available. The most common tools that continue to pop up are Selenium Webdriver and PhantomJS.
Why do you need the Webdriver?
Why do you need PhantomJs/CasperJS?
#Tips and Tricks for Q&A
- Invalid HTML
- Form Validation
- Content Wrapping
- Tolerance Levels against Design
- Optimize for one browser type and fix inconsistencies for others?
- Dynamically Generated Content?
#Future Post Ideas
- Browser Stack API?
- What is Web Driver
- Indepth Look at Hardy.io


Freecell Solver version 2.28.0 has been released. It is available in the form of a source tarball from the download page.
This version contains several significant optimisations. Now the "freecell-only" preset can solve the first 32,000 Microsoft Freecell deals at 286 deals per second with gcc, and 301 deals per seconds with Intel's icc. (on a Pentium 4 2.4GHz computer). There are many other internal cleanups, build system tweaks, and new makefiles to build using some alternative C compilers.
The source archives from now on will be distributed as tar.bz2 instead of tar.gz which gives better compression, and a faster download.


I came across Ruby in 1998 because I was an avid reader of comp.lang.misc (ask your parents). I downloaded it, compiled it, and fell in love. As with any time you fall in love, it’s difficult to explain why. It just worked the way I work, and it had enough depth to keep me interested. Fast forward 15 years. All that time I’d been looking for something new that gave me the same feeling. I came across Elixir a while back, but for some reason never got stuck in. But a few months ago I was chatting with Corey Haines. I was bemoaning the fact that I wanted to find a way to show people functional programming concepts without the kind of academic trappings those books seem to attract. He told me to look again at Elixir. I did, and I felt the same way I felt when I first saw Ruby.
** auuuuugggghhhhhh ** Oh bother and blast, I am mere version 3 compiler and cannot see into the future. You have given me a version 5 program. This means my time on earth has come.  You will uninstall me, and install a version five compiler. I will be no more. I will cease to exist. Goodbye old friend. I have a headache. I'm going to have a rest... **


JavaScript ("JS" for short) is a full-fledged dynamic programming language that, when applied to an HTML document, can provide dynamic interactivity on websites. It was invented by Brendan Eich, co-founder of the Mozilla project, the Mozilla Foundation, and the Mozilla Corporation.
+, -, *, /, and % are called operators. An operator is a special character (or characters) that indicates an action to be performed.
an element, feature, or factor that is liable to vary or change.
In computer programming, a naming convention is a set of rules for choosing the character sequence to be used for identifiers which denote variables, types, functions, and other entities in source code and documentation.
A function is a group of reusable code which can be called anywhere in your program. This eliminates the need of writing the same code again and again. It helps programmers in writing modular codes. Functions allow a programmer to divide a big program into a number of small and manageable functions.
In the DOM, all HTML elements are defined as objects. The programming interface is the properties and methods of each object. A property is a value that you can get or set (like changing the content of an HTML element). A method is an action you can do (like add or deleting an HTML element).
The arguments object is a local variable available within all functions. You can refer to a function's arguments within the function by using the arguments object. This object contains an entry for each argument passed to the function, the first entry's index starting at
a numerical or other measurable factor forming one of a set that defines a system or sets the conditions of its operation.
In JavaScript, return statements cease execution in a function and return a value to the caller; JavaScript functions require an explicit return statement for returning the result of an expression (the value) from a function. When a return statement is not present, the interpreter automatically returns undefined.
Easily Create Chainable (Cascading) Methods for Expressiveness. ... — Understand JavaScript's “this” With Ease. — JavaScript Objects in Detail. Chaining Methods, also known as Cascading, refers to repeatedly calling one method after another on an object, in one continuous line of code.
The String global object is a constructor for strings, or a sequence of characters.
a binary variable, having two possible values called “true” and “false.”.
not clear or defined.
NaN property is a value representing Not-A-Number
This function makes a string portable, so it can be transmitted across any network to any computer that supports ASCII characters.
The alert() method displays an alert box with a specified message and an OK button.
 When you place these two slashes, all text to the right of them will be ignored, until the next line.
jQuery is a concise and fast JavaScript library that can be used to simplify event handling, HTML document traversing, Ajax interactions and animation for speedy website development. jQuery simplifies the HTML's client-side scripting, thus simplifying Web 2.0 applications development.
a piece of information that determines the properties of a field or tag in a database or a string of characters in a display.


--- layout: post title: Python Geoprocessing date: 2011-04-14 18:31:56.000000000 -05:00 type: post published: true status: publish categories: - Geoprocessing with Python tags: - Programming language - Python meta: _edit_last: '15714693' _wpas_done_twitter: '1' _wpas_done_fb: '1' author: login: broberts65 email<EMAIL_ADDRESS>display_name: Bob Roberts first_name: '' last_name: '' ---
Alright everybody, I get a lot of searches everyday for Python geoprocessing related questions. I would love to add more content about geoprocessing but not sure what it is that all of you would like to learn. I was going to do a "Geoprocessing tip of the week" but I felt that it would be pretty much the same as looking at the ESRI help docs.
The simplest way is to email me via the about/contact page and I will attempt to answer what I can. I am also looking at putting on a Python Geoprocessing class(s) here in Phoenix at the DesertPy.org group meetups. Would there be any interest in a Python Geoprocessing class if I were to have one? Maybe if there is enough interest we can do a webinar so that those outside of the Phoenix area could also participate.
As always, feel free to drop me a line...
BR