C++, as we all know is an extension to C language and was developed by Bjarne stroustrup at bell labs. C++ is an intermediate level language, as it comprises a confirmation of both high level and low level language features. C++ is a statically typed,free
form, multiparadigm, compiled general-purpose language.
C++ is an Object Oriented Programming language but is not purely Object Oriented. Its features like Friend and Virtual, violate some of the very important OOPS features, rendering
this language unworthy of being called completely Object Oriented. Its a middle level language.
Benefits of C++ over C Language: The major difference being OOPS concept, C++ is an object oriented language whereas C language is a procedural language. Apart form this there are many other features of C++ which gives this language an upper
hand on C laguage.
Following features of C++ makes it a stronger language than C,
- There is Stronger Type Checking in C++.
- All the OOPS features in C++ like Abstraction, Encapsulation, Inheritance etc makes it more worthy and useful for programmers.
- C++ supports and allows user defined operators (i.e Operator Overloading) and function overloading is also supported in it.
- Exception Handling is there in C++.
- The Concept of Virtual functions and also Constructors and Destructors for Objects.
- Inline Functions in C++ instead of Macros in C language.
- Variables can be declared anywhere in the program in C++, but must be declared before they are used.
Here we will discuss one simple and basic C++ program to print "Hello this is C++" and its structure in parts with details and uses.
#include
using namespace std;
int main()
{
cout << "Hello this is C++";
}
Header files are included at the beginning just like in C program. Here iostream is a header file which provides us with input & output streams. Header files contained predeclared function libraries, which can be used by users for their ease.
Using namespace std, tells the compiler to use standard namespace. Namespace collects identifiers used for class, object and variables. NameSpace can be used by two ways in a program, either by the use of using statement at the beginning, like
we did in above mentioned program or by using name of namespace as prefix before the identifier with scope resolution (::) operator.
Example: std::cout
<< "A";
main(), is the function which holds the executing part of program its return type is int.
cout
<<, is used to print anything on screen, same as printf in C language. cin and cout are same as scanf and printf, only difference is that you do not need to mention format specifiers like, %d for int etc, in cout & cin.
For single line comments, use // before mentioning comment, like
cout<<"single line"; // This is single line comment
For multiple line comment, enclose the comment between /* and */
/*this is
a multiple line
comment */
Classes name must start with capital letter, and they contain data variables and member functions. This is a mere introduction to classes, we will discuss classes in detail throughout the C++ tutorial.
class Abc
{
int i; //data variable
void display() //Member Function
{
cout << "Inside Member Function";
}
}; // Class ends here
int main()
{
Abc obj; // Creatig Abc class's object
obj.display(); //Calling member function using class object
}
This is how a class is defined, once a class is defined, then its object is created and the member functions are used.
Variables can be declared anywhere in the entire program, but must be declared, before they are used. Hence, we don't
need to declare variable at the start of the program.
Let's start with Datatypes. They are used to define type of variables and contents used. Data types define the way you use storage in the programs you write. Data types can be of two types:
- Built-in Datatypes
- User-defined or Abstract Datatypes
These are the datatypes which are predefined and are wired directly into the compiler. For eg: int, char etc.
User defined or Abstract data types
These are the type, that user creates as a class or a structure. In C++ these are classes where as in C language user-defined datatypes were implemented as structures.
Basic Built in Datatypes in C++
| char | for character storage (1 byte) |
| int | for integral number (2 bytes) |
| float | single precision floating point (4 bytes) |
| double | double precision floating point numbers (8 bytes) |
Other Built in Datatypes in C++
| bool | Boolean (True or False) |
| void | Without any Value |
| wchar_t | Wide Character |
Modifiers in C++ In C++, special words(called modifiers) can be used to modify the meaning of the predefined built-in data types and expand them to a much larger set. There are four datatype modifiers in C++, they are:
- long
- short
- signed
- unsigned
Below mentioned are some important points you must know about the modifiers,
- long and short modify the maximum and minimum values that a data type will hold.
- A plain int must have a minimum size of short.
- Size hierarchy : short int < int < long int
- Size hierarchy for floating point numbers is : float < double < long double
- long float is not a legal type and there are no short floating point numbers.
- Signed types includes both positive and negative numbers and is the default type.
- Unsigned, numbers are always without any sign, that is always positive.
Decision making with if statement
The if statement may be implemented in different forms depending on the complexity of conditions to be tested. The different forms are,- Simple if statement
- if....else statement
- Nested if....else statement
- else if statement
Simple if statement
The general form of a simple if statement is,if(expression)
{
statement-inside;
}
statement-outside;
If the expression is true, then 'statement-inside' will be executed, otherwise 'statement-inside' is skipped and only 'statement-outside' will be executed.
Example:
#include< iostream.h>
int main( )
{
int x,y;
x=15;
y=13;
if (x > y )
{
cout << "x is greater than y";
}
}
if...else statement
The general form of a simple if...else statement is,if(expression)
{
statement-block1;
}
else
{
statement-block2;
}
If the 'expression' is true or returns true, then the 'statement-block1' will get executed, else 'statement-block1' will be skipped and 'statement-block2' will be executed.
Example:
void main( )
{
int x,y;
x=15;
y=18;
if (x > y )
{
cout << "x is greater than y";
}
else
{
cout << "y is greater than x";
}
}
Nested if....else statement
The general form of a nested if...else statement is,if(expression)
{
if(expression1)
{
statement-block1;
}
else
{
statement-block2;
}
}
else
{
statement-block3;
}
if 'expression' is false or returns false, then the 'statement-block3' will be executed, otherwise execution will enter the if condition and check for 'expression 1'. Then if the 'expression 1' is true or returns true, then the 'statement-block1' will be executed otherwise 'statement-block2' will be executed.
Example:
void main( )
{
int a,b,c;
cout << "enter 3 number";
cin >> a >> b >> c;
if(a > b)
{
if( a > c)
{
cout << "a is greatest";
}
else
{
cout << "c is greatest";
}
}
else
{
if( b> c)
{
cout << "b is greatest";
}
else
{
cout << "c is greatest";
}
}
}
The above code will print different statements based on the values of a, b and c variables.
else-if Ladder
The general form of else-if ladder is,if(expression 1)
{
statement-block1;
}
else if(expression 2)
{
statement-block2;
}
else if(expression 3 )
{
statement-block3;
}
else
default-statement;
The expression is tested from the top(of the ladder) downwards. As soon as the true condition is found, the statement associated with it is executed.
Example:
void main( )
{
int a;
cout << "enter a number";
cin >> a;
if( a%5==0 && a%8==0)
{
cout << "divisible by both 5 and 8";
}
else if( a%8==0 )
{
cout << "divisible by 8";
}
else if(a%5==0)
{
cout << "divisible by 5";
}
else
{
cout << "divisible by none";
}
}
If you enter value 40 for the variable a, then the output will be:
There are 3 type of loops in C++ language
- while loop
- for loop
- do-while loop
while loop
while loop can be address as an entry control loop. It is completed in 3 steps.- Variable initialization.(e.g int x=0;)
- condition(e.g while( x <=10))
- Variable increment or decrement (x++ or x-- or x=x+2)
Syntax:
variable initialization;
while (condition)
{
statements;
variable increment or decrement;
}
for loop
for loop is used to execute a set of statement repeatedly until a particular condition is satisfied. we can say it an open ended loop. General format is,for(initialization; condition; increment/decrement)
{
statement-block;
}
In for loop we have exactly two semicolons, one after initialization and second after condition. In this loop we can have more than one initialization or increment/decrement, separated using comma operator. for loop can have only one condition.
Nested for loop
We can also have nested for loop, i.e one for loop inside another for loop. Basic syntax is,for(initialization; condition; increment/decrement)
{
for(initialization; condition; increment/decrement)
{
statement;
}
}
do...while loop
In some situations it is necessary to execute body of the loop before testing the condition. Such situations can be handled with the help of do-while loop. do statement evaluates the body of the loop first and at the end, the condition is checked using while statement. General format of do-while loop is,do
{
// a couple of statements
}
while(condition);
Jumping out of a loop
Sometimes, while executing a loop, it becomes necessary to skip a part of the loop or to leave the loop as soon as certain condition becocmes true, that is jump out of loop. C language allows jumping from one statement to another within a loop as well as jumping out of the loop.1) break statement
When break statement is encountered inside a loop, the loop is immediately exited and the program continues with the statement immediately following the loop.2) continue statement
It causes the control to go directly to the test-condition and then continue the loop process. On encountering continue, cursor leave the current cycle of loop, and starts with the next cycle.All the documentation on this page is taken from Study Tonight.


--- title: "Botany Bin Reservations" layout: "default" ---
To reserve a Botany Bin, click the green panel of the desired bin below:
| February 2020 | |
|---|---|
| February 1 | Click Here to Reserve |
| February 8 | Click Here to Reserve |
| February 15 | Click Here to Reserve |
| February 22 | Click Here to Reserve |
| February 29 | Click Here to Reserve |
| March 2020 | |
|---|---|
| March 7 | Click Here to Reserve |
| March 14 | Click Here to Reserve |
| March 21 | Click Here to Reserve |
| March 28 | Click Here to Reserve |
| April 2020 | April 4 | Click Here to Reserve |
|---|---|
| April 11 | Click Here to Reserve | April 18 | Click Here to Reserve |
| April 25 | Click Here to Reserve |
| May 2020 | |
|---|---|
| May 2 | Click Here to Reserve |
| May 9 | Click Here to Reserve |
| May 16 | Click Here to Reserve |
| May 23 | Click Here to Reserve |
| May 30 | Click Here to Reserve |
| June 2020 | |
|---|---|
| June 6 | Click Here to Reserve |
| June 13 | Click Here to Reserve |
| June 20 | Click Here to Reserve |
| June 27 | Click Here to Reserve |
| February 2020 | |
|---|---|
| February 1 | Click Here to Reserve |
| February 8 | Click Here to Reserve |
| February 15 | Click Here to Reserve |
| February 22 | Click Here to Reserve |
| February 29 | Click Here to Reserve |
| March 2020 | |
|---|---|
| March 7 | Click Here to Reserve |
| March 14 | Click Here to Reserve |
| March 21 | Click Here to Reserve |
| March 28 | Click Here to Reserve |
| April 2020 | April 4 | Click Here to Reserve |
|---|---|
| April 11 | Click Here to Reserve |
| April 18 | Click Here to Reserve |
| April 25 | Click Here to Reserve |
| May 2020 | |
|---|---|
| May 2 | Click Here to Reserve |
| May 9 | Click Here to Reserve |
| May 16 | Click Here to Reserve |
| May 23 | Click Here to Reserve |
| May 30 | Click Here to Reserve |
| June 2020 | |
|---|---|
| June 6 | Click Here to Reserve |
| JUne 13 | Click Here to Reserve |
| June 20 | Click Here to Reserve |
| June 27 | Click Here to Reserve |
| February 2020 | |
|---|---|
| February 1 | Click Here to Reserve |
| February 8 | Click Here to Reserve |
| February 15 | Click Here to Reserve |
| February 22 | Click Here to Reserve |
| February 29 | Click Here to Reserve |
| March 2020 | |
|---|---|
| March 7 | Click Here to Reserve |
| March 14 | Click Here to Reserve |
| March 21 | Click Here to Reserve |
| March 28 | Click Here to Reserve |
| April 2020 | April 4 | Click Here to Reserve |
|---|---|
| April 11 | Click Here to Reserve |
| April 18 | Click Here to Reserve |
| April 25 | Click Here to Reserve |
| May 2020 | |
|---|---|
| May 2 | Click Here to Reserve |
| May 9 | Click Here to Reserve |
| May 16 | Click Here to Reserve |
| May 23 | Click Here to Reserve |
| May 30 | Click Here to Reserve |
| June 2020 | |
|---|---|
| June 6 | Click Here to Reserve |
| June 13 | Click Here to Reserve |
| June 20 | Click Here to Reserve |
| June 27 | Click Here to Reserve |
October 1 - April 30: 9:30AM - 5:00PM
May 1 - September 30: 9:30AM - 7:00PM
CLICK HERE for Lesson Plans and general information about our Botany Bin Program.
CLICK HERE for directions to the Red Butte Garden Visitor Center in Salt Lake City.
Outside of Salt Lake City? To make a reservation contact one of the following people at the nearest pick-up site:
| District | Contact Person | Phone | |
|---|---|---|---|
| Alpine | Lisa Diquattro |<PHONE_NUMBER> |<EMAIL_ADDRESS>|
| Heber City | Dawn Roberts |<PHONE_NUMBER> x6 |<EMAIL_ADDRESS>|
| Iron (SEDC) | Chris Haught |<PHONE_NUMBER> |<EMAIL_ADDRESS>|
| Logan | Beverly Sanders |<PHONE_NUMBER> x2051 |<EMAIL_ADDRESS>|
| Price (SESC) | Sara Bryant |<PHONE_NUMBER> |<EMAIL_ADDRESS>|
| Richfield (CUES) | Patsy Nielson |<PHONE_NUMBER> x121 |<EMAIL_ADDRESS>|
| Washington | Shauna Williams |<PHONE_NUMBER> x5148 |<EMAIL_ADDRESS>|
| Weber County | Stefanie Zwygart |<PHONE_NUMBER> |<EMAIL_ADDRESS>|


