#ThrowbackDataThursday Choose Your Own DataViz Adventure
This week, we're featuring two similar, but separate datasets in our first ever "Choose Your Own DataViz Adventure" challenge. The first looks at the College Football champions from the beginning of the poll era (more on that below) to present. The second looks at the bowl revenue breakout by conference from the end of the BCS era into the College Football Playoff. Whichever you choose, it's sure to be an interesting dataset to look at.
Click here to download the 'Champion' dataset as a CSV from Data.World
Click here to download the 'Champion' dataset as a Hyper Extract from Data.World
Click here to download the 'Revenue' dataset as a CSV from Data.World
Click here to download the 'Revenue' dataset as a Hyper Extract from Data.World
Historical Background
If you're reading this on Monday, December 7, 2019, the 2018-2019 College Football Playoff Championship Game is this evening! What better time to look back on how the champion has been chosen in College Football than right now? Did you know that there are 14 different entities that select a National Champion each year? While most records only recognize 3 of these - The College Football Playoff (CFP) Poll (from 2014 to present), the Associated Press (AP) Poll, and the Coaches Poll - having multiple systems has led to several years where there are multiple champions declared.
This is in large part due to the format of the College Football season, and was only an issue before the advent of the College Football playoff. The playoff was introduced as a mechanism to reduce the likelihood for non-consensus champions by having the best chosen through direct competition. Prior to the College Football Playoff, the Bowl Championship Series (BCS) sent the top teams to BCS Bowls, with the intent that the top 2 teams would face off to determine the National Champ. However, this system had its own fair share of controversy, with teams overlooked for BCS games, and in 2003 having different AP and Coaches champions chosen.
Although there were problems or inconsistencies with the BCS system, it was still received as better than the prior system. From the debut of the AP Poll in 1936 through the beginning of the BCS in 1998, the consensus Champions were declared as those that held the number one spot in the final AP and Coaches Polls. Some years, the decision was unanimous, but in several, the polls chose different champions. This is a short writeup, but I think the data can do most of the talking. The Champions dataset looks at the consensus (or unanimous) champions by year from 1936 to 2017. There are sure to be some interesting trends, or dynasties, to be found in the data.
The second dataset looks at the revenue side of the Bowl Season. Not playing for the championship? Teams can still play for the glory of a winning season, or better yet, some revenue of the NCAA's revenue sharing program. This dataset looks at how the bowl revenue was distributed by conference (and Independents where available) from the last year of the BCS through last years CFP. This should also be a pretty interesting dataset.
We'd really love to see what you can do with this week's dataset! Download the data and see what you can do. Create your viz and post your work to Tableau Public and Twitter with the hashtag #ThrowbackDataThursday, tagging @TThrowbackThurs. We're really looking forward to seeing what the Tableau Community can come up with!
Data Source
Both of this week's datasets comes from the NCAA. Please be sure to cite the source on your viz.


Hi, my name is Trace, and here's a little bit about myself. I would consider myself an entry level developer. I've been learning code little by little for the last few years, and am currently enrolled in a full stack MERN bootcamp. For now I am employed as a senior level Pricing Analyst, and have over 5 years of Data and Pricing Analytics experience. I enjoy working with data and feel that I could be an asset to any team on either the Front or Back End.
I have a passion for athletics and fitness training. I enjoy playing any type of sports, and for the last 3 years I've had the pleasure of coaching CrossFit classes as well as competing in local CrossFit competitions. Please take some time to peruse my portfolio. Feel free to contact me with any potential projects or career opportunities! Have a great day!
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close ProjectConnected gamer is a full stack LFG (looking for group) made for people to link up with like minded gamers
Close ProjectLorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia neque assumenda ipsam nihil, molestias magnam, recusandae quos quis inventore quisquam velit asperiores, vitae? Reprehenderit soluta, eos quod consequuntur itaque. Nam.
Close Project


{% extends 'base.html' %} {% load bootstrap4 %} {% block content %}
All volunteers with The People's Pantry are required to abide by our volunteering guidelines
Click here to view the cooking guidelines
Click here to view the delivery guidelines
Click here to learn about Halal cooking
Please click here to submit your receipt for reimbursement. Please note reimbursements are done on a monthly basis and should be submitted before the 20th. You should expect to receive the reimbursement within 2 days, not automatically. Full grocery reimbursements are available while grant funding exists to cover the costs. You will be notified when we are approaching our funding limit and revert to a $200/month per chef reimbursement.
Please click here to submit your recipe to our community cookbook. The People’s Pantry Community Cookbook will be a collection of recipes from our chefs and bakers in addition to a discussion about how food injustices and food insecurities have always existed yet became highlighted due to COVID-19 and how The People’s Pantry and mutual aid organizations from all over came to be.
{% endblock %}


Contact
Home
journey
aspirations
Login
Sign up
My Aspirations
Hover to see my aspirations
My aspirations are as follows
Achieve all round competency in the field of AI


Agent composition
Open Position
Close Position
Agent code
Options
Not relevant for backtest
Backtest
Events
Orders
| # | symbol | side | amount | status | limit | open price | close price | PNL |
|---|
Backtest stats
- Current PL
- Ticks proceed
- Orders sent
- Orders opened
- Orders closed
- Orders cancelled
Console


Free Zinbiel Algebras#
AUTHORS:
Travis Scrimshaw (2015-09): initial version
- class sage.algebras.free_zinbiel_algebra.FreeZinbielAlgebra(R, n, names, prefix, side)#
Bases:
CombinatorialFreeModule
The free Zinbiel algebra on \(n\) generators.
Let \(R\) be a ring. A Zinbiel algebra is a non-associative algebra with multiplication \(\circ\) that satisfies
\[(a \circ b) \circ c = a \circ (b \circ c) + a \circ (c \circ b).\]Zinbiel algebras were first introduced by Loday (see [Lod1995] and [LV2012]) as the Koszul dual to Leibniz algebras (hence the name coined by Lemaire).
By default, the convention above is used. The opposite product, which satisfy the opposite axiom, can be used instead by setting the
side
parameter to'>'
instead of the default value'<'
.Zinbiel algebras are divided power algebras, in that for
\[x^{\circ n} = \bigl(x \circ (x \circ \cdots \circ( x \circ x) \cdots ) \bigr)\]we have
\[x^{\circ m} \circ x^{\circ n} = \binom{n+m-1}{m} x^{n+m}\]and
\[\underbrace{\bigl( ( x \circ \cdots \circ x \circ (x \circ x) \cdots ) \bigr)}_{n+1 \text{ times}} = n! x^n.\]Note
This implies that Zinbiel algebras are not power associative.
To every Zinbiel algebra, we can construct a corresponding commutative associative algebra by using the symmetrized product:
\[a * b = a \circ b + b \circ a.\]The free Zinbiel algebra on \(n\) generators is isomorphic as \(R\)-modules to the reduced tensor algebra \(\bar{T}(R^n)\) with the product
\[(x_0 x_1 \cdots x_p) \circ (x_{p+1} x_{p+2} \cdots x_{p+q}) = \sum_{\sigma \in S_{p,q}} x_0 (x_{\sigma(1)} x_{\sigma(2)} \cdots x_{\sigma(p+q)},\]where \(S_{p,q}\) is the set of \((p,q)\)-shuffles.
The free Zinbiel algebra is free as a divided power algebra. Moreover, the corresponding commutative algebra is isomorphic to the (non-unital) shuffle algebra.
INPUT:
R
– a ringn
– (optional) the number of generatorsnames
– the generator names
Warning
Currently the basis is indexed by all finite words over the variables, including the empty word. This is a slight abuse as it is supposed to be indexed by all non-empty words.
EXAMPLES:
We create the free Zinbiel algebra and check the defining relation:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ) sage: (x*y)*z Z[xyz] + Z[xzy] sage: x*(y*z) + x*(z*y) Z[xyz] + Z[xzy]
We see that the Zinbiel algebra is not associative, not even power associative:
sage: x*(y*z) Z[xyz] sage: x*(x*x) Z[xxx] sage: (x*x)*x 2*Z[xxx]
We verify that it is a divided power algebra:
sage: (x*(x*x)) * (x*(x*(x*x))) 15*Z[xxxxxxx] sage: binomial(3+4-1,4) 15 sage: (x*(x*(x*x))) * (x*(x*x)) 20*Z[xxxxxxx] sage: binomial(3+4-1,3) 20 sage: ((x*x)*x)*x 6*Z[xxxx] sage: (((x*x)*x)*x)*x 24*Z[xxxxx]
A few tests with the opposite convention for the product:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ, side='>') sage: (x*y)*z Z[xyz] sage: x*(y*z) Z[xyz] + Z[yxz]
REFERENCES:
- algebra_generators()#
Return the algebra generators of
self
.EXAMPLES:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ) sage: list(Z.algebra_generators()) [Z[x], Z[y], Z[z]]
- change_ring(R)#
Return the free Zinbiel algebra in the same variables over
R
.INPUT:
R
– a ring
The same side convention is used for the product.
EXAMPLES:
sage: A = algebras.FreeZinbiel(ZZ, 'f,g,h') sage: A.change_ring(QQ) Free Zinbiel algebra on generators (Z[f], Z[g], Z[h]) over Rational Field
- construction()#
Return a pair
(F, R)
, whereF
is aZinbielFunctor
andR
is a ring, such thatF(R)
returnsself
.EXAMPLES:
sage: P = algebras.FreeZinbiel(ZZ, 'x,y') sage: x,y = P.gens() sage: F, R = P.construction() sage: F Zinbiel[x,y] sage: R Integer Ring sage: F(ZZ) is P True sage: F(QQ) Free Zinbiel algebra on generators (Z[x], Z[y]) over Rational Field
- coproduct_on_basis(w)#
Return the coproduct of the element of the basis indexed by the word
w
.The coproduct is given by deconcatenation.
INPUT:
w
– a word
EXAMPLES:
sage: F = algebras.FreeZinbiel(QQ,['a','b']) sage: F.coproduct_on_basis(Word('a')) Z[] # Z[a] + Z[a] # Z[] sage: F.coproduct_on_basis(Word('aba')) Z[] # Z[aba] + Z[a] # Z[ba] + Z[ab] # Z[a] + Z[aba] # Z[] sage: F.coproduct_on_basis(Word()) Z[] # Z[]
- counit(S)#
Return the counit of
S
.EXAMPLES:
sage: F = algebras.FreeZinbiel(QQ,['a','b']) sage: S = F.an_element(); S Z[] + 2*Z[a] + 3*Z[b] + Z[bab] sage: F.counit(S) 1
- degree_on_basis(t)#
Return the degree of a word in the free Zinbiel algebra.
This is the length.
EXAMPLES:
sage: A = algebras.FreeZinbiel(QQ, 'x,y') sage: W = A.basis().keys() sage: A.degree_on_basis(W('xy')) 2
- gens()#
Return the generators of
self
.EXAMPLES:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ) sage: Z.gens() (Z[x], Z[y], Z[z])
- product_on_basis_left(x, y)#
Return the product < of the basis elements indexed by
x
andy
.This is one half of the shuffle product, where the first letter comes from the first letter of the first argument.
INPUT:
x
,y
– two words
EXAMPLES:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ) sage: (x*y)*z # indirect doctest Z[xyz] + Z[xzy]
- product_on_basis_right(x, y)#
Return the product > of the basis elements indexed by
x
andy
.This is one half of the shuffle product, where the last letter comes from the last letter of the second argument.
INPUT:
x
,y
– two words
EXAMPLES:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ, side='>') sage: (x*y)*z # indirect doctest Z[xyz]
- side()#
Return the choice of side for the product.
This is either
'<'
or'>'
.EXAMPLES:
sage: Z.<x,y,z> = algebras.FreeZinbiel(QQ) sage: Z.side() '<'
- class sage.algebras.free_zinbiel_algebra.ZinbielFunctor(variables, side)#
Bases:
ConstructionFunctor
A constructor for free Zinbiel algebras.
EXAMPLES:
sage: P = algebras.FreeZinbiel(ZZ, 'x,y') sage: x,y = P.gens() sage: F = P.construction()[0]; F Zinbiel[x,y] sage: A = GF(5)['a,b'] sage: a, b = A.gens() sage: F(A) Free Zinbiel algebra on generators (Z[x], Z[y]) over Multivariate Polynomial Ring in a, b over Finite Field of size 5 sage: f = A.hom([a+b,a-b],A) sage: F(f) Generic endomorphism of Free Zinbiel algebra on generators (Z[x], Z[y]) over Multivariate Polynomial Ring in a, b over Finite Field of size 5 sage: F(f)(a * F(A)(x)) (a+b)*Z[x]
- merge(other)#
Merge
self
with another construction functor, or returnNone
.EXAMPLES:
sage: functor = sage.algebras.free_zinbiel_algebra.ZinbielFunctor sage: F = functor(['x','y'], '<') sage: G = functor(['t'], '<') sage: F.merge(G) Zinbiel[x,y,t] sage: F.merge(F) Zinbiel[x,y]
With an infinite generating set:
sage: H = functor(ZZ, '<') sage: H.merge(H) is H True sage: H.merge(F) is None True sage: F.merge(H) is None True
Now some actual use cases:
sage: R = algebras.FreeZinbiel(ZZ, 'x,y,z') sage: x,y,z = R.gens() sage: 1/2 * x 1/2*Z[x] sage: parent(1/2 * x) Free Zinbiel algebra on generators (Z[x], Z[y], Z[z]) over Rational Field sage: S = algebras.FreeZinbiel(QQ, 'z,t') sage: z,t = S.gens() sage: x * t Z[xt] sage: parent(x * t) Free Zinbiel algebra on generators (Z[z], Z[t], Z[x], Z[y]) over Rational Field
- rank = 9#


