{{ partial "head" . }} {{ partial "nav" . }}
You made it to our website - thank you for your time.
Now lets get you a quote in real time.
Text "Get Quote" to 1-831-555-1212.
Out Chat Bot will chat with you / ask you the necessary questions we need to know about your job to give you the lowest price / and your reward in an INSTANT QUOTE in 3 minutes.
You can also use the form below for any inquiries about grains availability, monthly subscriptions and scheduling a 1-on-1 session with our product experts. Don’t be shy, drop us a line!
3153 Lynn Avenue, Chicago, Illinois 60610
Monday – Saturday: 9AM – 7PM We’re closed on Sundays


 Lorem ipsum dolor sit amet consectetur, adipisicing elit.
Read moreLogin
Choose any of the follwoing providers to login and start organize your photos
Login with Google
Login with Dropbox


Welcome to my professional homepage.
I am a Postdoc at the Hochschule Aschaffenburg currently working on Magnetic Particle Imaging.
Magnetic Particle Imaging (MPI) is a new tomographic imaging technique to visualize the spatial concentration of iron oxide nanoparticles. In contrast to MRI where magnetic fields are used to measure the response of a body's hydrogen atoms, MPI is a tracer based method. Hence, morphological features can not be displayed. With a spatial resolution in the sub-millimeter range as well as an acquisition time in the range of milliseconds, however, it is better suited for imaging fast dynamic processes. These processes may include blood flow visualization for coronary artery diseases or cancer detection in targeted moceluar imaging.
The spatial distribution of the magnetic tracer material can be determined by applying external magnetic fields (a drive and a selection field) and measuring magnetization changes of the tracer. The relation between the actual particle concentration $c$ and the voltage $u_p$ induced in the receive coil is linear [1]: $$u_p(t) = \int_\Omega S(r,t)c(r)d^3r.$$ Usually, the spatial positions $r$ are discretized into $N$ sampling points and with $S$ denoting the MPI system matrix the following linear system of equations can be obtained: $$u=Sc.$$ The relation between particle position and corresponding signal response is currently acquired by explicit measurements. This implies that a delta sample of tracer materical is moved to all spatial positions ($r$) and the induced voltage is captured and stored in $S$. For the practical purpose of spectral filtering, the system matrix is commonly represented in the Fourier domain.
A major disadvantage, apart from the time consuming acquisition, is the superposition of the measured signal and the background noise of the scanner. In current applications this background is simply subtracted from the system matrix, implying that empty scanner measurements have to be taken during system matrix acquisition, as well as from the actual particle signal. In the BMBF project "(MPI)² - Modellbasierte Parameteridentifikation in Magnetic Particle Imaging: Nichtlineare Rekonstruktionsverfahren für Innovationen in medizinischen Anwendungen" more sophisticated approaches for the separation of excitation and particle signal are currently derived and evaluated.


Welcome to Big Theta! This project allows you to enter a topic and find related topics and equations. Topic and equation data are gathered from Wikipedia. After searching for a topic, click on any node while holding alt key (or windows key & alt together) in order to search for equations regarding that topic. Click on any node while holding the shift key to initiate a new graph search rooted at that node.


Hello, world!
by Benjamin Michalski
But why?
I intend to use these posts as a way to clarify and express my thoughts about various tech related topics.
Target audience
It should be accessible to fellow developers.
When possible, I'll also try to make it easy to understand to nontechnical people.
Created on 01/15/2017


--- title: Help Flux permalink: "/help-us/" layout: default dark-theme: true help: - title: Volunteer copy: | Sign up as volunteer here or mark “volunteer” on your membership details page (you were emailed a link to your user details when you joined from the Flux Membership Robot). This is how we will email you new updates on how you can help including raw materials and coordination details for election day! - title: Share copy: | The best way to help Flux grow is to tell your friends about us. Organic growth is really taking off, and with an upcoming double dissolution it’s more important than ever before to make sure your communities know about Flux. So please share our posts like our explainer video on your social media accounts. Or you can create your own posts, just make sure you tag us with #voteflux and #auspol so we can follow along! - title: Community Forum copy: 'Our community forum is where we will be organising our campaign. If you''re interested sharing your ideas, coordinating campaigns or if have any super powers come and let us know! ' --- {% include navbar.html %}
{{help.copy}}