¿What is an ontology?
Nowadays almost all companies save their business information in electronic databases. Wine sector is not an exception, as wineries, restaurants, bars, shops or wine magazines keep the information about their wines (grape varieties, date of production, making process, chemical composition, organoleptic characteristics, price, etc) in an electronic format. This, together with the development of Internet and the World Wide Web in particular, allows an unprecedented information sharing around the world, that has boosted a myriad of new applications that are driven in many cases by autonomous software agents, like, for example, search robots or data mining automatas.
However, interoperability between interconnected systems not only requires a way of sharing information (e.g. internet, www) or a language for representing information (e.g. html, xml), but also an agreement in the meaning of data, that is, in their semantic. In the world of wine there is not yet a shared vocabulary or terminology to refer to the concepts used in the field of oenology. Visiting some winery or wine shops websites is enough to see that there is a huge heterogeneity in terminology. They often use different terms referring to the same concept (e.g. in Spain is common to find the terms “tinto tempranillo”, “tinto fino” or “tinto cencibel”, referring to the same kind of wine made with tempranillo grapes), or, what is worse, use the same term referring to different concepts (e.g. in Spain the term “tinto crianza” is used to refer the aging period of wine, but this period is not the same in all the wine regions). This ambiguity and heterogeneity in vocabulary make difficult to share information and interoperate between a winery and a wine shop, between a wine shop and a restaurant, or in general among distributed system on the Internet.
In the last decade a huge amount of research has been done in the field of computer science and artificial intelligence in an effort to provide the basis to interchange semantic of data, giving rise to a new web paradigm known as Semantic Web. The Semantic Web, unlike conventional Web that links html documents, links data making their meaning explicit and understandable not only for human but specially for computers and automata. Thereby, development of the Semantic Web involves the creation of shared vocabularies designed to describe particular domains of knowledge. These vocabularies, that are the cornerstone of the Semantic Web, are known as Ontologies.
In Artificial Intelligence, an ontology is a formal specification of a shared conceptualization (Gruber 1993), that is, a body of formally represented knowledge that includes the objects, classes of objects, and other entities that exist in some area of interest, the propertides that describe them and the relations that exist among them, as wel as the axioms or rules that define the logic of the system that is modeled. These models are built in a formal language that is undestandable not only for humans, but also for computers, allowing interoperability among systems that use the same ontology. Thus, ontologies represent a shared understanding about concepts and relationships of a specific domain that is meaningful for computers. In a simplified view, ontologies could be seen as shared vocabularies about a domain or area of knowledge. For example, an ontology of oenology can define the terms “tinto tempranillo” and “tinto cencibel” with no ambiguity and establish that both are synonyms. The Semantic Web uses ontologies to give meaning to the data published in the web. This allows to make searches with semantic criteria along the relations among terms (something not possible with the actual web search engines as Google, Yahoo or Bing that only use syntactic criteria) and get information about “tinto tempranillo” wines even if the words “tinto cencibel” are typed.
In the last years, the development of ontologies for giving semantic to data published in the web has grown exponentially. A lot of knowledge areas have adopted standard ontologies for modeling their reality, as for example, the the Dublin Core ontology that defines a semantic vocabulary to describe documents, a subset of which is used by Wikipedia; the FOAF ontology (Friend Of A Friend) that exposes a basic vocabulary for describing people and things; the GoodRelations ontology used by Google or Yahoo to describe products and transactions in e-commerce; or the GeneOntology to describe genes and proteins of living beings.
Unfortunately, there is not a standard ontology in the oenology field, and thus, we have addressed this task building an ontology for wines that we have named E-Baco.
¿What is E-baco ontology?
E-Baco ontology defines a precise vocabulary for representing knwoledge in the domain of oenology. A ontology is composed of objects or entities of different types. The main entities are: (a) classes that represent abstract concepts (e.g. wine); (b) properties of classes that describe characteristics of concepts (e.g. alcohol content); (c) instances of classes that represent individuals of concrete examples of concepts (e.g. Mathis 2007 wine); (d) relations that describe the connections or associations between two concepts or instances (e.g. the pairing relation between a wine and a food); (e) axioms that establish logical rules satisfied by concepts, properties, instances and relations (e.g. white wine and red wine are disjoint classes, i.e. they can’t share any instance, or white wines are made only with white grapes). The main relationships in ontologies are the subclass_of relation that expresses that a class is subsumed by another, that is, that all the instances of a class are also instances of the other class (e.g. red wine is a subclass of wine); and the is_a relation, that expresses that an individual is an instance of a class. These relations can be expressed as directed graph like in the next figure.
Through these relations, concepts and their instances are organized in a taxonomy that is the backbone of the ontology.
The E-Baco ontology is a multipurpose ontology that has been designed to allow the modelling of different scenarios about wine: the simple description of a wine for non experts; the winemaking process (from chemical and biological point of view and the manufacturer perspective), the marketing of wine (e-commerce), the comparison of wines (from the point of view of tasting), or the pairing of wine and food (from the nutritional point of view), just to name a few. Thus, the ontology includes the main concepts and relations used in these scenarios.
According to the domain of application and the level of complexity, the ontology has been divided in several modules that comprise the vocabulary required for the domain of application and the level of modelling. At the present time the ontology E-Baco has three modules: E-Baco-Core, E-Baco-Tasting and E-Baco-Winemaking.
E-Baco-Core
The E-Baco-Core module is the lower level and defines the vocabulary for a basic description of wines. It includes very basic classes and relations that are the foundation of the E-Baco ontology. This module is oriented towards standard wine consumers since it includes main characteristics of the product. Among the properties of the basic level are the grape varieties of the wine, wine region, winery, etc. Each one of these basic properties has in turn a number of properties that describe them. For instance, the winery is linked to other basic properties as contact address, telephone and web page of the winery.
E-Baco-Tasting
The E-Baco-Tasting module defines the vocabulary to describe wine tastings and pairing between wine and food. It contains the vocabulary of the E-Baco-Core module, but also adds new classes and relations to model the tasting description of wines, the organoleptic characteristics of wine (appearance, nose and palate), the recommended dishes for a wine and some advises for their consumption. This module is directed to demanding consumers, wine shops, restaurants, bars and sommeliers. The tasting vocabulary, in particular, has been inspired by the Wine & Spirit Education Trust recommendations and comprises the main organoleptic properties that are used by the sommeliers to describe the wine and its quality.
E-Baco-Winemaking
The E-Baco-Winemaking module presents a more technical vocabulary to describe the winemaking process. It also contains the vocabulary of the E-Baco-Core module, but also adds a lot of classes and relations to model the process and the main variables that affect the winemaking. This is the higher level module and is restricted to the description of technical details of the wine, their making process and the winery. For this reason, this level is specially interesting for wine producers, specialized retail stores, enologists, etc. The properties of this module include technical details of the wine, the vineyard and the production. For the wine descriptions at this level, quantitative properties as acidity, fermentation time, sugar content, sulphur dioxide, polyphenols, and other chemical characteristics are used. The properties of the wineyard include generic properties associated to the wine region (pluviometry, height above sea level, hours of sunshine, …) and specific properties of the vineyard (surface, type of soil, latitude and longitude, training system, …). Finally, the technical properties of the wine production process could comprise some sensitive information as the yeast strain used for fermentation process, or the precise time of each stage of the vinification.


Hailey Baldwin enjoys 'low-key' birthday after Justin Bieber teases babies
Hailey Baldwin has revealed that she is the ‘happiest girl in the world’ as she enjoyed some low-key birthday celebrations – after her husband, Justin Bieber, teased that he wants to have babies with her.
The model recently celebrated her 23rd birthday and rather than have a wild night out or a big birthday party with her pals, she instead decided to spend some quality time with her husband in the comfort of their own home.
After all, she already had made sure to party hard at her hen party before getting married to Justin back in September.
Taking to Instagram stories, Hailey showed off a sneak peek of her romantic-looking dinner, with treats such as doughnuts and cupcakes also present on the table, as well as a cake with ‘Happy Birthday Hailey’ written on top in pink icing.
And if that wasn’t enough, she was also gifted with a bottle of an alcoholic drink with her man’s name written on it.
Advertisement Advertisement
‘Nothing I want more, best birthday,’ she wrote.
The model also posted a message to thank all of her ‘beautiful friends and family’ for wishing her well on her special day.
‘Thank you so much to all my beautiful friends and family for all the love today!’ she wrote.
‘I’m the happiest birthday girl in the world.’
The quiet birthday celebrations make sense after she recently revealed that she was ‘too tired’ to host a party for her big day – despite originally having plans to host a Michael Jordan themed bash to mark the fact she was turning 23, as 23 had been the number on the basketball player’s back throughout his career.
It also comes after the Biebs hinted that he would like to have children with his wife, as he posted a sweet birthday tribute to her on his Instagram.
Sharing a set of professional photos from their wedding day, he wrote: ‘Happy birthday babes! You make me want to be better everyday!
‘The way you live your life is so attractive.. ps you turn me on in every way. Next season BABIES.’
So could we be expecting a baby Bieber very soon? We hope so.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