Preparation time
less than 30 mins
Cooking time
over 2 hours
Serves
Serves 6
Dietary
Lemon drizzle cake always goes down a storm, so why not serve it with some fancy sides for an impressive make-ahead dessert?
For the lemon cake, preheat the oven to 180C/170C Fan/Gas 3. Grease and line a 20cm/8in square cake tin.
Melt the butter and set aside to cool slightly. Put the eggs, lemon juice and sugar in a bowl. Using an electric whisk, beat until the sugar is dissolved. Whisk in the butter and crème fraiche. Sift the flour and baking powder over the top and gently fold in. Stir in the lemon zest and spoon into the prepared tin.
Bake for 45-60 minutes, or until golden-brown and risen (the cake will split along the top). Put the cake on a wire rack to cool for 10 minutes before removing from the tin. Place a tray or a piece of baking paper underneath the rack.
For the glaze, whisk the icing sugar and lemon juice together in a bowl then pour over the still warm cake. Remove the tray or paper from underneath the cake and pour any excess back over the cake. Allow to cool before serving.
For the roasted rhubarb, preheat the oven to 200C/180C Fan/Gas 6.
Arrange the rhubarb in a single layer in a roasting tin. Sprinkle over the sugar and drizzle over the orange juice. Roast for 8-12 minutes, or until just tender.
For the lemon curd, put a heatproof bowl over a pan a gently simmering water (don’t let the bowl touch the water). Put the lemon zest, juice, butter and sugar in the bowl and whisk occasionally until the sugar is completely dissolved. Beat in the eggs and whisk until thickened and cooked through. Remove from the heat and allow to cool completely.
For the sugared almonds, preheat the oven to 130C/110C Fan/Gas 1 and line a baking tray with baking paper.
For the goat’s cheese cream, put all the ingredients in a bowl and mix well.
To serve, cut the cake into cubes or small slices and arrange on serving plates. Dress the plate with lemon curd, roasted rhubarb, goats’ cheese cream, sugared almonds and lemon balm or baby basil leaves.


--- layout: basic title: About Me permalink: /about/ ---
I am a graduate student in the Medical Scientist Training Program at Washington Unviersity. As a member of the lab of Dr. Chyi-Song Hsieh, my graduate work has focused on elucidating the interactions between the immune system and the beneficial commensal bacteria of the gut. More broadly, I am interested in the use of publically available data to address unanswered immunological questions.


Raniere Silva
has a BSc (Applied Mathematics) from the University of Campinas.
He works for the Software Sustainable Institute and the University of
Manchester trying to create a community around
"Better Software, Better Research".
Steering Committee (2016 Secretary, 2015 Member)
Maintainer: tools


Innocentin:
You came all this way just to find me? Yes, I was once a high priest, until some unfortunate political developments landed me here in this blasted library! But lately, I've seen signs that my luck might be changing...
"Check out this crucifix!"


Schematics
Note: Spartacus 3.x is no longer maintained. Please upgrade to the latest version.
Note: Spartacus 3.x was tested with SAP Commerce Cloud versions 1905 to 2105. Spartacus 3.x has not been verified to work with (and is not guaranteed to work with) SAP Commerce Cloud 2211 or later releases.
Spartacus schematics allow you to install Spartacus libraries in your project. The following sections describe what the Spartacus schematics do, and also provide information about the various options and commands you can use with the schematics. If you are a developer and are looking for more technical information, see the README in the Spartacus schematics project.
Table of Contents
- Prerequisites
- Adding Spartacus Core Libraries and Features to Your Angular Project
- CMS Component Schematic
- Installing Additional Spartacus Libraries
Prerequisites
Before using Spartacus schematics, ensure that you have all of the necessary prerequisites.
Your Angular development environment should include the following:
- Angular CLI: Version 10.1 or later, < 11.
- Yarn: Version 1.15 or later.
- Node.js: The most recent 14.x version is recommended. Version 12.x reached end-of-life on April 30, 2022, and is no longer supported by Spartacus. It is strongly recommended that you migrate any existing Spartacus storefronts to Node.js 14 as soon as possible. If there are any issues with Spartacus and Node.js 14, please upgrade to the latest releases. If you continue to experience issues with Node.js 14, create a support ticket with SAP.
Adding Spartacus Core Libraries and Features to Your Angular Project
You can add Spartacus core libraries and features to your Angular project by running the following command from your project root:
ng add @spartacus/schematics@latest
The following is a description of the various options you can use with the ng add @spartacus/schematics@latest
command:
baseUrl
sets the base URL of your CX OCC back end.baseSite
is a comma-separated list of base site(s) to use with Spartacus.currency
is a comma-separated list of currencies to use in Spartacus.language
is a comma-separated list of languages to use in Spartacus.urlParameters
is a comma-separated list that represents the order of site-context parameters, such as['baseSite', 'language', 'currency']
, for example.occPrefix
sets the OCC API prefix, such as/occ/v2/
, for example.useMetaTags
determines whether or not to configure thebaseUrl
andmediaUrl
in the meta tags fromindex.html
.featureLevel
sets the application feature level. The default value is the same as the version of the Spartacus packages you are working with. For example, thefeatureLevel
for<EMAIL_ADDRESS>is3.2
.overwriteAppComponent
overwrites the content ofapp.component.html
. The default value istrue
.pwa
includes progressive web application (PWA) features when building the application.ssr
includes the server-side rendering (SSR) configuration.lazy
installs features with lazy loading configured for each of the feature modules. The default value istrue
.project
allows you to specify the project that you want to configure your Spartacus application in. The default is the workspace default project.interactive
allows you to bypass the schematics prompts and install Spartacus with a predefined set of features.
The following is an example that generates an application that is ready to be used with the electronics storefront, that sets the baseUrl
and the baseSite
, and that also enables server-side rendering:
ng add @spartacus/schematics@latest --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite=electronics-spa --ssr
Another example is the following, which generates an application that is ready to be used with both an apparel storefront and an electronics storefront, that sets the baseUrl
, baseSite
, currency
, and language
, and also enables server-side rendering:
ng add @spartacus/schematics@latest --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite=apparel-uk-spa,electronics-spa --currency=gbp,usd --language=uk,en --ssr
This next example bypasses the schematics prompts and installs Spartacus with a predefined set of features:
ng add @spartacus/schematics@latest --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite=electronics-spa --interactive=false
To see which features are included when you use the --interactive=false
flag, see schema.json.
Additional Commands for Core Libraries and Features
By default, the ng add @spartacus/schematics
command adds only a basic configuration of Spartacus. The following is a description of the commands you can use to extend your application:
ng g @spartacus/schematics:add-pwa
adds a Spartacus-specific PWA module.ng g @spartacus/schematics:add-ssr
adds the SSR configuration.ng g @spartacus/schematics:add-cms-component
generates a CMS component, and adds the CMS component mapping to the specified module, or to a newly-generated module, if no module is specified. For more information, see CMS Component Schematic, below.
How Spartacus Schematics Work
When you run ng add @spartacus/schematics
, the command does the following:
- Adds the required dependencies.
- Sets up Spartacus modules in the project and provides the default configuration. For more information, see Reference App Structure.
- Imports Spartacus styles to
main.scss
. - Adds the
cx-storefront
component to yourapp.component
. - Optionally updates
index.html
with the Spartacus URL endpoints in meta tags. - If the
--pwa
flag is included, it adds PWA service worker support for your project. - If the
--ssr
flag is included, the command does the following:- Adds server-side rendering dependencies.
- Provides additional files that are required for SSR.
CMS Component Schematic
The following is a description of the available options for the CMS component schematic:
--declareCmsModule
specifies which module the newly-generated CMS component is added to. If no module is specified, a new module is generated.--cmsComponentData
, alias--cms
, injects theCmsComponentData
into the new component. By default, this option is set totrue
.--cmsComponentDataModel
, alias--cms-model
, specifies the model class for theCmsComponentData
, such asMyModel
, for example. This argument is required if--cmsComponentData
is set totrue
.--cmsComponentDataModelPath
, alias--cms-model-path
, specifies the import path for theCmsComponentData
. The default is@spartacus/core
.
Aside from these custom options, the add-cms-component
supports almost all options that are available for the Angular component and module schematics. The full list can be seen in this schema.json file.
The following Angular options are not supported:
- Deprecated options.
- The
--module
option for components. If you want to specify an existing module for a component, use--declareCmsModule
. Themodule
option is only applied to the Angularmodule
schematic. - The
--skipImport
option.
Using the ‘add-cms-component’ Schematic
The following are some examples of how the add-cms-component
schematic can be used:
ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel
generates themy-awesome-cms.component.ts
component and themy-awesome-cms.module.ts
module.ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms
generates themy-awesome-cms.component.ts
component and adds it to the specified CMS mapping formy-cms-path/my-cms.module.ts
.ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app
generates themy-awesome-cms.component.ts
component and themy-awesome-cms.module.ts
module, and imports them to the specifiedapp.module.ts
.ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms
generates themy-awesome-cms.component.ts
component and adds it to the specifiedmy-cms-path/my-cms.module.ts
module. It also importsmy-cms.module.ts
to the specifiedapp.module.ts
.
Installing Additional Spartacus Libraries
You need to first install the Spartacus core libraries before you can install additional Spartacus libraries. For more information, see Adding Spartacus Core Libraries and Features to Your Angular Project, above.
Note: To install additional Spartacus libraries using schematics, your app structure needs to match the Spartacus reference app structure. For more information, see Reference App Structure.
Integration Libraries and Feature Libraries
During the initial set up of your storefront using schematics, you have the option to install a number of Spartacus features, which is done by installing the relevant integration or feature libraries. The following is a list of the integration libraries and feature libraries that you can install, along with information about what is included in each package.
@spartacus/asm
includes the Assisted Service Module.@spartacus/cart
includes the Saved Cart feature.@spartacus/cdc
includes the SAP Customer Data Cloud Integration.@spartacus/cds
includes the Intelligent Selling Services for SAP Commerce Cloud Integration.@spartacus/organization
includes the Organization Administration and Order Approval features. Both are required for B2B Commerce Organization to work.@spartacus/product
includes the Bulk Pricing and Variants features.@spartacus/product-configurator
includes the Configurable Products Integration.@spartacus/qualtrics
includes the Qualtrics Integration.@spartacus/smartedit
includes the SmartEdit Integration.@spartacus/storefinder
includes the Store Locator feature.@spartacus/tracking
includes the Tag Management System feature and the Personalization Integration.@spartacus/user
includes the Account and Profile features. The Account feature contains components such as the login form, and also exposes the general method for getting user details. The Profile feature is responsible for functionality such as closing an account, updating a profile, updating an email, updating a password, resetting a password, and registering. It is highly recommended to install both of these features.
If you do not install a particular integration library or feature library during the initial set up of your storefront, you can always install any of these libraries later on using schematics. The command to install a library is the following:
ng add <package-name>
For example, you can install the @spartacus/asm
library with the following command:
ng add @spartacus/asm
You can also include options when you use the ng add
command, as follows:
lazy
installs features with lazy loading configured for each of the feature modules within the library. The default istrue
.project
allows you to specify the project that you want to configure the Spartacus feature library in. The default is the workspace default project.features
makes it possible to select features without the interactive prompt.
The following is an example of the ng add
command that installs Personalization without the configuration for lazy loading, and without prompting to install any of the other features from the @spartacus/tracking
library:
ng add @spartacus/tracking --lazy false --features="Personalization"