Current page: {% current %}
Counting of http://<IP_ADDRESS>:8899/Hit-Kounter-LC/demo/index.html: {% counter %}
Counting of http://jerryzou.com: {% counter %}
Site Views: {% site %}


Portfolio Website
A website showcasing my projects and information about me.
HTML5
CSS3
JavaScript
Persistent Storage
A library that allows apps to store data persistently, while leaving how to store the data persistently up to the user.
C#
A website showcasing my projects and information about me.
HTML5
CSS3
JavaScript
A library that allows apps to store data persistently, while leaving how to store the data persistently up to the user.
C#


settings.csv¶
All fields explained in the following; replace [key] with flux/rv and [inst] with the name of your instrument (e.g. TESS/HARPS):
General settings¶
companions_phot
The companion(s) to the host star covered in the photometric data, space separated if there are multiple. For one planet for example b; for multiple planets for example b c d. For a binary companion for example B. Could also be Hans or anything really, if you feel rebellious. (string)
companions_rv
The companion(s) to the host star covered in the radial velocity data, space separated if there are multiple. For one planet for example b; for multiple planets for example b c d. For a binary companion for example B. Could also be Hans or anything really, if you feel rebellious. (string)
inst_phot
The name of the photometric instrument(s), space separated if there are multiple. For example TESS. The only condition is that the data file must be named exactly the same, for example TESS.csv. (string)
inst_rv
The name of the radial velocity instrument(s), space separated if there are multiple. For example HARPS ESPRESSO. The only condition is that the data file must be named exactly the same, for example HARPS.csv and ESPRESSO.csv. (string)
Fit performance settings¶
multiprocess
Do you want to run on multiple cores (True or False)
multiprocess_cores
On how many cores do you want to run (integer)
fast_fit
Do you want to mask out the out-of-transit data, and run a fast fit on the transits alone (True or False)
fast_fit_width
How big of a window around the transit midpoint do you want to keep (in days). For example , the default 0.33333 keeps a 0.33333 day window around the transit midpoint. Careful: if your initial epoch and period values are off by too much, this will cut out the wrong parts of the data! (float)
secondary_eclipse
When using fast fit, do you also want to keep a window centred around phase 0.5? For example, to keep information of the secondary eclipse in the light curve. (True or False)
phase_curve
This is just for plotting, really. Do you want to plot zooms onto the phase curve? (True or False)
shift_epoch
Do you want to automatically put the epoch into the middle of the data set? This is to avoid correlations between epoch and period, which would occur if the epoch is set far off one edge of the data set. (True or False)
inst_for_b_epoch
Which data sets do you want to regard for shifting the epoch? For example, you might have 10 year old, sparse archival radial velocity data, and a brand-new TESS light curve. In this case, it is best to just pass TESS, because this instrument is what really pins down the epoch and period. In other cases you might want to pass all. (string)
MCMC settings¶
mcmc_nwalkers
The number of MCMC walkers (integer)
mcmc_total_steps
The total steps in the MCMC chain, including burn-in steps. (integer)
mcmc_burn_steps
The burn-in steps in the MCMC chain; obviously must be smaller than the total steps.(integer)
mcmc_thin_by
Only save every n-th step in the MCMC chain (integer)
Nested Sampling settings¶
ns_modus
Which Nested Sampling algorithm do you want to pick? Default is dynamic, alternative is static.
ns_nlive
How many live points to set at the beginning of a Nested Sampling run? (integer)
ns_bound
Use a single ellipse, or multiple ellipses? (string)
ns_sample
Which sampling method to use to update the live points? rwalk or others (string)
ns_tol
The tolerance of the convergence criterion. (float)
Limb darkening law per object and instrument¶
host_ld_law_[inst]
If ‘lin’ one corresponding parameter called ‘ldc_q1_inst’ has to be given in params.csv. If ‘quad’ two corresponding parameter called ‘ldc_q1_inst’ and ‘ldc_q2_inst’ have to be given in params.csv, If ‘sing’ three corresponding parameter called ‘ldc_q1_inst’; ‘ldc_q2_inst’ and ‘ldc_q3_inst’ have to be given in params.csv,
Baseline settings per instrument¶
baseline_[key]_[inst]
The baseline / detrending method used per instrument, choose between:
sample_offset: sample for a simple, constant offset. One corresponding parameter called ‘baseline_offset_[key]_[inst]’ has to be given in params.csv.
sample_linear: sample for a linear slope. Two corresponding parameters called ‘baseline_offset_[key]_[inst]’ and ‘baseline_slope_[key]_[inst]’ have to be given in params.csv.
sample_GP_real:
sample_GP_complex:
sample_GP_Matern32: sample for the parameters of a Gaussian Process with a Matern 3/2 kernel. At least two corresponding parameters called ‘baseline_gp_matern32_lnsigma_[key]_[inst]’ (the characteristic amplitude of the GP) and ‘baseline_gp_matern32_lnrho_[key]_[inst’ (the characteristic length scale of the GP) have to be given in params.csv.
sample_GP_SHO:
hybrid_offset:
hybrid_poly_1:
hybrid_poly_2:
hybrid_poly_3:
hybrid_poly_4:
hybrid_spline:
hybrid_GP: do not use this.
Error settings per instrument¶
error_flux_[inst]
The white noise scaling per instrument: sample / hybrid. If ‘sample’ one corresponding parameter called ‘log_err_key_inst’ (photometry) or ‘log_jitter_key_inst’ (RV) has to be given in params.csv.
Exposure times for interpolation¶
t_exp_[inst]
Need to be in the same units as the time series. If not given the observing times will not be interpolated leading to biased results
Number of points for exposure interpolation¶
t_exp_n_int_[inst]
Sample as fine as possible; generally at least with a 2 min sampling for photometry, n_int=5 was found to be a good number of interpolation points for any short photometric cadence t_exp; increase to at least n_int=10 for 30 min phot. cadence the impact on RV is not as drastic and generally n_int=5 is fine enough
TTVs¶
fit_ttvs
(True or False)
Stellar grid per object and instrument¶
host_grid_[inst]
default / sparse / … (string)
b_grid_[inst]
default / sparse / … (string)
Stellar shape per object and instrument¶
host_shape_[inst]
sphere / roche / … (string)
b_shape_[inst]
sphere / roche / … (string)
Flux weighted RVs per object and instrument¶
Yes for Rossiter-McLaughlin effect


Search
Preparing search index...
The search index is not available
Hydro-SDK
Options
All
Public
Public/Protected
All
Inherited
Externals
Menu
Hydro-SDK
dart/ui
BlendMode
Enumeration BlendMode
Index
Enumeration members
clear
color
color
Burn
color
Dodge
darken
difference
dst
dstATop
dst
In
dst
Out
dst
Over
exclusion
hard
Light
hue
lighten
luminosity
modulate
multiply
overlay
plus
saturation
screen
soft
Light
src
srcATop
src
In
src
Out
src
Over
xor
Enumeration members
clear
clear
:
= 0
color
color
:
= 27
color
Burn
color
Burn
:
= 19
color
Dodge
color
Dodge
:
= 18
darken
darken
:
= 16
difference
difference
:
= 22
dst
dst
:
= 2
dstATop
dstATop
:
= 10
dst
In
dst
In
:
= 6
dst
Out
dst
Out
:
= 8
dst
Over
dst
Over
:
= 4
exclusion
exclusion
:
= 23
hard
Light
hard
Light
:
= 20
hue
hue
:
= 25
lighten
lighten
:
= 17
luminosity
luminosity
:
= 28
modulate
modulate
:
= 13
multiply
multiply
:
= 24
overlay
overlay
:
= 15
plus
plus
:
= 12
saturation
saturation
:
= 26
screen
screen
:
= 14
soft
Light
soft
Light
:
= 21
src
src
:
= 1
srcATop
srcATop
:
= 9
src
In
src
In
:
= 5
src
Out
src
Out
:
= 7
src
Over
src
Over
:
= 3
xor
xor
:
= 11
Modules
dart/_
http
dart/_
internal
dart/async
dart/collection
dart/convert
dart/core
dart/typed_
data
dart/ui
flutter/animation
flutter/cupertino
flutter/foundation
flutter/gestures
flutter/material
flutter/painting
flutter/physics
flutter/rendering
flutter/scheduler
flutter/semantics
flutter/services
flutter/widgets
http
scoped
Model
Blend
Mode
clear
color
color
Burn
color
Dodge
darken
difference
dst
dstATop
dst
In
dst
Out
dst
Over
exclusion
hard
Light
hue
lighten
luminosity
modulate
multiply
overlay
plus
saturation
screen
soft
Light
src
srcATop
src
In
src
Out
src
Over
xor
Generated using
TypeDoc


Updates badge text and style of the sidebar node with id.
| id | string, id of the sidebar node |
| count | text, count for the sidebar node, can be plain text |
| className | text, (optional) custom class for the badge |
| style | text, (optional) additional style for the badge |


This app is an example of integrating WordPress with an Ionic mobile app using the WP-API. To learn how to configure this app, please visit scottbolinger.com
Features:
Setup Instructions:
You can hide content until a member is logged in. For example, a video will appear below after you login (use the side menu).
Here's your super special bonus...
This app can show your products, add to cart, and checkout with Stripe all using the WooCommerce REST API. (Some setup is required)


Signup
First and Last Name
Email address
We'll never share your email with anyone else.
Password
But we might share your password.
Submit


Tutorial: Conditions & repetition
In this step of the tutorial we will learn about the tal:condition
and tal:repeat
attributes and how they control the rendering of a document template.
tal:condition
can remove an element
Let's make two changes to our one-page/one-model ZptSharp environment.
First, let's add the following to the markup (just before the close of the
tag is fine):

