|
j3d.org Code | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.j3d.util.FloatHashMap
public class FloatHashMap
A hash map that uses primitive doubles for the key rather than objects.
| Constructor Summary | |
|---|---|
FloatHashMap()
Constructs a new, empty hashtable with a default capacity and load factor, which is 20 and 0.75 respectively. |
|
FloatHashMap(int initialCapacity)
Constructs a new, empty hashtable with the specified initial capacity and default load factor, which is 0.75. |
|
FloatHashMap(int initialCapacity,
float loadFactor)
Constructs a new, empty hashtable with the specified initial capacity and the specified load factor. |
| Method Summary | |
|---|---|
void |
clear()
Clears this hashtable so that it contains no keys. |
boolean |
contains(java.lang.Object value)
Tests if some key maps into the specified value in this hashtable. |
boolean |
containsKey(float key)
Tests if the specified object is a key in this hashtable. |
boolean |
containsValue(java.lang.Object value)
Returns true if this HashMap maps one or more keys to this value. |
java.lang.Object |
get(float key)
Returns the value to which the specified key is mapped in this map. |
boolean |
isEmpty()
Tests if this hashtable maps no keys to values. |
float[] |
keySet()
Returns an array with all keys. |
float[] |
keySetSorted()
Returns a sorted array with all keys. |
java.lang.Object |
put(float key,
java.lang.Object value)
Maps the specified key to the specified
value in this hashtable. |
java.lang.Object |
remove(float key)
Removes the key (and its corresponding value) from this hashtable. |
int |
size()
Returns the number of keys in this hashtable. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public FloatHashMap()
public FloatHashMap(int initialCapacity)
initialCapacity
- the initial capacity of the hashtable.
java.lang.IllegalArgumentException
- if the initial capacity is less
than zero.public FloatHashMap(int initialCapacity, float loadFactor)
initialCapacity
- the initial capacity of the hashtable.loadFactor
- the load factor of the hashtable.
java.lang.IllegalArgumentException
- if the initial capacity is less
than zero, or if the load factor is nonpositive.| Method Detail |
|---|
public int size()
public boolean isEmpty()
true
if this hashtable maps no keys to values;
false
otherwise.public boolean contains(java.lang.Object value)
containsKey
method.Note that this method is identical in functionality to containsValue, (which is part of the Map interface in the collections framework).
value
- a value to search for.
true
if and only if some key maps to the
value
argument in this hashtable as
determined by the equals method;
false
otherwise.
java.lang.NullPointerException
- if the value is null
.Map
public boolean containsValue(java.lang.Object value)
Note that this method is identical in functionality to contains (which predates the Map interface).
value
- value whose presence in this HashMap is to be tested.Map
public boolean containsKey(float key)
key
- possible key.
true
if and only if the specified object is a
key in this hashtable, as determined by the equals
method; false
otherwise.contains(Object)
public java.lang.Object get(float key)
key
- a key in the hashtable.
null
if the key is not mapped to any value in
this hashtable.public java.lang.Object put(float key, java.lang.Object value)
key
to the specified
value
in this hashtable. The key cannot be
null
.
The value can be retrieved by calling the get
method
with a key that is equal to the original key.
key
- the hashtable key.value
- the value.
null
if it did not have one.get(float)
public java.lang.Object remove(float key)
key
- the key that needs to be removed.
null
if the key did not have a mapping.public void clear()
public float[] keySet()
public float[] keySetSorted()
|
j3d.org Code | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


4 How to use this code?
In order to use the code, the R file ac_protocol.R have to be edited. The code holds five important components: Working directory, Required libraries, Functions, Global parameters and Main routine. In this section, the description of those components is presented.
4.1 Set the working directory
The working directory (wd) is the folder which stores the R code, the input data and the code’s output data. Likewise, the wd folder must contain the following folders:
- R: The code is stored in this folder.
- data: Contains all the .agd files to be processed.
- output: The final data frame and a log will be stored in this folder.
The Working directory
section sets the working directory.
4.2 Load required libraries
In Load libraries
section, the lines load all the required libraries. Those libraries must be installed before running the code; otherwise, an error message will be printed on Console.
Error in library("Hmisc") : there is no package called ‘Hmisc’
The reader may refer back to 3.2 section for more information.
4.3 Load functions
In the Functions
section all the functions are declared. Those function must be loaded in the Workspace to run the main routine.
4.4 Set global parameters
Before the main routine, a set of global parameters must be fixed.
- inputdir: Input data folder directory.
- outputdir: Output folder directory.
- outputfile: Output .csv file name.
- packdir: Pack file directory. This file must be a .xlsx file and must have the same format as in the example.
- sheets: Sheets contained within the Pack file.
4.5 Load and run the main function
In the main function, you should fix the values for the functions parameters. In the framework, the values defined as parameters are those described in the paper Collection, Management and Treatment in the International Study of Children’s Obesity, Lifestyle and Environment (ISCOLE); however, the reader is free to modify them as their needs.
The main function is composed of nine blocks:
4.5.1 Read data form the .agd files (SQLite databases)
The following block reads the database (.agd file) using the file directory dbDir
and save the accelerometry data on the variable data
and all the settings parameters on the variable settings
.
db <- readDatabase(dbDir)
data <- db$data
settings <- db$settings
4.5.2 Quality control checks
This line performs all the quality control checks and receives as parameters the file directory, the accelerometry data, the settings and the pack data frame.
valid <- qualityControlCheck(dbDir,data, settings, pack)
4.5.3 Data aggregation
In this block the data is aggregated in 15sec epoch and 60sec epoch. In addition, an activity column is added to both data frames (all epochs are marked as “wear/wake”).
data15 <- aggregation(15, data)
data60 <- aggregation(60, data)
data15$activity <- rep("wear",nrow(data15)) #Activity (sleep, non-wear, wear/wake)
data60$activity <- rep("wear",nrow(data60)) #Activity (sleep, non-wear, wear/wake)
4.5.4 Sleep period identification
The function sleepPeriods
identifies all the sleep periods and the non-wear periods within the sleep periods. As output, it returns a list with the sleep and non-wear periods. This function receives as parameter:
- **data:** The data frame to identified the sleep periods (if epoch < 60sec, the data is aggregate to 60sec epoch).
- sleepOnsetHours: Range of day hours in which a sleep period can start.
- bedTimemin: Number of consecutive minutes to start a sleep period.
- minSleepTime: Minimum sleep period length (in minutes).
- tolMatrix: Tolerance matrix. Consecutive minutes of non-sleep to declare the end of a sleep period. The minutes may differ between range of hours.
- tolBsleepMatrix: Tolerance matrix before identifying a sleep period. Consecutive minutes of non-sleep to declare the end of a sleep period. The minutes may differ between range of hours.
- scanParam: Scan parameter to identify the sleep minutes using Sadeh et al. (1994) algorithm (axis1, axis2, axis3 or vm).
- nonWearPSleep: Boolean parameter. If TRUE -> non-wear periods are identified within the sleep periods;otherwise, non-wear periods within the sleep periods are not identified.
- nonWearscanParam: Scan parameter to identify the non-wear periods within sleep periods (axis1, axis2, axis3 or vm).
- nonWearInact: Minimum non-wear period length (in minutes).
- nonWearTol: Maximum minutes of activity (i.e. counts per minute > 0) to declare the end of a non-wear period.
- overlap_frac: Fraction of time to declare a sleep period a non-wear period. If the overlap_frac of a sleep period is identified as non-wear, the sleep period is marked as non-wear.
Additionally, the function setActivity()
adds the activity label to the activity column between the intervals in the data frame given as parameter.
sleep <- sleepPeriods(data=data60,sleepOnsetHours= c(19,5),
bedTimemin = 5,
minSleepTime = 160,
tolMatrix = matrix(c(0,5,20,
5,19,10,
19,24,20),3,3,byrow=T),
tolBsleepMatrix = matrix(c(0,24,10),1,3,byrow=T),
scanParam = "axis1",
nonWearPSleep = T, nonWearscanParam = "axis1",nonWearInact = 90,
nonWearTol = 2,
overlap_frac = 0.9)
data60 <- setActivity(label="sleep",intv=sleep$sleep,data60)
data60 <- setActivity(label="non-wear",intv=sleep$sleepnw,data60)
4.5.5 Non-wear period identification
In this block the non-wear periods are identified over the unlabeled minutes. The function nonWearPeriods()
receives as parameter the data frame, the scan parameter used to identify the non-wear periods, the minimum number of minutes to identify a non-wear period and the tolerance.
nWP <- nonWearPeriods(data60, scanParam="axis1",innactivity=20,tolerance=0) #nonWearPeriods. Innactivity and tolerance in minutes
data60 <- setActivity("non-wear",nWP,data60)
4.5.6 Wear periods check
The following function search for count per epoch greater than the maxcpm
parameter. Those epoch are labeled as invalid. Furthermore, the first minutes of the first day of the sample are labeled as “sleep”.
data60 <- checkWearPeriods(data60,maxcpm = 20000)
4.5.7 Cleaning (Remove last day of data and more than 7 days of data)
The function removeData()
deletes the days/hours/minutes/seconds (given as parameter) from the data frame.
udays <- unique(as.Date(data60$datetime))
firstday <- min(udays)
lastday <- max(udays)
validdays <- seq(firstday,firstday+6,by=1)
daystoremove <- udays[!(udays%in%validdays)]
data15 <- removeData(data15,toremove=c(daystoremove,lastday),units="days")
data60 <- removeData(data60,toremove=c(daystoremove,lastday),units="days")
4.5.8 Add intensity physical activity
This block performs two procedures. 1) Add the activity column from the 60sec epoch data frame to the 15sec epoch data frame. 2) Add the physical activity intensity to each epoch using evidence-based cut points. In this case, the Evenson et al. (2008) cut points are used.
data15 <- mergingActivity(data15,data60)
data15$intensityEV <- mapply(cut_points_evenson,epoch=15, data15$axis1)
4.5.9 Get the datafile observation for the final data frame (only wear periods)
Extract all the physical activity intensity related variables for each participant.
ob <- getobs(dbDir,data15, timeunit="min")
For further information about the functions and their parameters, you can refer to the function documentation.
After compile and load all the fuctions into the workspace , run the function main( )
to obtain the final data frame.