Team E: EZvote
Gage Alvis, Marty Hamilton, Derek Arnold, Katherine Chen
Voting
Logic
Client Side
Basic Overview
Server Side
Database


The CARNOT library contain different subsystems:
Source
The source Blockset contains the sub-libraries:
Houses:
Underlying blocks for houses can be found in:
wall and floor
Room nodes
ventilation_heating
Tools
The Blockset contains the following functions:
There are different types of ports to construct your storage model that are contained in the ports for your storage construction" subset
Moreover two types of ground storages are included:
The block contains a surface model which can be modified by different ground type. The models are in the subset "surface models for ground storage"
In this chapter, the utility functions already mentioned in
chapter 2.4 are referenced.
This utility functions are m-files or m-functions, that can be called from the
workspace. Some utility function provide input values to specify the components
in your model (like "taualfa"), other facilitate operations like compiling
the underlaying C-Mex S_functions.
Purpose Calculate material properties from Command Window.
Description
All fluid property functions are accessible from the workspace. See description
of the corresponding CARNOT-block:
Purpose Calculate the airmass at a specific time and for a specific location.
Function call:
airmass(time, latitude, longitude, longitude0)
Input
time :
second in the year (january, 1st, 0:00 = 0 s)
latitude : [-90,90],north
positive
longitude : [-180,180],west
positive
longitude0 : reference
longitude (timezone)
Output
Airmass in multiples of the length for sunlight when the sun is fully in the zenith position.
Description
The airmass is 1/sin(solar_altitude) as long as the altitude is above 30 degrees. Otherwise the airmass is ((1229+(614*sin(solar_altitude)).^2).^(0.5)) - 614.*sin(solar_altitude).
Description
This function finds the time to two specified angles. Angles can be declination
and zenith, azimuth and zentih or declination and azimuth
The function call syntax is
angles2time(latitude,longitude,longitude0,name1,angle1,name2,angle2)
Inputs:
Purpose
Calculation of the annual costs for a system
Description
In the M-file annualcosts the annuity of a system is calculated. Call this function
with
annualcosts(UseTime,IntRate,IncFuel,IncMat,InvestCosts,CompLifeTime,ContOpCosts,RunOpCosts,FuelCosts,RunTime,RunTimeDep);
The calculation of the annuity considers investment costs, continuous operation costs and operation costs which depend on the runtime and also fuel costs. Interest rate and annual increase of permanent costs are also taken into consideration. The output is calculated in the same currency as given by the input. Remaining values of the components at the end of the use of the system are calculated due to linear depreciation.
Parameters |
description |
unit |
|---|---|---|
Usetime |
time of use of the complete system |
[y] |
IntRate |
Interest rate per year |
[1/y] |
IncFuel |
Expected annual increase of fuel costs |
[1/y] |
IncMat |
Expected annual increase of permanent costs |
[1/y] |
CompLifeTime |
lifetime of component |
[y] |
InvestCosts |
Investment costs |
[-] |
ContOpCosts |
Continuous operation costs |
[-] |
RunOpCosts |
Operation costs depending on the run time |
[1/s] |
FuelCosts |
Fuel costs within one year |
[1/y] |
RunTime |
Run time of component |
[s] |
RunTimeDep |
Dependence of the lifetime of the comp. on its run time (yes = 1, no = 0) |
[-] |
Outputs
The parameters "Usetime","IntRate","IncFuel","IncMat" are general for all of the components and have to be given as scalar values. All of the other parameters are component specific. For each parameter you have to give a vector which has as much elements as components you have. If you have e.g. a furnace, a collector and a storage you would have to define for each component its lifetime. This would result in a vector like: CompLifeTime = [ 20 10 20 ];
The definition of the parameters (CompLifeTime, InvestCosts, ContOpCosts, RunOpCosts, FuelCosts, RunTime, RunTimeDep) has to be done for all components. The operation costs are divided into operation costs which depend on the run time (e.g. lubricants, maintenance) and fix operation costs (e.g. continuous servicing to prevent failure). FuelCosts and RunTime depend on the system behaviour during simulation, so they are set by the simulation model. You can use the output of the economy_ecology block to get the values for the parameters "FuelCosts" and RunTime". They are written to the workspace with the name "input_annual_costs". The lifetime of a component can depend on its runtime (e.g. diesel generators). Therefore you have to specify for each component if it depends on its runtime or not.
To become familiar with the function "annualcosts" open the m-script coststest.m. There the vectors for the costs are defined for an example and the link to the economy_ecology block can be seen from the code.
Literature:
Haubrich, Hans-Jürgen: Elektrische Energieversorgungssysteme. ISBN 3-86073-204-8, 1994.
Description
This function converts old weather Carnot-Format data file into the new Carnot-Format.
The function assumes that the direct irradiation is on a horizontal surface
(the data file is not yet modified by surfrad).
Syntax
outmat = convert_weather(infilename,outfilename)
Inputs:
The infilename is the name of the old file.
The format
of the file have to be as the following format:
col |
description |
unit |
|---|---|---|
1 |
time |
[s] |
2 |
timevalue (comment line) format YYYYMMDDHHMM. Y is the year, M the month, D the day, H the hour |
[-] |
3 |
zenith angle of sun (at time, not averaged) (continue at night to get time of sunrise by linear interpolation) |
[degree] |
4 |
azimuth angle of sun (0°=south, east negative) (at time, not average in timestep) |
[degree] |
5 |
incidence angle on surface (0° = vertical) |
[degree] |
6 |
direct solar radiation on surface |
[W/m^2] |
7 |
diffuse solar radiation on a horizontal surface |
[W/m^2] |
8 |
ambient temperature |
[°C] |
9 |
radiation temperature of sky |
[°C] |
10 |
relative humidity |
[%] |
11 |
precipitation |
[m/s] |
12 |
cloud index (0=no cloud, 1=covered sky) |
[-] |
13 |
station pressure |
[Pa] |
14 |
mean wind speed |
[m/s] |
15 |
wind direction (north=0° west=270°) |
[degree] |
16 |
incidence angle in a vertical plane on the collecor degree orientation of the plane is parallel to the risers, referred as longitudinal plane in EN 12975 |
[degree] |
17 |
incidence angle in a vertical plane on the collecor degree orientation of the plane is parallel to the headers referred as transversal plane in EN 12975 (= -9999, if surface orientation is unknown) |
[degree] |
Outputs:
outfilename : character string of the output file name.
The output file has the CARNOT form as described in "wformat.txt".
Characteristics
Vectorized : No
Description
This function calculates the pressure drop in a collector per collector surface
area.
The function
colpdrop (tin, tout, mdot, p, fluid_id, fluid_mix, dhead, lhead, drise, lrise, nrise, Acol)
calculates the pressure drop in a collector per collector surface area in [Pa/m2] from the
Inputs:
Construction of the collector is a header - riser arrangement.
An equation of Dunkle and Davey (1970) is used, who studied the problem of pressure
drop analytically and experimentally. The basic assumption is that the flow
is turbulent in the headers, and laminar in the risers, an assumption which
according to Duffie and Beckman (1991) is true for many collectors specially
in thermosyphon and low-flow systems.
Literature:
Dunkle, Davey:
"Flow distribution in absorber banks", ISES Conference, 1970
Duffie, Beckman: Solar Engineering of Thermal Processes, 1991
Characteristics
VectorizedNo
Purpose
Transform a date to seconds of year
Description
date2sec transfroms the date to seconds of the year
syntax:
date2sec(date)
second 0 is 00:00:00 on first january date in vector [month day hour minute second]
Purpose
Interface to make the property functions from the Carlib Library accessible
from the matlab command window.
Description
fluidprop is a C-MEX function to make the property function of the Carlib Library
accessible from the MATLAB Command window.
In the Carnot main directory, m-function that are named like the SIMULINK material
blocks are contained. (density.m, heat_capacity.m.etc.) These m-functions use
fluidprop as interface to use the property functions of the Carlib Library.
The function call in the m-function is
density (temperature, pressure, fluid_type, fluid_mix)
i.e. with the same variable as in the Simulink blocks.
Internally the MEX-function fluidprop is called
rho = fluidprop (temperature, pressure, fluid_type, fluid_mix, property_ID)
The property_ID defines the property, e.g the density, that you want to be promted. For the definition of the property_ID see chapter 2.1 of the manual (Carnot vector definitions). The function call of can also be performed directly from the MATLAB command window:
fluidprop (temperature, pressure, fluid_type, fluid_mix, property_ID)
If you call fluidprop with a respective negative property_ID, the function returns the saturationproperties of the respective property in vectorial form. The first output component is the value for saturated steam at the specified conditions, the second value the one of boiling fluid. To get the saturationproperty the function call of fluidprop has to be effectuated in the following way:
fluidprop (temp, pres, fluid_id, fluid_mix, property_type = -1)
More detailed information about the function fluidprop are contain in the paragraph 3.2 "The Carlib Library".
All material functions are vectorised, they can be specified with more than one fluid property, i.e. with a vector of temperatures. In this case either all input vectors must be of the same length or they must be a scalar. A scalar is interpreted as a vector, which contains the adequate number of components of the specified value.
Characteristics
VectorizedYes
Purpose
Calculate parameters for the heat pump model.
Description
HP_PARAM calculates the parameters K(1), K(2), K(3), K(4), K(5), K(6), K(7),
K(8) and K(9) for the heat-pump model in the CARNOT library.
K(1), K(2) and K(3) are used to estimate
the heating power ; K(4), K(5) and K(6) enable to calculate electric power ;
K(7), K(8) and K(9) are used to obtain absorbing power.
The model works with a linear characteristics. Specify heating, absorbing and
electric power only at lowest and highest temperatures. Other values will be
interpolated.
Linear model in primary and seconary temperature, used by the carnot heat_pump
model :
heating_power = K1 * Tprimary + K2 * Tsecondary
+ K3
electric_power = K4 * Tprimary + K5
* Tsecondary + K6
absorbing_power = K7 * Tprimary
+ K8 * Tsecondary + K9
hp_param uses the MATLAB-function fmins, a least square method, to minimize the error between approximation and given values.
syntax: hp_param(A)
Input
A matrix A where each row has five elements : [qdot_hot
qdot_cold pel tcold thot]
(specify at least two rows for A)
Literature: K. Schwamberger: Modellbildung und Regelung von Gebäudeheizungsanlagen mit Wärmepumpen, Fortschrittsberichte VDI Reihe 6, Nr. 263, VDI Verlag Düsseldorf, 1991
Description
Calculate legal time of a location on the base of the solar time.
Syntax
solartime = legaltime2solartime(time,longitude,longitudenull)
Inputs:
Outputs:
Description
open all systems in a directory and save without library links. The directory
is an input from the user
Description
Meteonorm2wformat converts weather data which is calculated by METEONORM, into the Carnot-Format. The function takes solar position from carlib ince Meteonorm puts solar altitude and azimuth angle to zero between sunset and sunrise.
Syntax
outmat = Meteonorm2wformat(inmat,outfilename,lat,long,long0)
Inputs:
Use the "user defined" weather data format in Meteonorm. For convenience the format file "Meteonorm_carnot_format.muf" can be used in Meteonorm (created with Meteonorm 6.1). The input matrix is the matrix, given from METEONORM.
1 - time [h]
2 - hs : solar altitude angle [°]
3 - gammas : solar azimuth angle [°]
4 - G_Bn : direct
beam radiation on a normal plane [W/m²]
5 - G_Gh global horizontal
radiation in W/m²
6 - G_Dh : diffuse radiation on a horizontal
plane [W/m²]
7 - Ta : air temperature [°C]
8
- RH : humidity [%]
9 - N : cloud index [0..8]
10 -
p : air pressure [hPa]
11 - FF : wind speed [m/s]
12
- DD : wind direction [°]
Outputs:
The output matrix has the CARNOT form as described in "wformat.txt". As no collector position is defined, a horizontal plane is assumed.
Description
MeteonormMinute2wformat converts weather data in 1 minutes time resolution which is calculated by METEONORM into the Carnot-Format. The function takes solar position from carlib since Meteonorm values show some strange movements of the sun.
Syntax
outmat = MeteonormMinute2wformat(inmat,outfilename,lat,long,long0,[wdata])
Inputs:
Use the "user defined" weather data format in Meteonorm. For convenience the format file "Meteonorm_carnot_format.muf" can be used in Meteonorm (created with Meteonorm 6.1). The input matrix is the matrix, given from METEONORM.
1 - month
2 - day of month
3 - day of year
4 - hour
5
- minute
6 - G_Gh global horizontal radiation in W/m²
7 - hs solar altitude angle in degree
8
- G_Gex extraterrestrial global horizontal solar radiation in W/m²
9 - G_Gh_hr hourly average of global horizontal radiation
in W/m²
10 - G_Dh diffuse horizontal radiation in W/m²
11 - G_Gk global inclined radiation in W/m²
12
- G_Dk diffuse inclined radiation in W/m²
13 - G_Bn
direct normal radiation in W/m²
14 - Ta ambient temperature
in degree C
15 - FF wind speed in m/s
Outputs:
The output matrix has the CARNOT form as described in "wformat.txt". As no collector position is defined, a horizontal plane is assumed.
Description
This function plots a graph to see the ratio of direct radiation on tilted surface
to that on horizontal surface depending on slope and surface azimuth angle.
Syntax
ratiograph(month,latitude,longitude,longitude0,ClearIndex,Skymodel,Greflect,[location])
Inputs:
Purpose
Calculate material properties from Command Window.
Description
sec2date transforms seconds in a year to a date in the form [month day hour
minute second].
second = 0 for 00:00:00 on first January
Characteristics
VectorizedNo
Description
Calculates solar time on the base of the legal time. In the solar time the sun
is always in the south (Azimuth 0°) at 12:00.
Syntax
time = solartime2legaltime(solartime, longitudenull, longitude)
Inputs:
Outputs:
Purpose
This Functions calculates for a given date the sum of seconds, minutes, ...
in the year.
Description
The output of this function is real, so on March 6th the sum of year is 0.175, the sum of month is 2.13. This function
exists as S-function sumtime.and as M-script.
sumtime(year,month,day,hour,minute,second)
Inputs:
Outputs:
Description
Calculates declination, altitude, zenith and azimuth of sun and the hourangle
Syntax
[decl,altitude,zenith,azimuth,hourangle] = sunangles(time,lat,long,long0)
Inputs:
Outputs:
Description
Plots a position diagram of the sun.
Syntax
sungraph(lat, long, long0, ['location'])
Inputs:
Purpose
Transmittance-absorbency product of the collector covers
Description
In the M-file taualpha, the transmittance - absorbency product for the collector
covers is calculated. The optical efficiency of the collector taualpha depends
on the the following values, that are parameters for the M-file:
taualfa( ncover, refin, teta, KL, alfa)
Inputs:
Output is a vector with taualfa for each incidence angle specified.
For the calculation of the incidence angle modifier (IAM) divide the result
by taualfa (teta = 0) since by definition IAM = 1 for teta = 0.
Characteristics
VectorizedNo
Purpose
Converts a value from a specified unit to another unit.
Description
The symbols in a specified unit have to be separated by * or /. So kWh has to
be written as kW*h. The common signs are allowed, e.g. kW, mm, µJ.
Beside the units this functions knows some constants, e.g. when using the "unit"
c, you get the lightspeed.
The known units and constants are:
| unit | meaning | used for |
| m | meter | length |
| kg | kilogramm | mass |
| s | second | time |
| A | ampere | current |
| K | Kelvin | temperature |
| mol | mole | amount of subcstance |
| cd | candela | luminous intensity |
| a | anno | standard year |
| b | barn | area |
| c | ligthspeed | |
| g | gramm | mass |
| l | liter | volume |
| t | ton | mass |
| d | day | time |
| V | volt | voltage |
| F | farad | capacity |
| C | coulomb | electric charge |
| T | tesla | magnetic flux density |
| S | siemens | electric conductance |
| G | gravitational constant | |
| e | elementary charge | |
| N | newton | force |
| W | watt | power |
| u | unified atomic mass | mass |
| J | joule | energy |
| h | hour | time |
| Pa | pascal | pressure |
| AE | astronomical unit | length |
| lj | lightyear | length |
| pc | parsec | length |
| Hz | hertz | frequency |
| Wb | weber | magnetic flux |
| lb | pound | mass |
| Bq | becquerel | radioactivity |
| yd | yards | length |
| sm | squaremeter | area |
| gr | grain | mass |
| ha | hectar | area |
| NA | avogadro's number | |
| Rm | ideal gas constant | |
| µ0 | permeability constant | |
| hp | brake horse power | power |
| kb | boltzman constant | |
| eV | electronvolt | electric charge |
| Btu | british thermal unit | energy |
| bar | bar | pressure |
| dpt | dioptr | reciprocal focal length |
| erg | ergon | energy |
| Ohm | ohm | electric resistance |
| oz | ounce | mass |
| PS | DIN - horsepower | power |
| ft | feet | length |
| in | inch | length |
| mi | mile | length |
| galUK | gallon in UK | Volume |
| galUS | gallon in US | Volume |
| mmHg | millimeters of mercury | pressure |
| knot | knots | speed |
| torr | torr | pressure |
| eps0 | dielectric constant | |
| cal | calories | energy |
| min | minute | time |
| bbl | barrel | volume |
| atm | atmosphere | pressure |
If the SI-flag is 1, the basic SI-units are also printed out.
This block is also available as simulink block unitconv.
unitconv(12,’ft/s’,’km/h’,1)
Input:
Output:
Note:
Purpose
This m-function converts a temperature form a unit to another. This function
also exists in a block.
Description
Syntax : temp_conv
= conv_temperatur(init_unit, final_unit, value)
where :
init_unit is the
initial unit
final_unit
is the final unit
value
is the temperature to convert
init_unit and final_unit should be one of the following characters
:
- 'C' : Celsius
- 'K' : Kelvin
- 'F' : Farenheit
Warning : a difference of temperature doesn't need to be convert from
Kelvin to Celsius.
Input:
Output:
Purpose
M-file for transformation of Test reference year data to a MATLAB readable format.
Description
The M-file is used to transform Test-Reference-Years of the "Deutscher
Wetter Dienst" to a MATLAB-readable format. The definition of the columns
is written with the comment-sign "%" as a header in the output file.
Edit write_try.m to specify the name of the weather data file and the number of columns.
as default the name try.dat
is set.
Characteristics
VectorizedNo
Description
Function year_average calculates the average of a given weather data matrix
for a specified time interval. The first column from the input matrix has to
be the time in seconds.
Syntax
mat2 = year_average(data,timeclass)
Inputs:
Outputs:
Description
Function year_sum calculates the sum and the average of a given weather data
matrix for a specified time interval. The first column from the input matrix
has to be the time in seconds.
Syntax
[matrix_sum, matrix_mean] = year_sum(data,timeclass)
Inputs:
Outputs:


StateMachineService
fsm
A Service for a Finite State Machine Wrapper for javascript-state-machine
Sets up the FSM States


At Systemantic we are solving problems and sharing the knowledge with our community. Here we present many projects as boilerplates that would help developers avoiding the headache of configuration and setting environments. Our boilerplates contain the latest Web technologies and dev tools.
The Node.js Sass boilerplate project helps the Systemantic developers to create unified and structured projects using HTML5 and Sass language based on pure Node.js dev tools
First start by cloning the project on your workdir
$ git clone git@github.com:Systemantic/node-sass-boilerplate.git
You need to remove the git folder and initiating a new one
$ cd node-sass-boilerplate
$ rm -rm .git
$ git init
Install the Node.js packages dependencies, by typing the following command.
$ npm install
Great!! :ok_hand: now start you project and enjoying the live reload. No need for CMD+R to refresh your updates after each change.
$ npm start
.
├── README.md
├── build // The build folder
├── index.html // You home page
├── package.json
└── sass // Put your styles here
├── abstracts
│ ├── _functions.scss
│ ├── _mixins.scss
│ ├── _placeholders.scss
│ └── _variables.scss
├── base
│ ├── _reset.scss
│ └── _typography.scss
├── components
│ ├── _buttons.scss
│ ├── _cover.scss
│ └── _dropdown.scss
├── layout
│ ├── _footer.scss
│ ├── _forms.scss
│ ├── _grid.scss
│ ├── _header.scss
│ ├── _navigation.scss
│ └── _sidebar.scss
├── main.scss
├── pages
│ └── _home.scss
├── themes
└── vendors
Copyright 2018-2019 Systemantic, https://github.com/Systemantic/node-sass-boilerplate
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Image to Text
Extract all the text from a selected image using tesseract OCR engine.
Input
Output
No Output
Choose a file to start
Powered by
Tesseract JS