I’m not one for New Years resolutions but I thought it was time I looked at JavaScript more in depth.
I looked at Node.js a while back and found it very interesting and I probably need to go back to it. Over the last month or so there has been a large discussion about async in .Net frameworks and there appears to be a lot of misunderstanding about it (and lets leave it at that, I don’t want to start another flame war) but the thing we can definitely say with Node.js, well JavaScript to be fair is that it is perfectly asynchronous and non-blocking.
As a web developer I have used JavaScript from the early days of Response.Write moving onto frameworks such as script.aculo.us and MooTools and finally ending up with jQuery which has come pretty much a standard these days so my JavaScript skills are not completely new.
However, there has been a large push to use JS more and more for rich user friendly applications with things like KnockoutJS, AngularJS and BackboneJS on the client and Node.js on the server. Microsoft has even taken a prominent role in helping bring Node.js to a Windows environment as it started out on *nix based platforms. They have also started contributing to and including scripts in their Visual Studio project templates for jQuery.
JavaScript can now promote one language to develop on the server and the client which makes things easier and that is one argument I understand and I’m sure there are many others which either I have forgotten or I’m unaware of but the truth is JavaScript seems to be picking up pace in the development world.
We now have things like CoffeeScript that abstracts JS and allows users to type arguably neater code which then compiles into JS.
The big news is that Microsoft have developed Typescript which is an attempt to coerce or make the transition easier for C# developers to use JavaScript. Their mantra for TypeScript is
TypeScript is a language for application-scale JavaScript development. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source.
With this development along with the fact that Windows 8 applications can be written in C#/XAML or JavaScript/HTML proves that MS and therefore probably the mainstream of developers are taking JS as a serious platform to start writing large production systems.
I am off to a talk about TypeScript with @markrendle on Jan 22nd so it’ll be interesting to see the language and the points put forward about it and JS as a whole.
As I mentioned earlier there is a large focus on rich content applications which use JS to make the application quick and easy to use and frameworks like KnockoutJS, AngularJS and Backbone have popped up allowing you to create these types of applications.
My biggest concern is which one do you use? I’ve had recommendations for each one which hasn’t helped. KnockoutJS is developed by @stevensanderson who works for MS so you could say it might be best to use that as it maybe more main stream and a more common requirement for employers to see you know it. I’ve heard arguments that AngularJS & BackBone provide the ability to write a more larger scale JS application where Knockout only provides JS type data binding and validation so again this is beneficial. I also discussed with someone that they and their company evaluated all of them and decided that the learning curve was too high for each and they went with jQuery and various plugins and Mustache for binding scenarios.
Obviously there are arguments that you should use a library/framework that supplies the solution to your requirements but generally developers want to learn something that will have long lasting benefits to them, yes they learn things for the sake of it but mostly it will benefit them in the long run, for example, you don’t hear of much use for the Whitespace programming language do you? So whilst there is an obvious push for more intensive use of JavaScript there still seems to be some sort of barrier to entry in deciding upon the correct path to take. Maybe over time the strongest will survive but whilst you’re waiting 1-2 years for something to mature you’re possibly losing business.


|
Cortenn
|
#include <shear.hpp>
Public Member Functions | |
| LeafFinder (T target, GetLeafValT< T > get_leaf) | |
| void | visit (ade::iLeaf *leaf) override |
| Implementation of iTraveler. More... | |
| void | visit (ade::iFunctor *func) override |
| Implementation of iTraveler. More... | |
Public Attributes | |
| T | target_ |
| Target of label all paths are travelling to. More... | |
| GetLeafValT< T > | get_leaf_ |
| Leaf value getter. More... | |
| std::unordered_set< ade::iTensor * > | founds_ |
| Set of leaf nodes found. More... | |
| ParentMapT | parents_ |
| Map of parent nodes in path. More... | |
Find leaf nodes by some attribute associated to leaf This traveler identifies nodes along some path for TargetPruner to work on
|
inline |
|
inlineoverride |
Implementation of iTraveler.
|
inlineoverride |
Implementation of iTraveler.
| std::unordered_set<ade::iTensor*> opt::LeafFinder< T >::founds_ |
Set of leaf nodes found.
| GetLeafValT<T> opt::LeafFinder< T >::get_leaf_ |
Leaf value getter.
| ParentMapT opt::LeafFinder< T >::parents_ |
Map of parent nodes in path.
| T opt::LeafFinder< T >::target_ |
Target of label all paths are travelling to.


Github Pages with Quarto
Quarto is an “open-source scientific and technical publishing system built on Pandoc”. What does that mean?
It means that you can use a simple text file to create documents like blogs, papers, books etc. This blog will be generated using Quarto. Quarto takes simple text files written in markdown and converts those documents into a number of different formats.
Quarto allows you to embed code written in R, python, julia and Observable JS into your documents and that code will be executable. This makes it easy to share code for analysis or teaching or reminding yourself how things work!.
Below I’ll document how I set up this blog on Github pages using Quarto.
Preliminaries
First you’ll need to have the version control sofware git installed on your system. If you’re not familiar with git then there’s some good teaching here. Once you have git
installed you have to set your identity.
git config --global user.name "Your Name"
git config --global user.email<EMAIL_ADDRESS>The email you use should be the same one you’ll use when you sign up for Github.
You can also set a default branch for your code. I use main
for this. This is where the final code for the blog will live.
git config --global init.defaultBranch main
You’ll also need an account on Github. Github provides a free service called Github pages that allows you to host a free website.
You’ll also need to install Quarto.
Once we have git & Quarto installed and a Github account ready the workflow we’ll follow here is:
- Create a blog repository on Github
- Copy (clone) that repository to our local computer
- Setup the blog structure in the local repository using Quarto
- Create content for the blog using Quarto
- Push the content to the online repository
Once we’ve done the first three steps the last two steps can be repeated as we add new blog posts.
I’ll be using a Unix based operating system either Mac OSX or linux & we’ll be using the command line. If you want to follow the process on Windows you’ll probably need to change a few commands used to create files or change directories from Unix commands to Windows commands. The git
and quarto
commands will all remain the same.
Once you have installed git and set up your git identity go to Github, create a free account and set up the various security options. Install Quarto on your computer.
Github set up
On Github create a new repo named your_github_username.github.io
replacing your_github_username
with your actual Github username. Do not add a README or license file just now.
On your local computer change to the directory you want to use for your blog and clone the Github repo into that directory.
cd ~/blog_directory
git clone git@github.com:THE_REPO_ADDRESS
if you’re using ssh.
cd ~/blog_directory
git clone https://github.com/THE_REPO_ADDRESS
if you’re using https.
This will download the files on Github into the local directory. You’ll probably get a warning like:
warning: You appear to have cloned an empty repository.
That’s ok… you have cloned an empty repository!
Create the blog
There are full instructions here.
Change into the local repo you just cloned.
cd ~/blog_directory/your_github_username.github.io
Create a local copy of your blog by typing:
quarto create-project --type website:blog
Quarto will create several files and directories required to create the blog:
- _quarto.yml
- index.qmd
- about.qmd
- posts/
- posts/_metadata.yml
- styles.css
Add an empty file named .nojekyll
at the top level:
# change directory
cd your_github_username.github.io
# add a file
touch .nojekyll
This is required so that Github pages will serve our blog properly later. See the Github pages section here.
We also need to set the output directory in the _quarto.yml
file so the top of the file reads:
project:
type: website
output-dir: docs
If you want to add social media details you can make edits to the about.qmd
file (see the webpage above).
Setting git
to track the blog
Move into the new directory created by Quarto:
cd your_github_username.github.io
Type git init
. This will tell git
to start tracking the files in the blog directory. You can make sure this is working by typing git status
& git
should list all the directories and files in the your_github_username.github.io
directory. You should also see that you are on the main
branch.
Adding a content branch
Git allows us to create different branches for projects we are working on. At the moment we only have one branch in our blog project - the main
branch. For adding content etc we do not want to work on the main
branch; we want the main
branch to be the destination for code/posts we know we want to publish.
On your local machine create a new branch in the repo called e.g. adding-content
.
git checkout -b adding-content
You should see a message Switched to a new branch 'adding-content'
.
As you create content you will create that content on the adding-content
branch. Once you’re happy with that content you can merge
the adding-content
and main
branches. That way you’re never going to ‘break’ the main
branch (the stuff you will actually blog) with code/content that doesn’t work.
Before we go any further we’ll push everything we have done to the adding-content
branch on our local machine.
# make sure we're on the adding-content branch
git status
# add all the files & changes; . means add everything
git add .
# commit the changes to the git repo
git commit -m "started adding-content branch"
# check
git status
You should see a message:
On branch adding-content
nothing to commit, working tree clean
Adding content
The workflow to create content is to write in markdown and then use the tools in Quarto to render the markdown to html. If you made your blog repo as above with Quarto then Quarto will take care of adding blog posts to the index page of your blog.
Create a new Quarto file written in markdown. As you’re doing so you can check what the page will look like using the Render button in RStudio orVS Code if you’re using either of these for your writing.
Once you’re satisfied with the markdown file create a new folder in the /posts
directory of your blog repo. Give the folder an informative name.
# change to posts dir
cd your_github.username.github.io/posts
# create new dir to hold current content
mkdir quarto_github_pages
# move .qmd file to posts/new_dir
cp path/to/content.qmd posts/quarto_github_pages
Now we can add this file to git
.
# check your on adding content
git status
# add the file
git add posts/quarto_github_pages/content.qmd
# commit the file & add a message
git commit -m "added first post to blog"
# check all is well
git status
Render the site
Now we have some content we can use quarto to render the actual site. Make sure you are in the top level directory of your blog (e.g. your_github_username.github.io
) and type quarto preview
to preview the site.
If it all looks good press ctrl+c
to stop the site being served.
You can now render the site with quarto render
. This will add several new files & directories.

Push blog to Github
We want to push the files we have created to the adding-content
branch online.
git push origin adding-content
Go to Github and log in if you have to. You should see a message that the adding-content
branch has had content pushed to it.
Press the green button and follow the prompts to merge your changes to the main
branch on Github.
On the GitHub page for your repo go to Settings (top right of the page) & scroll down until you see the section for GitHub pages. Click on the Source (it probably says Deploy from a branch
) & select /docs
.
Press save. This tells GitHub Pages to look in themain
branch of the project and in the docs
directory for files to serve.
Syncing online and local
So far we have made all our changes to the local adding-content
branch, sent these changes to the adding-content
branch online and merged those changes with the main
branch online. Our local main
branch needs to be synchronised to the online main
branch.
In your local blog directory checkout your main
branch.
git checkout main
Now pull the content from the online main
branch down to your local machine.
git pull origin main
Your local main
branch and your online main
branch will now be the same.
Workflow process
A lot of what we did above was once off. For subsequent posts we will:
- Draft content in markdown
- Track that content on the local
adding-content
branch
git checkout adding-content
git status # make sure you're on adding-content
git add XYZ
git status
git commit -m "some commit message"
git status
- Push the
adding-content
branch to Github when we’re ready to publish the page
git push origin adding-content
- Merge the changes to the
main
branch online using a Github pull request
Github should automatically serve the page we created.
- Pull the finalised
main
branch from Github back to the local machine
git checkout main
git pull origin main