Distributed Systems Pune Meetup is organising DSConf 2018. We want to help grow & highlight all the work in the areas of Distributed Systems.
Yes, all the videos will be publicly available on YouTube.


Three War Films Comments by Peter Reiher Copyright 1990 Peter Reiher
[This is not intended as a review, in the usual sense. Consider it a sample of the sort of thing that I think would be interesting to see in a newsgroup like rec.arts.cinema.]
War movies used to be a staple of American and international film. They provided an excellent mechanism for combining action with patriotism, which fed the studios' wallets and the immigrant studio heads' nationalism at the same time. But war movies died with Vietnam, in the U.S., at least. The only war movies one sees today are anti-war movies -- an excellent mechanism for combining action with idealism, which feeds the studios' wallets and the shallow studio heads' superficial sense of social involvement at the same time. (Things change, but not much.) Anti-war movies have a much more limited audience, though, so not nearly so many of them are made. Which makes the chances of seeing three new war movies in a single month rather unlikely.
None the less, I did. It helped that two were made outside the U.S. What is interesting about the experience is that the films covered three different wars from three different periods of history, using three different perspectives, and had three different themes. The up side of the decline of war movies is that they are no longer out there glamorizing war. The down side is that war is a powerful catalyst for the artistic impulse, and has been a fundamental component in many great artistic masterpieces. These three films found three different ways to use the power of war without glorifying it.
HENRY V is an adaptation of Shakespeare's play about Britain's great warrior king, the victor of Agincourt. During World War II, Olivier used this material to fashion propaganda, creating a world of pageantry in which plucky little England overcame tremendous odds to gloriously win a continental war. The new version of the film, directed by Kenneth Branagh, takes a very different view of things. The same play, edited differently by the two directors, provided two different views of war. Branagh presents a dynamic young king prodded and duped into fighting a bloody, vicious war whose victory is undone within a generation. This HENRY V contains no fields of honor and thundering hoards of glistening knights. It is full of dirt, mud, and gloom. Despite a decisive victory with small losses, Branagh's Henry is a king who has seen the horror of war, and is happy to compromise his demands to avoid a return to battle. England is a nation led by a duped leader into an unnecessary and horrible war to uphold a dubious territorial claim. War here is futile, nasty, without any redeeming value.
Branagh furthers his achievement, though, by presenting the seductive side of war. Henry is a tremendous leader of men, able to stir and cajole them to unbelievable efforts. How many in the audience would not follow Henry into battle after the speech he gives before Agincourt? Precious few, I think. Yet, while that battle was forced, it was fought in a war that would benefit only the few, if anyone at all.
GLORY is a very different film. GLORY, directed by Edward Zweig, tells the story of the first black regiment to see combat in the American Civil War. During that War, one of whose major causes was slavery in the Southern states, the Union was reluctant to use black soldiers. Underlying prejudice against blacks was nearly as widespread and deep in the North as in the South. Moreover, the South made it very clear that they intended to treat black soldiers and those who fought with them very harshly. So, despite the intense desire of blacks to participate in the war that would liberate them, the Union dragged its heels on using them.
But the persistence of blacks and the enlightenment of a few white Northerners finally prevailed. Black soldiers were recruited, trained, and, eventually, used in battle. GLORY tells the true story of the first regiment of black soldiers to see battle. Their bravery in some hideously deadly combat proved that black soldiers could be just as effective as whites. Unlike HENRY V, the war in GLORY is necessary, and, in a destructive way, liberating. The soldiers in GLORY die in enormous numbers, but they die for a reason, and their deaths have meaning and value. The horror of war is not minimized, but the focus of the film is how some men used war for good purposes, sacrificing themselves for the benefit of others. Not a popular point of view, nowadays, and only the socially acceptable message of racial equality made this film possible, at all.
TALVISOTA, the third film, has a more modern setting, and is primarily concerned with the destruction of war. In 1939, the U.S.S.R. invaded Finland with a huge army, basically seeking to incorporate it into the Soviet Union, or, at least, to seize strategically important chunks of the country. But the Soviets made two important errors -- they invaded in winter, and they underestimated the resolve of the Finns. Unprepared for a winter campaign against a determined opponent, the Russians took tremendous losses, despite equally tremendous numerical superiority, and the war was eventually ended. Finland had to give up some territory, but maintained its independence.
The few Americans who know of this war tend to view it as a dashing affair carried out on sparkling snow, with daring Finnish ski troops encircling lumbering, incompetent Soviet units. It has a clean, surgical image, reinforced by clear heros and villains, and a situation in which the underdog basically prevailed. TALVISOTA smashes that image. A Finnish film directed by Pekka Parikan, it does not suggest that the Finns were responsible or in the wrong, but it makes clear that no modern war has anything of glamour about it.
TALVISOTA follows a group of Finns who are conscripted to help defend the country. Their war is not a matter of swooping down on bumbling Russians, but a horror of trench fighting against seemingly endless hoards of enemy troops, with intermittent moments of terror as Soviet artillery and aircraft pound them. One after another, they die, suddenly, nastily, usually with no particular rhyme or reason. Charging into the enemy sometimes proves safer than going behind a tree to relieve yourself. The soldier next to you can be blown apart while you aren't scratched. Every time a man goes out of your sight, it might be the last time you ever see him.
No film I have seen has ever painted as strong a picture of the destructive power of war as does TALVISOTA. The film is three harrowing hours of death and explosion. Forests are reduced to fields of shattered stumps. Men are ground down to the point where they are hardly living at all. Death is rarely clean, and usually very messy and unpleasant. The soldiers are killed, their families are torn apart, the countryside is destroyed. And, worst of all, the whole awful process is unavoidable. Finland didn't want the war, didn't ask for the war, but could only avoid it by submitting entirely to the enemy. TALVISOTA is easily the bleakest of the three films, for it shows no redeeming feature of war, yet also suggests that the best intentions in the world cannot always allow you to avoid it.
These three films demonstrate the artistic power of war. How could an activity that, by its nature, involves death on a large scale and the clash of fundamental ideals not be a powerful subject for art? The true shame of most war films made during the greatest flood of combat movies is perhaps not that they made war too heroic, but that they treated the subject so shallowly, with Errol Flynn and company mowing down faceless battalions of Japanese and Germans, at no real cost to themselves or even to the enemy. Toy soldiers fell over, and our side won the game. Branagh, Zweig, and Parikan have artistic visions -- war as horrible waste, war as a terrible but necessary step in liberation, war as tragically unavoidable destruction. These sorts of war films are important even in times of peace, and even to those who oppose war for any purpose. They are the cinema's contribution to one of the great issues of all times, and are every bit as important as books, editorials, and speeches. This is cinema as art.
Peter Reiher<EMAIL_ADDRESS>. . . cit-vax!elroy!jato!jade!reiher
.
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