The room is drifting away from Earth.
The room is drifting away from Earth.
The moon is drifting away from Earth.


Hello and welcome to the Year of Programming 2017's challenges repository! Here we will be posting ~~daily~~ periodic challenges for the community to complete.
A common source of frustration among budding developers is acquiring the experience necessary to move past the early stages of programming and computer science. Year of Programming is an active community of dedicated participants that encourage each other to acquire daily experience in problem solving, programming and computer science through collaboration.
Periodically we will be releasing a new programming challenge by pushing it to our Github repository targeted at a wide audience.
As a participant, you will solve this challenge with the programming language of your choice and document the thought process behind solving this problem, explain how to compile your code and how to use your program.
You will then submit your code for review and your peers will review your code and give you feedback. Once enough people have reviewed and approved of your solution, we will merge your code onto the repository and the solution will be stored there for that challenge.
Most of our communication is done through our slack chat room. Through this chat room you can collaborate with others to help solve these challenges or anything you feel like discussing.
This will develop key skills required for problem solving and development for new developers such as: * Solving problems through programming * Technical writing * Clean and readable code * Code reviewing and giving feedback * Version control using Git * Communication skills through collaboration
Each challenge will be posted in its own folder, in numbered order. Each challenge folder will have a Challenge.md file describing the challenge, and may have some example code or data provided.
To participate, simply fork the repository and then make a folder for your solution, inside the challenge you are solving.
If I am solving the zeroth challenge in Rust, I would work in the folder
challenge_0/rust/myrrlyn
, to organize solutions by their language and then their author. This allows us to easily browse solutions by language, and compare work!
To submit, open a pull request on the main repository. We'll make sure that merging won't cause any problems, and go from there.
When submitting a pull request please use the following format for your title:
[Language] Challenge #
Note: Your solution will not be instantly accepted onto repository. We will be reviewing your code, file formatting and directory structure of your code. If you satisfy the requirements, then we will accept and merge.
If you do not have git installed, please do that first.
Note: If you have never used the command line a $
before some text denotes a command and a line following that without the $
denotes the output of that command.
To confirm that you have git installed type in:
$ git --version
git version 1.9.1
It should respond by showing you the version of git you have installed.
Click on the button on the top that says fork.
You will now have a copy of the 2017Challenges repository in your profile.
Click on the green dropdown button titled "Clone or download" and copy the URL there.
Note: I recommend cloning as SSH as it will allow you to use git without constant user authentication. If you are not comfortable with this yet, proceed with HTTPS.
Open up your command line tool and enter:
Note: Enter the following without the following without the angled brackets (i.e. git clone git@github.com:ManuelMeraz/2017Challenges.git
)
$ cd ~
$ git clone <URL that you copied here>
Cloning into '2017Challenges'...
remote: Counting objects: 874, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 874 (delta 4), reused 0 (delta 0), pack-reused 860
Receiving objects: 100% (874/874), 95.41 KiB | 0 bytes/s, done.
Resolving deltas: 100% (324/324), done.
Checking connectivity... done.
Next we will be configuring your git setup.
Note: Simply replace the text inside the quotation marks with your name and email.
$ cd ~/2017Challenges/
$ git config --global push.default simple
$ git config --global user.name "John Doe"
$ git config --global user.email<EMAIL_ADDRESS>$ git remote add challenges https://github.com/YearOfProgramming/2017Challenges.git
The challenges will be structured in the following format ``` / -> root directory
README.md -> Contains the information in this help page challenge
0/ -> challenge
README.md -> File containing challenge prompt
r/ -> lowercase directory with your preferred language.
php/ -> If it does not exist, then create one.
python/
cpp/
csharp/
.../
/john -> your username in slack
/nick
/nancy
.../
README.md -> Documentation for your program. Be creative!
src/ -> contains your source code
```
Assuming that you are in the root of the directory you will look for the challenge you want to complete.
/challenge_#/
Move into the directory for the challenge you want to complete and see if a directory already exists for your preferred programming language.
If it exists, move into that directory. Otherwise, make a new directory for your language.
/challenge_#/language/
Note: The format for directory naming for programming languages is all lowercase plain text with no special characters(i.e. csharp).
Once inside your preferred programming language directory you will create a directory with your slackusername or name you want to be identified by for your work.
/challenge_#/language/name/
Inside this directory you will have 2 items: * A file named 'README.md' and inside you will document how your program works. * Your source code, preferably in a directory titled 'src'
Note: When you are documenting your program, pretend you are someone who has never seen that programming language and instruct them on the steps to run your program and how to use it. Here is a working template and here is an example.
Your set up should be as follows so far:
/challenge_#/language/name/README.md
/challenge_#/language/name/src/file_1
/challenge_#/language/name/src/file_2
/challenge_#/language/name/src/...

If you go to the page where your forked repository is contained your updated code should be there.
Click on the "New pull request" button to submit your work for review. Be sure to include the challenge number and language of your solution!
To get a new challenge that has just been posted you open your command line and enter
$ git pull challenges master
This will download the newest solutions and challenges to your computer
When a challenge is released we will notify everyone in the Slack chatroom. If you have the app installed on your phone, you will receive a notification.
To acquire the new challenge open up your command line tool move to the 2017Challenges directory and enter the following command
$ cd ~/2017Challenges/
$ git pull challenges master
Note: Your text editor might open up to commit a merge. You can simply close it and continue.
If you type in the command
$ ls
challenge_0 challenge_1 challenge_2 challenge_3 challenge_4 challenge_5 LICENSE.txt README.md Unittesting.md
You should have something like the output here.
Move into the chalenge directory you want to complete and follow the same process as before for completing a challenge. Make sure to follow the documentation guidelines and formatting guidelines.
After you have pushed your code to your forked repository as follows
$ git push origin master
Then you can submit a pull request.
All credit goes to @selectivealso from our slack chat for this awesome image!
Reviewing and testing code is just as important as writing it. Peer to peer review is a core component of what we're striving to accomplish with our year of programming challenge. We would appreciate it if everyone who submits a solution reviews at least one other persons submission. All submitted code should be well documented and work for the provided test cases.
Pulling seperate pull requests to test code is cumbersome and we realize that. To help with this, we suggest using an online compiler so that you can check over anothers code without having to leave your browser. A good online compiler is repl.it which has many languages available to work with!
You can copy and paste this:
- [ ] **Code Correctness**
- [ ] **Code Style**
- [ ] **Code Documentation**
- [ ] **Path Structure**
- [ ] **Merge Pull Request**
When You do perform a pull request, you should set the title of it so that others know no one has looked at it yet. - If you just submitted the pull request, your title should look like this: [language]challenge_[chalNumber](UnReviewed)
- If you have already recieved one review, your pull request title should look like this: [language]challenge_[chalNumber](Pending)
- If you have at least 2 reviews, set your pull request to this: [language]challenge_[chalNumber](ReadyForMerge)
and a mod will merge your code to the main repository.
Please check your github notifications frequently Once you've seen that you've been given an approval by any two people, write a comment aknowledging that you've seen them. Even a simple "Seen" will do.
Taking this approach to code review will help to streamline the process and make reviews easier for everyone involved. Take the time to check your github notifications so that you can check to see if anyone has reviewed your code yet.


If you want a quick installation which uses the usual directories like
/var/lib
, /var/log
, /usr/share/lib
etc. than follow:
Installing the deb package.
If you want Mireka to use only a single folder like /opt/mireka
,
for example because you need more than one version parallel,
or you need other customizations, then follow:
Installing binary tarball.


I am an Adviser in the Prices and Costs Division at the Directorate General Economics of the European Central Bank. I started my career at the ECB in 2000, after my PhD studies at the European University Institute.
After working for many years on exchange rates, trade and competitiveness I now work on inflation. After leading the macro workstream of the
competitiveness research network CompNet I coordinated the work of expert groups of the European System of Central Banks on
low inflation (2017) and
exchange rate pass-through (2019). I am now one of the coordinators of the new Price Setting Microdata Analysis (PRISMA) research network.
For more details see my CV or a fresh list of publications on my SSRN page .
These are my personal pages: any views expressed here are my own and do not necessarily reflect those of the European Central Bank or the Eurosystem.


EUR/USD parked around 1.1060, focus on trade, USD
by Pablo Piovano- EUR/USD keeps its daily gains in the 1.1060/70 band.
- US-China trade jitters are back to the fore.
- Attention stays on ECB minutes, Lagarde, PMIs.
EUR/USD keeps trading within a narrow range in the 1.1060/70 band amidst the resurgence of some trade concerns the continuation of the selling mood in the buck.
EUR/USD looks to data, trade
Spot is up for the third session in a row on Monday, prolonging the bounce off recent 5-week lows in the 1.0990/85 band, always on the back of the unremitting selling pressure in the greenback and some fresh trade concerns.
In fact, Chinese officials expressed some concerns earlier in the session regarding the sign of the ‘Phase One’ deal after President Trump is said to have ruled out the roll over of some tariffs. These corcerns translated into lower US yields and some renewed inflows to the safe havens, undermining further the mood around the dollar.
On another direction, the speculative community maintained their positions roughly unchanged during the week ended on November 12, taking EUR net shorts to 2-week lows as per the latest CFTC Positioning Report.
In the docket, the ECB’s C.Lagarde is due to speak in Frankfurt later in the week, while investors should be closely following the release of the ECB minutes and the preliminary prints of November’s PMIs in core Euroland.
What to look for around EUR
Spot is prolonging the rebound from last week’s lows in sub-1.10 levels, always underpinned by the renewed weakness around the greenback and hopes of a US-China trade deal. On the macro view, the outlook in Euroland remains fragile and does nothing but justify the ‘looser for longer’ monetary stance by the ECB and the bearish view on the single currency in the medium term at least. In this regard, all the attention will be on the publication of flash PMIs for the current month later in the week.
EUR/USD levels to watch
At the moment, the pair is gaining 0.10% at 1.1060 and faces the next up barrier at 1.1067 (high Nov.18) followed by 1.1093 (100-day SMA) and finally 1.1179 (monthly high Oct.21). On the downside, a breach of 1.0989 (monthly low Nov.14) would target 1.0925 (low Sep.3) en route to 1.0879 (2019 low Oct.1).