This renders if AmITruthy is true

Second, let's make a change to the model so that it now looks like this:
{ Message = "Hello world!", AmITruthy = true }
Now let's render the document once again; as you might expect, boolean true
is "truthy" and so the div
element is rendered into the output document.
Change the AmITruthy
value in the model to false
and render once again.
This time, ZptSharp will have removed the div element and all of its descendents.
When a tal:condition
attribute removes an element it matters not if that element has no descendents, just text node descendents or if it contains entire trees of markup, all descendents are removed.
You may experiment with different values for the AmITruthy
model value to get a feel for what is considered 'truthy' and what is 'falsey'.
As a start, null
references and empty strings are falsey.
A complete list of these may be found in the tal:condition
reference documentation.
tal:repeat
is like foreach
for an element
Let's make another change now, to both our document template and model. Let's add the following to the document:

I really like eating apples.

In our model, let's add another property so that the model now looks like this (reformatted for readability):
{
Message = "Hello world!",
AmITruthy = true,
Foods = new string[] {
"oranges",
"bananas",
"cucumber"
},
}
Let's render this; what we will see is that tal:repeat
works a lot like a C# foreach
statement.
In this case we will see the

element and all of its descendents are repeated three times, once for each listed food.
In each iteration a variable is created, named food
, holding the value from the current iteration.
We use this variable in a tal:replace
attribute (as described in the previous tutorial page) within the list item in order to show it on the rendered output.
Just like the foreach
keyword in C#, tal:repeat
works on objects that are IEnumerable
.
Next: More on variables & expressions
In the next tutorial page we will look deeper at variables & the different types of available expressions.