About 8,530,000 results (0.59 seconds)
13 Oct 2011 - CSS to push content down page ... and if the site gets reordered, everything breaks again - isn't it better to solve this by changing #topwrap like ...
3 Aug 2015
28 Mar 2015
2 Jun 2014
21 Feb 2013
27 NOV 2011 - CSS to push content down page ... and if the site gets reordered, everything breaks again - isn't it better to solve this by changing #topwrap like ...
By Brandon Smith On June 21, 2016 ads, content jumping ... This layout shifting is especially frustrating on mobile devices, where a big enough change can push all familiar content off screen and cause a visitor to .... (Won't jump away!)
You visited this page on 23/09/18.
By Brandon Smith On June 21, 2016 ads, content jumping ... This layout shifting is especially frustrating on mobile devices, where a big enough change can push all familiar content off screen and cause a visitor to .... (Won't jump away!)
You visited this page on 23/09/18.
By Brandon Smith On June 21, 2016 ads, content jumping ... This layout shifting is especially frustrating on mobile devices, where a big enough change can push all familiar content off screen and cause a visitor to .... (Won't jump away!)
You visited this page on 23/09/18.
By Brandon Smith On June 21, 2016 ads, content jumping ... This layout shifting is especially frustrating on mobile devices, where a big enough change can push all familiar content off screen and cause a visitor to .... (Won't jump away!)
You visited this page on 23/09/18.
By Brandon Smith On June 21, 2016 ads, content jumping ... This layout shifting is especially frustrating on mobile devices, where a big enough change can push all familiar content off screen and cause a visitor to .... (Won't jump away!)
You visited this page on 23/09/18.
By Brandon Smith On June 21, 2016 ads, content jumping ... This layout shifting is especially frustrating on mobile devices, where a big enough change can push all familiar content off screen and cause a visitor to .... (Won't jump away!)
You visited this page on 23/09/18.


CloudAtlas
Distributed system
CloudAtlas
Home
Queries
Set attribute
Fallback Contacts
Host choice
Connect to the agent on agentHost*
Connect
*Site might freeze for some time if the agentHost cannot be reached.
Created by Marian Dziubiak and Jakub Kuklis


The git init command creates a new Git repository. It can be used to convert an existing, unversioned project to a Git repository or initialize a new empty repository. Most of the other Git commands are not available outside of an initialized repository, so this is usually the first command you’ll run in a new project.
The git clone command copies an existing Git repository. This is sort of like svn checkout, except the “working copy” is a full-fledged Git repository—it has its own history, manages its own files, and is a completely isolated environment from the original repository.
The git config command lets you configure your Git installation (or an individual repository) from the command line. This command can define everything from user info to preferences to the behavior of a repository. Several common configuration options are listed below.
Linktos or Asides or Syntax Bubble:
Executing git init creates a .git subdirectory in the project root, which contains all of the necessary metadata for the repo, and makes it possible to start recording revisions of the project..
Git clone
To update your local repository to the newest commit, execute git pull in your working directory to fetch and merge remote changes. To merge another branch in
Assuming you've already created a folder inside your text editor. Now its time to create a github repo and push to github.
Navigate to the working directory
$ cd tutorialChatApp
Check status & proceed
$ git status
Add any changes - note add .
will add all but you can also specify files
$ git add .
Commit your changes - whatever you write here will help in tracking changes
$ git commit -m "First commit"
Your changes are now in your local working copy
Push up to git via https (not SSH)- granted you have no troubles with your log in. Make sure
$ git push origin master


Saving
...
Save page
View page
Pages
New page
Add section
Page Sections
Components
Blocks
Content
Style
Advanced
No selected element!
Click on an element to edit.
Background Color
Background Color
S
Align Left
Align Center
Align Right
Align Justify
- Font size -
8 px
9 px
10 px
11 px
12 px
13 px
14 px
15 px
16 px
17 px
18 px
19 px
20 px
21 px
22 px
23 px
24 px
25 px
26 px
27 px
28 px
- Font family -
Arial
Lucida Grande
Palatino Linotype
Times New Roman
Georgia, serif
Tahoma
Comic Sans
Verdana
Impact
Arial Black
Trebuchet
Courier New
Brush Script
Components
Blocks
After
Inside
Content
Style
Advanced
No selected element!
Click on an element to edit.
body
section
img
Run javascript code on edit
Code editor
Export html
VvvebJs
Page was successfully saved!.
New page
Template
Blank Template
Narrow jumbotron
Album
Page name
File name
Save to folder
Page save
Elements saved!
Template backup was saved!
Template was saved!
View page


David Tremont, Model maker, Weta Workshop, New Zealand
The third in the series, this story is just as fresh and exciting as the first two. The rescues, situations, and characters all include new things while remaining true to the feel of the Thunderbirds we remember. Read this book to your children, then show them the original: they, too, will become fans.
...............................................................
Ellen Kuhfeld, St. Louis Park, MN
I didn't fully realize what these books were about, until I remembered my youthful reading. They're Tom Swift for the twenty-first century. Suddenly, everything makes sense! If you liked Tom Swift (or The Shadow, or Doc Savage, or their many colleagues) this is more of it. Get 'em for your kids and grandkids.
Virgil Tracy, the second of Jeff Tracy's sons, pilots the heavy-rescue craft, Thunderbird 2, which carries the specialized rescue equipment to the danger zone. In addition to his expertise as a pilot and engineer, Virgil is also a talented pianist and artist. Virgil's calm disposition serves him well in the extreme hazards that he faces as a member of International Rescue. In Deadly Danger, Virgil will have to draw on all of these skills to meet the challenges he faces: a California wildfire, a mine disaster in South Africa, a volcano eruption in the Pacific, an airliner in trouble, a town in Peru in danger of vanishing into a sinkhole, a bridge collapse in India, explorers in danger of grinding ice in the Antarctic. Most of all Virgil and his brothers and associates must find a warped genius who will stop at nothing to build and deploy a fleet of advanced machines to prove he is the greatest rocket scientist of the 2060s.
Midwest Book Review: Small Press Bookwatch
"Thunderbirds: Deadly Danger" is another novel of science fiction based on the famous television series as the Tracy family is again faced off with evil as a mad rocket scientist threatens the world to prove he is the most skilled at his trade the world has ever known. Jeff Tracy must stop this madman before he threatens lives even further, making International Rescue's job ever more difficult. "Thunderbirds: Deadly Danger" is a choice pick for fans of the series or simply young science fiction fans.


---
layout: post
title: "No Title"
---
I don’t know what it is that fascinates me so much about the underwater but I could watch this video of the world’s second largest aquarium all day. Do yourself a favour and watch it in HD at full screen or download the 720p file. Via Kottke.


Please enter a valid email address or phone number.
Your password must contain between 4 and 60 characters.
Have an account? Sign In


The Analytical Engine weaves algebraic
patterns, just as the
Jacquard loom weaves
flowers and
leaves.


| Fig. 1 |
Diagram of the corpus linguistics methodology used (The colu ... |
| Fig. 2 |
Graph for the collocates of climate change (All network grap ... |
| Fig. 3 |
Graph for the collocates of maritime security |
| Fig. 4 |
Graph for the collocates of human trafficking |
| Fig. 7 |
The concordance lines of <displacement> and <degradation> as ... |
| Fig. 8 |
The concordance lines of combat as a common collocate of cli ... |
| Fig. 9 |
The concordance lines of combat as a common collocate of cli ... |
| Fig. 10 |
Common collocates between climate change and pollution |
| Fig. 11 |
Concordance lines of environment, a common collocate of clim ... |


This was an 8 week, comprehensive project that looked at the current (LMS) Learning Management System for the University of Washington. The system is called Canvas, and although it hasn't been around very long, there are lot of issue and complaints, both by students and professors. This investigation into a re-design for Canvas started with research as a guiding direction to inform by decisions. Throughout the process, I would test ideas with users, both gorilla testing and semi-structured interviews to make sure the re-design direction was appropriate and useful. The overall process and final design can be seen below.
I heard this over and over again: Canvas is just okay. It seems to work in some capacity for all of the users I spoke with, however, every single person had suggestions for change. So, this is what I saw as the problem: Canvas provides its users (students and professors) a moderate framework as an online learning management system, however, it’s too rigid of a tool and lacks major functionality that would benefit the entire user population. After conducting several interviews and reviewing survey data, there were several high level problems, but the one I heard the most and began my initial focus on is customization. Canvas as we know it is just too rigid of a system and what you see is what you get.
Students that use Canvas are frustrated. They can’t manipulate the system (customize it) to have it perform for their individual needs. They are looking for a platform that each one can control what they see, how they see it, and when it shows up. Instead, they’re stuck using a system that works okay for everyone, and great for no one. Canvas [Re]imagined takes a clunky, rigid framework and makes it everything for everyone.
One thing I heard over and over was how people are unhappy with the way Canvas looks. Understanding that everyone will have a different opinion of what Canvas should look like, I wanted to use the ideation as a way to surface several different ideas that could represent the users desire for a more graphical interface. My idea of any of the sketches would be that user would have the ability to update or change where content goes, as they feel fit, I'd just be supplying the out-of-the-box framework.
Before jumping into wireframes, I did a heuristic analysis of the existing Canvas site. I wanted to benchmark the current sites problems just before developing the new wireframes so I would have a clear understanding of what wasn't working. Overall, the current site is a mess and every single page has issues that the new site tries to eliminate. The three that were most critical from Nielsen's "10 Usability Heuristics for User Interface Design” were user control and freedom, consistency and standards, and match between system and the real world. Once I was able to document these issues, I went back to designing, starting with a User Flow Diagram of the new system.
The User Flow diagram below represents someone logging into Canvas and then navigating to their calendar. Once they are at the calendar view, they create a new event for their class, which notifies them via email and sends a notification to their individual class page. The areas in gray represent other options, but are not related in this particular scenario.
Once the wireframes were created, I wanted to evaluate if the participants performed certain tasks like I thought they would. Did they understand where to click in order to check their email or view the calendar? Did they follow the layout as I expected them to? Did they find it easy to use than the existing Canvas site? Overall, I wanted to see how comfortable with the new layout they were and if they could understand the shortcuts as intuitive, or was this creating a new pain point?
I used the feedback from the wireframe testing to drive the updated design below. This design is sleek and clean, similar to the initial idea, but with the functionality that users can appreciate. The homepage provides lots of high level details such as an email overview showing how many new messages you’ve received, updates from your classes (notifying you about grades, assignments, discussions) and a calendar overview. It’s a prompt to tell the user that something is there. It’s really up to the user to seek out the information, or ignore it until they need to know about it.
Overall, the high level of customization by the user is key. The ability to make Canvas what you, the user, really wants was something that the current platform is missing. It’s also image-focused, modern, easy to navigate and provides just the right amount of information on each page.


{% extends "app/base1col.html" %} Copyright 2010 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. {% block extra_head %} {% endblock %} {% block title %} {{ title|safe }} {% endblock %} {% block content_main %}
| {{entry.course_doc_ref.title}} |


After having noticed it several times but never quite putting a finger on it, I have come to realize that I have a reaction to caffiene that I hadn't generally associated with the drug's general reputation in American culture.
In small doses (I am generally only a social coffee drinker; I never really developed that burden of caffeine addiction that so many other Seattleites seem to carry) I get the general 'pick-me-up' that everyone seems to think of when they hear caffeine. However, the few times that I have splurged and taken a large dose, I've ended up with an unusual reaction.
Now here is a good place to note that I am not an experienced drug user; I've just never felt a serious need to experiment with psychoactives, and for career reasons I really don't want to fool around with America's draconian corrections industry -- I mean 'system,' espescially where drugs are involved. I also have always been lucky to have the ability to open certain deeper parts of my mind through non-chemical means. So I can't really compare this to anything else.
Anyways, my reaction to larger doses of caffiene goes like this: First I get the usual, the wakeful restlessness, slight shakes, the whole stimulant effect. As that progresses I slowly start to feel a kind of uneasy euphoria accompanied by vague feelings of unreality. This is also joined by feelings of increased self-confidence coincident with extreme loquaciousness, though this is not necessarily verbal (for example, I write more than any other time on caffeine, and it's not just that I have more energy; it's like the thoughts flow down a different channel. And the part that always confused me before tonight was that I'd come back the next day, and what I'd written would be good, but would not read like 'my' writing). No active hallucination, but occasional very vivid mind's-eye images.
Tonight, I started (around 8) with a can of Taiwanese iced coffee, caffeine content unknown. Over the course of the night, I drank two large cups of strong jasmine tea, and then a second can of the coffee at about 11-ish. Looking back I realize that that is probably not a smart amount of caffeine to have consumed in one night, simply for health reasons. I spent a while restlessly doing random useless things to put of working on the novel I'm trying hard to write. At about midnight I finally started writing, and pumped out what in my current state appears to be a brilliant passage. Perhaps it will still be brilliant in the morning; I can only hope. After wrapping up writing for the evening I told myself to go to bed, but then felt a strong desire to talk to someone. Sadly, all my friends had gone to bed, so I paced for a bit and then sat down to write this. The time now is approximately 3:00, and I am still feeling noticable effects.
In my past experience (mostly when writing last-minute term papers and such) I have found that I can work like a maniac on caffeine, go to sleep without a major problem, and get up still buzzed from it. The longest after consumption that I can remember feeling the effects is somewhere around 12 hours (midnight-ish to noon-ish). I'll give a status report, with as much info as I can come up with, right now.
T+7:XX
Slightly light-headed, slight 'jitters.' Feel somewhat tired but happy, and kind of restless. Slight dry mouth, and a weird feeling on my tongue (possibly a result of an unrelated cold that I'm getting over). For lack of better words to describe it, my inner monologue is unusually loud, but not in an especially uncomfortable way. No visual effects, except possibly a slight sharpening of boundaries. Background noise seems more prominent. No notable increase or decline in appetite, but a slight emptiness in my stomach somewhat different in sensation from hunger (I ate a large meal at T-2:XX, and have snacked slightly since). No active hallucinations, but my imagination is more active than usual, and goes in directions that it would not usually. Mental images take on a sharper, more photographic quality, with more detail than in a normal state of mind. In this it is similar to results that I have achieved in the past from informal meditative practices.
More in the morning.
UPDATE:
T+16:XX (or T+13:XX from final consumption):
Just got up, after uneasy sleep. Some minor effects remain, but itís pretty much limited to the stimulant effect, none of the other effects...
Conclusions
First and foremost, I now know a bit more about my personal response to caffeine. And though it was a somewhat disturbing reaction, it could be pleasurable with proper planning.
WARNING:
I just have to put this here: My conscience canít stand the idea of someone reading this and going out and drinking fourty shots of espresso and ending up in the hospital. Even during last nightís dose (which most likely wasnít really all that huge) I caught my heart beating disquietingly hard. Iíve known people who have put themselves in the emergency room by overdosing on caffeine, and itís easier than youíd expect. Be careful about dosage, and be smart. Donít fall into the ďItís just coffee, so it wonít hurt meĒ falacy.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


--- layout: page title: About header-img: "img/about-bg.png" ---
I am a web developer with a strong interest in the parsing of foreign languages, machine learning, and the development of mathematical models for artificial intelligence applications.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
This classic dish - chicken filled with cheese and ham and covered in breadcrumbs - is perfect for a posh dinner.
Cut the chicken breasts in half horizontally nearly all the way through, then open each one out into a heart shape.
 Gently flatten the chicken breast with a meat mallet or rolling pin to a thickness of 1cm/½in. Discard the cling film.
Repeat the process with the remaining chicken breasts.
Place 2 pieces of emmental onto one side of each flattened chicken breast. Fold over one slice of ham and place it on top of the cheese. Fold the other half of the chicken over the filling and press down lightly. Repeat the process with the remaining chicken breasts.
Sprinkle the flour onto a plate and season with salt and freshly ground black pepper. Beat the eggs in a bowl. Sprinkle the breadcrumbs onto a separate plate.
Dredge each filled chicken breast first in the flour, then dip it in the beaten egg, then roll it in the breadcrumbs to cover.
Heat 125g/4½ oz of the butter in a large frying pan over a medium heat. When the butter is foaming, add the chicken breasts (in batches if necessary) and fry for 4-5 minutes on one side, or until the breadcrumbs are golden-brown. Turn the chicken breasts over and fry for a further 4-5 minutes, basting the chicken with the butter in the pan at intervals. Try to keep the heat low enough to avoid burning the breadcrumbs or butter, but high enough to cook the chicken completely, until no trace of pink remains.
When the chicken breasts are cooked through, the coating is golden-brown and the cheese filling has melted, remove the chicken breasts from the pan and set aside on a warm plate.
Bring a pan of salted water to the boil, add the beans and cook for 3-4 minutes, or until just tender. Drain well.
Return the pan to the heat, add the remaining butter, then fry the flaked almonds for a few seconds until toasted. Return the beans to the pan, mix well, then season, to taste, with salt and freshly ground black pepper.
Serve the chicken cordon bleu on serving plates with a spoonful of beans alongside.


Physics¶
The Physics module.
Physics BoxCast¶
-
UnityEnginePhysics.
__BoxCast__UnityEngineVector3_UnityEngineVector3_UnityEngineVector3__SystemBoolean
(UnityEngine.Vector3 centerUnityEngine.Vector3 halfExtentsUnityEngine.Vector3 direction)¶
outputs: unnamed (Boolean
)
flow: none
Physics BoxCastAll¶
-
UnityEnginePhysics.
__BoxCastAll__UnityEngineVector3_UnityEngineVector3_UnityEngineVector3__UnityEngineRaycastHitArray
(UnityEngine.Vector3 centerUnityEngine.Vector3 halfExtentsUnityEngine.Vector3 direction)¶
outputs: unnamed (RaycastHit[]
)
flow: none
Physics BoxCastNonAlloc¶
-
UnityEnginePhysics.
__BoxCastNonAlloc__UnityEngineVector3_UnityEngineVector3_UnityEngineVector3_UnityEngineRaycastHitArray__SystemInt32
(UnityEngine.Vector3 centerUnityEngine.Vector3 halfExtentsUnityEngine.Vector3 directionUnityEngine.RaycastHit[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics CapsuleCast¶
-
UnityEnginePhysics.
__CapsuleCast__UnityEngineVector3_UnityEngineVector3_SystemSingle_UnityEngineVector3__SystemBoolean
(UnityEngine.Vector3 point1UnityEngine.Vector3 point2System.Single radiusUnityEngine.Vector3 direction)¶
outputs: unnamed (Boolean
)
flow: none
Physics CapsuleCastAll¶
-
UnityEnginePhysics.
__CapsuleCastAll__UnityEngineVector3_UnityEngineVector3_SystemSingle_UnityEngineVector3__UnityEngineRaycastHitArray
(UnityEngine.Vector3 point1UnityEngine.Vector3 point2System.Single radiusUnityEngine.Vector3 direction)¶
outputs: unnamed (RaycastHit[]
)
flow: none
Physics CapsuleCastNonAlloc¶
-
UnityEnginePhysics.
__CapsuleCastNonAlloc__UnityEngineVector3_UnityEngineVector3_SystemSingle_UnityEngineVector3_UnityEngineRaycastHitArray__SystemInt32
(UnityEngine.Vector3 point1UnityEngine.Vector3 point2System.Single radiusUnityEngine.Vector3 directionUnityEngine.RaycastHit[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics CheckBox¶
-
UnityEnginePhysics.
__CheckBox__UnityEngineVector3_UnityEngineVector3__SystemBoolean
(UnityEngine.Vector3 centerUnityEngine.Vector3 halfExtents)¶
outputs: unnamed (Boolean
)
flow: none
Physics CheckCapsule¶
-
UnityEnginePhysics.
__CheckCapsule__UnityEngineVector3_UnityEngineVector3_SystemSingle__SystemBoolean
(UnityEngine.Vector3 startUnityEngine.Vector3 endSystem.Single radius)¶
outputs: unnamed (Boolean
)
flow: none
Physics CheckSphere¶
-
UnityEnginePhysics.
__CheckSphere__UnityEngineVector3_SystemSingle__SystemBoolean
(UnityEngine.Vector3 positionSystem.Single radius)¶
outputs: unnamed (Boolean
)
flow: none
Physics ClosestPoint¶
-
UnityEnginePhysics.
__ClosestPoint__UnityEngineVector3_UnityEngineCollider_UnityEngineVector3_UnityEngineQuaternion__UnityEngineVector3
(UnityEngine.Vector3 pointUnityEngine.Collider colliderUnityEngine.Vector3 positionUnityEngine.Quaternion rotation)¶
outputs: unnamed (Vector3
)
flow: none
Physics ComputePenetration¶
-
UnityEnginePhysics.
__ComputePenetration__UnityEngineCollider_UnityEngineVector3_UnityEngineQuaternion_UnityEngineCollider_UnityEngineVector3_UnityEngineQuaternion_UnityEngineVector3Ref_SystemSingleRef__SystemBoolean
(UnityEngine.Collider colliderAUnityEngine.Vector3 positionAUnityEngine.Quaternion rotationAUnityEngine.Collider colliderBUnityEngine.Vector3 positionBUnityEngine.Quaternion rotationB)¶
outputs: direction (Vector3
), distance (Single
), unnamed (Boolean
)
flow inputs: unnamed
flow outputs: unnamed
Physics Equals¶
-
UnityEnginePhysics.
__Equals__SystemObject__SystemBoolean
(UnityEngine.Physics instanceSystem.Object obj)¶
outputs: unnamed (Boolean
)
flow: none
Physics get_AllLayers¶
-
UnityEnginePhysics.
__get_AllLayers__SystemInt32
()¶
outputs: unnamed (Int32
)
flow: none
Physics get_defaultPhysicsScene¶
-
UnityEnginePhysics.
__get_defaultPhysicsScene__UnityEnginePhysicsScene
()¶
outputs: unnamed (PhysicsScene
)
flow: none
Physics get_DefaultRaycastLayers¶
-
UnityEnginePhysics.
__get_DefaultRaycastLayers__SystemInt32
()¶
outputs: unnamed (Int32
)
flow: none
Physics get_gravity¶
-
UnityEnginePhysics.
__get_gravity__UnityEngineVector3
()¶
outputs: unnamed (Vector3
)
flow: none
Physics get_IgnoreRaycastLayer¶
-
UnityEnginePhysics.
__get_IgnoreRaycastLayer__SystemInt32
()¶
outputs: unnamed (Int32
)
flow: none
Physics get_interCollisionDistance¶
-
UnityEnginePhysics.
__get_interCollisionDistance__SystemSingle
()¶
outputs: unnamed (Single
)
flow: none
Physics get_interCollisionSettingsToggle¶
-
UnityEnginePhysics.
__get_interCollisionSettingsToggle__SystemBoolean
()¶
outputs: unnamed (Boolean
)
flow: none
Physics get_interCollisionStiffness¶
-
UnityEnginePhysics.
__get_interCollisionStiffness__SystemSingle
()¶
outputs: unnamed (Single
)
flow: none
Physics get_reuseCollisionCallbacks¶
-
UnityEnginePhysics.
__get_reuseCollisionCallbacks__SystemBoolean
()¶
outputs: unnamed (Boolean
)
flow: none
Physics GetHashCode¶
-
UnityEnginePhysics.
__GetHashCode__SystemInt32
(UnityEngine.Physics instance)¶
outputs: unnamed (Int32
)
flow: none
Physics GetIgnoreLayerCollision¶
-
UnityEnginePhysics.
__GetIgnoreLayerCollision__SystemInt32_SystemInt32__SystemBoolean
(System.Int32 layer1System.Int32 layer2)¶
outputs: unnamed (Boolean
)
flow: none
Physics GetType¶
-
UnityEnginePhysics.
__GetType__SystemType
(UnityEngine.Physics instance)¶
outputs: unnamed (Type
)
flow: none
Physics IgnoreCollision¶
-
UnityEnginePhysics.
__IgnoreCollision__UnityEngineCollider_UnityEngineCollider__SystemVoid
(UnityEngine.Collider collider1UnityEngine.Collider collider2)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics Linecast¶
-
UnityEnginePhysics.
__Linecast__UnityEngineVector3_UnityEngineVector3__SystemBoolean
(UnityEngine.Vector3 startUnityEngine.Vector3 end)¶
outputs: unnamed (Boolean
)
flow: none
Physics OverlapBox¶
-
UnityEnginePhysics.
__OverlapBox__UnityEngineVector3_UnityEngineVector3__UnityEngineColliderArray
(UnityEngine.Vector3 centerUnityEngine.Vector3 halfExtents)¶
outputs: unnamed (Collider[]
)
flow: none
Physics OverlapBoxNonAlloc¶
-
UnityEnginePhysics.
__OverlapBoxNonAlloc__UnityEngineVector3_UnityEngineVector3_UnityEngineColliderArray__SystemInt32
(UnityEngine.Vector3 centerUnityEngine.Vector3 halfExtentsUnityEngine.Collider[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics OverlapCapsule¶
-
UnityEnginePhysics.
__OverlapCapsule__UnityEngineVector3_UnityEngineVector3_SystemSingle__UnityEngineColliderArray
(UnityEngine.Vector3 point0UnityEngine.Vector3 point1System.Single radius)¶
outputs: unnamed (Collider[]
)
flow: none
Physics OverlapCapsuleNonAlloc¶
-
UnityEnginePhysics.
__OverlapCapsuleNonAlloc__UnityEngineVector3_UnityEngineVector3_SystemSingle_UnityEngineColliderArray__SystemInt32
(UnityEngine.Vector3 point0UnityEngine.Vector3 point1System.Single radiusUnityEngine.Collider[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics OverlapSphere¶
-
UnityEnginePhysics.
__OverlapSphere__UnityEngineVector3_SystemSingle__UnityEngineColliderArray
(UnityEngine.Vector3 positionSystem.Single radius)¶
outputs: unnamed (Collider[]
)
flow: none
Physics OverlapSphereNonAlloc¶
-
UnityEnginePhysics.
__OverlapSphereNonAlloc__UnityEngineVector3_SystemSingle_UnityEngineColliderArray__SystemInt32
(UnityEngine.Vector3 positionSystem.Single radiusUnityEngine.Collider[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics Raycast¶
-
UnityEnginePhysics.
__Raycast__UnityEngineVector3_UnityEngineVector3__SystemBoolean
(UnityEngine.Vector3 originUnityEngine.Vector3 direction)¶
outputs: unnamed (Boolean
)
flow: none
Physics RaycastAll¶
-
UnityEnginePhysics.
__RaycastAll__UnityEngineVector3_UnityEngineVector3__UnityEngineRaycastHitArray
(UnityEngine.Vector3 originUnityEngine.Vector3 direction)¶
outputs: unnamed (RaycastHit[]
)
flow: none
Physics RaycastNonAlloc¶
-
UnityEnginePhysics.
__RaycastNonAlloc__UnityEngineVector3_UnityEngineVector3_UnityEngineRaycastHitArray__SystemInt32
(UnityEngine.Vector3 originUnityEngine.Vector3 directionUnityEngine.RaycastHit[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics RebuildBroadphaseRegions¶
-
UnityEnginePhysics.
__RebuildBroadphaseRegions__UnityEngineBounds_SystemInt32__SystemVoid
(UnityEngine.Bounds worldBoundsSystem.Int32 subdivisions)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics set_gravity¶
-
UnityEnginePhysics.
__set_gravity__UnityEngineVector3__SystemVoid
(UnityEngine.Vector3 value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics set_interCollisionDistance¶
-
UnityEnginePhysics.
__set_interCollisionDistance__SystemSingle__SystemVoid
(System.Single value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics set_interCollisionSettingsToggle¶
-
UnityEnginePhysics.
__set_interCollisionSettingsToggle__SystemBoolean__SystemVoid
(System.Boolean value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics set_interCollisionStiffness¶
-
UnityEnginePhysics.
__set_interCollisionStiffness__SystemSingle__SystemVoid
(System.Single value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics set_reuseCollisionCallbacks¶
-
UnityEnginePhysics.
__set_reuseCollisionCallbacks__SystemBoolean__SystemVoid
(System.Boolean value)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics Simulate¶
-
UnityEnginePhysics.
__Simulate__SystemSingle__SystemVoid
(System.Single step)¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics SphereCast¶
-
UnityEnginePhysics.
__SphereCast__UnityEngineVector3_SystemSingle_UnityEngineVector3_UnityEngineRaycastHitRef_SystemSingle_SystemInt32_UnityEngineQueryTriggerInteraction__SystemBoolean
(UnityEngine.Vector3 originSystem.Single radiusUnityEngine.Vector3 directionSystem.Single maxDistanceSystem.Int32 layerMaskUnityEngine.QueryTriggerInteraction queryTriggerInteraction)¶
outputs: hitInfo (RaycastHit
), unnamed (Boolean
)
flow inputs: unnamed
flow outputs: unnamed
Physics SphereCastAll¶
-
UnityEnginePhysics.
__SphereCastAll__UnityEngineVector3_SystemSingle_UnityEngineVector3__UnityEngineRaycastHitArray
(UnityEngine.Vector3 originSystem.Single radiusUnityEngine.Vector3 direction)¶
outputs: unnamed (RaycastHit[]
)
flow: none
Physics SphereCastNonAlloc¶
-
UnityEnginePhysics.
__SphereCastNonAlloc__UnityEngineVector3_SystemSingle_UnityEngineVector3_UnityEngineRaycastHitArray__SystemInt32
(UnityEngine.Vector3 originSystem.Single radiusUnityEngine.Vector3 directionUnityEngine.RaycastHit[] results)¶
outputs: unnamed (Int32
)
flow inputs: unnamed
flow outputs: unnamed
Physics SyncTransforms¶
-
UnityEnginePhysics.
__SyncTransforms__SystemVoid
()¶
outputs: none
flow inputs: unnamed
flow outputs: unnamed
Physics ToString¶
-
UnityEnginePhysics.
__ToString__SystemString
(UnityEngine.Physics instance)¶
outputs: unnamed (String
)
flow: none


Tic-Tac-Toe
The simple and world-known game is back: Tic-Tac-Toe!
Just play it like you know it.
The project idea is from
The Odin Project
.
Restart


Start
Welcome to the Start Menu.
Please enjoy your stay.
At the Start Menu, you can do all kinds of thing.
Start a revolution.
Start a program.
Start living more proactively.
Start a website.
Start a game.
A task you ask
What is life?
Go Back
A task you ask
Windows can't help you with that.
But
you can do it.
Go for it!
Go Back
Start a program
What kind of program?
Start a television program.
Start a radio program.
Start a theater or musical program.
Start a program for people.
Start a computer program.
Go Back


Robotics, Computer Hardware, Computer Graphics, Software Engineering, Electrical Engineering, Mechanical Engineering


#right
#center
The problem with making a switch from table based layouts to Cascading Stylesheets Layout is
wanting to make a design with multiple column and the column are all of the same length.
I finally achieved the same effect of three columns that are really the same length by using
display: table-cell
.
From my test, it works with Mozilla 1.4 and Opera 7; it does not work with Internet Explorer 6.
Further discussion on this example can be found with CSS-Discuss.
© 2003 Seamus P. H. Leahy
You may take and improve upon this.
#left
The HTML

right

center

right

The CSS
body #main{ display: table; } body #main > *{ display: table-cell; }


Priyanka Chopra's Wedding Made Her World’s Most Searched Indian Celebrity - and Netizens Love It
New Delhi (Sputnik): International actress Priyanka Chopra has been named as the most searched for Indian celebrity on social media, as people looked up her name most in December when she officially became Mrs Nick Jonas. Netizens say she's added another “power” to her list.
US agency SEMrush has conducted a study on the popularity of Indian actors and actresses around the world and it was revealed that Priyanka Chopra, who shot to international fame in the American television drama “Quantico”, took the top position along with another Bollywood actor Salman Khan.
The study contains global data from October 2018 to October 2019.
In October 2019, Priyanka and Salman were searched 2.74 and 1.83 million times respectively and the largest number of searches on the former was in December when she tied the knot with Hollywood singer Nick Jonas in Udaipur, the city of palaces, located in Rajasthan.
She was searched 13.6 million times that month, Business Insider India reported.
The actress recently tweeted an admiring post for the Jonas Brothers - Nick, Joe, and Kevin - who have been nominated for a Grammy in the Best Pop Duo/ Group Performance category for their song “Sucker”.
Sharing a short clip of the song, she captioned the post, "So proud of you @jonasbrothers !! I love you @nickjonas @joejonas @kevinjonas”.
Priyanka and Nick had both a Hindu and Catholic wedding ceremony at the Umaid Bhawan Palace in India’s Jodhpur.


COVID-19 Case Distribution
HOME
ABOUT
LINKS
India
Reset
*The data across both visualizations might vary slightly as the datasets for 'India' and 'Worldwide' are different and the time at which they are updated can also vary.


quote By Famous People
Press Button for new Quotes
“If you want to live a happy life, tie it to a goal, not to people or things.”
-Albert Einstein


Christkindelmarkt is located on Millennium Square in the heart of Leeds city centre and is easily accessible from Calverley Street, Cookridge Street and Portland Crescent
Venue Address
Millennium Square, Leeds, LS2 3AD
Travel Options
A number of bus routes pass through the city centre and stop in close proximity to Millennium Square on The Headrow and Woodhouse Lane. For all bus service timetable and further information please contact West Yorkshire Metro on 0113 245 7676 or visit www.wymetro.com External link.
Leeds City train station is only a 10 minute walk away from Millennium Square via City Square leading into Park Row and Cookridge Street. For train services and timetable information visit www.nationalrail.co.uk External link.
A variety of street and secure parking options are available around the Civic Quarter. For further information on city centre parking visit www.leeds.gov.uk External link. or call parking services on 0113 395 0050.
There are designated taxi ranks located nearby. In order to avoid congestion and access issues on the day,all persons attending are requested not to arrange pick up/drop off directly outside the main gates.
For information regarding coach parking please email<EMAIL_ADDRESS>or call the visitors centre on 0113 242 5242.


REX Virtual Machine Documentation
Native Linking
REX programs are written in byte code, but can also use native code if required, through shared objects.
This is known as native linking.
The disadvantage of native linking is that the library needs to be rewritten/recompiled for a new platform.
Please note that native linking is an experimental feature, and can be subject to changes in future
Writing a shared library
First, get a copy of "virtual-machine.h" and "stack.o" located in src/programs/rex.
Then compile r3x_stack.c to an object file.
Then write your library like this:
#include "rex/virtual-machine.h"
r3x_cpu_t* CPUptr = NULL;
void Start(r3x_cpu_t* CPU) {
CPUptr = CPU;
}
/* 2 arugments for myfunc */
#define MY_FUNC_TOTAL_ARGS 2
uint32_t myfunc(void) {
argument1 = GetArgument(0, 1, MY_FUNC_TOTAL_ARGS); // Get 1st argument
argument2 = GetArgument(0, 2, MY_FUNC_TOTAL_ARGS); // Get 2nd argument
return argument1+argument2; // Return
}
...
Having a start function is mandatory, this will save your CPU pointer which the VM passes, now you can
use this pointer to do operations on the CPU when your function is called.
Compile the library using:
gcc -c -Wall -Werror -fpic mylib.c -o mylib.o
gcc -shared -o mylib.so mylib.o stack.o [The object file given in src/programs/rex/] -lc -lm
Then in your program, load the library like this:
pushstring "mylib.so"
loadlib
Execute functions, like this:
pushstring "mylib.so"
pushstring "myfunction"
libexec
Or if you use T++, then refer to that page.
An example is given in /src/programs/mylib.c and /src/programs/nativelib.il
(Note that on Windows systems the extension is usually .DLL.)


Mingo was designed to meet the needs of people who want to enjoy social experiences but lacked companions. The mobile app would enable users to create small-scale events, and the timely, event-based system adds spontaneity while releasing users from the constraint of groups.
Mingo home screen.
Main screen expanded.


Clone template package into a directory (example for new package gapi-foo)
git clone https://github.com/tomasklapka/gapi-template-package gapi-foo
cd gapi-foo
Remove .git folder:
rm -rf .git
Edit package.json:
$EDITOR package.json
npm install
- to install modules and trigger its prepublish scriptgulp
- to compile source files into JS and documentationnpm test
- to run tests with coverage informationnode --harmony examples/lib/example
- to run compiled example.js script with harmony proxies if used


- getActiveConnectionType(Context) - Static method in class com.thunder.network.NetworkManager
-
Reports the type of network to which the
info in this NetworkInfo
pertains.
- getAdvertisingId(Context) - Static method in class com.thunder.device.DeviceManager
-
Do not call this function from the main thread, otherwise,
an IllegalStateException will be thrown.
- getAndroidId(Context) - Static method in class com.thunder.device.DeviceManager
-
A 64-bit number (as a hex string) that is randomly
generated when the user first sets up the device and should remain
constant for the lifetime of the user's device.
- getApiVersion(Context) - Static method in class com.thunder.device.DeviceManager
-
The user-visible SDK version of the framework; its possible
values are defined in Build.VERSION_CODES
.
- getAppName(Context) - Static method in class com.thunder.app.AppManager
-
- getAppVersionCode(Context) - Static method in class com.thunder.app.AppManager
-
The version number of this package, as specified by the <manifest>
tag's attribute.
- getAppVersionName(Context) - Static method in class com.thunder.app.AppManager
-
The version name of this package, as specified by the <manifest>
tag's attribute.
- getAvailableMemory() - Method in class com.thunder.device.DeviceManager.RamData
-
- getAvailableRam(Context) - Static method in class com.thunder.device.DeviceManager
-
- getAvailableSpace() - Method in class com.thunder.device.DeviceManager.FsData
-
- getAvailableSpaceOnExternalMemory(Context) - Static method in class com.thunder.device.DeviceManager
-
- getAvailableSpaceOnInternalMemory(Context) - Static method in class com.thunder.device.DeviceManager
-
- getBoardName() - Static method in class com.thunder.device.DeviceManager
-
- getBoolean(String, boolean) - Method in class com.thunder.prefs.SharedPrefsManager
-
- getBootloaderVersionNumber() - Static method in class com.thunder.device.DeviceManager
-
- getBrand() - Static method in class com.thunder.device.DeviceManager
-
- getBuildFingerprint() - Static method in class com.thunder.device.DeviceManager
-
- getBuildId() - Static method in class com.thunder.device.DeviceManager
-
- getCpuAbi(Context) - Static method in class com.thunder.device.DeviceManager
-
- getDensity(Context) - Static method in class com.thunder.device.DeviceManager
-
- getDensityDpi(Context) - Static method in class com.thunder.device.DeviceManager
-
- getDeviceName(Context) - Static method in class com.thunder.device.DeviceManager
-
The end-user-visible name for the end product.
- getDisplayHeight(Context) - Static method in class com.thunder.device.DeviceManager
-
- getDisplaySize(Context) - Static method in class com.thunder.device.DeviceManager
-
Gets the size of the display, in pixels.
- getDisplayWidth(Context) - Static method in class com.thunder.device.DeviceManager
-
- getFloat(String, float) - Method in class com.thunder.prefs.SharedPrefsManager
-
- getHardwareName() - Static method in class com.thunder.device.DeviceManager
-
- getHardwareSerialNumber() - Static method in class com.thunder.device.DeviceManager
-
- getImei(Context) - Static method in class com.thunder.device.DeviceManager
-
Returns the unique device ID, for example, the IMEI for GSM and the MEID
or ESN for CDMA phones.
- getImsi(Context) - Static method in class com.thunder.device.DeviceManager
-
Returns the unique subscriber ID, for example, the IMSI for a GSM phone.
- getInAppPurchasedItems(PurchasedItemsListener) - Method in class com.thunder.iap.IAPActivity
-
returns a list of purchased items for the current user
- getIndustrialDeviceName() - Static method in class com.thunder.device.DeviceManager
-
- getInstance(Activity, RatingPopupListener) - Static method in class com.thunder.rating.RatingPopupImpl
-
singleton implementation
- getInt(String, int) - Method in class com.thunder.prefs.SharedPrefsManager
-
- getIPv4Addresses(Context) - Static method in class com.thunder.network.NetworkManager
-
- getIPv6Addresses(Context) - Static method in class com.thunder.network.NetworkManager
-
- getLong(String, long) - Method in class com.thunder.prefs.SharedPrefsManager
-
- getManufacturerName(Context) - Static method in class com.thunder.device.DeviceManager
-
The manufacturer of the product/hardware.
- getMsisdn(Context) - Static method in class com.thunder.device.DeviceManager
-
Returns the phone number string for line 1, for example, the MSISDN
for a GSM phone.
- getPackageName(Context) - Static method in class com.thunder.app.AppManager
-
- getPercentage() - Method in class com.thunder.device.DeviceManager.FsData
-
- getPercentage() - Method in class com.thunder.device.DeviceManager.RamData
-
- getPurchaseData() - Method in class com.thunder.iap.model.PurchasedItem
-
- getPurchasedItems(String, PurchasedItemsListener) - Method in class com.thunder.iap.IAPActivity
-
returns the purchased items for a user
- getPurchasedSubscriptions(PurchasedItemsListener) - Method in class com.thunder.iap.IAPActivity
-
returns the purchased subscriptions
- getSignature() - Method in class com.thunder.iap.model.PurchasedItem
-
- getSku() - Method in class com.thunder.iap.model.PurchasedItem
-
- getSkuDetails(ArrayList<String>, SkuDetailsListener) - Method in class com.thunder.iap.IAPActivity
-
- getString(String, String) - Method in class com.thunder.prefs.SharedPrefsManager
-
- getStringSet(String, Set<String>) - Method in class com.thunder.prefs.SharedPrefsManager
-
- getTotalMemory() - Method in class com.thunder.device.DeviceManager.RamData
-
- getTotalSpace() - Method in class com.thunder.device.DeviceManager.FsData
-
- getUsedMemory() - Method in class com.thunder.device.DeviceManager.RamData
-
- getUsedSpace() - Method in class com.thunder.device.DeviceManager.FsData
-
- getValues(Map<String, Object>) - Method in class com.thunder.prefs.SharedPrefsManager
-
Be aware that you can use only the following types for values: Integer, Long, String,
Boolean, Float and Set


The SOCAT data collection represents a large volume of data which cannot all be visualized in the map images. In order to achieve satisfactory performance when rendering maps over wide geographic areas, it is necessary for the SOCAT Data Viewer to reduce the number of data points to be displayed.
A piecewise-linear-approximation algorithm(*) is used to reduce the data volume for plotting. The path of a cruise is reduced to a sequence of linear line segments connecting longitude, latitude, fCO2_recommended triples. Points are omitted when their positions do not deviate from a linear segment connecting 3-tuples by more than 1 degree for position and 4 uatm for fCO2_rec. This approach assures a faithful visual representation of the ship's path and assures that all significant local extrema of fCO2_rec are retained. The reduction factor relative to the full dataset is approximately 3%. Maps that are based upon the reduced data report an approximation of the total number of points, computed as the number of points plotted divided by the reduction factor.
The subsampled data is used for requests covering more than 10% of the earth area, when no other selections have been to constrain the data shown. The full non-decimated data may be requested by choosing "Use full resolution data set" in the Plot Options menu.
(*) D.G. Wilson, "Piecewise linear approximations of fewest line segments", AFIPS '72 (Spring) Proceedings of the May 16-18, 1972, spring joint computer conference, pp 187-198. Available at http://www.computer.org/csdl/proceedings/afips/1972/5079/00/50790187.pdf


Kurstin:
I cannot tell you more about the happenings within this forest because it is under the influence of one of the beings that created the Kamael...
We were created by someone, after all. Among our kind, the Harkilgamed, Rodenpicula, Hierarch Kekropus and I are unique.
That is why you will not be detected even if you hold the Bloody Jewel in your hand...
Keep listening.


Invoking the Faust compiler
The Faust compiler is invoked using the faust command. It translate Faust programs into C++ code. The generated code can be wrapped into an optional architecture file allowing to directly produce a fully operational program.
For example faust noise.dsp will compile noise.dsp and output the corresponding C++ code on the standard output. The option -o allows to choose the output file: faust noise.dsp -o noise.cpp. The option -a allows to choose the architecture file: faust -a alsa-gtk.cpp noise.dsp.
To compile a Faust program into an ALSA application on Linux you can use the following commands:
faust -a alsa-gtk.cpp noise.dsp -o noise.cpp
g++ -lpthread -lasound `pkg-config --cflags --libs gtk+-2.0` noise.cpp -o noise
Structure of the generated code
A Faust DSP C++ class derives from the base dsp class defined as below (a similar structure is used for languages other than C++):
class dsp {
public:
dsp() {}
virtual ~dsp() {}
// Returns the number of inputs of the Faust program
virtual int getNumInputs() = 0;
// Returns the number of outputs of the Faust program
virtual int getNumOutputs() = 0
// This method can be called to retrieve
// the UI description of the Faust program
// and its associated fields
virtual void buildUserInterface(UI* ui_interface) = 0;
// Returns the current sampling rate
virtual int getSampleRate() = 0;
// Init methods
virtual void init(int sample_rate) = 0;
virtual void instanceInit(int sample_rate) = 0;
virtual void instanceConstants(int sample_rate) = 0;
virtual void instanceResetUserInterface() = 0;
virtual void instanceClear() = 0;
// Returns a clone of the instance
virtual dsp* clone() = 0;
// Retrieve the global metadata of the Faust program
virtual void metadata(Meta* m) = 0;
// Compute one audio buffer
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) = 0;
// Compute a time-stamped audio buffer
virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
{
compute(count, inputs, outputs);
}
};
Here is the class generated with the command faust noise.dsp. Methods are filled by the compiler with the actual code.
Several fine-grained initialization methods are available. The instanceInit method calls several additional initialization methods. The instanceConstants method sets the instance constant state. The instanceClear method resets the instance dynamic state (delay lines...). The instanceResetUserInterface method resets all control value to their default state. All of those methods can be used individually on an allocated instance to reset part of its state.
The classInit static method will initialize static tables that are shared between all instances of the class, and is typically supposed to be called once.
Finally the init method combines class static state and instance initialization.
When using a single instance, then calling init is the simplest way to do what is needed. When using several instances, then all of them can be initialized using instanceInit , whith a single call to classInit to initialize the static shared state.
The compute method takes the number of frames to process, and inputs and outputs buffers as arrays of separated mono channels. Note that by default inputs and outputs buffers are supposed to be distinct memory zones, so one cannot safely write compute(count, inputs, inputs). The -inpl compilation option can be used for that, but only in scalar mode for now.
By default the generated code process float type samples. This can be changed using the -double option (or even -quad in some backends). The FAUSTFLOAT type used in the compute method is defined in architecture files, and can be float or double, depending of the audio driver layer. Sample adaptation may have to be used between the DSP sample type and the audio driver sample type.
class mydsp : public dsp {
private:
FAUSTFLOAT fslider0;
int iRec0[2];
int fSampleRate;
public:
virtual void metadata(Meta* m) {
m->declare("name", "Noise");
m->declare("version", "1.1");
m->declare("author", "Grame");
m->declare("license", "BSD");
m->declare("copyright", "(c)GRAME 2009");
}
virtual int getNumInputs() { return 0; }
virtual int getNumOutputs() { return 1; }
static void classInit(int sample_rate) {
}
virtual void instanceConstants(int sample_rate) {
fSampleRate = sample_rate;
}
virtual void instanceResetUserInterface() {
fslider0 = 0.5f;
}
virtual void instanceClear() {
for (int i=0; i<2; i++) iRec0[i] = 0;
}
virtual void init(int sample_rate) {
classInit(sample_rate);
instanceInit(sample_rate);
}
virtual void instanceInit(int sample_rate) {
instanceConstants(sample_rate);
instanceResetUserInterface();
instanceClear();
}
virtual mydsp* clone() {
return new mydsp();
}
virtual int getSampleRate() {
return fSampleRate;
}
virtual void buildUserInterface(UI* ui_interface) {
ui_interface->openVerticalBox("Noise");
ui_interface->declare(&fslider0, "style", "knob");
ui_interface->addVerticalSlider("Volume", &fslider0, 0.5f, 0.0f, 1.0f, 0.1f);
ui_interface->closeBox();
}
virtual void compute (int count, FAUSTFLOAT** input, FAUSTFLOAT** output) {
float fSlow0 = (4.656613e-10f * float(fslider0));
FAUSTFLOAT* output0 = output[0];
for (int i=0; i<count; i++) {
iRec0[0] = ((1103515245 * iRec0[1]) + 12345);
output0[i] = (FAUSTFLOAT)(fSlow0 * iRec0[0]);
// post processing
iRec0[1] = iRec0[0];
}
}
};
Compilation options
Compilation options are listed in the following table :
\small
\tablefirsthead{
Short & Long & Description
\tablehead{
Short & Long & Description
\tabletail{
\multicolumn{3}{|r|}{\small\sl continued on next page}
\tablelasttail{
-h & --help & print the help message
-v & --version & print version information
-d & --details & print compilation details
-tg & --task-graph & draw a graph of all internal computation loops as a .dot (graphviz) file.
-sg & --signal-graph & draw a graph of all internal signal expressions as a .dot (graphviz) file.
-ps & --postscript & generate block-diagram postscript files
-svg & --svg & generate block-diagram svg files
-blur & --shadow-blur & add a blur to boxes shadows
-sd & --simplify-diagrams & simplify block-diagram before drawing them
-f n & --fold n & max complexity of svg diagrams before splitting into several files (default 25 boxes)
-mns n & --max-name-size n & max character size used in svg diagram labels
-sn & --simple-names & use simple names (without arguments) for block-diagram (default max size : 40 chars)
-xml & --xml & generate an additional description file in xml format
-uim & --user-interface-macros & add user interface macro definitions to the C++ code
-flist & --file-list & list all the source files and libraries implied in a compilation
-norm & --normalized-form & prints the internal signals in normalized form and exits
-lb & --left-balanced & generate left-balanced expressions
-mb & --mid-balanced & generate mid-balanced expressions (default)
-rb & --right-balanced & generate right-balanced expressions
-lt & --less-temporaries & generate less temporaries in compiling delays
-mcd n & --max-copy-delay n& threshold between copy and ring buffer delays (default 16 samples)
-vec & --vectorize & generate easier to vectorize code
-vs n & --vec-size n & size of the vector (default 32 samples) when -vec
-lv n & --loop-variant n & loop variant [0:fastest (default), 1:simple] when -vec
-dfs & --deepFirstScheduling & schedule vector loops in deep first order when -vec
-omp & --openMP & generate parallel code using OpenMP (implies -vec)
-sch & --scheduler & generate parallel code using threads directly (implies -vec)
-g & --groupTasks & group sequential tasks together when -omp or -sch is used
-single & --single-precision-floats & use floats for internal computations (default)
-double & --double-precision-floats & use doubles for internal computations
-quad & --quad-precision-floats & use extended for internal computations
-mdoc & --mathdoc & generates the full mathematical description of a Faust program
-mdlang l & --mathdoc-lang l & choose the language of the mathematical description (l = en, fr, ...)
-stripmdoc & --strip-mdoc-tags & remove documentation tags when printing Faust listings
-cn name & --class-name name & name of the dsp class to be used instead of 'mydsp'
-t time & --timeout time & time out of time seconds (default 600) for the compiler to abort
-a file & & architecture file to use
-o file & & C++ output file


Picoweb Webserver ESP32 Micropython
I always wanted to learn flask or django so I decided to recode the Simple Webserver with Picoweb, a library that’s extremely similar to the 2 library I mentioned but for micropython.
DIY or clone repo
You can either to choose to clone the repo with all the micropython modules loaded, or you can choose to challenge yourself and build it by yourself.
Clone repo
If you want choose to clone it, here’s the link, and follow the instructions below.
- clone the repo (git clone)
- transfer all files and directories into your ESP32 (ampy, thonny)
- press reset button
- connect to the AP using credentials found in boot.py OR connect to common AP by modifying value in boot.py (change to do_connect if so)
- navigate to the IP address as displayed on the terminal
DIY
If you are feeling adventureous and smart these are the steps:
- connect your ESP32 to the internet
- type the following commands in repl
import upip
upip.install('picoweb')
- remove the folder “uasyncio” from the folder lib (weird bug, picoweb didn’t install correct stuff)
- install another version of uasyncio using command
upip.install('uasyncio')
- run more commands
upip.install('pycopy-ulogging')
upip.install('utemplate')
- IMPORTANT step, open up ./lib/picoweb/init.py, search for awritestr.. at line 253 and change that to awrite..
- copy main.py and boot.py from the repo I mentioned earlier
- that’s all and since you’re a pro you know what to do (hint: follow the bottom half of Clone Repo instructions)
Performance
By the time after you run it you should realize that picoweb is kinda of slower that the simple webserver, and you’re right I feel that too. That’s probably because of the extra overhead code that it has, and would probably not be suited for the use case of controlling a robot. However, it is definitely a valid choice for more sophisacated web apps that you want to host on your esp32.


NuCompRes HTML5 Form Example
Evaluate MATLAB Expressions
Expression
% Solve Ax=b A = [1 -2;-3 4]; b = [2; 1]; response.x = A \ b;
Eval
American Option Pricing
asset starting price S
exercise price E
expiry time T
risk-free interest rate r
volatility sigma
Price
The Fair Price is
...
Stop Server
Stop Now


Let's Get a Li'l Loopy
Before I delve into the concept of loops in programming, does anyone else share in my love of Froot Loops? Every time I here about "loops", I can't help but reminisce about that delicious cereal. Yes Toucan Sam, lure me into your gift of fruity deliciousness with that big beak of yours. Yes sir...I want s'more...
ANYWAYS!
Loops. As I walk the path to becoming a junior web developer, there are many concepts that are "must-haves" when it comes to coding, and "loops" are at the top of that list. They are our friends. They want to help us, but they need us to give them a beginning and even more importantly, an end.
A programming loop is used to execute a set of directions (code) over and over again, until a specific condition is met. This is absolutely essential when it comes to writing a dynamic program that can perform calculations and display output based on those calculations. Without loops, our programs would be much longer, complex, and limited in their functionality. Let's go over some of the different Ruby loop structures, as well as the ideal situations in which you would use them.
While Loop
A while loop contains code that continues to execute as long as a condition is true, or "while" it is true. This can be useful in situations where you don't know exactly how many times you'll need the code to execute, such as:
------------------------
Until Loop
The cousin of the "while" loop is the "Until" loop. An until loop does just that - it continues to execute UNTIL a specific condition is met.
You can almost view an "Until" loop as a reverse "While" loop. They can often be used to achieve the same result, however your choice of which one to use may depend on your speecific program. Using a real-life example, if I were to instruct you to do your laundry, I could it in two different ways:
"Do your laundry as long as (WHILE) there are still dirty clothes left to be cleaned."
Or
"Do your laundry UNTIL there aren't any dirty clothes left."
See? It's the same task, with the same result, yet we've got two different ways to approach the instructions. WHILE & UNTIL - partners in crime!
------------------------
For Loop
And no, those dots in between "1" and "5" aren't just there to look pretty. To be used in conjunction with the "For" loop, Ruby gives us the Inclusive and Exclusive operators. In the above example, the inclusive operator (two dots ..) tells the loop that it should execute the code for variable "num" "1 through 5 times", or, 1-2-3-4-5 times. If we were to use the exclusive operator (three dots...) the code would exclude the final number (5), and therefore only run 4 times.
----------------
Iterators
As with most things Ruby, this beautiful language provides us with multiple ways of achieving a result. Another method for running a piece of code over and over is to use iterators. An iterator is a method that functions similarly to a loop. A few example of iterators include:
The "loop" iterator:
loop {print "Froot Loops are TASTY!"}
This would then print that phrase an infinite number of times (we'll go over this later).
The ".each" iterator:
object.each {| element | do expression}
This is an iterator with greater power than the "loop" method in that it can be used to apply an expression to EACH element in an object.
The ".times"iterator:
20.times {puts "Bowl, spoon, and milk please!"}
This is essentially a more a concise version of a "For" loop. You would use this iterator when you know how many "TIMES" you want to execute a bit of code.Calling the method in this fashion would puts the string 20 times. Simple, right?
------------------
Infinite Loop
While this may sound awesome, the infinite loop is your program's arch-nemesis! Yes,, the thought of infinity is mind-expanding. What could be more powerful than something that goes on forever!? Well, unfortunately computers dno't like forever very much.
An infinte loop (like it's namesake), is a loop that would quite literally go on forever. That is because the loop is never given a reason/condition to stop looping. Take a look at this example:
By continuing to decrease the value of x by 1, it will never be >= 5, which means this loop would run forever (if your computer had an infinite amount of memory).
As you might imagine, this spells certain doom for your program since it never has a reason to stop running. No other code will execute, so be sure to avoid these at all costs! Be sure that every loop you create has an exit point..or else!


| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| Answer |
| AnswerElement |
| Class and Description |
|---|
| AclLinesAnswerElementInterface
Interface for representing answers to aclReachability and aclReachability2.
|
| AclLinesAnswerElementInterface.AclSpecs
Representation of an ACL, including a
CanonicalAcl and all sources that contain that
ACL as a map of hostnames to sets of ACL names. |
| AnswerElement |
| ConvertConfigurationAnswerElement
Stores information extracted while converting vendor-specific configurations to
vendor-independent ones.
|
| DataPlaneAnswerElement |
| InitInfoAnswerElement |
| ParseEnvironmentBgpTablesAnswerElement |
| ParseEnvironmentRoutingTablesAnswerElement |
| ParseVendorConfigurationAnswerElement |
| Class and Description |
|---|
| AutocompleteSuggestion |
| AutocompleteSuggestion.CompletionType |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AclLinesAnswerElement.AclReachabilityEntry |
| AclLinesAnswerElementInterface
Interface for representing answers to aclReachability and aclReachability2.
|
| AclLinesAnswerElementInterface.AclSpecs
Representation of an ACL, including a
CanonicalAcl and all sources that contain that
ACL as a map of hostnames to sets of ACL names. |
| AclLinesAnswerElementInterface.AclSpecs.Builder |
| Answer |
| AnswerElement |
| AnswerStatus |
| AnswerSummary
A general way to summarize what the answer contains, using three basic integers
|
| AutocompleteSuggestion.CompletionType |
| DataPlaneAnswerElement |
| InitStepAnswerElement |
| Issue.Type
Analysis classes that flag an issue can label it with this class, using a major and minor type.
|
| ParseAnswerElement |
| ParseStatus |
| Problem |
| Schema |
| Schema.Type |
| Class and Description |
|---|
| AutocompleteSuggestion |
| Schema |
| StringAnswerElement |
| Class and Description |
|---|
| AnswerElement |
| AnswerSummary
A general way to summarize what the answer contains, using three basic integers
|
| Issue |
| Schema |
| Class and Description |
|---|
| AnswerElement |
| ConvertConfigurationAnswerElement
Stores information extracted while converting vendor-specific configurations to
vendor-independent ones.
|
| FlattenVendorConfigurationAnswerElement |
| ParseEnvironmentBgpTablesAnswerElement |
| ParseEnvironmentRoutingTablesAnswerElement |
| ParseStatus |
| ParseVendorConfigurationAnswerElement |
| Class and Description |
|---|
| AclLinesAnswerElementInterface
Interface for representing answers to aclReachability and aclReachability2.
|
| AclLinesAnswerElementInterface.AclSpecs
Representation of an ACL, including a
CanonicalAcl and all sources that contain that
ACL as a map of hostnames to sets of ACL names. |
| Answer |
| AnswerElement |
| ConvertConfigurationAnswerElement
Stores information extracted while converting vendor-specific configurations to
vendor-independent ones.
|
| DataPlaneAnswerElement |
| InitInfoAnswerElement |
| NodAnswerElement |
| ParseEnvironmentBgpTablesAnswerElement |
| ParseEnvironmentRoutingTablesAnswerElement |
| ParseVendorConfigurationAnswerElement |
| Class and Description |
|---|
| AnswerElement |
| InitInfoAnswerElement |
| ProblemsAnswerElement |
| Class and Description |
|---|
| AclLinesAnswerElementInterface
Interface for representing answers to aclReachability and aclReachability2.
|
| AclLinesAnswerElementInterface.AclSpecs
Representation of an ACL, including a
CanonicalAcl and all sources that contain that
ACL as a map of hostnames to sets of ACL names. |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| Schema |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| AnswerElement |
| Class and Description |
|---|
| ConvertConfigurationAnswerElement
Stores information extracted while converting vendor-specific configurations to
vendor-independent ones.
|
| Class and Description |
|---|
| NodAnswerElement |
| NodFirstUnsatAnswerElement |
| NodSatAnswerElement |
Copyright © 2014–2018. All rights reserved.