Before Change
// (n, channels) dot (dimension, channels).T = (n, dimensions)
if contains_bias(layer):
layer_wo_bias = copy_layer(layer, keep_bias=False)
tmp = iutils.listify(kutils.easy_apply(layer_wo_bias, Xs))
tmp = [reshape(x) for x in tmp]
kernel = kernel.reshape((-1, n_channels))
dense = keras.layers.Dense(kernel.shape[0], use_bias=False)
ret_Xs = [dense(x) for x in tmp]
After Change
layer.strides,
layer.dilation_rate,
layer.padding)
reshape = ilayers.Reshape((-1, np.product(kernel.shape[:3])))
ret_Xs = [reshape(extract_patches(x)) for x in Xs]
if return_o:
// Get Ys into shape (n, channels)


Student Chapter IIT Mandi
Home
News & Events
Why Join IEEE
Gallery
Executive Council
Resources
Contact us
Advisor
Dr. Hitesh Shrimali
Assistant Professor
hitesh[at]iitmandi[dot]ac[dot]in
Branch Counsellor
Dr. A D Dileep
Assistant Professor
addileep[at]iitmandi[dot]ac[dot]in
Chairman
Nikhil Kaushik
4th year, Electrical Engineering
nikhilkshk1[at]gmail[dot]com
Vice Chairman
Maeghel Puri
3rd year, Electrical Engineering
maeghel.puri[at]gmail[dot]com
Secretary
Avnish Gupta
3rd year, Mechanical Engineering
avnish1433[at]gmail[dot]com
Secretary
Sushmita Chaudhary
3rd year, Electrical Engineering
choudharysushmita055[at]gmail[dot]com
Treasurer
Anurag Rakde
3rd year, Electrical Engineering
anuragrakde[at]gmail[dot]com
Treasurer
Abhishek Kumar Mishra
3rd year, Electrical Engineering
b14203[at]students[dot]iitmandi[dot]ac[dot]in
Web Developer
Ashutosh Kumar Verma
3rd year, Computer Science Engineering
ashutoshkrverma[at]outlook[dot]com


we're the one to make you look good,..
Our Promise: we promise luxurious makeup & hair appointments
at the location of your choice.
Just
choose your glam & we will seamlessly connect you with the most appropriate artist(s).
We match you with the most appropriate artist(s) based on your unique needs!
We do what we like,We focus on bridal beauty,
allowing us to stand out from salons
and other on-demand beauty companies who focus on a
wide range of services.
This approach has gained us the trust of hundreds of brides & celebrity clients.
We are hand-selected for our level of professionalism,
technical skills & attendance in world-class bridal workshops.

Our artists bring professional
makeup/hair-styling kits, top of the line styling products
& professional lighting!
Hair Consultation


--- title: Information about DuckDuckGo's Partnership with Yahoo category: Hidden order: 1000 ---
Our partnership with Yahoo helps us give you the best search experience possible, and helps Yahoo generate revenue.
Of course, in accordance with our strict privacy policy, we do not share personal information with any partners, including Yahoo. To make this crystal clear, Yahoo has also published a privacy statement to the same effect. We're proud to work closely with a partner who is willing to work with us to protect your privacy.
In addition to the existing Yahoo technology we've been using, our latest partnership with Yahoo enables DuckDuckGo to get access to features you've been requesting for years:
All of this functionality is not fully rolled out yet, but will be soon!
We've worked closely with Yahoo to implement these new features in accordance with contractual terms and our privacy policy. To be as transparent as possible, we've written up details on the technical implementation.


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.google.gdata.util.httputil.FastURLEncoder
public class FastURLEncoder
This class has been deprecated; use CharEscapers.uriEscaper()
,
CharEscapers.cppUriEscaper()
or create your
own custom PercentEscaper
.
Almost every use of FastURLEncoder can now be replaced with an instance of the PercentEscaper class, which is much faster.
In most cases it should be possible to use the static instances available
from CharEscapers
but it is also possible to
create your own escaper with custom behaviour.
See Deprecating FastURLEncoder for more information.
Note that the new uriEscaper only escapes using UTF-8 encoding and while no examples of other encodings were found when preparing this class for deprecation, it's possible that some instance were missed. If you have a valid reason to escape URIs via an encoding other than UTF-8 please let the java-libraries-team know.
FastURLEncoder is intended as a replacement for the slow and inefficient java.net.URLEncoder. There are a few differences though:
It is possible that URLEncoder is doing really complicated stuff for a reason and that I just don't understand why. If you are unsure of FastURLEncoder just call FastURLEncoder.setVerifyAgainstJava(true). This will run both versions and verify that the outputs are the same. Of course this will be slow but it is useful for testing. I wouldn't be surprised if the two differ for non-latin1, non-utf-8 encodings.
FastURLEncoder requires jdk 1.5.
URLEncoder
| Field Summary | |
|---|---|
static java.util.BitSet |
CPLUSPLUS_COMPAT_SAFE_OCTETS
Deprecated. Use CharEscapers.cppUriEscaper() |
| Method Summary | |
|---|---|
static java.util.BitSet |
createSafeOctetBitSet()
Deprecated. Use CharEscapers.uriEscaper() .
or create an instance of PercentEscaper .
See FastURLEncoder for more details. |
static java.lang.String |
encode(java.lang.String s)
Deprecated. Use CharEscapers.uriEscaper() . |
static void |
encode(java.lang.String s,
java.lang.Appendable out)
Deprecated. Use CharEscapers.uriEscaper() .
See FastURLEncoder for more details. |
static java.lang.String |
encode(java.lang.String s,
java.util.BitSet safeOctets,
boolean plusForSpace)
Deprecated. Use CharEscapers.uriEscaper() .
or create an instance of PercentEscaper .
See FastURLEncoder for more details. |
static java.lang.String |
encode(java.lang.String s,
java.lang.String encoding)
Deprecated. Use CharEscapers.uriEscaper() .
See FastURLEncoder for more details. |
static void |
encode(java.lang.String s,
java.lang.String encoding,
java.lang.Appendable out)
Deprecated. Use CharEscapers.uriEscaper() .
See FastURLEncoder for more details. |
static java.lang.String |
encode(java.lang.String s,
java.lang.String encoding,
java.util.BitSet safeOctets,
boolean plusForSpace)
Deprecated. Use CharEscapers.uriEscaper()
or create an instance of PercentEscaper .
See FastURLEncoder for more details. |
static boolean |
encode(java.lang.String s,
java.lang.String encoding,
java.util.BitSet safeOctets,
boolean plusForSpace,
java.lang.Appendable out)
Deprecated. Use CharEscapers.uriEscaper()
or create an instance of PercentEscaper .
See FastURLEncoder for more details. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
@Deprecated public static final java.util.BitSet CPLUSPLUS_COMPAT_SAFE_OCTETS
CharEscapers.cppUriEscaper()
| Method Detail |
|---|
@Deprecated public static java.lang.String encode(java.lang.String s, java.lang.String encoding, java.util.BitSet safeOctets, boolean plusForSpace) throws java.io.UnsupportedEncodingException
CharEscapers.uriEscaper()
or create an instance of PercentEscaper
.
See FastURLEncoder
for more details.
s
- String to encode.encoding
- character encoding to use (e.g., "UTF-8")safeOctets
- set of octets that should not be escaped.plusForSpace
- whether octet 0x20, i.e. "space", should be encoded as
a plus sign rather than "%20". Note that this parameter is effectively
ignored if 0x20 is in safeOctets.
s
. Will return s
itself if no encoding is necessary.
java.io.UnsupportedEncodingException
- if encoding
is not supported.@Deprecated public static boolean encode(java.lang.String s, java.lang.String encoding, java.util.BitSet safeOctets, boolean plusForSpace, java.lang.Appendable out) throws java.io.UnsupportedEncodingException, java.io.IOException
CharEscapers.uriEscaper()
or create an instance of PercentEscaper
.
See FastURLEncoder
for more details.
s
- String to encode.encoding
- character encoding to use (e.g., "UTF-8")safeOctets
- set of octets that should not be escaped.plusForSpace
- whether octet 0x20, i.e. "space", should be encoded as
a plus sign rather than "%20". Note that this parameter is effectively
ignored if 0x20 is in safeOctets.out
- the Appendable destination for the encoded string.
s
did need escaping, false otherwise. In
other words, this returns false only if s
was output to
out
verbatim.
java.io.UnsupportedEncodingException
- if encoding
is not supported.
java.io.IOException
- if out
does so when appended to.@Deprecated public static java.lang.String encode(java.lang.String s, java.lang.String encoding) throws java.io.UnsupportedEncodingException
CharEscapers.uriEscaper()
.
See FastURLEncoder
for more details.
s
- String to encode.encoding
- character encoding to use (e.g., "UTF-8")
java.io.UnsupportedEncodingException
URLEncoder.encode(String, String)
@Deprecated public static void encode(java.lang.String s, java.lang.String encoding, java.lang.Appendable out) throws java.io.UnsupportedEncodingException, java.io.IOException
CharEscapers.uriEscaper()
.
See FastURLEncoder
for more details.
s
- String to encode.encoding
- character encoding to use (e.g., "UTF-8")out
- the Appendable destination for the encoded string.
java.io.UnsupportedEncodingException
- if encoding
is not supported.
java.io.IOException
- if out
does so when appended to.URLEncoder.encode(String, String)
@Deprecated public static java.lang.String encode(java.lang.String s)
CharEscapers.uriEscaper()
.
s
- String to encode.URLEncoder.encode(String)
@Deprecated public static void encode(java.lang.String s, java.lang.Appendable out) throws java.io.IOException
CharEscapers.uriEscaper()
.
See FastURLEncoder
for more details.
s
- String to encode.out
- the Appendable destination for the encoded string.
java.io.IOException
URLEncoder.encode(String)
@Deprecated public static java.lang.String encode(java.lang.String s, java.util.BitSet safeOctets, boolean plusForSpace)
CharEscapers.uriEscaper()
.
or create an instance of PercentEscaper
.
See FastURLEncoder
for more details.
s
- String to encode.safeOctets
- set of octets that should not be escaped.plusForSpace
- whether octet 0x20, i.e., "space", should be encoded as
a plus sign rather than "%20". Note that this parameter is effectively
ignored if 0x20 is in safeOctets.URLEncoder.encode(String)
@Deprecated public static java.util.BitSet createSafeOctetBitSet()
CharEscapers.uriEscaper()
.
or create an instance of PercentEscaper
.
See FastURLEncoder
for more details.
PercentEscaper.PercentEscaper(String, boolean)
constructor.
If you don't need to add your own safe characters, just use
CharEscapers.uriEscaper()
.
encode(String,String,BitSet,boolean)
or
encode(String,BitSet,boolean)
. It defaults to containing the
octets that would not be escaped by
URLEncoder.encode(String)
. Callers can edit the
result for specialized purposes.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