The project Pharo Language Server is an implementation of the Language Server Protocol proposed by Microsoft and implemented by several IDE such as emacs, eclipse, Intellij Idea, VSCode… The project GitHub repository includes:
- An abstract layer that can be extended to create a new dedicated language server (for example: for the Java Programming Language)
- A Pharo Language Server implementation that works well with the pharo-vscode plugin.
- A Debug Adapted protocol implementation for Pharo (that needs another documentation page and is not discussed here).
In this documentation page, we present quickly the protocol, how one can download and install the Pharo Language Server project, its structure, and how to extends it.
- Language Server Protocol
- Pharo Language Server Installation
- Pharo Language Server Structure
- Extending the Abstract Language Server to implement a new one
Language Server Protocol
The language server protocol consists of enabling communication between several IDE and language servers. Thus, the IDE is a client and the language server is a server. An IDE can interact with serveral servers at the same time.
The bellow sequence diagram present the start of the project
In short, the client (IDE) opens the server. Then, it creates a connection with the client, for instance using a socket. Finally, client and server exchanges information following the protocol.
Pharo Language Server Installation
Installing the Pharo Language server is made easy thanks to a Pharo baseline. After downloading a Pharo 10 image, you can install the project using the following script:
Metacello new
githubUser: 'badetitou' project: 'Pharo-LanguageServer' commitish: 'v3' path: 'src';
baseline: 'PharoLanguageServer';
load
To do so, after launching a Pharo image, open a playground with Ctrl+O+W, copy and paste the above code snippet, and execute it.
Pharo Language Server Structure
In the following, we describe the strcuture and the main classes of the Pharo Language Server project. We only describe the Pharo code and not the one that can be present in the client extension (used in the IDEs).
Package architecture
The all project is included inside the package PharoLanguageServer
.
The package is then split into tags.
- Uncategorized contains the core of the server
- Document and TonelUtils contain the pharo code representation for the Pharo implementation of the Language Server Protocol (i.e. if you want to code in Pharo from VSCode)
- Handler contains some override of JRPC Pharo implementation to ease its usage by the Pharo Language Server Protocol
- Structure- contains all the structure send and received by the server. Structures are grouped depending on the protocol they are related to (e.g.
PLSDocumentSymbol
is linked to retriving symbols using the protocol)
Server class architecture
The two main classes of interest are PLSAbstractServer
and PLSServer
.
PLSAbstractServer
contains all the logic of a server implementing the Language Server Protocol.
PLSServer
is the class implementing the Language Server Protocol in the case of using it for the Pharo programming language.
Each class follow the same coding convention/architecture for the method protocols.
- starting contains the main method
start
used when starting the server and the required method to resolved message that are sent and received. - lsp- contains the methods to implement the protocol
- pls- contains extension of the protocol (e.g. configuring the debug mode thought the protocol, or accessing to new specific features).
Starting the server
In this subsection we give some technical description of the starting method of the server.
The server is started by calling the method PLSAbstractServer>>start
PLSAbstractServer >> start
self debugMode ifFalse: [ PLSUIManager withPLSServer: self ].
self initializeStreams.
lastId := 0.
process := [
[ serverLoop ] whileTrue: [
| request |
request := self extractRequestFrom: clientInStream.
('Request: ' , request) recordDebug.
self handleRequest: request toClient: clientOutStream ] ]
forkAt: Processor lowIOPriority
named: 'JRPC TCP connection'
First, if the debug mode is not activated, we update the UIManager
of pharo to use ours instead.
For now, it only enables opening popup in the IDEs instead of the Pharo image.
Then, we initialize the stream that will be used for the communication.
initializeStreams
| tcpServer |
withStdIO ifTrue: [
clientInStream := Stdio stdin.
clientOutStream := Stdio stdout.
^ self ].
tcpServer := Socket newTCP.
tcpServer listenOn: self port backlogSize: 10.
Stdio stdout nextPutAll: tcpServer port asString asByteArray.
Stdio stdout flush.
serverLoop := true.
(tcpServer waitForAcceptFor: 60) ifNotNil: [ :clientSocket |
clientInStream := SocketStream on: clientSocket.
clientOutStream := clientInStream.
self
logMessage: 'Client connected to Server using socket'
ofType: PLSMessageType info ]
To do so, we first check if the server ask us to be connected using STDIO or, by default, with socket. For instance, STDIO is used with Eclipse IDE and socket with VSCode.
To configure a socket, we first create a socket with Pharo with an available port.
Then, we send to the client IDE the port thanks to STDIO.
When connected, we set the clientInStream
and clientOutStream
with the same socket (since it can be used safely to get and send data).
Once the streams are set, we can perform the main loop that:
- extract the request from the in stream (
extractRequestFrom:
) - process and send the response to the out stream (
handleRequest:toClient:
)
[ serverLoop ] whileTrue: [
| request |
request := self extractRequestFrom: clientInStream.
('Request: ' , request) recordDebug.
self handleRequest: request toClient: clientOutStream ]
Extract request
The extraction of the request is done in two steps.
It is implemented in the method extractRequestFrom:
.
extractRequestFrom: stream
| length startingPoint endPoint result |
"data is the current buffer state"
length := -1.
[ length = -1 and: [ serverLoop ] ] whileTrue: [
[ data ifEmpty: [ data := (stream next: 25) asString ] ]
on: ConnectionTimedOut
do: [ self log: 'timeout but still work' ].
length := self extractLengthOf: data ].
startingPoint := data indexOf: ${.
endPoint := data findCloseBracesFor: startingPoint.
result := String new: length.
"three options"
"startingPoint and endPoint are found"
(startingPoint ~= 0 and: [ endPoint ~= 0 ]) ifTrue: [
result := data copyFrom: startingPoint to: endPoint.
data := data copyFrom: endPoint + 1 to: data size.
^ result ].
startingPoint = 0
ifTrue: [ "none were found"
self getDatafromPosition: 1 fromSocket: stream in: result ]
ifFalse: [ "only startingPoint is found"
(data copyFrom: startingPoint to: data size) withIndexDo: [
:each
:index | result at: index put: each ].
self
getDatafromPosition: data size - startingPoint + 2
fromSocket: stream
in: result ].
data := ''.
^ result
- We extract the length of the complete request. This work is done by
extractLengthOf:
once we receive first data. - Then, based on the known length of incoming data, we extract the full request.
Handle request
Handling a request is also done in several steps.
It is implemented in the method handleRequest:toClient:
.
Method of the protocol
Every method of the protocol is implemented as a method in the server. Thoses methods are categorised in protocol following the Language Server Protocol specification. For example, the method relative to Language Server Protocol Hover are inside the protocol lsp - hover.
The Pharo method uses as pragma the requested remote method by the protocol.
For example, for hover, it is the method textDocument/hover
, so the implementation uses the pragma as follow.
textDocumentHoverWithPosition: position textDocument: textDocument
<jrpc: #'textDocument/hover'>
self subclassResponsibility
The pharo method also implement at least as many arguments as the client can send.
In the hover example, the specification declares that the sent object is the HoverParams
:
interface TextDocumentPositionParams {
/**
* The text document.
*/
textDocument: TextDocumentIdentifier;
/**
* The position inside the text document.
*/
position: Position;
}
export interface HoverParams extends TextDocumentPositionParams, WorkDoneProgressParams {
}
the current version of the server ignore the
WorkDoneProgressParams
for now
So the method must at least accept attributes with the name: textDocument
and position
.
If the pharo method has more available arguments, they will be filled with nil.
If the incoming data have arguments in an incorrect order, the server will sort them first.
If the incoming data have an unknow argument, it will be ignore.
The return of the Pharo method must be a PLS structure that implement the method asJRPCJSON
.
This method will convert the pharo object to be transmitted to the client.
For example, for the PLSServer
(see snippet of code below).
The dictionary and PLSHover
implement asJRPCJSON
.
textDocumentHoverWithPosition: position textDocument: textDocument
<jrpc: #'textDocument/hover'>
| hover document |
document := (self context textItem: (textDocument at: #uri)).
hover := PLSHover new
context: self context;
source: document;
position: position;
yourself.
^ { #contents -> hover contents } asDictionary


- Independent Contractor for Hi-Rez Studios (September 2017–November 2017)
- Developed new matchmaking system to quickly group game players of different skill levels into fair matches.
- OkCupid (October 2012–March 2015)
- Developed algorithm and implemented system returning correlated interests to a user's interests.
- Developed pluggable system to easily evaluate AB testing for website.
- Designed and implemented new search system for making recommendations based on users' previous actions.
- Developed techniques to analyze and evaluate site health.
- Intel Corporation (Summers 2003, 2004, 2006, and 2007)
- Developed tools to optimize loading data and to discover relationships between data in massive databases of manufacturing data.
- Received highest reviews last 3 years.


SHARE
HOME
RESUME
PORTFOLIO
BLOG
CONTACT
LATEST NEWS
Design Conferences in 2019
28 DEC 2019
3 COMMENTS
Design Conferences in 2019
28 DEC 2019
3 COMMENTS
Design Conferences in 2019
28 DEC 2019
3 COMMENTS
Design Conferences in 2019
28 DEC 2019
3 COMMENTS
Design Conferences in 2019
28 DEC 2019
3 COMMENTS
Design Conferences in 2019
28 DEC 2019
3 COMMENTS


Loading with AMD/Require.js
Animation with
seriously.go()
Blur
Gaussian Blur
Directional Blur
Whip Pan
Camera
getUserMedia
Camera Source
Channel Mapping
Linear Color Transfer
Select
Transforms
Reformat
Camera Shake


Dynamic simulations and graphical depictions of autoregressive relationships.
| Version: | 1.2.1 |
| Depends: | R (≥ 3.0.0) |
| Imports: | ggplot2 (≥ <IP_ADDRESS>03), grid, gridExtra (≥ 2.0.0), MASS |
| Suggests: | DataCombine, knitr |
| Published: | 2015-12-19 |
| Author: | Christopher Gandrud [aut, cre], Laron K. Williams [aut], Guy D. Whitten [aut] |
| Maintainer: | Christopher Gandrud <christopher.gandrud at gmail.com> |
| BugReports: | https://github.com/christophergandrud/dynsim/issues |
| License: | GPL-3 |
| URL: | http://cran.r-project.org/package=dynsim |
| NeedsCompilation: | no |
| Materials: | README NEWS |
| CRAN checks: | dynsim results |
| Reference manual: | dynsim.pdf |
| Vignettes: |
An overview of dynsim |
| Package source: | dynsim_1.2.1.tar.gz |
| Windows binaries: | r-devel: dynsim_1.2.1.zip, r-release: dynsim_1.2.1.zip, r-oldrel: dynsim_1.2.1.zip |
| OS X binaries: | r-release: dynsim_1.2.1.tgz, r-oldrel: dynsim_1.2.1.tgz |
| Old sources: | dynsim archive |
Please use the canonical form https://CRAN.R-project.org/package=dynsim to link to this page.


Basic usage (single select):
Selected user is: {{ selectedUser.name }}
Basic usage (multi select):
Selected users are: {{ selectedUser.name }}
Multiple items with a search box (filter):
Selected users are: {{ selectedUser.name }}
Grouped elements: only multiselect
Multiselect with customized labels: only multiselect
Multiselect with hidden controls
Multiselect with hidden "no selection" label
Multiselect with ordered items
Multiselect track by some property:


‹ BlogAsh
BlogAsh Registration Form
Join the BlogAsh and start sharing your blog posts now.
{% csrf_token %}
Please sign up for BlogAsh
It's free!
Username:
{{ form.username }}
{% if form.errors %}
{{ form.username.errors.0 }}
{% endif %}
Email:
{{ form.email }}
{% if form.errors %}
{{ form.email.errors.0 }}
{% endif %}
Email is already exist.
Password:
{{ form.password1 }}
Confirm password
{{ form.password2 }}
{% if form.errors %}
Password doesn't matches
{% endif %}
Password does not match.
Forgot Your Password?
Already a Member?
Go and log in


This visualization shows the number of residents per 100,000 from each New York City police precinct that are currently a sentence in New York State prison. Clear patterns emerge from this data where precincts that are very high and those that are very low tend to be clustered near each other.
This map shows that there tend to be clusters of police precints with similar values, such as lower Manhatten, which has very high density and very low incarceration. There map indicates that there is not a clear correlation between the two variables as there is a fairly even distribution of the different quadrants.
This map indicates that there are significant differences in educational attainment based on different areas of the county. There is a not a clear spatial pattern for the census tract areas with higher or lower education attainment.
This is an interactive web application that allows users to compare visualizations relating to housing demographics in Ohio at the county level. Quantile, equal interval, and jenks natural breaks classifications are available. Spatial patterns emerge strongly in some visualizations, while in others there is no discernable pattern of the spatial distribution of data. Some moderately strongly relationships emerge when comparing some of the variables.
This interactive web map allows users to explore the data on 20,000+ trees in Iowa City that were captured in a survey from 2019. Two of the major predictors of risk to personal property in the event of a major storm, condition and diameter at breast height are captured through point color and point size respectively.


CLOSE ×
Home
Winners
Nominees
Collections
Professional directory
Jobs & Talent
Blog
About Us
Conferences
☰ MENU
Awards
{{ user.username }}
{% if user.is_authenticated %}
☰
Profile
Activity
Collections
Notifications
Settings
Logout
{% else %}
Login
{% endif %}
SUBMIT YOUR SITE!


{% extends 'layout/layout_home.html' %} {% block title %}Error! Halp! · {{ block.super }}{% endblock %} {% block content %}
There was an unexpected error. Please email<EMAIL_ADDRESS>with details.


|
Class Summary |
| Base64 |
This class provides encode/decode for RFC 2045 Base64 as defined by
RFC 2045, N. |
| CGIProcessEnvironment |
Encapsulates the CGI Process' environment and rules to derive
that environment from the servlet container and request information. |
| CharsetMapper |
Utility class that attempts to map from a Locale to the corresponding
character set to be used for interpreting input text (or generating
output text) when the Content-Type header does not include one. |
| CookieTools |
Cookie utils - generate cookie header, etc |
| CustomObjectInputStream |
Custom subclass of ObjectInputStream that loads from the
class loader for this web application. |
| DateTool |
Common place for date utils. |
| DOMWriter |
A sample DOM writer. |
| Enumerator |
Adapter class that wraps an Enumeration around a Java2
collection classes object Iterator so that existing APIs
returning Enumerations can easily run on top of the new collections. |
| FastDateFormat |
Fast date formatter that caches recently formatted date information
and uses it to avoid too-frequent calls to the underlying
formatter. |
| FastHttpDateFormat |
Utility class to generate HTTP dates. |
| HexUtils |
Library of utility methods useful in dealing with converting byte arrays
to and from strings of hexadecimal digits. |
| InstanceSupport |
Support class to assist in firing InstanceEvent notifications to
registered InstanceListeners. |
| IOTools |
Contains commonly needed I/O-related methods |
| LifecycleSupport |
Support class to assist in firing LifecycleEvent notifications to
registered LifecycleListeners. |
| MD5Encoder |
Encode an MD5 digest into a String. |
| MIME2Java |
MIME2Java is a convenience class which handles conversions between MIME charset names
and Java encoding names. |
| ParameterMap |
Extended implementation of HashMap that includes a
locked property. |
| ProcessEnvironment |
Encapsulates the Process environment and rules to derive
that environment from the servlet container and request information. |
| ProcessHelper |
Encapsulates the knowledge of how to run a CGI script, given the
script's desired environment and (optionally) input/output streams
|
| Queue |
A simple FIFO queue class which causes the calling thread to wait
if the queue is empty and notifies threads that are waiting when it
is not empty. |
| RequestUtil |
General purpose request parsing and encoding utility methods. |
| ResourceSet |
Extended implementation of HashSet that includes a
locked property. |
| ServerInfo |
Simple utility module to make it easy to plug in the server identifier
when integrating Tomcat. |
| Strftime |
Converts dates to strings using the same format specifiers as strftime
Note: This does not mimic strftime perfectly. |
| StringManager |
An internationalization / localization helper class which reduces
the bother of handling ResourceBundles and takes care of the
common cases of message formating which otherwise require the
creation of Object arrays and such. |
| StringParser |
Utility class for string parsing that is higher performance than
StringParser for simple delimited text cases. |
| URL |
URL is designed to provide public APIs for parsing
and synthesizing Uniform Resource Locators as similar as possible to the
APIs of java.net.URL , but without the ability to open a
stream or connection. |
| URLEncoder |
This class is very similar to the java.net.URLEncoder class. |
| XMLWriter |
XMLWriter helper class. |


Page maintained by Ke-Sen Huang.
If you have additions or changes, send an e-mail.
Note that when possible I link to the page containing the link to the actual PDF or PS of the preprint.
I prefer this as it gives some context to the paper and avoids possible copyright problems with direct linking.
Thus you may need to search on the page to find the actual document.
the Eurographics Digital Library Link for the paper
Paper Abstract
Author Preprint
Paper Video
Paper Presentation
Paper Images
Paper Data or Auxiliary Material
Demo Program or Source Code
Related Links
Changelog
Session Illustration & Stylization
- Color Me Noisy: Example-based Rendering of Hand-colored Animations with Temporal Noise Control
-
Jakub Fiser,
Michal Lukac,
Ondrej Jamriska,
Martin Cadik,
Yotam Gingold,
Paul Asente,
Daniel Sykora
- Vectorising Bitmaps into Semi-Transparent Gradient Layers
-
Christian Richardt,
Jorge Lopez-Moreno,
Adrien Bousseau,
Maneesh Agrawala,
George Drettakis
- AutoStyle: Automatic Style Transfer from Image Collections to Users' Images
-
Yiming Liu,
Michael Cohen,
Matt Uyttendaele,
Szymon Rusinkiewicz
Session GPU rendering
- Bilinear Accelerated Filter Approximation
-
Josiah Manson,
Scott Schaefer
- C-LOD: Context-aware Material Level-of-Detail applied to Mobile Graphics
-
George Alex Koulieris,
George Drettakis,
Douglas Cunningham,
Katerina Mania
- Massively Parallel Hierarchical Scene Processing with Applications in Rendering
-
Marek Vinkler,
Jiri Bittner,
Vlastimil Havran,
Michal Hapala
Session Video & Textures
- Semi-Automated Video Morphing
-
Jing Liao,
Diego Nehab,
Hugues Hoppe,
Pedro Sander
- User-Assisted Video Stabilization
-
Jiamin Bai,
Aseem Agarwala,
Maneesh Agrawala,
Ravi Ramamoorthi
- Interactive Parameter Retrieval for Two-Tone Procedural Textures
-
Lena Gieseke,
Sebastian Koch,
Jens Uwe Hahn,
Martin Fuchs
Session Reconstruction & Denoising
- Layered Reconstruction for Defocus and Motion Blur
-
Jacob Munkberg,
Karthik Vaidyanathan,
Jon Hasselgren,
Petrik Clarberg,
Tomas Akenine-Moller
- Robust Image Denoising using a Virtual Flash Image for Monte Carlo Ray Tracing
-
Bochang Moon, Jong Yun Jun, Jong Hyeob Lee, Kunho Kim,
Toshiya Hachisuka,
Sung-Eui Yoon
Session Sampling
- Error analysis of estimators that use combinations of stochastic sampling strategies for direct illumination
-
Kartic Subr,
Derek Nowrouzezahrai,
Wojciech Jarosz,
Jan Kautz,
Kenny Mitchell
- Spherical Fibonacci Point Sets for Illumination Integrals
-
Ricardo Marques,
Christian Bouville,
Mickael Ribardiere,
L. P. Santos,
Kadi Bouatouch
- Importance Sampling Microfacet-Based BSDFs using the Distribution of Visible Normals
-
Eric Heitz,
Eugene D'Eon
Session Spectral & Wave rendering
- Spectral Ray Differentials
-
Oskar Elek,
Pablo Bauszat,
Tobias Ritschel,
Marcus Magnor,
Hans-Peter Seidel
- Full Wave Modeling of Light Propagation and Reflection
-
A. Musbach, G. W. Meyer,
Fernando Reitich,
S. H. Oh
- Hero Wavelength Spectral Sampling
-
Alexander Wilkie,
Sehera Nawaz,
Marc Droske,
Andrea Weidlich,
Johannes Hanika
Session Light & Reflectance
- A Physically-Based BSDF for Modeling the Appearance of Paper
-
Marios Papas,
Krystle de Mesa,
Henrik W. Jensen
- Robust Fitting on Poorly Sampled Data for Surface Light Field Rendering and Image Relighting
-
Kenneth Vanhoey,
Basile Sauvage,
Olivier Genevaux,
Frederic Larue,
Jean-Michel Dischler
- Multiple light source estimation in a single image
-
Jorge Lopez-Moreno,
Elena Garces,
Sunil Hadap,
Erik Reinhard,
Diego Gutierrez
Session Visibility
- Visibility Silhouettes for Semi-Analytic Spherical Integration
-
Derek Nowrouzezahrai,
Ilya Baran,
Kenny Mitchell,
Wojciech Jarosz
- Probabilistic Visibility Evaluation using Geometry Proxies
-
Niels Billen,
Ares Lagae,
Philip Dutre
kesen.huang@gmail.com


Description
Hangout? aims to connect new people with common interests and help them save money by leveraging group deals on activities.
Motivation
There are times when I am given discounted tickets to a group activity such as a buffet or escape room but I can't fulfill the minimum headcount. Hangout was created with this issue in mind so people can make use of the deals that they have, which otherwise would have been left unused. The side effect of this app is allowing people to form new connections (totally turning into a dating app).
Technologies Used
React(Create React App), AJAX(Axios), Bootstrap
PostgreSQL/Sequelize, Node/Express
GitHub, Heroku, Firebase storage, Netlify
Main Features
- A user (the creator) can create/edit/delete an activity.
- A user (the participant) can join/leave an activity.
- Participants and the creator can chat once they join an activity.
ERD
Main Learning Points
- Integrated 2 separate repositories into a full-stack application - 1 repository for frontend Create React App and 1 repository for backend Express/Node/Postgres.
- Implemented a real-time messaging feature using Firebase cloud database (NoSQL).
- Setting cookies across origins (backend to frontend server).
- Implemented Deep-linking using React Router Dom npm package.
- Implemented useContext and useReducer React hooks to share states among multiple levels of components without having to pass the states down as props.


Handde1096.github.io
Learn more about the latest Microsoft Business Applications release. See how new features and updates to modern, intelligent business applications Business Applications Release Microsoft Dynamics. Bei uns finden Sie Bedienungsanleitungen zu vielen Produkten. Kameras, Waschmaschinen, HiFi Geräte, u.v.m. Einfach mal reinschauen. Map multiple locations, get transit/walking/driving directions, view live traffic conditions, plan trips, view satellite, aerial and street side imagery. Verstärker Effects Gitarren Live Sound Mobile Computer Add Amps. Powercab Powercab 112 Powercab 112 Plus; Spider V Spider V 240 Line 6, and Ampeg. Bing Maps - Directions, trip planning, traffic cameras. Frost Sullivan (@Frost_Sullivan) Twitter.
Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking. The latest Tweets from Frost Sullivan #mobility is changing at a owl.li/R8hx30mCbnM #artificialintelligence #automation #sps_live. A product designed for electro-mobility; Aptis costs about the same to own as a diesel bus, but it has a longer life span and offers a cleaner. A 104-year-old Australian scientist who had campaigned for the legalization of assisted dying in his home country has ended his life at a Swiss.
Life. Keep up with ABB. See Energy, Utilities, Transport, Infrastructure, Oil, gas amp; chemicals, ABB is pushing the boundaries of e-mobility.
LIVE Services Stimmen Navigations-Apps Smart Mobility Tachograph Manager TomTom Telematics. Flottenmanagement. We improve the way we work and live. Proactive Notifications amp; Mobility, Cloud Contact for free. See who you know at West Corporation. Hier sollte eine Beschreibung angezeigt werden, diese Seite lässt dies jedoch nicht.
Aptis: a new experience of electro-mobility Alstom.
Life amp; Mobility Newbug Gebrauchsanweisung. ICBA, Washington, District of Columbia. 5,152 likes · 194 talking about this · 51 were here. The Independent Community Bankers of America is the nation. David Goodall, 104-year-old scientist, takes Welcome to Microsoft Cloud on YouTube. . and the company is taking its knowledge of urban mobility to the next level


| DOSE: T+ 0:00 |
2 tablets |
oral |
Dimenhydrinate |
|
| T+ 0:45 |
52 mg |
oral |
AMT |
(powder / crystals) |
My life is full of remarkable chance encounters which sometimes become dictate significant and fundamental changes in how I make myself. I pick up a book and read it, end up in Seattle. Fall in love, wind up in graduate school. In this case, I went out for some booze and fell in love with psychedelics.
I asked a friend J, (who later became a lover) out for a drink one evening, and since she already had plans with her boyfriend S (who later became one of my favorite people) she invited me along. At this point in my life, I'd tried only a bit of pot (which I dislike) some acid, and some ecstacy (which I enjoy, but was reaching the end of what it could teach me). Somewhere in the conversation AMT came up. Now I had heard a bit of this wonder tonic and mentioned that it was something that I'd like to try someday. Imagine my surprise when he suggested that I do some with him the next Saturday.
I showed up at his apartment on a bright crisp morning with one other Friend M. This was the winter of 2000, the beginning of the end of the Internet economy. I'd just heard the first of the rumors of company wide layoffs and had a bit of nervousness in me that I might be among them. I'd assumed (thinking of acid and mdma) that the drug would be a good diversion from this. It turned out to be much more.
We all took a couple of dramamines (i'm told that papaya enzyme pills are good too, but I don't know which enzyme) as soon as we showed up, and then the amt about 45 minutes later in doses from 40 to (I think 80). S and J threw up about an hour in (I'm told that if you fast, the drug will be safely in your blood within half an hour and that one can throw up and still get the effects, but I just don't like throwing up). M and I experienced only a bit of nausea. My nausea went away at exactly 2 hours on the trip clock and as I looked up, I realized that the ceiling was moving.
We sat around for a bit and then started walking. We wound up on the top of Capitol hill (in Seattle) and did a fair amount of trying to figure out how to get into a tower in a park there. We finally came to the conclusion that the chain and padlock on the door meant that we were not going to go in. M and S had been very chatty this whole time and J and I just followed along behind.
I'm not sure when, but at some point the whole issue of layoffs and financial security came into focus. I was made aware somehow that it was really quite a trivial issue. I had my friends, my health, and if necessary the people that I care about would make sure that I had a roof over my head and food to eat.
We had a nice walk back to M's house as the sun set behind the mountains. Everything was beautiful and fascinating in a child-like way. We got into M's hottub when we got there. Dear gods did it feel good to be wet. Warm... slippery... and surrounded by cold air. Watching the vapors of my breath disperse into the night was quite fascinating. M and S were still talking a mile a minute, sometimes asking me deep emotional questions which I would answer very briefly. Talking seemed too difficult and not necessary to me and J and I mostly stayed quiet. We got out of the hottub, watched a movie (Head). People came and went from M's house through the evening. Started to wind things down (at about 2 am) with a bit of nitrous at M's house. Then a bit more at S's flat where I fell asleep (it was about 6 am by then). The total trip time was a respectable 18 hours.
The thing I love most about this drug is the leisurely, unhurried feeling about it. It has some of the warmth of mdma, but none of the sense that I have to get all my snuggling, talking, and smooching done in a few hours. It has some of the hallucinogenic properties of lsd, but unlike lsd, it doesn't feel like the drug is pushing me anywhere so much as following me. When I finally woke up late the next day I felt happy and refreshed. The trees and the sky were very beautiful and I'm generally in love with life. This is a good, good compound; full of warmth and good lessons.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


With Mule 3.7.0, a new modeling and transformation language was introduced, DataWeave. This is more powerful than its predecessor DataMapper which is marked as deprecated in Mule 3.7
DataWeave component appears as “Transform Message” in Mule Anypoint Studio under Mule Palette. DataWeave in Mule 3.7 supports processing of JSON, Java, CSV, EDI, XML, Pojo etc. One format that was missing in DataWeave support was Fixed Width text format. As per the beta release notes of Mule 3.8, DataWeave in Mule 3.8 is going to support fixed width text files. But for many of us, it may not be possible to upgrade Mule server for this.
So How to Process fixed width text file with DataWeave in Mule 3.7?
So for those who use Mule 3.7 with DataWeave and still want to process fixed width text files, here is the workaround for it.
Let’s consider below fixed with sample text file –
001MONSTARTWORK 001TUEPROGRESSWORK 001WEDTAKEABREAK 001THURESUMEWORK 001FRIFINISHWORK 001SATCHILLDOWN 001SUNGRABABEER
Record definition is –
Id - Start Position: 0, length: 3 Day - Start Position: 3, length: 3 Shout - Start Position:6, length: 13
Here is our sample flow that reads the file from input directory, applies dataweave transformation and writes the generated file to output directory.
XML Flow –
<flow name="DW-FixedWidth-Processing"> <file:inbound-endpoint responseTimeout="10000" doc:name="File" moveToDirectory="output" path="input"/> <dw:transform-message doc:name="Transform Message" metadata:id="44c29528-4f2b-4aa6-a454-bf2fe7b8de57"> <dw:input-payload doc:sample="string_1.dwl"/> <dw:set-payload><![CDATA[%dw 1.0 %output application/json --- (payload splitBy "\n") map { Id:$[0..2], Day:$[3..5], Shout:trim $[6..18] } ]]></dw:set-payload> </dw:transform-message> <file:outbound-endpoint path="output" outputPattern="output.txt" responseTimeout="10000" doc:name="File"/> </flow>
Let’s look at the DataWeave code now –
%dw 1.0 %output application/json --- (payload splitBy "\n") map { Id:$[0..2], Day:$[3..5], Shout:$[6..18] }
As our payload is going to be file content i.e. String, we will split the content with new line char “\n”. Note the parenthesis used for `payload splitBy “\n”` which makes the output of that expression, input for map. Now, we have split our payload by newline so inside map we will be reading each line from our file and can be accessed with default alias $.
As per our record definition, Id field starts at 0 and is of 3 character long. So we map our Id by using Range Selector on String $[0..2] which is $[startIndex..endIndex]. Similarly we can select Day and Shout also.
We have intentionally used “\n” instead of “\r\n” to make sure our code works on windows as well as UNIX. Note that, for the last field our actual file content ends at 18th position but on windows formatted files, there should be “\r” at 19th position. As we will only map until last fixed position, “\r” should not be a problem. In case you see carriage returns in output then most probably you have included this last character in your output too.
Now, we have seen how we can split the fields in dataweave. You can actually write any logic on the fields. For example, to avoid any empty spaces in shout field we can use trim function.
shout: trim $[6:18]
Here is our output from above transformation –
[ { "Id": "001", "Day": "MON", "Shout": "STARTWORK" }, { "Id": "001", "Day": "TUE", "Shout": "PROGRESSWORK" }, { "Id": "001", "Day": "WED", "Shout": "TAKEABREAK" }, { "Id": "001", "Day": "THU", "Shout": "RESUMEWORK" }, { "Id": "001", "Day": "FRI", "Shout": "FINISHWORK" }, { "Id": "001", "Day": "SAT", "Shout": "CHILLDOWN" }, { "Id": "001", "Day": "SUN", "Shout": "GRABABEER" } ]
With this example, we learned how to consume fixed width text file with DataWeave in Mule 3.7.
Next see how to create fixed width flat file using DataWeave in Mule 3.7
Feel free to let me know what you think or any questions, I will be happy to help.


{m}
Pie Charts only with CSS3 (no image, no JS)
Nothing is impossible!
Full Mode max 100% min 50%
Half Mode max 50% min 0%


Honiana White and Maria Wilson-White
Welcome to Enter Faith Ministries! This is a place where you will see how faith changes lives. Our names are Honiana White and Maria Wilson-White, and we have made it our mission to share the love of God and see it transform the lives of others. Our experience shows us that as people gain clarity in who they were created to be, freedom walks into their lives and they set off on a journey that engages them in a purposeful walk with God.
This website is one way you can connect with Enter Faith Ministries. You can also find us on Facebook and YouTube. The links to these are at the bottom of this page along with the links to our personal biographies and our sponsorship page.
Nga mihi


ADDITIONS AND CHANGES TO WEB SITE
Click here to go to
bottom of this list of Modifications to the site
(You can
search any file or page on this web site by following the steps found by
clicking on Search.)
FOR OUR FREQUENT AND NOT-SO-FREQUENT
VISITORS -- Everyone is Busy!! -
right? We realize that you may not have the time or interest to revisit every
nook and cranny of the web site just to find out if anything has been added or
changed. Yet, you are pretty sure that the site does get changed often and you
do not want to miss anything. After all, the MCC of OGS web site IS a major
source of genealogical information for those interested in Monroe County
ancestors and descendants. And, that is probably why you are visiting in the
first place.
Well, here is something that hopefully will
save you time and also assure that you do not miss anything of interest or
importance.
Below is a list of each significant addition
or change to the web site. These modifications are listed with the dates that
they were made. Also, a hyperlink is included so that you can quickly go to the
addition or change without having to try to remember where it is on the site.
Note: Surnames and Queries are added to the
site on an almost daily basis. Notification of the addition of Surnames and
Queries are not included on in this list of modifications. Please consult the
Surnames and Queries list for new additions. They are arranged alphabetically
on the S & Q list.
Please let us know what you think of this
service -- use the convenient Guest Book
to register your comments.
- June
4, 2001 .. added a link to the 1812 Belmont County tax list
- June
6 added alphabetical listing of Monroe County cemeteries
- June
8 added a link from the Wise Cemetery to the list of names on Andy Morris site
- June
8 added a link from the Hamilton-Burkhart Cemetery to the list of names on Andy Morris site
- June
8 added the Morris family tree link
- June
8 added the link to the Mozenas family tree site
- June
8 added a Time-Line to the site
- June
11 added three interactive forms. The three forms are: (1) an on-line
Membership
Application Form, (2) an on-line
Surname
Submission Form, and ( 3) an
on-line Query Form.
- June
14 added a counter to count the
number of site visitors
- June
19 Updated First and Pioneer Families Banquet information
- June
19 added the Guest Book
- June
21 added the "Additions and Changes" list to the web site
- June
21 added story, "Early History of Sardis" (written in 1877)
- June
23 added Nalley family tree
- June
24 added Mysteries section
- June
24 added story of Wetzel Family
- June
24 added the mystery of the found, Lost Cemetery
- June
25 added Bracken Ridge Cemetery link
- July
5 .. added William
Drum article
- July
5 .. added Adam Drumm murder story
- July
7 .. added Early Settlements story
- July
7 .. added Early
Settlers, by township
(incomplete)
- July
7 .. added ZANE'S
TRACE OPENED INTERIOR OF OHIO
- July
7 .. added Johnson
Brothers story
- July
11 added THE
GERMAN AND SWISS HERITAGE OF MONROE CO., OH
- July
13 added news item; Trip to Washington D.C. (October 2 through 5, 2001)
- July
16 added two CDs to list of MCC of OGS CDs in Library
- July
16 more information on the Trip to Washington D.C. (October 2 through 5, 2001)
- July
16 added link to East Sunsbury Cemetery
- July
16 added Surname
List
- July
17 added Spicer to list of mysteries
- July
17 notice of availability of Benton and Washington Townships Cemetery Book
- July
17 notice of booth at Monroe County Fair
- July
17 phone
number change for Karen Romick,
MCC of OGS Pres. to 740/ 483-1481
- July
17 added Highlights
of 2001 Navigator
- July
17 added story of Crow Family
- July
20 added story of the Big Indian
- July
20 added HODGE family tree
- July
22 added JUNG
/ YOUNG family tree
- July
22 added FRANK family tree
- July
23 added Special
Notices, Announcements, and Miscellany
- July
25 added Carson
Cemetery
- Aug
21 added Project notice Early Marriage Records of Monroe Co.
- Aug
21 added List of Past MCC of OGS Officers
- Aug
21 added several new Announcements
- Aug
21 added to Mysteries, the 1926 coal
mine explosion
- Aug
21 added several new items of News
- Aug
21 added new information about the Hines
family tree
- Aug
24 added Pfeiffer, North, Niehart, Brubach, etc. family tree
- Aug
24 added link to Henry Burke articles on Black history
- Aug
25 added solution to Spicer
mystery
- Sept
9 added Special request from Andrea Kindelberger
- Sept
11 .. added link to Denbow Newsletters
- Sept
12 .. added notice of Attack on United States
- Sept
22 .. added the availability of the Benton and
Washington Townships Cemetery Book
- Nov
2 . added information about the Matthess Cemetery
- Feb
17, 2002 .. added new Family Tree links
- Feb
17 added Fox
Hollow School, 1894 photo
- Feb 17 ... . added summary of the February 17, 2002 MCC of OGS meeting
- Mar
13 ... added new publication, Family Research in
Monroe County, Ohio Volume 6 by Catharine Fedorchak
- May 5 added Making
of Monroe County
- May 5 added several new Stories
- July 1 .. added paper titled Our German-Speaking
Heritage by Karen Romick
- July 2 . added instructions for searching this web site.
- July 2 . added Obituaries
section to web site
- July 2 . added Wills
section to web site
- July 2 . added guidance for contacting
webmaster to home page (bottom)
- July 9 . added Photos
section
- July 14 ... added several old photos to the Photos section
- July 17 ... . added 1930 Monroe County Census
to the CD and Microfilm
sections
- July 17 ... . added summary of the July 21, 2002 MCC of OGS meeting
- Aug 14 ... added collection of 120 photos of ancestors from Graysville and vicinity
- Aug 14 ... added Monroe
County tax records for 1821
- Aug 14 ... added a link to an alternate
story about William Spicer
- Aug 14 ... added a second link to an
alternate story about William
Spicer
- Sept 7.. ... added a database of latitudes & longitudes for specific sites
- Sept 11 ... added notice of availability of Wayne Township
Cemetery Inscriptions
- Oct 25 added possible Piatt
photo and lineage information
- Nov 29 ... added announcement Catharine Fedorchak's genealogy book Volume 7
- Dec 2 . added Monroe Countians in the 7th WV Infantry
- Dec 22 ... modified family trees to include only non-living
people and data
- Dec 27 ... added several photos of Lewisville,
Ohio sites
- Jan 3, 2003 . ... added several 1890 Monroe County Veterans List
- Feb 1 .. .. added section Marriage, etc. that includes births,
reunions, and other events
- Feb 1 .. .. added search engine to web site
see example on home page
- Feb 1 .. .. added Table of
Contents
- Feb 1 .. .. began the process of linking pictures of ancestors to the family trees
- Feb 10 ..,... added Maps and directions to Monroe Public
Library in Woodsfield, OH
- Mar 10 ..,... added Oil/Petroleum
- Mar 10 ..,... added Monroe County Photos Section
- Mar 10 .. added Death
Records
- Aug 4 ...,... added Books
- Aug 4 ...,... added Biographical
Sketches
- Aug 8 ...,... added Effects of the Changes in the Ohio Vital Records
Laws by Diane VanSkiver Gagel, 1st V.P.,
OGS
- Jan 9, 2004 . .. during the past few months a
large number of Family Trees have been added
to the website
Click
here to go to the top of this Modifications List
Use the Back-arrow
at the top of this web-page to return to the Previous Page.


Toggle navigation
Registration for DataHack 2019 is closed
See you next year
Login
Learn more about DataHack 2019


Result for covid 19
Region: {{data['region'] ['name']}}
Average age population: {{data['region']['AvgAge'] }}
Average daily income in USD $: {{data['region']['AvgDailyIncomeInUSD']}}
Average daily income population: {{data['region']['AvgDailyIncomePopulation']}}
Reported cases: {{data['reportedCases']}}
Period type: {{data['periodType']}}
time to elapse: {{data['timeToElapse']}}
total number of hospital beds: {{data['totalHospitalBeds']}}
Impact of covid 19
Currently infected people: {{impact['currentlyInfected']}}
Infections by {{data['timeToElapse']}} days : {{impact['InfectionByRequestedTime']}}
severe cases by {{data['timeToElapse']}} days: {{impact['severeCasesByRequestedTime']}}
Hospital beds that will be available: {{impact['available_beds']}}
cases needing ICU by {{data['timeToElapse']}} days: {{impact['casesForIcuByRequestedTime']}}
cases for ventilators in {{data['timeToElapse']}} days : {{impact['casesForVentilatorsByRequestedTime']}}
amount in dollars losses: {{impact['dollarsInFlight']}}
Severe Impact of covid 19
Currently infected people: {{severeImpact['currentlyInfected']}}
Infections by {{data['timeToElapse']}} days : {{severeImpact['InfectionByRequestedTime']}}
severe cases by {{data['timeToElapse']}} days: {{severeImpact['severeCasesByRequestedTime']}}
Hospital beds that will be available: {{impact['available_beds']}}
cases needing ICU by {{data['timeToElapse']}} days: {{severeImpact['casesForIcuByRequestedTime']}}
cases for ventilators in {{data['timeToElapse']}} days : {{severeImpact['casesForVentilatorsByRequestedTime']}}
amount in dollars losses: {{severeImpact['dollarsInFlight']}}


Designed by Dr. Lawrie Brown, of the Australian Defence Force Academy with assistance from Dr. Josef Pieprzyk (who designed the S-boxes) and Dr. Jeniffer Seberry, and named after the Norse god of trickery and cunning, LOKI97 is a successor to the 64-bit block ciphers LOKI89 and LOKI91. (Fittingly enough, Dr. Brown spent part of the sabbatical year during which he designed it at a University in Norway!)
A paper (in Adobe Postscript format) describing LOKI97 is available at
http://www.adfa.oz.au/~lpb/research/loki97/
but a full description is also presented here, for the convenience of those without a convenient means to view or print items in Postscript form.
LOKI97 is an iterative block cipher with 16 modified Feistel rounds.
In each round, two 64-bit subkeys are added (yes, using normal 64-bit addition including carries) to the right half of the 128-bit block. Its value, after the first subkey is added, but before the second subkey is added, is used as the input to the f-function for that round. This is a nicely symmetrical way of both modifying the input to the f-function and modifying the right half of the block as well.
A third 64-bit subkey is used as an input to the f-function; it is not directly added or XORed to the right half of the block or a transformed version of it, but instead controls the f-function's nonlinearity. For purposes of the key schedule, this 64-bit subkey is the second one; the two added to the right half are the first and third, respectively. The output of the f-function is, as in DES, XORed to the left half of the block.
Unlike the f-function in DES, which includes the step of XORing the 48-bit subkey with the right half of the block after the expansion permutation, the addition of subkeys to the right half of the block is, in LOKI97, performed outside the f-function, as we have seen.
The first step in the f-function involves applying the least significant and rightmost (numbered from 31 to 0 in the convention used in the paper describing LOKI97) 32 bits of the subkey input (the entire 64-bit subkey input is called input B to the f-function) to the current value of the right half of the block (after one of the two additions, as noted above, and which is called input A to the f-function) as follows: a 1 bit in the 32 bits of subkey input used indicates that corresponding bits of the two halves of the right half of the block are to be swapped. A bit swap of this nature can be easily implemented by means of AND and OR instructions, and was earlier used in the ICE block cipher.
LOKI has two distinct S-boxes; S1 contains 8192 values from 0 to 255, and S2 contains 2048 values from 0 to 255. After the expansion permutation which is the next step, these S-boxes will be used in the order:
S1, S2, S1, S2, S2, S1, S2, S1
to produce a 64-bit output.
So the expansion permutation will produce groups of 13, 11, 13, 11, 11, 13, 11, and 13 bits corresponding to each byte output from the bit-swapping step.
This is done by appending to the beginning of each byte either 5 or 3 bits, as needed, from the least significant part of the preceding byte (going around the circle to append the least significant 5 bits of the last byte to the front of the first one). This is simpler than the expansion permutation of DES, which augmented each nybble of the input with one bit taken from each of the two adjacent nybbles.
The output of the expansion permutation is then input to the S-boxes.
The output of the S-boxes, considered as consisting of bits 63 to 56 from the first S-box, bits 55 to 48 from the second S-box, and so on, is then permuted by the following permutation P:
7, 15, 23, 31, 39, 47, 55, 63, 6, 14, 22, 30, 38, 46, 54, 62, 5, 13, 21, 29, 37, 45, 53, 61, 4, 12, 20, 28, 36, 44, 52, 60, 3, 11, 20, 27, 35, 43, 51, 59, 2, 10, 18, 26, 34, 42, 50, 58, 1, 9, 18, 25, 33, 41, 49, 57, 0, 8, 16, 24, 32, 40, 48, 56
where this listing is of the output bits, each number showing from which input bit that output was obtained. (Remember, the input bits are numbered from 63 down to 0 here.)
Finally, the 32-bit result is again submitted to the S-boxes, but this time in the following order:
S2, S2, S1, S1, S2, S2, S1, S1
with the additional five or three more significant bits of input required for each S-box supplied by the leftmost or most significant half of the subkey input to the f-function. (One starts from the left, and takes the leftmost bits of the subkey input for this purpose.)
Each entry in the two S-boxes is equal to the cube of the one's complement of that entry's position, modulo a polynomial in the Galois fields GF(2^13) for S1 and GF(2^11) for S2.This technique is more familiar from calculating cyclic redundancy checks; a binary number, such as 1101, is considered to be a polynomial:
1 * x^3 + 1 * x^2 + 0 * x + 1in this case, the coefficients of which are modulo 2 numbers that can only be either 0 or 1.
For S1, the polynomial is<PHONE_NUMBER>0001, and for S2 the polynomial is<PHONE_NUMBER>11. In each case, the polynomial is one bit wider than the S-box inputs, so it can be used, shifted to the right if necessary, to XOR away every bit by which the cube extends past the width of the S-box input. After that is done, only the last 8 bits of the result are used as the S-box entry, but the reduction from either 13 or 11 bits to 8 is done by simple chopping.
Subkeys for LOKI97 are generated by a modified version of the cipher itself.
The input to the subkey is considered to be composed of four 64-bit pieces, called K4, K3,K2, and K1. When a 256-bit key is used, its first 64 bits become K4, its second K3, and so on.
A 192-bit key is converted to a 256 bit key as follows: the given key becomes the first 192 bits of the 256-bit key to be used, and the last 64 bits are calculated by using the LOKI97 f-function, with the first 64 bits acting as input A (the "righthalf" input) and the second 64 bits acting as input B (the "subkey" input).
A 128-bit key is converted to a 256 bit key as follows: the given key becomes the first 128 bits of the 256-bit key to be used, the third group of 64 bits (K2) is the f-function of the second 64 bits submitted as input A and the first 64 bits submitted as input B, and the fourth group of 64 bits (K1) is the f-function calculated with the first 64 bits submitted as input A and the second 64 bits as input B, exactly as in the 192-bit case.
Once the input key is in 256-bit form, as K4, K3, K2, and K1, the 48 subkeys used are calculated as follows:
The LOKI97 f-function is calculated with the following inputs: the A input is K1 plus K3 plus the hexadecimal constant 9E3779B97F4A7C15 multiplied by the number of the subkey generation round (from 1 to 48), and the B input is K2.
K4 is XORed with this result, and the result of this XOR is the subkey generated as well.
Then, before the next f-function calculation, the subkeys are rearranged: the old K1 value becomes the new K2 value, K2 goes to K3, K3 goes to K4, and K4, after the XOR (the same as the subkey value) goes to K1.
For round 1, subkey 1 is what is first added to the right half of the block; subkey 2 is the B input to the f-function, and subkey 3 is what is added secondly to the right half of the block. This pattern continues with the remaining subkeys for theremaining rounds.
For decryption, subkey 1 becomes the additive inverse of subkey 48, subkey 2 becomes subkey 47, subkey 3 becomes the additive inverse of subkey 46, and this repeats for each group of three subkeys.
LOKI97 was the first submission to the Advanced Encryption Standard process to be publicly disclosed by its authors. Unfortunately, it was also the first one to be found to have flaws.
The fixed S-boxes, which took 11 or 13 bits of input, consisting of three or five supplemental bits "borrowed" from the previous byte, plus the eight bits of the byte for which they provided a substitute, simply consisted of apparently random bits. While their contents were designed to have some good properties, the fact that the S-boxes did not contain eight or thirty-two successive permutations of the numbers from 0 to 255 meant that the S-box output was biased. An attack was found by Vincent Rijmen and Lars Knudsen that exploited this. (Note that a key-dependent S-box, like that of Blowfish, does not need to be composed of bijections. Wide fixed S-boxes, as used in CAST-128 and MARS, also don't appear to face that constraint.)
The structure of the S-boxes was only a problem because in the second S-box stage, the extra bits of input to the S-boxes came only from the subkeys, so the biases in the S-boxes would tend to leak those subkey bits.
In DES, additional efficiency can be gained by storing a table of the S-box values after they have gone through permutation P. Here, the same S-box goes into the one fixed permutation, after the first S-box stage, at different places, and then the second S-box stage is not followed by a permutation. This complicates implementation, and loses the additional diffusion an extra permutation layer (which would be available "for free", if identical) would provide.
Next
Chapter Start
Skip to Next Section
Table of Contents
Main Page


Congratulations!
You've been HankKroll'ed.
It looks like the page you were looking for is not here!
Return to site.


--- layout: post title: "Bootcamps in Cyprus and Jordan" authors: ["Alan O'Cais"] date: 2014-07-17 time: "15:00:00" tags: ["Cyprus Institute", "SESAME", "LinkSCEEM", "Bootcamps"] ---
Last month, we held two bootcamps in Cyrpus and Jordan organised by the LinkSCEEM project. Both camps were part of larger workshops, with the final two days of the workshop in Cyprus focussed on the OpenMP and OpenACC APIs for shared-memory multi-processing and accelerators. It was held June 10-13 with 35 participants coming from 6 different countries (Cyprus, Greece, Lebanon, Jordan, Israel, and Egypt) with all the non-local participants being funded by the project.
In Jordan the workshop was specifically organised for the user community of the SESAME synchrotron light facility with topics related to high performance computing (HPC) and its applications to synchrotron radiation data analysis. It had more than 30 participants from 5 countries.
In both cases the audiences had a very broad skill level and some found the introductory content a little shallow when there wasn't sufficient time to work on examples. Additionally, the self-assement of skills by the participants were not always consistent. The problem with organising such events is that the possible number of workshops is strictly limited since they rely heavily on external funding (and external instructors). On top of that, the HPC target audience is so broad that it's difficult to settle on a program that has overlap with the interests of the entire group (some are developers, some are users, some are just curious). This leads to the situation where we knowingly create a program that has too much content inside because we believe that it may be one of very few opportunities to reach the broad base we are targeting. We also hope to prepare the students for further learning on their own once they have had some experience with the methodologies, even if that experience was short.
We've tried to enable this goal by constructing a Supercomputing Training Portal where participants can find much more detailed information on the topics of the workshops. The nicest feature of the portal is that it also allows gives the students access to a pure HTML5 in-browser terminal emulator where they can connect to an HPC resource on the back-end to allow them to actually do hands-on work. While it's still in it's early beta phase, we're already seeing the portal being used by students both during and after workshops have ended.
Cyprus Workshop
SESAME Workshop in Jordan


xyz2grid documentation
xyz2grid converts regularly-spaced columnated x,y,z data into gridded data. See also xyzread.
Back to Climate Data Tools Contents
Contents
Syntax
Z = xyz2grid(x,y,z) Z = xyz2grid(filename) Z = xyz2grid(filename,Name,Value) [X,Y,Z] = xyz2grid(...)
Description
Z = xyz2grid(x,y,z) assumes x and y have some form of regularity and puts the corresponding values of z into a regular 2D MxN gridded matrix Z.
Z = xyz2grid(filename) loads data from a .xyz file of three columns (x, y, and z) then puts the data into a grid. This function assumes the input x,y,z data have some gridded regularity, but may have some missing data points.
Z = xyz2grid(filename,Name,Value) opens a .xyz file with any textscan options Name,Value, for example, 'headerlines',1.
[X,Y,Z] = xyz2grid(...) returns 2D meshgridded X and Y matrices corresponding to the values in Z.
Example 1
You may have some columns of x,y, and z values that look like this:
x = [1 1 2 2 2 3 3];
y = [1 2 1 2 3 1 3];
z = [1 2 4 5 6 7 9];
scatter(x,y,500,z,'filled')
axis([0 4 0 4])
colorbar
From the scatter plot above, you can see that there is some gridded regularity to the data, even though a couple of spots in the grid are missing. That's okay. Let's grid it up:
[X,Y,Z] = xyz2grid(x,y,z)
X = 1 2 3 1 2 3 1 2 3 Y = 3 3 3 2 2 2 1 1 1 Z = NaN 6 9 2 5 NaN 1 4 7
You can see the two missing values are filled by NaN. You can plot the gridded data with surf(X,Y,Z) or pcolor(X,Y,Z), but let's use imagescn instead:
imagescn(X,Y,Z) axis([0 4 0 4]) colorbar
Example 2: Antarctic Curie Depth
For this example, use load and plot Antarctic Curie depth data from Martos 2017:
[X,Y,CD] = xyz2grid('Curie_Depth.xyz'); figure imagescn(X,Y,CD) cmocean dense cb = colorbar; ylabel(cb,'Curie Depth (km)')
Author Info
This function is part of the Climate Data Toolbox for Matlab. The function and supporting documentation were written by Chad A. Greene of the University of Texas at Austin.


Home
About
Products
Blog
Contact
Contact Us
Please fill out this form if you have any questions or comments.
First Name:
Last Name:
Phone Number:
Questions/Comments:


--- layout: archive title: "Research Projects" permalink: /projects/ author_profile: true --- {% include base_path %}
My research lies at the intersection of international and comparative political economy, comparative politics, and political behavior. I primarily study the politics of economic policies, examining various interactions between party politics, public opinion, and the economy. Trained in both economics and politics in the midst of the Great Recession, I am especially interested in the politics of economic crises when distributional conflicts gain salience and become politicized. I thus collect new data and use quantitative and qualitative methods to explain conflicts about economic policies within and between countries. At the moment, I work on the following broad research projects:
{% for post in site.projects %} {% include archive-single.html %} {% endfor %}