The Town That Dreaded Sundown * * * (out of * * * * )
Directed by Charles B. Pierce. Cast: Ben Johnson, Andrew Prine, Dawn Wells, Christine Ellsworth, Charles B. Pierce. 1977 - 90 minutes. Rated R (for violence, gore, and profanity). Reviewed November 18, 1998.
"The Town That Dreaded Sundown," is not a film that relies on a narrative, as much as it is a wholeheartedly visceral experience, in which it is not the characters that stand out, but the situations. Based on a true story that took place in Texarkana, Texas, circa Spring 1946, a town becomes horrified when two young people are attacked one night at a Lovers' Lane by an inexplicable hooded killer. They narrowly survive the ordeal, but the people of the town, not used to such violent crimes taking place so close to them, enter into a frenzy, terrified that he might strike again. Exactly twenty-one days later, two more lovers are found in a similar setting, but this time viciously murdered.
Immediately, Deputy Sheriff Norman Ramsey (Andrew Prine) and Texas Ranger J.D. Morales (Ben Johnson) are brought onto the case, fearing a possible pattern is starting every three weeks. Nicknamed "The Phantom Killer," the community goes into panic as the slayer goes into overdrive during that Spring, only to vanish without a trace thereafter.
We learn very little about the characters, whether it be the police officers or victims, and, in fact, one of the supporting policeman is played inapprorpriately as a comic device to most likely lighten the subject matter up. Instead, "The Town That Dreaded Sundown," goes for a quasi-documentary feel throughout, as the crimes are documented, and that is why the film is successful. What is so absolutely fascinating about the case is that it was, and still remains, a completely baffling occurrence in which no one ever found out who the "The Phantom Killer," was. And there is also the mystery about what finally happened to him after he abruptly stopped his murder spree.
The film is matter-of-factly narrated throughout, which was a wise choice. It largely makes the film seem more real, and it is helped out by the exact way the story is played out, as the film alternates throughout from the investigation to sequences of shocking power as the murders are vividly and brutally reenacted. One particular scene involving the prolonged, unsettling torture of a teenage girl in the woods, is, no doubt, tough to watch and frightening, but it is not filmed as a means of pointless exploitation, but rather as an example of how accurately drawn and realistic Director Pierce wanted the film to be.
By the conclusion of, "The Town That Dreaded Sundown," a brief confrontation between the authorities and the killer occurs, but nothing comes of it, as the "Phantom" vanishes afterwards without a trace. In the penultimate moment, we are left to ponder not only the whereabouts of the culprit, but the effect that such an inconceivable crime can have on any one person. "The Town That Dreaded Sundown," leaves us with such striking moments of stark, raw terror, that it puts many less serious horror films to shame. After all, this crime actually happened, and just the thought of that is petrifying.
- Copyright 1999 by Dustin Putman Http://hometown.aol.com/FilmFan16/index.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Our Team
Ammar zeyad
Hello my name is Ammar Zeyad i'm 21 years old an a student in ASAC studying Software engineering , a small brief about my self that i love coding and solve a many problem in general or in the Tech Side.
Bashar Owainat
I'm Bashar Owainat (he / him), 19 years old, I am a second year software engineering student at ASAC. I chose this major to follow my passion in the field of technology.
Hesham Hassan
Hello my name is Hisham Hassan I am 22 years old a student at ASAC studying software engineering A little summary about myself I like to solve many problems in general.