---
layout: archive
title: Lean Prover Zulip Chat Archive
permalink: 113488general/93428CInightlies.html
---
The archive URL format has changed. Please find this page at:
https://leanprover-community.github.io/archive/stream/113488-general/topic/CI.20nightlies.html


webkitMovementX:鼠标的移动距离，主要用在一些3D场景中，比如第一视角的游戏，需要计算用户鼠标的移动距离来反馈画面。下面来自mozilla官网的API This API is useful for applications that require significant mouse input to control movements, rotate objects, and change entries. It is particularly essential for highly visual applications, such as those that use first-person perspective, as well as 3D views and modeling. For example, you can create apps that let your users control the viewing angle simply by moving the mouse around without any button clicking. The buttons are then freed up for other actions. This kind of mouse input is quite handy for viewing maps, satellite imagery, or first-person scenes (such as in a game or an immersive video). 当然老式浏览器就不大算指望他了，下面是一段兼容代码：
1 document.addEventListener("mousemove", function(e) { 2 var movementX = e.movementX || 3 e.mozMovementX || 4 e.webkitMovementX || 5 0, 6 movementY = e.movementY || 7 e.mozMovementY || 8 e.webkitMovementY || 9 0; 10 11 // Print the mouse movement delta values 12 console.log("movementX=" + movementX, "movementY=" + movementY); 13 }, false);注：IE和FF的定位有个1px的差别，实际上，IE的定位从0开始，FF的定位从1开始，FF永远会比IE大1px，需要根据实际情况处理。


Work Day Scheduler
A simple calendar app for scheduling your work day
*Live date goes here!*
*Live time goes here!*
9AM
10AM
11AM
12PM
1PM
2PM
3PM
4PM
5PM


See my design work on Behance or Dribbble, read my stories on Medium, and connect on LinkedIn.
Started at 2011, 2mundos was formed by a very strong technical team that provides the best solition for their clients in LATAM, USA, and Europe.
I worked as a freelancer on QuintoAndar's mobile app for Realtor/Estate Agents, creating the UIs and a prototype for the Android app using Material Design.
This is my first shot on Dribbble. I will upload shots of my design work regularly, so follow me!
What I learned by working alone and the adaptation to a team-oriented work.
This is a story about a book. This book is named Sprint. Sprint is a design methodology. And it’s fantastic.
An Educational Platform for schools in Brazil. Made for the top 50 Educational Publisher in the World — FTD.
If your dream has always been to stamp covers of magazines, attend exclusive parties and be 'BFF' of TV stars, Famous City is your social game.
Mind Racer is a very entertaining game that combines a Quiz concept with the racing genre, challenging the knowledge of its players with a very diverse set of categories and subjects.
More on: Behance, Dribbble, Medium, LinkedIn, Twitter.


HomelabOS
Welcome to HomelabOS version 0.2! Your very own offline-first open-source data-center!
HomelabOS is a collection of various separate services. You can find more information about each in the menu on the left.
Getting Help
If you are having problems you can file an issue on GitLab.


I set out on a mission yesterday to put together a URL Redirect Server. Before I even get into the nitty gritty of how I got this to work via Nginx, I’ll add two caveats:
- I don’t really know much about Nginx at all. I’ve written up and configured one reverse proxy and handed that off to some ops team. Theoretically it worked (in their testing). But other than that, I’ve barely done anything myself with Nginx.
- I’ve no idea really if this is even a good practice. URL Redirects of this sort actually seem like a hack. They work, but it seems like there really ought to be a better less onion layer like way to do this type of redirection.
With those two caveats I’ll add a few questions for you, dear reader.
- If you have any suggestions for an easier way than spinning up a whole Nginx Server to do URL Redirects I’d love to hear them!
- Is this a best practice way to do subdomain to URL Redirects? If not, I’d probably like to be doing whatever is best practice.
Anyway, now that we’re past my caveats, questions, and requests for help, let’s roll on the how-to of all this.
This whole setup started when I realized while doing a migration from one DNS Provider to Google DNS. Google DNS doesn’t convolute their DNS Services with URL Redirect features or other non-DNS features. When I stumbled into the fact that there were some URL Redirects that had muddled themselves into Google DNS as actual CNAME DNS entries, I knew I’d need to get those migrated to something that could actually do URL redirects.
The need was super simple in scope. Have a subdomain, like http://data.adron.me redirect (302 and eventually 301, more on that in a minute) to something like http://api.compositecode.com/dataservices/information.html. I did some reading about Apache vs. Nginx. I determined I’d go with Nginx as I knew it to be a solid server with minimal fuss.
Setting up Nginx
Before getting into a smart way to setup Nginx, I just dove in to figure out how to setup a redirect.
First I spun up an Ubuntu 16.04 Server on Google Cloud. Here’s the interface for creating a new instance on Google Compute Engine (GCE).
Next setup the criteria for the instance. In my particular situation I’m assuming an almost non-existent need for resources so I’ve select the uber cheapo $4.49 instance. For that instance I named it url-redirector, stuck it in the us-central1-a zone, selected the micro (1 shared vCPU) with 0.6 GB Memory, using the Ubuntu 16.04 LTS image, gave it default access, selected HTTP traffic, and clicked create.
Once created it displayed on the Compute Engine dashboard screen. There I have my IP and SSH options.
Clicking on the SSH vertical elipsis I then selected the View gcloud command
option. A dialog appears with the gcloud command to connect to this new instance.
I copied the command to ssh into my Google Cloud server instance.
gcloud compute --project "that-big-universe" ssh --zone "us-central1-a" "url-redirector"
At this point I went ahead and logged into this new instance and installed Nginx.
sudo apt-get update
sudo apt-get install -y nginx
On Ubuntu 16.04 a new firewall technology is used called Uncomplicated Firewall (UFW). To setup that firewall, open up the HTTP and SSH ports. Some instructions point to an Nginx HTTP so I added that too. Then I enabled the firewall.
sudo ufw allow http #adds port 80
sudo ufw allow ssh #adds port 22
sudo ufw allow 'Nginx HTTP'
sudo ufw enable
I noticed this prompted for a “y|n
“ as I enabled the firewall. So I’ll have to figure that out later as I work through automating and building out this server for deployment and prep with Packer and Terraform later. At this point however I have the server running, with Nginx, and am ready to test out a redirect.
Configuration File Structure
A lot of the samples I find all over the web are in little snippets like the following.
location / {
root /data/www;
}
or
server {
location / {
root /data/www;
}
location /images/ {
root /data;
}
}
or
location / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
}
In these three examples I have location with a value for the root property in the top one, then in the next the server with two location sections and then finally a location. So many of these snippets are used and can be confusing without context for how and where things are structured within the configuration file itself.
Let’s break this out real quick to the requisite parts of the file. Nginx has modules controlled by directives in the configuration file. A directive consistes of name and parameters separated by spaces and ending with a semicolon. A block directive or simple directive has the same overall structure. The difference being a block directive has a set of instructions surrounded by braces. A context is a block directive that has additional directives inside the braces. Directives placed in the configuration file outside of contexts is in the main context.
Some of the key contexts to be familiar with in configuration of Nginx are the events, http, main, server, http, and location directives. Also, it’s good to know that the events and http directives reside int he main context, server in http, and location in server. The most common one often edited, at least in my minor experience so far is the server context. This server context of course resides in the http context which resides in the main context. This looks something like what is shown below.
http {
server {
}
}
Check out a sample nginx.conf files to get an idea of what the default config file looks like after installation. For more information also check out this other Digital Ocean blog entry “Understanding the Nginx Configuration File Structure and Configuration Contexts”.
Another important thing to know, besides how the nginx.conf file is structured and formatted, is where the thing is actually located. Here are some of the file locations for it and related important files.
/var/www/html
is where the actual content that Nginx serves is located./etc/nginx
is where the configuration files are. Including the nginx.conf file I’ll need to edit for the redirect./etc/nginx/sites-available
is the directory where per-site “server blocks” are stored. Typically server block config is done here and then enabled by linking to the other directory./etc/nginx/sites-enabled
is the directory where enabled per-site “server blocks” are stored linked by config files in the sites-available directory./etc/nginx/snippets
is where config fragments are included that are used elsewhere in Nginx configuration./var/log/nginx/access.log
is where the web server records log files unless configured to do so elsewhere./var/log/nginx/error.log
is where Nginx errors are recorded.
What I needed to do at this point was edit the nginx.conf, or some file, and ensure that it had the appropriate redirection in the file. My first take at this looked like the following edit. I opened up the nginx.conf file and added this to the http {}
context.
http {
server {
server_name data.adron.me;
return 302 http://api.compositecode.com/dataservices/information.html;
}
}
At this juncture however, with this hack of the config file I had a working URL Redirection. Upon further reading I realized that maybe this wasn’t the most ideal place to put the redirection.
Summary
I’ve got a solid redirect in place for http://data.adron.me that is sending traffic to http://api.compositecode.com/dataservices/information.html. However I’m not sure I’ve set this up using an ideal practice. So I went back to reading more of the documentation. RTFMing, it’s important.
Part 2, coming up soon, with more docs read for better insight! <- this line will eventually link, like a linked list, to the next part of this series.
References:


This map allows you to explore where Oregon Tech alumni live, by zip code, throughout the Western United States.
Select college, degree, or year of graduation to see where there might be concentrations of alumni with your selected criteria.
You may also identify alumni married to other alumni.
This is a tool for the Oregon Tech University Development and Alumni Relations staff to plan alumni connections and events.
To return to map default view, select “ALL” in the “Select a College” dropdown box.


-
PH, a tool for making git push more efficient
Take the chemistry out of git push
For my second project, I wanted to get closer to my original goal - to learn a new language every week. Therefore, this week, I...
-
ApiPush, a service that lets you write public api's without code
Write public API's without a line of code
ApiPush is a simple app that lets anyone easily publish an API without writing any code - think Heroku for public apis. Each api is...


This user has {{ uservenues|length }} venues.
{% for uservenue in uservenues %}
- {{ uservenue.name }}
- num checkins : {{ uservenue.checkin_guid_list|length }}
- last there at: {{ uservenue.last_updated }}
- located at : {{ uservenue.location.lat }}, {{ uservenue.location.lon }}
{% endfor %}


Functions and examples from the book Solving Differential Equations in R by Karline Soetaert, Jeff R Cash and Francesca Mazzia. Springer, 2012.
| Version: | 1.0-1 |
| Depends: | R (≥ 2.01), deSolve, rootSolve, bvpSolve, ReacTran, deTestSet |
| Imports: | shape |
| Suggests: | scatterplot3d |
| Published: | 2014-12-29 |
| Author: | Karline Soetaert |
| Maintainer: | Karline Soetaert <karline.soetaert at nioz.nl> |
| License: | GPL-2 | GPL-3 [expanded from: GPL] |
| NeedsCompilation: | no |
| CRAN checks: | diffEq results |
| Reference manual: | diffEq.pdf |
| Vignettes: |
BVP examples from the book Solving Differential Equations in R by Soetaert, Cash and Mazzia (2012) DAE examples from the book Solving Differential Equations in R by Soetaert, Cash and Mazzia (2012) DDE examples from the book Solving Differential Equations in R by Soetaert, Cash and Mazzia (2012) ODE examples from the book Solving Differential Equations in R by Soetaert, Cash and Mazzia (2012) PDE examples from the book Solving Differential Equations in R by Soetaert, Cash and Mazzia (2012) |
| Package source: | diffEq_1.0-1.tar.gz |
| Windows binaries: | r-devel: diffEq_1.0-1.zip, r-release: diffEq_1.0-1.zip, r-oldrel: diffEq_1.0-1.zip |
| OS X binaries: | r-release: diffEq_1.0-1.tgz, r-oldrel: diffEq_1.0-1.tgz |
| Old sources: | diffEq archive |
Please use the canonical form https://CRAN.R-project.org/package=diffEq to link to this page.


Home
Posts
About Us
Want to Sell
Login
Sign Up
Login to Your Account
create
Already registered?
Sign In
User Name:
Password:
login
Not registered?
Create an account


ENTER THE DETAILS
{% csrf_token %}
ENTER THE NO. OF PERSONS
OUTING EXPENSES
DINNER EXPENSES
TRIP EXPENSES
Submit


This is a sample Apache Cordova application. Notice how the application's UI is pretty boring. This is because I didn't do anything to make the UI special. Instead, this application consists of a very simple HTML page with no embellishments.
The application UI is implemented using the default settings for the mobile device's webView.


|
|
PHP - PEAR Auto Install go-pear
|
This page covers automatic installation of PEAR using go-pear; it is provided for reference only. The following covers Pear instalation along with one of its components (classes) for testing.
Pre-configured
Apache and PHP (modules) configuration files have been pre-configured as follows:
|
Apache httpd.conf
Contains an Alias and Directory directive
to map the folder us_pear into Apache.
|
Alias /us_pear "${US_ROOTF}/home/us_pear/"
<Directory "${US_ROOTF}/home/us_pear/">
Options Indexes Includes
AllowOverride All
Require all granted
</Directory>
|
|
PHP config files: php_development.ini, php_production.ini and php_test.ini
Contain the include path shown on the right.
|
include_path = ".;${US_ROOTF}/home/us_pear/PEAR"
|
File .htaccess
Running go-pear.php generates a long list of depreciated warning. These are suppressed using an htaccess file. This htaccess file also restricts access to localhost only. Create the file as follows:
- Copy the .htaccess from folder www into folder UniServerZ\home\us_pear (Windows makes it difficult to create a file named .htaccess hence the copy)
- Edit this copied file and delete all it’s content and add the following lines:
|
Description .htaccess
The first three lines restricts access to local host.
The php_flag display_errors 22527 is the same as setting
Error_reporting = E_ALL & ~E_DEPRECATED in php.ini
Suppresses depreciated warnings.
|
UniServerZ\home\us_pear\.htaccess
Order Deny,Allow
Deny from all
Allow from <IP_ADDRESS>
php_flag display_errors 22527
|
Install and run go-pear
The following details how to download, install and run the go-pear installer.
- Create a new folder us_pear in folder UniServerZ\home (Already created).
- Download the file from http://pear.php.net/go-pear and save it as go-pear.php
- Save this in folder UniServerZ\home\us_pear (created in step 1)
- Start UniController from UniController start Apache
- Type the following into your browser: http://localhost/us_pear/go-pear.php
- Welcome to go-pear 1.1.6 displayed. Click next
- Configuration page displayed
- Select MDB2 database abstraction layer
- Click Install
- Wait for Installation Completed to be displayed.
- Click Start Web Frontend of the PEAR Installer. Note: This will produce a 404 error Not Found.
- The URL http://localhost/us_pear/\index.php is incorrect change this to http://localhost/us_pear/index.php
- Note: The above will highlight another error:
Warning: Can not find config file, please specify the $pear_user_config variable in /us_pear/index.php
- To resolve the above edit file UniServerZ\home\us_pear\index.php as follows:
- Note in addition to resolving the above we take the opportunity to make this configuration file portable.
|
Change section shown on right:
To correct the above uncomment
Line //$pear_user_config = ''; and insert the
correct path.
However with a few extra changes the file is
made portable as shown in the next section.
|
UniServerZ\home\us_pear\index.php - Top section
/**
* Put this file in a web-accessible directory as index.php (or similar)
* and point your webbrowser to it.
*/
// $pear_dir must point to a valid PEAR install (=contains PEAR.php)
$pear_dir = 'C:\UniServerZ\home\us_pear/PEAR'; // default of install
// OPTIONAL: If you have a config file at a non-standard location,
// uncomment and supply it here:
//$pear_user_config = '';
// OPTIONAL: If you have protected this webfrontend with a password in a
// custom way, then uncomment to disable the 'not protected' warning:
//$pear_frontweb_protected = true;
|
|
To:
$us_path = realpath('.') sets the variable to
the full path of this document for example:
C:\UniServerZ\home\us_pear
This variable is used to construct paths:
$pear_dir = $us_path.'\PEAR';
$pear_user_config = $us_path.'\pear.conf';
We are using the .htaccess file to restrict
access hence this line is set to true:
$pear_frontweb_protected = true;
|
/**
* Put this file in a web-accessible directory as index.php (or similar)
* and point your webbrowser to it.
*/
$us_path = realpath('.'); // Determine full path to this file portability
// $pear_dir must point to a valid PEAR install (=contains PEAR.php)
$pear_dir = $us_path.'\PEAR'; // default of install
// OPTIONAL: If you have a config file at a non-standard location,
// uncomment and supply it here:
$pear_user_config = $us_path.'\pear.conf';
// OPTIONAL: If you have protected this webfrontend with a password in a
// custom way, then uncomment to disable the 'not protected' warning:
$pear_frontweb_protected = true;
|
- Now re-enter the url: http://localhost/us_pear/index.php and the web-front end is displayed.
- From the left menu click Configuration link
- Change PEAR configuration file directory: from C:\php\pear\cfg to C:\UniServerZ\home\us_pear
- Click Submit button
Note: The above produces configuration file C:\UniServerZ\home\us_pear\pear.conf this file as it stands is NOT portable. When UniController is started it checks the current server location and updates this configuration accordingly. If you need to change paths ensure they are set for the current server location.
Summary
The pear module was created using the above procedure and once installed is ready to run. To install packages see section Using PEAR Frontend.
An alternative to using go-pear for installation is to manully instal Pear convered on page PEAR Manual Install.
|


Juan was just finishing hitching his mule, Esmeralda, to the old buckboard. He was a proud father and was taking his daughter, Angelica, to her Quinceanera. Juan was just a ranch hand and didn't have much money, but he had festooned Esmeralda's harness with some bright red and white ribbons and wore his best go-to-church suit. Juan couldn't help but think how proud Maria would have been to see her daughter on this special day. Sadly, Maria had been killed by a stray bullet in a stagecoach robbery one year ago to the day. Juan had done his best with Angelica and she often told her friends that he was a good father. He had ordered her a beautiful new white dress from the Sears catalog and then asked Mrs. Miller in Tombstone to tailor that dress to fit Angelica perfectly. When Angelica came out of the house that evening Juan couldn't help but shed a tear -- she looked just like her mother and it made him miss Maria something awful. He helped Angelica onto the wagon then climbed aboard and called "git-up, girl" to Esmeralda. It was about a 30-minute ride to Tombstone so Angelica and Juan joked and sang songs that they had learned in church.
Jack Dunlap woke with a start from a nap he was taking beside a boulder at McGillicuddy's corner. He stood up and stretched then cocked his head and listened. He could hear a man and woman singing some sort of Spanish church song off to the east. Jack smiled and thought that this would be easy pickings since a man would give up anything to protect his woman. He pulled his pistol from its holster and checked that it was fully loaded, then leaned against the boulder and waited.
A few minutes later a horse came around the bend. Jack was somewhat surprised because he hadn't heard a horse approach, but he was happy to see that the rider was a young woman and there wasn't anyone else around. She was beautiful, with olive complexion and long black hair. She did not smile or even look at Jack, but stiffly stared straight ahead. Jack figured this must be his lucky day with two easy marks in a row. He stepped into the middle of the road in front of the horse and held up his hand to stop the woman. He smiled broadly and said "Afternoon, ma'am." She said nothing in reply but shifted her gaze to stare at him with dark brown eyes. Jack smiled even more broadly and said, "I said afternoon, Ma'am. In these parts it's common courtesy to greet a polite stranger." Again, the rider stared silently. Then Jack pulled his pistol and pointed it loosely toward the woman and said "All right, then, we won't talk. Just hand over your valuables." The woman said nothing and made no motion. Jack cocked his head just a little bit to the side and was confused. Normally, when he pulled his gun a traveler would be frightened and willing to do anything, but this woman just sat there like a statue. Jack looked at her closely and after a short pause his eyes widened a bit and he said, "Wait a minute. Don't I know you? It seems like we've met somewhere, what's your name?" The woman said nothing but she began to smile at Jack. He was struck, it wasn't a friendly smile that she offered, it was more like his own smile just before he gunned someone down.  That's when Jack saw it.  Suddenly, Jack remembered and said, "Wait a minute! You're that woman what I accidentally shot during the stagecoach robbery about a year ago.  What are you doing here?"
Maria turned and looked directly at Jack, but she was no longer smiling. His blood ran cold and he quickly stuffed his pistol back in its holster and started backing away. The corners of Maria's mouth began to pull back revealing oddly sharpened teeth. She then seemed to float off of her horse onto the ground while her muscles were melting from her face and hands. Gone was that beautiful skin and black hair, replaced by ugly green wormy flesh dripping from her skull in great chunks. Gone were those beautiful brown eyes, replaced by empty sockets. Gone was her white gown, replaced by a dirty, tattered gray rag.
Jack was walking backwards to keep away from Maria when he tripped over a small stone. He fell backwards and hit his head on the boulder that he had been napping beside earlier. The last thing he remembered as he lost consciousness was that specter hovering above him with sharp teeth gnashing together with a sickening, grinding noise.
Jack Dunlap woke with a start from a nap he was taking beside a boulder at McGillicuddy's corner. He stood up and stretched then cocked his head and listened. He could hear a man and woman singing some sort of Spanish church song in the west toward Tombstone. He immediately thought that it was too bad that he had missed that couple because they would have been an easy mark. He was thinking about a bad nightmare he had just dreamed and felt an odd inching coming from his trigger finger.  Then, Jack Dunlap screamed.
If you happen to visit Boothill Graveyard you'll find Jack Dunlap's grave just inside the main gate next to the fence. His marker reads: "3-Fingered Jack Dunlap."