Here are your results
Based on what you selected for location, meal, mood, and expense,
we have provided a list of a few restaurants that fit into your criteria :
Restart


![Castle Vault Management] There is currently %Treasure% Adena in the castle vault. The tax revenue collected so far is %CollectedShops% Adena. And, the revenue from the sale of seed in this manor during this period is %CollectedSeed% Adena. Please enter the amount you wish to withdraw or deposit.
| Amount | Adena |


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Makes 1 Swiss roll
Dietary
Diana takes inspiration from her mother’s Sunday tea and serves a light Swiss roll filled with homemade lemon curd.
For the lemon curd, put the butter, sugar, lemon zest and juice into a bowl set over a saucepan of simmering water (ensure the bowl does not touch the water). Stir occasionally until the sugar is dissolved.
When the sugar is dissolved, add the beaten eggs and continue to heat, stirring occasionally, until the mixture thickens. Transfer to a bowl to cool.
For the sponge, preheat the oven to 200C/400F/Gas 6. Grease and line a 26x40cm/10½x16in baking tray with baking parchment.
Place a large heatproof bowl over a pan of simmering water. Add the eggs and sugar to the bowl and whisk until lukewarm (don't overheat the mixture). Remove bowl and whisk until the mixture is very thick and leaves trails when the whisk is removed. Fold in the sifted flour using a metal spoon.
Spread the mixture onto the prepared baking tray and place on the middle shelf in the oven. Bake for 8-10 minutes, or until firm to the touch.
Lay a large piece of greaseproof paper or a tea towel on the work surface and dust with sugar. Tip out the cake onto the dusted paper/tea towel and carefully remove the baking parchment.
Spread the, still warm, lemon curd evenly over the sponge.
Position the cake with one of the short ends nearest to you. Make a cut across the width of the sponge about 1cm/½in in and about three-quarters of the way through the depth of the sponge (this will help you roll up the sponge). Tightly roll up the sponge starting at the nearest edge and using the paper/tea towel to help you. Set aside to cool.
Before serving, trim the ends of the roll to create a neat finish and dust with a little extra sugar, if desired.
You need JavaScript to view this clip.
How to make a Swiss roll cake


Watch the following videos.
After each one, pick the emotion that best matches the video.
Which emotion best matches the video you just saw?
Video is stalled. Touch to resume.


| (a) | procedure [ pervasive ] id | |||||||
| [ ([ paramDeclaration {, paramDeclaration} ])] | ||||||||
| (b) | function [ pervasive ] id | |||||||
| [ ([ paramDeclaration {, paramDeclaration} ])] | ||||||||
| [ id ] : typeSpec |
Parameterless subprograms may use parentheses (with nothing between them), as is required in the C programming language. These parentheses can be used to disambiguate between the call to the subprogram (parentheses present) and a reference the subprogram (parentheses missing).
Suppose f is a parameterless subprogram declared without parentheses and g is a parameterless subprogram declared with parentheses. Their headers are:
In a program, f and g() are calls to these functions, while g is a reference to (not a call to) the procedure. There is no way to write a reference to f. When in doubt, use parentheses in the declaration, as in the case for g, so that calls always have parentheses and references always do not. A reference to a subprogram can be assigned to a subprogram variable. See subprogram type.
procedure f
procedure g ()
type t : procedure q ( var j : int, y : real )


In this post I’ll demonstrate how to use the Google Page Speed tools to analyse the performance of the DevExpress XAF MainDemo.
The easiest way to run Google Page Speed is as a Chrome or Firefox plugin. Both are available here. I use Chrome.
Now open the DevExpress MainDemo from Visual Studio. By default it is installed to:
C:\Users\Public\Documents\DXperience 12.1 Demos\eXpressApp Framework\MainDemo\CS\MainDemo.sln
Set the MainDemo.Web as the startup project and change the connection string in web.config if necessary. Launch the application with Chrome and login as ‘Sam’ (password is blank). Then press F12
to bring up the developer tools. The last tab is the Page Speed Analysis and your browser should look like this:
Now click Start Analysis
button. After a few seconds you should get something like the following results.
Results against the debug webserver
It’s as easy as that. We now have a list of suggested improvements. The same report can be generated for any page you visit with your browser.
I get an overall score of 72 out of 100. First thing to note is that the only ‘high priority’ recommendation is to ‘enable keep-alive’ which I suspect will not be necessary when running in IIS instead of the debug webserver.
Switch to use IIS
Actually to get the main demo to run in IIS is not altogether simple because of the security permissions required for logging in and creating or updating the schema. If you get an error message after login:
Login failed for user 'IIS APPPOOL\DefaultAppPool
you will need to add the IIS application pool identity to the SQL Server security.
- Launch SQL Server management studio and connect to the database.
- In the
Security\Logins
right click and selectNew Login...
. - Type in
IIS APPPOOL\DefaultAppPool
(you won’t find it by searching) orIIS APPPOOL\ASP.NET v4.0
depending on the security context of the application pool you are using. - Select
Server Roles
and checkpublic
andsysadmin
to allow the MainDemo to create the database.
(All of this is assuming you are using a non-public instance of SQL Server for development.)
Results against IIS
The results are much better: an overall score of 93.
Other points of interest
Let’s experiment by turning off compression in the webconfig.
<compression
enableHtmlCompression="false"
enableCallbackCompression="false"
enableResourceCompression="false"
enableResourceMerging="false" />
The overall score drops to 62.
You can alternatively use IIS’s dynamic compression by setting enableResourceMerging="true"
and the others false and adding a urlCompression
setting as follows.
<system.webServer>
<urlCompression doDynamicCompression="true" />
...
</system.webServer>
(Note that you may need to install the dynamic compression module via Control Panel/Programs/Turn Windows Features On or Off.)
Then the analysis is back up to 93. The advantage of IIS dynamic compression in IIS 7 is that it turns itself off automatically when the CPU load is high. See Matt Perdeck’s series of articles about IIS Compression for more information.
One mysterious point: if you navigate to the online version of the MainDemo and run the analysis there you will notice that compression resource merging must be turned off for some reason and the overall score is only 75. Perhaps someone from DevExpress can explain…


##Topics
- A Little History
- Let's Review Some Basics
- Some Other Things
- ES5 New Features
- ES2015 New Features
- SPA
- Frameworks
- JavaScript Everywhere
- What is ReactJS
- JSX
- Flux and Redux
- Demo
## A Little History
- Created in 10 days in May 1995 by Brendan Eich for Netscape browser
- Mocha, LiveScript
- JavaScript – through licensing agreement with Sun
### ECMAScript
- JavaScript is an implementation of ECMAScript
- Conflicts and issues, until 2008 – decided to work as a group - “Harmony”
- ES5 (5th Edition) = 2009 - this is what we're using in our apps
- ES6 = ECMAScript 2015
- ES7 = ECMAScript 2016
- Browser support – by feature, not by edition/version
- http://kangax.github.io/compat-table/es5/
## Let's Review Some Basics
- Objects
- Prototype
- Functional JavaScript
Objects
Not exactly the same as C# objects
Just containers of named values - properties and methods
// Using object literal to create an object
var car = {
type: "Honda",
model: "Civic"
};
console.log(car.type); // Honda
console.log(car["type"]); // Honda
for (var propName in car) {
console.log (propName, car[propName]);
}
Prototype
var car = {
wheels: 4
}
var truck = {
wheels: 8
}
var vehicle = {};
vehicle.__proto__ = car; // vehicle.wheels === 4
vehicle.__proto__ = truck; // vehicle.wheels === 8
vehicle.wheels = 2; // "overrides" the prototype value
truck.color = "red";
console.log(vehicle.color); // "red";
Prototype
function Car() {
this.color = "red";
}
var car = new Car();
console.log(car.color); // "red"
is same as...
function Car() {
var this = {}; // not valid, just for illustration
this.__proto__ = Car.prototype;
this.color = "red";
return this;
}
Functional JavaScript
Imperative
var result;
function capWords(input) {
var counter;
var inputArray = input.split(" ");
var transformed = "";
result = [];
for (counter = 0; counter < inputArray.length; counter++) {
transformed = [
inputArray[counter].charAt(0).toUpperCase(),
inputArray[counter].substring(1)
].join("");
result.push(transformed);
}
};
capWords("captialize these words");
alert(result.join(" "));
Functional JavaScript
Object Oriented
(function() {
var SomeText = function(text) { this.text = text; };
SomeText.prototype.capify = function(str) {
return [str.charAt(0).toUpperCase(), str.substring(1)].join("");
};
SomeText.prototype.capifyWords = function() {
var result = [];
var textArray = this.text.split(" ");
for (var counter = 0; counter < textArray.length; counter++) {
result.push(this.capify(textArray[counter]));
}
return result.join(" ");
};
var newText = new SomeText("captialize these words");
alert(newText.capifyWords());
}());
Functional JavaScript
Functional
(function() {
var capify = function(str) {
return [str.charAt(0).toUpperCase(), str.substring(1)].join("");
};
var processWords = function(fn, str) {
return str.split(" ").map(fn).join(" ");
};
alert(processWords(capify, "captialize these words"));
}());
Some Other Things To Know
Strict Equality (===)
Block Scope
IIFE ("iffy") - Immediately-Invoked Function Expression
var carName = "Honda"; // global variable
function foo() {
bar = "Global"; // automatic global variable
if (carName === "Honda") {
var model = "Civic";
}
for (var i = 0; i < 5; i++) {
var y = i;
}
console.log(model, i, y); // model, i, y still accessible
}
console.log(bar); // bar is global
IIFE
(function() {
// code
})();
All variable are "private" to the function, does not leak out to global space
Function expression, not a declaration
e.g., var f = function() { ... }
Code inside () considered expression
Expression returns a value, in this case, the function itself
Not named
IIFE
Use it to overcome lack of block scoping when using closures inside a loop
var result = [];
for (var i=0; i < 5; i++) {
result.push(function () { return i });
}
console.log(result[1]()); // 5
console.log(result[3]()); // 5
Use this instead:
for (var i=0; i < 5; i++) {
(function () {
var i2 = i; // copy current i
result.push(function () { return i2 });
}());
}
IIFE
Create private variables
var counter = (function () {
var i = 0;
return {
increment: function () {
return ++i;
}
};
})();
counter.increment();
counter.i; // undefined.
ES5: Strict Mode
"use strict";
VB Option Explicit?
Ignored if the browser doesn't support it
Variables must be declared
Can't use local variable name as the parameter name
"this" is undefined in non-method functions
No octal numbers
eval does not leak variables
Without Strict Mode
function noStrictFunction() {
globalVariable = "Test"; // Global variable created
glovalVariable.length = 100; // Silent failure
}
function Person(name) {
this.name = name; // "this" in non-method functions is "window"
}
var user = Person("Picard"); // Global variable created for "name"
console.log(010); // 8 (Octal number)
function test() {
var x = 1;
eval("var y = x + 1;"); // y is now available outside of the eval
}
ES5: Legal trailing commas
var shape = {
width: 100,
height: 200,
}
var count = [0, 1, 2, 3,];
ES5: Array.prototype: forEach(), map(), etc
var a = [1, 2, 3, 4];
a.forEach(function(element) {
console.log(element);
});
var doubled = a.map(function(element){
return element * 2;
})
var sum = a.reduce(function(previous, current) {
return previous + current;
}, 0);
var even = a.filter(function(element) {
return element % 2 === 0;
});
Some of new features in ES2015 (ES6)
Arrow functions
let & const
Template Literals
for-of
Destructuring
Spread
Parameter default values
Classes
Module support
ES2015 Example
const redCar = { wheels: 4, color: "red" }; // const
function whatCar( {wheels, color} ) { // destructuring
if (color === "red") {
let result = `Red car with ${wheels} wheels`; // let, template literal
return result;
} else {
return "Unknown car";
}
}
console.log( whatCar(redCar) ); // "Red car with 4 wheels"
let { wheels } = redCar; // destructuring
console.log( wheels ); // 4
const blueCar = { ...redCar, color: "blue" }; // spread
console.log ( blueCar ); // { color: "blue", wheels: 4 }
const numbers = [1, 2, 3];
let doubled = numbers.map( n => n * 2); // arrow functions, not demonstrated
// here but it keeps "this" scope
for (let n of doubled) { // for-of
console.log(n); // 2, 4, 6
};
console.log(n); // Error: n is not defined.
redCar.wheels = 6; // OK
redCar = blueCar; // Error: "redCar" is read-only
SPA Architecture
Traditional Full-Page Postback
AJAX Partial Rendering
Single Page Application
## Server-side
- Just becomes an API back-end
- Can be used by any client
- Not locked down to one technology
- Use .Net WebAPI, NodeJS, Java, etc
### What were some problems with SPA?
- Back button doesn't work - lack of history
- Not bookmarkable
- No SEO / Initial Page Load
All solved
## Framework Explosion
### Client-side MVC/MVVM/etc fraemworks
- AngularJS
- BackboneJS
- EmberJS
- KnockoutJS
- ReactJS
- http://todomvc.com/
AngularJS Quick Example
Angular Template, Component, HTML:

{{phone.name}}

angular.module('phoneCategoriesApp').
component('phoneList', {
template: 'phone-list/phone-list.template.html',
controller: function PhoneListController() {
this.phones = [ /* list of phones here */ ];
}

...

<phone-list></phone-list>

### Can We Improve JavaScript Language?
- CoffeeScript
- Influenced ES6
- TypeScript (Microsoft)
- Closure (Google)
- Flow JS (Facebook)
- Elm
TypeScript
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Jane", "M.", "User");
### How to support older browsers?
- Use Transpilers
- One of the popular one is BabelJS
- http://babeljs.io/
- BabelJS Demo
## JavaScript Everywhere
### "learn once and run everywhere"
### JavaScript Engines
- Competitive nature of different browsers fighting for speed produced fast JavaScript engines
- V8 (Chrome - Google)
- ChakraCore (Edge - Microsoft)
- JavaScriptCore (Safari - Apple)
### Node JS
- A way to execute JavaScript, _outside of browser_
- Made possible by V8
- NPM Package Manager
- Async
- Express
### How about the phone?
- Apache Cordova (PhoneGap)
- React Native
### Desktop?
- Made possible by V8
- Electron (Github)
- NW.js
ReactJS
What is ReactJS?
JavaScript library for creating UI components
"Comparable" to the "V" in MVC
UI as a function of application state
Built by Facebook
Open-sourced in May 2014
Quickly gained popularity
Who uses React?
### Why ReactJS?
- Component based
- Easy to unit test components
- Does not prescribe a framework
- MVC optional
- Facebook created Flux architecture
- Technical features
- Virtual DOM, JSX, Isomorphic, etc
- Uni-directional flow
- Functional programming
No logic required for updating multiple components when store changes (redux)
### Why ReactJS?
- Healthy eco-system
- Many libraries for UI, Forms, etc.
- Good community
- Good debugging tools
- Any platform
- Web and Mobile Web
- Mobile Native with React Native
- Desktop Native with Electron
## JSX
- DSL (Domain Specific Language) for React
- Paradigm Shift
- JavaScript over html
- Not JavaScript in HTML (e.g., AngularJS)
- React components are pure JavaScript