Visual Information
Color and other visual cues can be used effectively to convey information, but a backup method must be used.
Users Affected
Colorblind
Low Vision
Blind
Cognitive
Checklist
-
All information can be understood when the design is converted to grayscale
-
Links are differentiated from paragraph text by more than just color
-
Instructional text that references size, location, or color also references text-based attributes
-
Focus indicators are visible for everything that's focusable with the keyboard
References
In WCAG
- WCAG Success Criterion 1.3.3: Sensory Characteristics
- WCAG Success Criterion 1.4.1: Use of Color
- WCAG Success Criterion 2.4.7: Focus Visible


Learning Facial Representations from the Cycle-consistency of Face
Jia-Ren Chang*, Yong-Sheng Chen, Wei-Chen Chiu2021 International Conference on Computer Vision (ICCV)
2021 International Conference on Computer Vision (ICCV)
24th International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI 2021)
24th International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI 2021)
2021 IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP)
Workshop on Applications of Computer Vision (WACV) 2021
Asian Conference on Computer Vision (ACCV) 2020
2019 9th International IEEE/EMBS Conference on Neural Engineering (NER)
Conference on Computer Vision and Pattern Recognition (CVPR) 2018
27th Annual Meeting International Society for Magnetic Resonance in Medicine (ISMRM), Paris, France, 2018
Asian Conference on Machine Learning (ACML) 2017
International Symposium on Intelligent Signal Processing and Communication Systems (ISPACS) 2017
ICML visualization workshop 2016
NeuroReport, 5(13), 1024-1029, 2014


We're sorry but are-you-here-yet doesn't work properly without JavaScript enabled. Please enable it to continue.


Senior Product Designer
2022 - Now
Product Designer
Product Design Intern
University of Washington
UC San Diego


Breadth is for people like me. I aspire to be the very best but know the reality of probabilities.
However, I believe by being given access to the best information and learning from the same primary
resources as the greatest we can become our best selves.
Check out the books suggested by individuals ranging from Marc Andreessen to Danielle Morrill.


Owner {{seller_fullname}}'s review for you:
{% if seller_review %}{{seller_review}}{% else %}
{{seller_fullname}} has not yet written a review for you about this trade.
{% endif %}
{% if buyer_review %}
{% else %}
Your review for {{seller_fullname}}
{{buyer_review}}{% else %} {% if writable %}
Write a review for {{seller_fullname}}
{% else %}Please write a review when is trade is ended
{% endif %} {% endif %}Renter {{buyer_fullname}}'s review for you:
{% if buyer_review %}{{buyer_review}}{% else %}
{{buyer_fullname}} has not yet written a review for you about this trade.
{% endif %}
{% if seller_review %}
{% endif %}
Your review for {{buyer_fullname}}
{{seller_review}}{% else %} {% if writable %}


Last night I signed up for Clicky Web Analytics, and looking around their site I saw that they offer market share stats for the major browsers (IE, Chrome, Safari, Firefox, and Opera,) both in general, and split by browser version. Looking at Chrome’s stats, I noticed something interesting in the graph:
Thanks to Chrome’s silent automatic updates, as soon as a new version is released, the previous one virtually disappears in a matter of days! I’m sure there are valid arguments against updating software automatically and silently, for example at organizations that need to control what software their employees use, or that need to test existing applications in new browser versions before deploying them; but from a developer’s point of view I think it’s awesome, because for all intents and purposes there’s only one version of Chrome – the current one. Since older versions aren’t a big concern, testing in Chrome becomes simpler and easier: there’s no need to hunt down and keep multiple versions for testing.
Compare to Internet Explorer, where the four most recent versions coexist, so if it represents a major portion of your visits (and it probably does,) then you’ll have to support at least two of them: Internet Explorer 8, for the large number of people still running Windows XP; and 9, for those running Windows Vista and 7. Unfortunately, unless dropping XP and Vista is an option, you’ll probably have to keep supporting them even after Internet Explorer 10 comes out, since it won’t support Windows Vista.
Safari’s market share behaves a bit like IE’s, inasmuch as it doesn’t automatically update and the newest version coexists with the older one, but remarkably Safari 5.1 has already overtaken the previous version, just a month after its release with the launch of Lion. Still, until 5.0 is gone, testing in it might be problematic unless you have an older Mac nearby, or a Snow Leopard Server disc you can install in VMware Fusion or Parallels.
Firefox, meanwhile, behaves in a combination of both ways. After Firefox 4, which introduced automatic updates, it behaves like Chrome, with the previous version dropping off after a new release; but with a good number of users still on version 3.6, which didn’t have automatic updates.
And Opera… oh, who cares, I’m pretty sure Opera’s market share is composed entirely of developers testing their sites in Opera.
Anyway, knowing that I can stop worrying about testing in older versions of Chrome (and to a much lesser degree, Firefox and Safari) personally makes my job much easier, but as usual, your mileage may vary. Let your own browser stats be your guide.


Home
Bags
Garments
Feedback
Create
Create your design
Click the button CREATE to generate your design, here is an example:
Rate the output quality
here


6.5 The mailbox Module
The mailbox module contains code that deals with a number of different mailbox
formats (mostly Unix formats), as shown in Example 6-6. Most mailbox formats simply store
plain RFC 822–style messages in a long text file, using some kind of
separator line to tell one message from another.
Example 6-6. Using the mailbox Module
File: mailbox-example-1.py
import mailbox
mb = mailbox.UnixMailbox(open("/var/spool/mail/effbot"))
while 1:
msg = mb.next()
if not msg:
break
for k, v in msg.items():
print k, "=", v
body = msg.fp.read()
print len(body), "bytes in body"
subject = for he's a ...
message-id =<EMAIL_ADDRESS>received = (from<EMAIL_ADDRESS>by spam.egg (8.8.7/8.8.5) id CAA03202
for effbot; Fri, 15 Oct 1999 02:27:36 +0200
from = Fredrik Lundh<EMAIL_ADDRESS>date = Fri, 15 Oct 1999 12:35:36 +0200
to =<EMAIL_ADDRESS>1295 bytes in body
|


Resume
About Me
Work
Skills
SHIVANI AGRAWAL
WEB DEVELOPER,WSDC
CODER
Roll Number : 841606
Course : BTech CSE @ NITW
ABOUT ME
BirthDay : 9th October,1997
Gender : Female
Nationality : Indian
CONTACT ME
WARANGAL,TELANGANA
MOB :9406474464
EMAIL<EMAIL_ADDRESS>FACEBOOK :
Shivani Agrawal
More Info
WORK >>
Year
Title
Where
CGPA/Percentage
2016-2020
Persuing B.Tech. in Computer Science
NIT Warangal
mains rank 274
2015
Higher Secondary
DAV public school, Bilaspur
97.2%
2013
high school
Krishna Public School, bilaspur
10.0/10.0
SKILLS>>
LANGUAGES
65% (bootstrap)
80% (c++)
85% (html/ css)
70%(c lang.)
OPERATING SYSTEMS
85% (windows)
40% (linux)
Download Resume


--- layout: post title: Rails 3 Beginner to Builder 2011 Week 6 with Ethan Waldo date: '2011-07-20T15:49:00-05:00' tags: - university of texas, - Rails-3-beginner-to-builder-2011 - ruby on rails - ethan waldo - austin.rb - rails - austin permalink: /post/7854107653/rails-3-beginner-to-builder-2011-week-6-with-ethan ---
This is part 6 of my Rails 3: Beginner to Builder series. https://www.schneems.com/beginner-to-builder-2011 with special guest speaker Ethan Waldo
Assignment before next week (Week 7): Chapters 15, 16, 17
We will NOT be meeting on July 21st, due to a conflict with Austin.rb (which i highly recommend you attend). Its a going to be a great meeting, and I hope to see many of you there.
Rails 3 Beginner to Builder 2011 Week 6 from richard schneeman on Vimeo.
Rails 3 Beginner to Builder 2011 Week 6 View more presentations from Richard Schneeman.
Topics: - Email in Rails - Background Tasks - modules - Observers & Callbacks - Internationalization & Localization - I18n & L10n


Submit
About
Uses Twitter's Bootstrap classes as defaults.
Usage
$("#textbox").lilCharacterCount();
As used in demo:
$("#textbox").lilCharacterCount({
limit: 100,
warning: 50,
submitButton: "submit-button"
});
Options
- limit
- Number. Sets the character limit for the text box. Default: 140
- warning
- Number. Toggles the warning class on the counter when this character count is reached. When set to 0, it is disabled. Default: 100
- allowExceed
- Boolean. Determines whether or not typing is allowed past the limit. Default: true
- submitButton
- String. ID of submit button that, if supplied, will be disabled if limit is exceeded. Default: blank
- counterClass
- String. Class for the counter. Default: character-count
- defaultClass
- String. Class applied to counter when the character warning or limit values haven't been exceeded. Default: bg-info
- warningClass
- String. Class applied to counter when the character warning values have been exceeded. Default: bg-warning
- dangerClass
- String. Class applied to counter when the character limit value has been exceeded. Default: bg-danger


WriteLog RigRepeater is a small application that publishes and monitors
WriteLog's Entry Window rig frequencies on your local networks.
This software is supplied free of charge, as-is and without warranty, but with
its source code. You assume all risks of its use.
It has
a one-screen user interface like this:
The upper list is the local rigs. The lower list is all rigs, including
both local and remote.
- Click on one of each and the Link button lights
up.
- Click on the Link button and Rig Repeater will, on a timer,
force the local rig's frequency to match that of the linked-to remote.
- The Unlink button lights up when you select any local rig that is
already linked. Click Unlink to stop the link.
Windows XP
RigRepeater.exe depends on an existing installation of .NET
version 3.5. .NET 3.5 can be installed on XP,
but if its not there already, it can be quite a long ordeal to get it. Plan ahead.
Windows XP SP3 Download site
.NET 3.5 Download site
Windows 7
Win7 comes with .NET 3.5 DISABLED by default. Instructions for turning it on:
http://superuser.com/questions/254234/how-do-i-install-net-framework-3-5-on-windows-7
Changing the UDP port number
This application installs the file RigRepeater.exe_config, which specifies
the UDP port number. If this port number happens to be in use by some
other application on any of your PC's, then RigRepeater won't run. It crashes
on startup with an obscure message from Windows. To fix this, you have
to change the UDP port number on all of the networked
PCs to some other number and all the exe_config's must match.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="UDP_PORT" value="9003"/> The 9003 can be changed to any number from 1024 through 64000
</appSettings>
</configuration>
TODO list
- if you have a shutdown for any reason, it remembers
nothing and has to be setup from scratch.
- It uses a UDP port number that is assumed
won't collide with anything else running on either PC; the RigRepeater.exe_config must
be hand edited and matched on all machines to move the port assignment.


Editable?
You can try the responsiveness by resizing your browser or viewing this page on your mobile.


Spring Equinox
7 am
8 am
9 am
10 am
11 am
12 pm
1 pm
2 pm
3 pm
4 pm
5 pm
play the day
stop
Annual
jan 3 pm
feb 3 pm
mar 3 pm
apr 3 pm
may 3 pm
jun 3 pm
jul 3 pm
aug 3 pm
sep 3 pm
oct 3 pm
nov 3 pm
dec 3 pm
play the year
stop
File Menu
Renderer Info
File Data
View Menu
Help Menu
❦
slide ☰


Traces in open tracing are defined by their Spans. Edges between Spans are called references.
A span has an operation name, start timestamp, finish time stamp. Each span has zero or more key:value Span tags, with each key as a string.
A span may reference zero or more other SpanContexts that are causally related.
Two types of references: 1. ChildOf 2. FollowsFrom
Both model direct relationships between childSpan and parentSpan.
Tracer interface creates Spans understands how to Inject and Extract them across process boundaries.
Operation name: string that uniquely identifies a class of Span
instances.
Inject a SpanContext
into a carrier
Extract a SpanContext
from a carrier
SpanContext is immutable, and semantically the caller should be able to ite


Anytime is Train Time
Choo Choo. Chee Chee
Current Train Times
Train Name
Destination
Frequency (min)
Next Arrival
Minutes Away
Add Train
Train Name
Destination
First Train Time
Train's Frequency (min)
Submit


REVIEW: The Blair Witch Project (1999) Reviewed by Matt Pusateri
When I was eight, my brother, a friend and I decided to camp out in our backyard on a summer night. We pitched a tent and rolled out sleeping bags. For us, this was almost "roughing it." We ate junk food, watched the skies for UFO's, and told ghost stories until the middle of the night. Sometime around 3 a.m., just as we were drifting off to sleep, we heard someone scream in the distance, about a block away. It was a loud, shrill scream. I've almost never been so frightened in my life. In a blind panic, we all rushed to the front of the tent, fumbled with the zipper, and trampled over each other get out of the tent and rushed inside the house, where lights, carpeting, and TV would seemingly protect us from whatever was lurking outside. Looking back, our terror seems silly and absurd, since we were in a fenced backyard of a suburban Los Angeles home, yards away from my parents' bedroom window. I'm not even sure today that what we heard was a woman screaming, not a cat. But on that night, it was what we couldn't see and didn't know that was so terrifying.
What triggered my memory of that incident was The Blair Witch Project. This $35,000 independent film has stunned the entertainment industry by out-grossing many major studio releases this summer. The film deserves both the hype and ticket sales it has generated. It is a fresh, engaging, and flat-out scary film. Unlike the countless Scream clones and sci-fi monster movies, Blair is scary without relying on special effects, haunting soundtracks, or a teams of high-paid make-up artists. It draws on the primal fears all of us share, and have experienced at one time -- the fear of the unknown and the fear of being vulnerable and exposed.
Presented as the recovered footage of three documentary filmmakers who vanished in the woods of Maryland while making a film about a legendary local witch, the movie depicts three college students as they go into the woods to explore the spooky local legend. You know it's not going to have a happy ending, but don't know what the characters are going to face. You're along for the ride, trying to figure out what's going on and what's out there, in the dark, just out of sight, before it reaches out and gets them.
The film starts with the project's leader, Heather (Heather Donahue), who compulsively (and conveniently) tapes everything the group does, as she prepares for the trip. The documentary is supposed to examine the local legend of the "Blair Witch," who has supposedly been responsible for several unsettling and mysterious deaths in Burkittsville, Maryland, since she was banished from the town in 1786. Heather is joined by fellow students Mike (Michael Williams) and Josh (Joshua Leonard), and the trio head to Burkittsville, where they interview people on the street about the legend. Some townspeople have never heard of the Blair Witch legend, while others seemingly know a lot about it. A few suggest to the filmmakers that they think she's still out there somewhere. In an eerie scene, a local woman explains on camera what she knows about the story of the witch, while the baby girl she is carrying keeps putting her hand over her mother's mouth, as if to keep the words from coming out.
The next day, the three students strap on backpacks and head into the woods in search of some famous landmarks related to the history of the Blair Witch. They find a spot known as "coffin rock," where five men's bodies were found ritualistically dismembered and inscribed with strange symbols in 1886. After that, the students set off to find an infamous graveyard deep in the woods. When they camp at night, odd things start happening, and they begin to hear noises nearby and sometimes right outside their tent. As they plod on, tensions rise along with fatigue and fear. Soon, they are lost and struggle to find their way out of the woods. Disturbing late-night visitations continue to plague them, and they begin to fear that their harassers may be worse than curious wildlife or mischievous rednecks. Heather, from the outset, is the in-control type -- always in charge of the map, always making decisions -- but as they become increasingly lost and fearful, you can see her sense the control over the situation slipping away, which perhaps scares her the most. Their cycle of hope, fatigue, and fear continue for days, leading up to some creepy developments, surprising final twists, and an absolutely chilling finale.
The film's creators, Daniel Myrick and Eduardo Sanchez, didn't so much direct the film as manipulate it. They gave the three actors the basic backstory of the film, then sent them off on their own to film the scenes in the woods without any script. They would get daily messages to the actors about general plot developments and things to do, but otherwise, the actors improvised scenes and filmed them. In turn, the Myrick and Sanchez would review the tapes after each day and make suggestions for the next day. To keep the developments spontaneous, they kept the actors in the dark about what else would happen (except that they would not be hurt), so the late night disturbances faced by the actors were genuinely surprising, and no doubt, frightening to them. When the characters look tired, it's because the actors were tired. If they sound testy, they probably were. Reportedly, the directors warned the actors before taking the job that "your safety is our concern, your conform it not." (In fact, the actors, while alone in the woods, unlike the characters in the film, did have a GPS locator device in their gear to prevent them from genuinely becoming "missing," like their fictional counterparts.)
Part of what makes Blair effective is that it looks and feels genuine. The shaky camcorder effect isn't contrived as in some ads or in NYPD Blue, it's a camcorder being held by someone on the move or whose arm is actually shaking.  By the time things start getting strange, the viewer has been sucked into the illusion that he or she is watching a real videotape of real people making a documentary. The film wouldn't work if you were constantly aware that these were three actors in the woods, dirty and tired, but perfectly safe. The improvisational acting in the film, mixed with genuine reactions of surprise, frustration, and fear, make the performances by the three actors convincing and compelling. Two of the actors have noted that people have recognized them since the film's release on the street and stopped them to express how relieved they are to see that they are safe after all. In the course of the 90-minute film, you see and feel the toll the experience takes on the characters, as they descend from frivolity, to frustration, to anger, to desperation, and finally, to sheer terror.
The Blair Witch Project is one of the scariest movies in recent years: a film that follows you around for a while after you leave the theater. Some friends who have seen the movie have told me that it disturbed them more a week after they saw the film than right after seeing it. It does a much better job at getting at the things that truly scare all of us than most contemporary horror films. The smartest move by its creators was to let the audience imagine the scariest parts of the film themselves. Many of the scariest elements of the film are just out of camera range, hard to hear clearly, too blurry to see, or just far enough away in the darkness that you can't see. That's what scares us in real life, what scared me years ago in my backyard, and what continues to frighten millions of audience members. When you leave the theater, you're not exactly sure what you saw, what you heard, or even what ultimately happened to the characters. And that, quite possibly, is the scariest part of the experience.
GRADE: A
Copyright 1999 Matt Pusateri Check out other film reviews, game reviews, features, and columns at The Separate Radio Volume Knob (http://www.pusateri.org/knob.htm)
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


---
layout: downloadpage
---
Additional information
You can find the links to prior versions or the latest development version below.
To see a detailed list of changes for each version of Scala please refer to the changelog.
Note that different major releases of Scala (e.g. Scala 2.11.x and Scala 2.12.x) are not binary compatible with each other.


Why VPN?
A VPN service increases your security and anonymity on the internet, doing it by encrypting your communication and masking your real IP address.
The encryption happens between the client (the device you currently use) and the VPN server, and due to this, third parties cannot read the data you transfer.
Typical use cases:
- While using open or free WiFi hotspots
- Accessing bank- or any other important website abroad
- Accessing websites that are restricted in your area


{% extends "base.html" %} {% block content %} {% if not show_report %}
Upload your training algorithm file here...
Upload your dataset file here...
Upload your inference class here...


{% extends "ideal/tests/base.html" %} {% block extra_js %} {% endblock %} {% block config_params %}{% endblock %} {% block content %}
For a successfull iDEAL payment the following flow should be followed.
| Step | Description | Action |
|---|---|---|
| 1 | Requests a list of issuers. | Function: get_issuers(...) |
| 2 | Select an issuer. | User action |
| 3 | Start a new transaction. | Function: start_transaction(...) |
| 4 | Authenticate transaction. | User/Acceptant action |
| 5 | Request transaction status. | Function: get_transaction_status(...) |
This API provides functionality for performing steps 1, 3 & 5.
Note For optimal performance, the list of issuers (step 1) can be cached locally.
{% if settings %}{% endif %} {% endblock %}


Ensure your matrix falls within our limitations (see criteria at right)
Take a picture of your handwritten matrix. For best results, make sure your picture is well-lit, has high contrast between writing and background and is black writing on white background.
Save your image as either a jp(e)g or a png file.
Upload your image in the “MaTreX” tab.
Confirm you uploaded the right image and press “Convert Image”
When you get your results, ensure they are correct, then copy and paste them into your favorite LaTeX editor. If there are small mistakes in the conversion, be sure to fix them!
Matrix Limitations
Currently, we are only able to provide conversion services to matrices which fulfill the following criteria:
Single matrix (no matrix expressions)
The entries of the matrix are integers in the range -9 to 9


The following paragraphs describe each of the targets specified in the armidale ant build file (<install_dir>/developer/build.xml).
The clean target performs the following operations.
1. Deletes the build directory tree created by the prepare target.
2. Deletes all .class files from the developer/src directory tree.
3. Deletes all files ending with tilde (ie. ~) from the developer/src directory tree.
The prepare target creates the following directories in the armidale installation directory (if they don't already exist).
build
build/classes
build/jars
build/distribution
backups
The compile_all target performs the following operations.
1. Invokes the prepare target.
2. Compiles all Java source files found in the developer/src directory tree.
The compile_utilities target performs the following operations.
1. Invokes the prepare target.
2. Compiles all Java source files found in the developer/src/armidale/utilities directory tree.
This target is useful when making changes to the armidale.utilities.MakeClass widget code generation program. Changes will often lead to the generation of code that will not compile!
The build_javadoc target performs the following operations.
1. Invokes the prepare target.
2. Generates javadoc documentation for the following armidale packages. The resulting documentation is placed in the development/javadoc directory tree.
armidale.api.api.* (excluding armidale.api.impl.* and armidale.api.gui.impl.*)
armidale.api.launcher.*
armidale.api.test.*
armidale.api.utilities.*
The build_jar target performs the following operations.
1. Invokes the compile_all target.
2. Generates the main armidale jar file in build/jars/armidale.jar. This jar contains all of the compiled armidale classes.
The build_distribution target performs the following operations.
1. Invokes the compile_all, build_javadoc, and build_jar targets.
2. Generates the following jars which comprise the standard armidale distribution. They will be placed in the build/distribution directory.
armidale-<version>-user.jar
armidale-<version>-documentation.jar
armidale-<version>-developer.jar
where:
<version> in the above file names is a version number like 0.9.2 (eg. armidale-0.9.2-user.jar).
See the User Installation and Developer Installation notes for more information about these jars.
The backup target performs the following operations.
1. Invokes the prepare target.
2. Creates a backup of the development system in a compressed tar file stored in the backups directory. The name of the back file includes the date, time and armidale version as showing the following example.
20020301_1452_armidale-0.9.2.tgz
The help target will list each target along with a brief description.
The show_config target will list each of the variables used by the armidale build system.


Orbeon is invoked by delivering the form through a jsp situated in the directory.
/<PATH TO>/tomcat/webapps/orbeon/xforms-jsp/mei-form
Orbeon interpretes everything deliverd that way as being xforms. The mei_form.jsp is a kind of proxy executing xinclude.
You should also
cp properties-local.xml /<PATH TO>/tomcat/webapps/orbeon/WEB-INF/resources/config/properties-local.xml


July 28th, 2019
Traditional Ceremony
12pm - 2pm
Family & Relatives only
On the chosen date and time, the procression of Dang's family will come to Hannah's house with wedding cars, flowers and offerings.
The permission ceremony begins in front of the bride's ancestral altar. Dang and Hannah, with their respective parents, burn incense sticks, asking for permission from the ancestors to bless them. The couple turns and bows to their parents, gives thanks for raising and protecting them. The bride and groom will then bow to each other.
Once stepping on the weddingcar to groom’s house, from the customary perspective, Hannah’s officially left behind her single life.
Reception Ceremony
5pm - 11pm
Are you a singer? Are you a dancer?
Or do you have the urge to steal the thunder and be in the spot light?
Don't worry. After the dinner, there is the time for that.
"I had the time of my life And I've never felt this way before"
Oh, have I mentioned there will be free beer?
Hannah and I are looking forward to hosting you with
2725 University Ave SE, Minneapolis, MN 55414


rotten > Library > History > Third Reich > Gestapo
Gestapo
Short for Geheime Staatspolizeiamt, the "Secret State Police Office" of the Third Reich. It was the enforcement arm of Germany's national police system. In 1936, an official memo described its responsibilities this way:
To the GESTAPO has been entrusted the mission by the Fuehrer to watch over and to eliminate all enemies of the Party and the National Socialist State as well as all disintegrating forces of all kinds directed against both.
Accordingly, the administration was broken into six divisions of labor:
| Section A |
Section B |
Section C |
| opponents, sabotage, protective service |
political churches, sects, Jews |
card files, protective custody, matters of press and Party |
- Communism, Marxism and associated organizations, war crimes, illegal and enemy propaganda.
- Defense against sabotage, combatting of sabotage, political falsification.
- Reaction, opposition, legitimism, liberalism, matters of malicious opposition.
- Protective service, reports of attempted assassinations, guarding, special jobs, pursuit troops.
|
- Political Catholicism.
- Political Protestantism.
- Other churches, Freemasonry.
- Jewish affairs, matters of evacuation, means of suppressing enemies of the people and State, dispossession of rights of German citizenship. (Eichmann was head of this office).
|
- Evaluation, main card index, administration of individual files, information office, supervision of foreigners.
- Matters of protective custody.
- Matters of the press and literature.
- Matters of the Party and its formations, special cases.
|
| Section D |
Section E |
Section F |
| regions under greater German influence |
security |
passport matters, alien police |
- Matters of the Protectorate, Czechs in the Reich, Slovakia, Serbia, Croatia, and the remaining regions of the former Jugoslavia, Greece.
- Matters of the General Government, Poles in the Reich.
- Confidential office, foreigners hostile to the State, emigrants.
- Occupied territories, 'France, Belgium, Holland, Norway, Denmark
- Occupied Eastern territories.
|
- General security matters, supply of legal opinions in matters of high and State treason, and other security matters.
- General economic matters, defense against economic espionage, protection of works and those engaged in guarding.
- Security West.
- Security North.
- Security East.
- Security South.
|
- Frontier police.
- Passport matters.
- Identification and identity cards.
- Alien police and basic questions concerning frontiers.
- Central visa office. (L-219)
|
Timeline
| 26 Apr 1933 |
Hermann Goering founds the Gestapo. |
| 26 Jun 1936 |
The Gestapo is subsumed under the newly-formed Sicherheitspolizei, or "Security Police". Reinhard Heydrich is named as head of SIPO. |
| 27 Sep 1939 |
The Gestapo is centralized with the SD and the Criminal Police under the newly-formed Reichssicherheitshauptamt, or "Reich Security Main Office". |
Pornopolis |
Rotten |
Faces of Death |
Famous Nudes
|


A programming language is a computer language engineered to create a standard form of commands. These commands can be interpreted into a code understood by a machine. Programs are created through programming languages to control the behavior and output of a machine through accurate algorithms, similar to the human communication process.
A programming language is also known as a programming system, computer language or computer system.
==> This is a developer who writes non-UI code
==> This is a type of developer specialized in writing software for rendering, lighting, shadowing, shading, culling, and management of scenes
==> This type of developer writes software programs to store and retrieve vast amounts of data in systems
==> This is a type of developer familiar with technologies required for the development of systems


Pedicle Screw
Suk 199:
9 24 Kuklo 2007 7 298 Karatoprak 2008 4 22 Helgeson 2010 3 37 Yilmaz 2012 4 35 Hwang 2012 7 88 Yang 2012 1 a Halanski 2013 2 3 Samdani 2013 49 540 Sugarman 2013 9 29 Total (95% Cl) 1068 Total events 69
Hybrid Instrumentation
nts
24
Nao
29
V7 1
107
Heterogeneity: Chi? = 14.64, df= 9 (P = 0.10); F 38%
Test for overall effect: Z = 2.70 (P =
.007)
23 423
igh 5.0% 25.3% 3.5% 1.7% 2.6% 23.4% 1.3% 3.8% 24.0% 9.4%
100.0%
Odds Ratio
1.70 [0.49, 5.90] 0.40 [0.17, 0.95] 0.37 [0.04, 3.78]
3.82 [0.82, 17.83] 0.48 [0.04, 5,64] 0.63 [0.30, 1.32]
1.00 {0.06, 17.12] 0.94 [0.18, 4.96] 0.25 [0.12, 0.55] 0.77 [0.26, 2.32]
0.84 [0.42, 0.87]
0.01
—»—_ —» —— > {$+ ot 10 100
Favours [Pedicle screw] Favours [Hybrid Instrumentation]


This was the most intense and the best acid trip I've ever had, and I'd tell you all about it, but there are plenty of trip reports based on LSD alone, so I'll just write the pertinant information- the trip after I smoked Salvia divinorum.
I took three hits of LSD (my friend had done the same earlier in the day) and had a wonderful experience while peaking. However, about 3 hours into the trip, the peak ended, and I was very disappointed. The intense visuals had entirely disappeared. My friend told me to smoke marijuana to get them back, but I had a drug test in 3 days so that wasn't an option. Instead, I went to my car and pulled out a bag of natural strength salvia divinorum (usually way too weak to smoke by itself) and brought it inside.
We turned off the lights, the only illumination left was coming off the computer screen and a static tv. Some really terrible rap music was playing, I like hippie music, so this didn’t thrill me. My friend (who was more sober at this point) packed some salvia into a bowl of a sophisticated bong (diffuser stems, all kinds of crap) and lit up. I remember being fascinated by the strange, green smoke that was filling up the chamber. He took a HUGE hit and immediately began coughing terribly.  He packed a bowl of salvia for me, and helped me work the bong, since he’s a much more experienced smoker. I took just one hit of this natural strength salvia, enough that it was a little uncomfortable, and held it for as long as I could…
I was laughing, uncontrollably and for no reason. My friend was laughing too. I just stared into his face, and he stared back, with a strange glow around his face and pitch darkness everywhere else.  Things became extremely abstract- everything in the universe disappeared except for our roaring laughter, my mind, my friend’s personality, and a frightening droning in the background.
Things flickered- some memories flashed by, though I can’t remember details at all, and it seemed only to last for milliseconds. Now I was really scared. I was stuck. I couldn’t move, I couldn’t stop laughing. My friend’s face was becoming more and more evil. I felt like my consciousness was being shot back and forth between my mind and the location of my friend’s personality at light speed. It seemed this loop had lasted for years… When would it end? I was sure I was stuck in this perpetual nightmare fore eternity…
I used all my willpower and shook myself out of the trance. The room came back, and it was hard to tear my gaze from my friends face, which had normalized, somewhat. The terrible rap music was still playing. “Holy shit” I muttered. “I almost got stuck in a loop forever.”
“How?” my friend asked. I tried to explain it, but it was just impossible.
“Do you remember all of that?” I asked.
“Remember what?” he replied.
“All of what just happened…  What happened?”
“You just kind of stared at me, and kept laughing, and then you…”
But I couldn’t hear him anymore. I was petrified. The music was terrible, it had to stop.
“Stop it, man. Turn off the music. Turn it off! The trip’s getting bad, it’s getting real bad…” The music stopped, but it just made things worse. The entire universe was immersed in a petrifying silence. He went and turned on the lights. There were terrible, intense hallucinations in my peripheral vision. I was really scared, scared that I’d never return to reality.
The room flashed into hell. My friend had an expression of torment on his face, he was preying on my agony. Flames were licking his eyes. He started to say something to me, something terrible… I couldn’t control any part of the trip, and nothing seemed to resemble reality at all. I told myself I was hallucinating, I knew my best friend could not possibly be evil… I used all my energy and willpower to shake away the setting, to imagine my friend as he really was.
The room came back, but it still had frightening aspects. “I’m scared,” I kept saying. “I’m questioning my sanity. Logan, Logan come here I need you!” And my friend ran to help me. My peripheral vision was the worst of everything- it seemed like I had a permanent frame around my eyes. I go scared I’d see that way forever. I couldn’t tell what was part of my body- It seemed like dressers, blankets, everything was part of me somehow. When I moved my arm it pixilated- little bits of matter just floated in space. I started thinking that the molecular structure of the universe was crumbling… It seemed like every bit of matter was somehow physically a part of me. I hated it. I kept questioning my sanity, wondering if I’d ever perceive things the same way again…
More people came into the room, since I was making such a scene. “This is a bad trip, man. This is really bad… I gotta fix it.” All three trip sitters were really nice, but all three of them were on something, so I couldn’t tell what was part of reality and what wasn’t. I tried to calm myself down, I had become the feeling of panic. They told me the first step was to just chill, so I lay down. They put a blanket over me, and I just hated that sensation.  I kept telling myself that the salvia trip was over, it only lasts a few minutes, I was fine… But I wasn’t fine. I was sure the drugs were no longer affecting me and I was in a psychosis, but I kept telling myself it wasn’t true.
“What’s making the trip bad?” They asked me. It was hard for me to put it in words. “It needs to be happy… The trip’s not happy, its terrified… I keep getting stuck in loops man, so many loops…” and my mind was flooded with paradoxical things. The oroborous (a snake eating its own tail), the existence of God, molecular structure… I kept praying, praying over and over and asking God to forgive me for tampering with my mind. I then noticed that they were doing things to try and make me happier.
“This is a really happy bag,” one kid said. “This is the happiest bag I’ve ever seen.” I looked into it and it was filled with candy, toys, colors, everything a 3 year old kid would be enthralled with. But I didn’t like it, there was something wrong with it. Then he held up a soft bear. “This is the softest thing I’ve ever felt. Look how amazing this guy is. Wouldn’t it be awesome if these things were real and our size?  But I didn’t like that either. Their pet black cat came in and I started petting it, talking to it, trying anything to calm down.
“Funyun?” one friend kept saying. Any time I looked at him, that’s all he would say. I was sure I was stuck in a loop of the past, like when a record gets stuck and repeats over and over… Another kid was drawing on the wall. He was stoned out of his mind, and any time I looked at him I was reminded of a mental institution. He kept saying the same things, looking at me with the same disturbing smile. All these loops… Everything was repeating itself, and I hated it.
I looked to my best friend, Logan, and any time I looked at him floods of memories and emotions would rush passed my eyes, and I suddenly knew that I could never trip with him again, because we had existed together on so many levels, and that was part of what was triggering this psychotic reaction. Any time I asked Logan a question, he would just repeat it, in a different tone. All he seemed to do was echo me. Any time I wanted some sense of direction or a glimpse of reality he would just lead me in circles.
“Are you hungry?” Logan asked, and I said yes, anything that might help me grip reality. He brought me a microwaved burrito. It was really strange eating it- it was half warm and half cold, and very spicy. My body just felt weirder after that. “I’m questioning my sanity.” I repeated. “Am I stuck this way?”
“No,” Logan replied. “No, look at me. You’re not crazy. I’ve seen crazy people. You’re talking completely normal. This happens to everybody. You’ve been tripping only 4 hours and this stuff lasts about 12… You just weren’t expecting the salvia reaction.”
But no matter how much he told me, deep down, I just couldn’t believe him. He recommended we go outside, but the darkness just made things worse. I still had frightening things going on in my peripheral vision, and I still couldn’t grasp the concept of matter and what was my actual physical property. I hated salvia- I hated it so much. I thought maybe if I destroyed it it would end the trip… I started talking about how evil it was, how it was of the devil. I told myself I’d never have to take acid again, even though I loved it, because I didn’t want to end up this way again, not even for an instant. I definitely would never smoke salvia again, it was something man was not supposed to play with.
It seemed like hours since I had smoked the salvia. I was sure this bad trip would have ended by now. I told Logan, I told him we had to end the trip now. “Do you want some downers?” he asked. But I couldn’t, I had a drug test coming up. “We’ll just give you a sleeping pill. It won’t show up. It’s lunesta or something.” Suddenly I was very relieved. I would just go to sleep and wake up in the morning completely sane. Suddenly my entire existence was dependent on that one sleeping pill.
I tried to be patient, but when my friends still hadn’t given me one I got really panicky. I almost started crying.  Tears were in my eyes. “Please,” I begged, “It’s really important.” He tried again, but in vain. I accepted that I wasn’t going to get one. I was still very unhappy and scared, and this was obvious.
“Wanna play Mario?” Logan asked. “That’s happy.” I told him sure, anything. But it wouldn’t work, so he put in Mega Man instead. This was a SNES, and with my whole difficulty with matter at the time it was near impossible to differentiate myself from the controller from the game and everything just sort of blended into one environment. I kept dying, but was always relieved when I could just play the level again. I got a little less scared. But then the loops started again. I kept fighting the same robots. I kept playing the same sequence over and over. Was I psychotic? “Didn’t I just fight this guy?” I asked. “Didn’t I do this already?” But nobody answered, there was no help in sight.
“I need to be grounded.” I said. “I just want to be grounded and to know what’s real.” I wished for dinner with my parents. I wished for times I played with my sister as a kid. I wished for watching the History Channel and for school and wished for anything that was routine and I knew was real.
I handed off the controller to somebody else. Logan offered me a Mountain Dew. I said sure, and decided to use this as a placebo. “If you could just pass that over here,” I said, “and allow the good tripping to begin.” Logan laughed. Anything weird that happened I just dismissed, I just told myself it was the drugs and I’d come out of it eventually. After a while, the scary peripheral hallucinations stopped completely. I felt more and more normal. But any time I thought back and tried to review the events that had taken place, I’d get confused and toss myself into a bad trip again. With my willpower and with time I floated back to reality, and started making rational decisions again. I managed to fall asleep, and when I woke up I felt like I was glowing, but was indeed completely sane.
This entire salvia experience lasted only about a half hour, my friends say. It seemed an eternity to me. Unless I feel like going into psychosis or astral exile, I won’t smoke salvia while acid tripping ever again. If I had done it while peaking, I think I’d be in a mental institution right now. I’m glad I did smoke the salvia, because it taught me a lot and certainly defined the trip, but I definitely wouldn’t do it again.
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.


My width is calculated
.wrapper { width: 400px; } .box { width: calc(20% + 100px); }
My width is calculated.


--- title: nbdev in colab tutorial image: images/nbdev_source.gif keywords: fastai sidebar: home_sidebar summary: "A step by step guide" description: "A step by step guide" nb_path: "tutorial.ipynb" ---
nbdev is a system for exploratory programming. See the nbdev launch post for information about what that means. In practice, programming in this way can feel very different to the kind of programming many of you will be familiar with, since we've mainly be taught coding techniques that are (at least implicitly) tied to the underlying tools we have access to. I've found that programming in a "notebook first" way can make me 2-3x more productive than I was before (when we used vscode, Visual Studio, vim, PyCharm, and similar tools).
In this tutorial, I'll try to get you up and running with the basics of the nbdev system as quickly and easily as possible. You can also watch this video in which I take you through the tutorial, step by step (to view full screen, click the little square in the bottom right of the video; to view in a separate Youtube window, click the Youtube logo):
To complete this tutorial, you'll need a google account (with access to a google drive) and a github account.
It's probaly a good idea for everyone to change github settings so that the default branch of new repos is called main.
If you do, you can skip all of the "Rename the default branch in github" section below.
To create your new project repo, click here: nbdev template (you need to be logged in to GitHub for this link to work). Fill in the requested info and click Create repository from template.
NB: The name of your project will become the name of the Python package generated by nbdev. For that reason, it is a good idea to pick a short, all-lowercase name with no dashes between words (underscores are allowed).
Now, open your terminal, and clone the repo you just created.
If you need to rename the default branch of your new repo:
1) From your new projects main page in github, create a new branch called main:
{% include image.html alt="new branch called main" max-width="900" file="/nbdev_colab_helper/images/create-main-branch.png" %}
2) Navigate to the branches of your new project:
{% include image.html alt="branches of your new project" max-width="900" file="/nbdev_colab_helper/images/view-branches.png" %}
3) Click the "Change default branch" button and make main your default branch:
{% include image.html alt="branches of your new project" max-width="900" file="/nbdev_colab_helper/images/change-default-branch.png" %}
4) Navigate to the branches of your new project and delete the master branch:
{% include image.html alt="new branch called main" max-width="900" file="/nbdev_colab_helper/images/delete-branch.png" %}
For more details, see https://github.com/github/renaming/.
The rest of this tutorial will assume you're using a default branch called main.
The nbdev system uses jekyll for documentation. Because GitHub Pages supports Jekyll, you can host your site for free on Github Pages without any additional setup, so this is the approach we recommend (but it's not required; any jekyll hosting will work fine).
To enable Github Pages in your project repo, click Settings in Github, then scroll down to Github Pages, and set "Source" to main branch /docs folder. Once you've saved, if you scroll back down to that section, Github will have a link to your new website. Copy that URL, and then go back to your main repo page, click "edit" next to the description and paste the URL into the "website" section. While you're there, go ahead and put in your project description too.
1) Open this colab helper notebook
2) Use "Mount Drive" button in the "Files" side-bar to mount google drive locally
3) Create a file called nbdev_colab_projects.ini
in your /content/drive/My Drive
folder
4) Update nbdev_colab_projects.ini
to have a section for your project, as desribed here
5) Run the "Install and import the colab helper module" cell
6) Change project_name
to match the project name you used in /content/drive/My Drive/nbdev_colab_projects.ini
and run the "set-up project" cell
After completing these steps, you should abe able to find your cloned repo in your google drive, via
Feel free to save your copy of the colab helper notebook in your google drive.
Next, edit the settings.ini
file in your cloned repo. This file contains all the necessary information for when you'll be ready to package your library. The basic structure (that can be personalized provided you change the relevant information in settings.ini
) is that the root of the repo will contain your notebooks, the docs
folder will contain your auto-generated docs, and a folder with a name you select will contain your auto-generated modules.
You'll see these commented out lines in settings.ini
. Uncomment them, and set each value as needed.
# lib_name = your_project_name
# user = your_github_username
# description = A description of your project
# keywords = some keywords
# author = Your Name
# author_email =<EMAIL_ADDRESS># copyright = Your Name or Company Name
We'll see some other settings we can change later.
Jupyter Notebooks can cause challenges with git conflicts, but life becomes much easier when you use nbdev
. git_push
will run nbdev_install_git_hooks
automatically. This will set up git hooks which will remove metadata from your notebooks when you commit, greatly reducing the chance you have a conflict.
But if you do get a conflict later, simply run nbdev_fix_merge filename.ipynb
. This will replace any conflicts in cell outputs with your version, and if there are conflicts in input cells, then both cells will be included in the merged file, along with standard conflict markers (e.g. =====
). Then you can open the notebook in Jupyter and choose which version to keep.
Now, open 00_core.ipynb
from your cloned repo (you don't have to start your notebook names with a number like we do here; but we find it helpful to show the order you've created your project in). You'll see something that looks a bit like this:
from nbdev import *
%nbdev_default_export core
module name here
API details.
If it doesn't look like ↑ please update it so that it does (o:You'll need to run some colab specific setup in each notebook, if you want to use all nbdev features. Add a new code cell to the start of 00_core.ipynb
and (after changing project_name
to match the project name you used in nbdev_colab_projects.ini
) run:
IN_COLAB = 'google.colab' in str(get_ipython())
if IN_COLAB:
!pip install git+https://github.com/pete88b/nbdev_colab_helper.git
from nbdev_colab_helper.core import *
project_name = 'nbdev_colab_helper'
init_notebook(project_name)
Let's explain what these special cells mean.
There are certain special magics that, when placed in a cell, provide important information to nbdev.
Before you can use the magic flags, you need to import them: from nbdev import *
. This also imports the show_doc
and notebook2script
functions.
The flag %nbdev_default_export core
, defines the name of the generated module (lib_name/core.py). For any cells that you want to be included in your python module, type %nbdev_export
as the first line of the cell. Each of those cells will be added to your module.
You can explore the available flags and their documentation without leaving your notebook:
{% include image.html alt="tab completion of nbdev magics" max-width="900" file="/nbdev_colab_helper/images/inspect_magics.png" %}
The markdown cell uses special syntax to define the title and summary of your module. Feel free to replace "module name here" with a title and "API details." with a summary for your module.
This cell can optionally be used to define jekyll metadata, see get_metadata
for more details.
Let's add a function to this notebook, e.g.:
%nbdev_export
def say_hello(to):
"Say hello to somebody"
return f'Hello {to}!'
Notice how it includes %nbdev_export
at the top - this means it will be included in your module, and documentation. The documentation will look like this:
It's a good idea to give an example of your function in action. Just include regular code cells, and they'll appear (with output) in the docs, e.g.:
say_hello("Sylvain")
Examples can output plots, images, etc, and they'll all appear in your docs, e.g.:
from IPython.display import display,SVG
display(SVG('<svg height="100"><circle cx="50" cy="50" r="40"/></svg>'))
You can also include tests:
assert say_hello("Jeremy")=="Hello Jeremy!"
You should also add markdown headings as you create your notebook; one benefit of this is that a table of contents will be created in the documentation automatically.
Now you can create your python module. To do so, go back to your colab helper notebook and run:
from nbdev.export import notebook2script
notebook2script()
Converted 00_core.ipynb.
Converted index.ipynb.
Now you're ready to create your documentation home page and readme file; these are both generated automatically from index.ipynb. So click on that to open it now.
You'll see that there's already a line there to import your library - change it to use the name you selected in settings.ini
. Then, add information about how to use your module, including some examples. Remember, these examples should be actual notebook code cells with real outputs.
Please remove permalink: pretty
from docs/_config.yml
- if you see "404: File not found" errors when navigating your docs, this could well be the problem. TODO: remove this when bug is fixed in nbdev/nbdev_template.
Now you can create your documentation. To do so, go back to your colab helper notebook and run:
from nbdev.cli import nbdev_build_docs
nbdev_build_docs()
converting: /content/drive/My Drive/Colab Notebooks/github/nbdev_colab_t1/00_core.ipynb
converting: /content/drive/My Drive/Colab Notebooks/github/nbdev_colab_t1/index.ipynb
converting /content/drive/My Drive/Colab Notebooks/github/nbdev_colab_t1/index.ipynb to README.md
You can now git commit
and git push
. To do so, go back to your colab helper notebook and (after changing the commit message) run:
commit_message = '**changeme**'
git_push(project_config['git_branch'], commit_message)
nbdev_install_git_hooks
Executing: git config --local include.path ../.gitconfig
Success: hooks are installed and repo's .gitconfig is now trusted
nbdev_build_lib
Converted 00_core.ipynb.
Converted index.ipynb.
Converted tutorial.ipynb.
git add *
git commit -m "*wip* tutorial"
[master 69d5dec] *wip* tutorial
13 files changed, 126 insertions(+), 107 deletions(-)
git push origin master
Wait a minute or two for Github to process your commit, and then head over to the Github website to look at your results.
Back in your project's Github main page, click where it says 1 commit (or 2 commits or whatever). Hopefully, you'll see a green checkmark next to your latest commit. That means that your documentation site built correctly, and your module's tests all passed! This is checked for you using continuous integration (CI) with GitHub actions. This does the following:
Edit the file .github/workflows/main.yml
if you need to modify any of the CI steps.
If you have a red cross, that means something failed. Click on the cross, then click Details, and you'll be able to see what failed.
Once everything is passing, have a look at your readme in Github. You'll see that your index.ipynb
file has been converted to a readme automatically.
Next, go to your documentation site (e.g. by clicking on the link next to the description that you created earlier). You should see that your index notebook has also been used here.
Congratulations, the basics are now all in place! Let's continue and use some more advanced functionality.
Create a class in 00_core.ipynb
as follows:
%nbdev_export
class HelloSayer:
"Say hello to `to` using `say_hello`"
def __init__(self, to): self.to = to
def say(self):
"Do the saying"
return say_hello(self.to)
This will automatically appear in the docs like this:
However, methods aren't automatically documented. To add method docs, use show_doc
:
show_doc(HelloSayer.say)
And add some examples and/or tests:
o = HelloSayer("Alexis")
o.say()
Notice above there is a link from our new class documentation to our function. That's because we used backticks in the docstring:
"Say hello to `to` using `say_hello`"
These are automatically converted to hyperlinks wherever possible. For instance, here are hyperlinks to HelloSayer
and say_hello
created using backticks.
TODO: xxx check autoreload in colab
Since you'll be often updating your modules from one notebook, and using them in another, it's helpful if your notebook automatically reads in the new modules as soon as the python file changes. To make this happen, just add these lines to the top of your notebook:
%load_ext autoreload
%autoreload 2
It's helpful to be able to export all your modules directly from a notebook, rather than going to the terminal to do it. All nbdev commands are available directly from a notebook in Python. Add this line to any cell and run it to export your modules (I normally make this the last cell of my scripts).
from nbdev.export import notebook2script
notebook2script()
Before you push to github or make a release, you might want to run all your tests. nbdev can run all your notebooks in parallel to check for errors. To do so, go back to your colab helper notebook and run:
from nbdev.cli import nbdev_test_nbs
nbdev_test_nbs()
testing /content/drive/My Drive/Colab Notebooks/github/nbdev_colab_t1/00_core.ipynb
testing /content/drive/My Drive/Colab Notebooks/github/nbdev_colab_t1/index.ipynb
All tests are passing!
I don't think it's possible to look at your docs via colab before you push to Github.
If your module requires other modules as dependencies, you can add those prerequisites to your settings.ini
in the requirements
section. This should be in the same format as install_requires in setuptools, with each requirement separated by a space.
Behind the scenes, nbdev uses that standard package setuptools
for handling installation of modules. One very useful feature of setuptools
is that it can automatically create cross-platform console scripts. nbdev surfaces this functionality; to use it, use the same format as setuptools
, with whitespace between each script definition (if you have more than one).
console_scripts = nbdev_build_lib=nbdev.cli:nbdev_build_lib
To test and use your modules in other projects, and use your console scripts (if you have any), the easiest approach is to use an editable install.
Once you've mounted your google drive, you can install editable versions of projects (if you have already git cloned
the project into your google drive).
The following example installs a local copy of nbdev_colab_helper
after running setup_project('nbdev_colab_helper')
:
!pip install -e "/content/drive/My Drive/Colab Notebooks/github/nbdev_colab_helper"
(Note that the trailing period is important.) Your module changes will be automatically picked up without reinstalling. If you add any additional console scripts, you will need to run this command again.
TODO: Test this and add colab specific details
If you want people to be able to install your project by just typing pip install your-project
then you need to upload it to pypi. The good news is, we've already created a fully pypi compliant installer for your project! So all you need to do is register at pypi (click "Register" on pypi) if you haven't previously done so, and then create a file called ~/.pypirc
with your login details. It should have these contents:
[pypi]
username = your_pypi_username
password = your_pypi_password
To upload your project to pypi, just type make release
in your project root directory. Once it's complete, a link to your project on pypi will be printed.
NB: make release
will automatically increment the version number in settings.py
before pushing a new release to pypi. If you don't want to do this, run make pypi
instead.
Don't forget that nbdev itself is written in nbdev! It's a good place to look to see how fast.ai uses it in practice, and get a few tips. You'll find the nbdev notebooks here in the nbs folder on Github.


Adding a JavaScript client¶
This quickstart will show how to build a JavaScript client application. The user will login to IdentityServer, invoke the web API with an access token issued by IdentityServer, and logout of IdentityServer.
New Project for the JavaScript client¶
Create a new project for the JavaScript application. It can simply be an empty web project, or an empty ASP.NET Core application. This quickstart will use an empty ASP.NET Core application.
Create a new ASP.NET Core web application:
Choose the “Empty” template:
Click the “OK” button to create the project.
Modify hosting¶
Modify the hosting (as described here) to run on port 5003.
Add the static file middleware¶
Given that this project is designed to mainly run client-side, we need ASP.NET Core to serve up the static HTML and JavaScript files that will make up our application. The static file middleware is designed to do this.
Register the static file middleware in Startup.cs in the Configure
method:
public void Configure(IApplicationBuilder app)
{
app.UseDefaultFiles();
app.UseStaticFiles();
}
This middleware will now serve up static files from the application’s ~/wwwroot folder. This is where we will put our HTML and JavaScript files.
Reference oidc-client¶
In the MVC project, we used a library to handle the OpenID Connect protocol. In this project we need a similar library, except one that works in JavaScript and is designed to run in the browser. The oidc-client library is one such library. It is available via NPM, Bower, as well as a direct download from github.
NPM
If you want to use NPM to download oidc-client, then follow these steps:
Add a new NPM package file to your project and name it package.json:
In package.json add a dependency
to oidc-client
:
"dependencies": {
"oidc-client": "1.4.1"
}
Once you have saved this file, Visual Studio should automatically restore these packages into a folder called node_modules:
Locate the file called oidc-client.js in the ~/node_modules/oidc-client/dist folder and copy it into your application’s ~/wwwroot folder. There are more sophisticated ways of copying your NPM packages into ~/wwwroot, but those techniques are beyond the scope of this quickstart.
Add your HTML and JavaScript files¶
Next is to add your HTML and JavaScript files to ~/wwwroot. We will have two HTML files and one application-specific JavaScript file (in addition to the oidc-client.js library). In ~/wwwroot, add a HTML file named index.html and callback.html, and add a JavaScript file called app.js.
index.html
This will be the main page in our application.
It will simply contain the HTML for the buttons for the user to login, logout, and call the web API.
It will also contain the

app.js
This will contain the main code for our application.
The first thing is to add a helper function to log messages to the

:
function log() {
document.getElementById('results').innerText = '';
Array.prototype.forEach.call(arguments, function (msg) {
if (msg instanceof Error) {
msg = "Error: " + msg.message;
}
else if (typeof msg !== 'string') {
msg = JSON.stringify(msg, null, 2);
}
document.getElementById('results').innerHTML += msg + '\r\n';
});
}
Next, add code to register “click” event handlers to the three buttons:
document.getElementById("login").addEventListener("click", login, false);
document.getElementById("api").addEventListener("click", api, false);
document.getElementById("logout").addEventListener("click", logout, false);
Next, we can use the UserManager
class in the oidc-client library to manage the OpenID Connect protocol.
It requires similar configuration that was necessary in the MVC Client (albeit with different values).
Add this code to configure and instantiate the UserManager
:
var config = {
authority: "http://localhost:5000",
client_id: "js",
redirect_uri: "http://localhost:5003/callback.html",
response_type: "id_token token",
scope:"openid profile api1",
post_logout_redirect_uri : "http://localhost:5003/index.html",
};
var mgr = new Oidc.UserManager(config);
Next, the UserManager
provides a getUser
API to know if the user is logged into the JavaScript application.
It uses a JavaScript Promise
to return the results asynchronously.
The returned User
object has a profile
property which contains the claims for the user.
Add this code to detect if the user is logged into the JavaScript application:
mgr.getUser().then(function (user) {
if (user) {
log("User logged in", user.profile);
}
else {
log("User not logged in");
}
});
Next, we want to implement the login
, api
, and logout
functions.
The UserManager
provides a signinRedirect
to log the user in, and a signoutRedirect
to log the user out.
The User
object that we obtained in the above code also has an access_token
property which can be used to authenticate with a web API.
The access_token
will be passed to the web API via the Authorization header with the Bearer scheme.
Add this code to implement those three functions in our application:
function login() {
mgr.signinRedirect();
}
function api() {
mgr.getUser().then(function (user) {
var url = "http://localhost:5001/identity";
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = function () {
log(xhr.status, JSON.parse(xhr.responseText));
}
xhr.setRequestHeader("Authorization", "Bearer " + user.access_token);
xhr.send();
});
}
function logout() {
mgr.signoutRedirect();
}
See: Protecting an API using Client Credentials <http://docs.identityserver.io/en/release/quickstarts/1_client_credentials.html> for information on how to create the api used in the code above.
callback.html
This HTML file is the designated redirect_uri
page once the user has logged into IdentityServer.
It will complete the OpenID Connect protocol sign-in handshake with IdentityServer.
The code for this is all provided by the UserManager
class we used earlier.
Once the sign-in is complete, we can then redirect the user back to the main index.html page.
Add this code to complete the signin process:
<!DOCTYPE html>

<meta charset="utf-8" />
<title></title>

Add a client registration to IdentityServer for the JavaScript client¶
Now that the client application is ready to go, we need to define a configuration entry in IdentityServer for this new JavaScript client. In the IdentityServer project locate the client configuration (in Config.cs). Add a new Client to the list for our new JavaScript application. It should have the configuration listed below:
// JavaScript Client
new Client
{
ClientId = "js",
ClientName = "JavaScript Client",
AllowedGrantTypes = GrantTypes.Implicit,
AllowAccessTokensViaBrowser = true,
RedirectUris = { "http://localhost:5003/callback.html" },
PostLogoutRedirectUris = { "http://localhost:5003/index.html" },
AllowedCorsOrigins = { "http://localhost:5003" },
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"api1"
}
}
Allowing Ajax calls to the Web API with CORS¶
One last bit of configuration that is necessary is to configure CORS in the web API project. This will allow Ajax calls to be made from http://localhost:5003 to http://localhost:5001.
Configure CORS
Add the CORS services to the dependency injection system in ConfigureServices
in Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvcCore()
.AddAuthorization()
.AddJsonFormatters();
services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ApiName = "api1";
});
services.AddCors(options =>
{
// this defines a CORS policy called "default"
options.AddPolicy("default", policy =>
{
policy.WithOrigins("http://localhost:5003")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
}
Add the CORS middleware to the pipeline in Configure
:
public void Configure(IApplicationBuilder app)
{
app.UseCors("default");
app.UseAuthentication();
app.UseMvc();
}
Run the JavaScript application¶
Now you should be able to run the JavaScript client application:
Click the “Login” button to sign the user in. Once the user is returned back to the JavaScript application, you should see their profile information:
And click the “API” button to invoke the web API:
And finally click “Logout” to sign the user out.
You now have the start of a JavaScript client application that uses IdentityServer for sign-in, sign-out, and authenticating calls to web APIs.


Tonny learns the MNIST - Day 2
Install theano
At the end of day 1, I face the problem with Theano not installed. With several search trials from Google, I found the conda
command which is a tool from Anaconda. Quick command help me understand that I need to install Theano
$conda list | grep theano
$
Ok let try to install it
$ conda install theano
...
$conda list | grep theano
theano 0.9.0 py27_0
$
So far so good, no try
$ python
Python 2.7.13 |Anaconda custom (x86_64)| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import numpy
>>> print numpy.__version__
1.13.3
>>> import theano
>>> print theano.__version__
0.9.0.dev-c697eeab84e5b8a74908da654b66ec9eca4f1291
>>>
$
Hmm, ok
Install Keras
They said that install Keras is simple as eating a pie, let's see how that cake tastes like.
$pip install keras
...
$ python -c "import keras; print keras.__version__"
Using TensorFlow backend.
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/__init__.py", line 3, in <module>
from . import utils
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/utils/__init__.py", line 6, in <module>
from . import conv_utils
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/utils/conv_utils.py", line 3, in <module>
from .. import backend as K
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/backend/__init__.py", line 83, in <module>
from .tensorflow_backend import *
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 1, in <module>
import tensorflow as tf
ImportError: No module named tensorflow
Whoops, Using TensorFlow? What happened?
Ok, look like we need to specify KERAS_BACKEND
to theano
before running it
$KERAS_BACKEND=theano python -c "import keras; print keras.__version__"
Using Theano backend.
2.1.2
Good, I don't want to set the environment variable everytime so quick insert it to .profile
to forget it
echo "export KERAS_BACKEND=theano" >> ~/.profile
$. ~/.profile
$ python -c "import keras; print keras.__version__"
Using Theano backend.
2.1.2
$
Try to run the example
Now create the file named mnist.py
from tutorial:
And run with
$ python mnist.py
Using Theano backend.
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 29s 3us/step
11501568/11490434 [==============================] - 29s 3us/step
mnist.py:29: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation="relu", input_shape=(1, 28, 28...)`
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28)))
mnist.py:30: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation="relu")`
model.add(Convolution2D(32, 3, 3, activation='relu'))
Traceback (most recent call last):
File "mnist.py", line 35, in <module>
model.add(Dense(128, activation='relu'))
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/models.py", line 489, in add
output_tensor = layer(self.outputs[0])
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/engine/topology.py", line 576, in __call__
self.build(input_shapes[0])
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/layers/core.py", line 830, in build
constraint=self.kernel_constraint)
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/engine/topology.py", line 397, in add_weight
weight = K.variable(initializer(shape),
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/initializers.py", line 212, in __call__
dtype=dtype, seed=self.seed)
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/keras/backend/theano_backend.py", line 2249, in random_uniform
return rng.uniform(shape, low=minval, high=maxval, dtype=dtype)
File "/home/.pyenv/versions/anaconda-4.0.0/lib/python2.7/site-packages/theano/sandbox/rng_mrg.py", line 1344, in uniform
size)
ValueError: ('The specified size contains a dimension with value <= 0', (-768, 128))
Uh-oh, let solve this problem next time.


You define the relationships between subjects including both hierarchies and associations in the scheme map.
You define a taxonomy by organizing the subjects in a hierarchy, referring to subject topics with the subjectdef element.
The scheme map also expresses associations between subjects such as use of one subject by another subject. To express associations, you use the relatedSubjects or subjectRelTable table.
The following example shows a scheme that identifies the Installing and Configuring subjects as special kinds of user action subjects. The example also identifies Security and Utilization as special kinds of user concerns.
<subjectScheme title="Sample taxonomy" id="taxonomyScheme"> <subjectdef href="action.xml" navtitle="Action"> <subjectdef href="installing.xml" navtitle="Installing"/> <subjectdef href="configuring.xml" navtitle="Configuring"/> ... <subjectdef href="concern.xml" navtitle="Concern"> <subjectdef href="security.xml" navtitle="Security"/> <subjectdef href="utilization.xml" navtitle="Resource utilization"/> ...


You can't hurry slow
Our Honest Wellness breads are fermented for 4 hours for the absolute best in class nutrition and taste. We hand-select only the healthiest ingredients that provide nutritional benefits to support your health and wellbeing.
Our flavours are truly original just like how we slow craft our bread. Better bread takes time so we ferment our breads for as long as 24 hours for exceptional taste and health benefits. Keep an eye out for our harvest breads available for limited runs.
Our Authentic Sourdough Rye Breads are always fermented for at least 12 hours for optimal taste and nutrition and are baked with grain we grow ourselves in P.E.C. We use our 100-year-old family baking expertise in creating robust flavours, often only found overseas.
We only use nutrient dense sprouted grains that are naturally sprouted for 24 hours to make our Organic Live Sprouts Breads. Sprouting creates an uncompromisingly delicious and wholesome loaf, each and every time.


| ← Prev | Next → |
Traced information is stored in stack-local and global variables of the running program. It is not written out to an external trace file. To extract this information, you will need a debugger, such as gdb. For further details, please see [2, 3].
Path Tracing data is always stack-bound. The same variable names are used for all functions.
The local variable __PT_pathArr
exists for each function variant
instrumented for path tracing. While the function is executing (i.e., on the
active program stack) __PT_pathArr
is an array holding the last
N acyclic paths taken in the particular invocation of the function.
The size of the array is defined when compiling with csi-cc (see comments on running csi-cc), and
defaults to 10. The last value of __PT_pathArr
is particularly
important: if the last value is -1, then fewer than N acyclic paths
were completed; otherwise, the circular array has wrapped around at least
once.
The local variable __PT_arrIndex
exists for each function
variant instrumented for path tracing. While the function is executing (i.e.,
on the active program stack) __PT_arrIndex
contains the index in
__PT_pathArr
for the next acyclic path entry. For
example, if the value of __PT_arrIndex
is 4, then the last
completed acyclic path is stored in __PT_pathArr[3]
.
The local variable __PT_curPath
exists for each function variant
instrumented for path tracing. While the function is executing (i.e., on the
active program stack) __PT_curPath
holds the current path sum.
Changes in the value of this variable are expounded in the Path Tracing metadata page. This value is reset to
0 whenever an acyclic path is completed and written into
__PT_pathArr[__PT_arrIndex]
, and intialized along backedges.
These examples reference the control-flow graph shown to the right; this is the same example used on the Path Tracing metadata page.
__PT_pathArr
= {1, 3, 6, 3, 2, 4, 8, 9, 2, -1}__PT_arrIndex
= 2__PT_curPath
= 4In this example, two acyclic paths have completed (1 and 3). The path
sum was reinitialized along the backedge and the increment of +1 along the
edge 5 → 8 has executed, but the completed acyclic path ending at 9 has
not yet been written into __PT_pathArr
. Thus, the full execution
suffix of the function is ⟨2, 4, 5, 8, 9, 4, 5, 7, 9, 4, 5, 8, 9⟩.
__PT_pathArr
= {4, 5, 4, 4, 4, 4, 3, 4, 4, 4}__PT_arrIndex
= 2__PT_curPath
= 0In this example, more than 10 acyclic paths have completed. The
completed acyclic path ending with 6 has already been written into
__PT_pathArr[1]
. Thus, the full execution suffix of the
function is ⟨4, 5, 8, 9, 4, 5, 8, 9, 4, 5, 8, 9, 4, 5, 8, 9, 4, 5, 7, 9, 4,
5, 8, 9, 4, 5, 8, 9, 4, 5, 8, 9, 4, 5, 8, 9, 4, 6⟩.
Program Coverage data for each function (with the corresponding coverage instrumentation) is stored in one local and one global array, both of the same size. The arrays for local coverage information share the same name across different functions, and global coverage shares one array across all invocations of each function. Note that function coverage is a special case: there is no local coverage array for function coverage (as all functions on the active stack are clearly already executing), and global arrays for function coverage are always of size 1.
Local variables exist for each instrumented function variant, and are accessible from the active program stack. The following local variables hold stack-local information for call-site coverage and statement coverage, respectively.
__CC_arr
is the local variable for call-site coverage data, and
exists for all function variants with call-site coverage enabled. The size of
this array is determined by the number of call sites in the function. Each
entry will be either true (non-zero) or false (zero),
indicating whether or not the call site was executed (so far) in the current
invocation of the function.__BBC_arr
is the local variable for statement coverage data,
and exists for all function variants with statement coverage enabled. The size
of this array is determined by the number of basic blocks in the function. Each
entry will be either true (non-zero) or false (zero),
indicating whether or not the indicated basic block has completed execution at
least once (so far) in the current invocation of the function.Each instrumented function, with name f
, also has up
to 3 global arrays for coverage data (one for each of function, call-site, and
statement coverage data; depending on the instrumentation schemes available for
that function). The specific names of these global arrays are given in the
metadata for each type of program coverage (see the
metadata page for details). Sample array data
(for the same example) might be:
__FC_arr_f
for function coverage.
This is a single Boolean variable. Its value will be either true
(non-zero) or false (zero), indicating whether or not any portion of
f
was ever executed (so far) across the execution of the
entire program.__CC_arr_f
for call-site coverage.
The size of this array is determined by the number of call sites in the
function. Each entry will be either true (non-zero) or false
(zero), indicating whether or not any invocation of this call
site was ever executed (so far) across the execution of the entire program.__BBC_arr_f
for statement
coverage. The size of this array is determined by the number of basic blocks in
the function. Each entry will be either true (non-zero) or
false (zero), indicating whether or not the indicated basic block has
completed execution (so far) during any invocation of the
function across the execution of the entire program.This example references the metadata from the example on the
Program Coverage metadata page. The example is
given from the perspective of currently executing function a
at
line 18, called by function b
at line 26, called by function
main
at line 36.
__FC_arr_abc
= 1
__FC_arr_a
= 1
__FC_arr_b
= 1
__FC_arr_main
= 1
__CC_arr_a
= {1, 1, 1, 1, 1}
__CC_arr_b
= {0}
__CC_arr_main
= {1, 1, 0, 0}
__BBC_arr_abc
= {1, 0, 1, 1}
__BBC_arr_a
= {1, 1, 1, 1}
__BBC_arr_b
= {1, 0, 0, 0}
__BBC_arr_main
= {0}
__CC_arr
= {0, 0, 1, 0, 0}
__BBC_arr
= {1, 1, 0, 0}
First, consider the function coverage variables for each function. For this
example, we obtain very little information: since functions a
,
b
, and main
are in the active stack, their respective
values are known to be true (as they are set at function entry). We
can, however, see that function abc
previously executed.
Next, consider the call-site coverage variables. In this example, the
current invocation of a
has only completed the call to
abc
at line 17 (denoted by __CC_arr[2]
). However,
previous invocations of a
have executed the other four call sites
in a
at lines 14, 18, 19, and 20 (as indicated by
__CC_arr_a
). The next stack frame (not shown) would indicate that
execution in function b
is currently executing, but has not yet
returned from, the call to a
at line 26 (as indicated by
__CC_arr_b[0]
).
Finally, consider the statement coverage variables. The local variable again
indicates the same information as __CC_arr
: the basic block
containing function entry plus lines 12 and 13 has executed (denoted by
__BBC_arr[0]
); further, the basic block containing line 14 has
executed (denoted by __BBC_arr[1]
). Note that
__BBC_arr[3]
indicates that this invocation of a
has
not yet executed the block containing lines 17, 18, 19, 20, and 21. This is
true: that block has only partially executed. One can glean similar
information from the global statement coverage arrays. Function
abc
executed previously, but on no previous execution was the
return statement on line 5 executed (as indicated by
__BBC_arr_abc[1]
). In addition to the fact that this is the first
call to a
via line 26 in function b
(which is visible
from __CC_arr_b[0]
), __BBC_arr_b[2]
indicates that no
previous call to b
executed the return statement on line 27.
| ← Prev | Next → |


Nested Nav
Nest your router links in lists which can be collapsed and expanded.
Features
- Easily apply styling to active links.
- Nest router links which can be expanded and collapsed.
- Nav lists will automatically expand when navigating to a child route.
Demo
Overview
Autocomplete
Nested Nav
Code Prettify
Outside Click
Clipboard
Import
Begin by importing the module like this:
import {{'{'}} NgEzNestedNavModule {{'}'}} from '@ngez/core';
Usage
Something went wrong while loading the code.
Something went wrong while loading the code.
Styling
By default when a router link is active or being hovered, it'll have a light background, this can easily be changed:
Something went wrong while loading the code.


Chapter 1 | Introduction to JavaScript
Hands on Project 1-1
Learning to use document.write() to add content to a web page.
Hands on Project 1-3
Learning to display an alert box when a button is pressed.
Hands on Project 1-5
Learning how to troubleshoot broken code to make it work.
Chapter 2 | Working with Functions, Data Types, and Operators
Hands on Project 2-1
Learning to create functions that interface with on screen html objects.
Hands on Project 2-3
Learning to combine event listeners with an alert box programmatically.
Hands on Project 2-5
Learning to use form elements as user input for function calculations and output.
Chapter 3 | Building Arrays and Controlling Flow
Hands on Project 3-1
Learning to work with arrays, and bringing compatibility to older browsers.
Hands on Project 3-3
Learning to populate an array, then display that information in a list on the page.
Hands on Project 3-5
Learning to take user input from an html form, add it to an array, then display that information using a switch statement.
Chapter 4 | Debugging and Error Handling
Hands on Project 4-1
Learning to start performing data validation and error handling.
Hands on Project 4-3
Another adventure in debugging bad code, now updated with arrays!
Hands on Project 4-5
Learning to debug more code, featuring bad math conversions.
Chapter 5 | Working with the DOM and DHTML
Hands on Project 5-1
Learning to work with the browser's Navigator object, and exploring multiple browsers.
Hands on Project 5-3
Learning to create a confirmation window, and setting it to automatically close after 5 seconds.
Chapter 6 | Enhancing and Validating Forms
Hands on Project 6-1
Learning to create data validation functions that work across all browsers.
Hands on Project 6-3
A continuation of 6-1, now including placeholder text and automatic focus changing.
Hands on Project 6-5
Learning to work with the select element's default, and more cross-platform data validation.
Chapter 7 | Using Object-Oriented JavaScript
Hands on Project 7-1
More work with functions, and an opening foray into object-oriented JavaScript.
Hands on Project 7-3
Another exploration of loops and arrays.
Hands on Project 7-5
A deeper dive into object-oriented JavaScript, using forms and user input.
Chapter 8 | Manipulating Data in Strings and Arrays
Hands on Project 8-1
Learning to take user input and use that input to generate new information (an account ID).
Hands on Project 8-3
Learning to use JavaScript regular expressions to compare and validate data.
Hands on Project 8-5
Learning to manipulate objects in the browser using user input.
Chapter 9 | Managing State Information and Security
Hands on Project 9-1
Learning to pass information between web pages.
Hands on Project 9-3
Learning to implement a secure login that remembers a username by using cookies.
Hands on Project 9-5
Learning to use Web Storage, and adding an expiration timer to cookies.
Chapter 10 | Programming for Touchscreens and Mobile Devices
Hands on Project 10-1
Learning to add support for touch events in supported browsers.
Chapter 11 | Updating Web Pages with Ajax
Hands on Project 11-5
Learning to work with Ajax requests, including error handling.
Chapter 12 | Introduction to jQuery
Hands on Project 12-1
Learning to implement jQuery to display elements.
Hands on Project 12-3
Learning to use jQuery to validate form data.


Welcome back <%= username %> !
Long Tail Annotation Tool: <%= username %>'s Dashboard
<% if(["piek", "roxane","filip","marten"].indexOf(username)>-1) { %>
<% } %>
Your stats
Mention annotation
Annotated incidents:
Annotated documents:
Structured data annotation
Annotated incidents: out of N/a
Annotated documents: out of N/a


{% include "dist/templates/includes/header.html" %}
Archive!
Go home
{% for adventure in stories %}
{{ adventure }}
{% endfor %}
Go home
{% include "dist/templates/includes/footer.html" %}


Returns the base-10 logarithm of a number.
Syntax
lg(number)
Number is any valid numeric expression for which you want the logarithm.
Remarks
Use the log function to calculate logarithms to any base.
Example
| Expression | Description (Result) |
|---|---|
| lg(86) | Logarithm base 10 of 86 (1.9345) |
| lg(10^3) | Logarithm base 10 of 10^3 (3) |


Agent arrived at pub “The Goose and Gridiron” at 17:30. Agent ordered a large draft beer*. Agent drank half of draft beer. Glass was now half full.
The subjects arrived at 17:55, and sat down at a table at the opposite end of the room, because of course they did. Agent missed first part of conversation while attempting to discreetly move to a closer table.
Second part of conversation filed separately.
Subjects noticed agent, and invited me to join the conversation! They even offered me a beer. Refusing would have been certain death. My only chance was to play along, and hope to placate their suspicions. My heart pounded in rhythm with the music as I sipped my beer, waiting for a chance to escape. Finally, it came. Two people got in a fight at the bar, and my companions were distracted. I mumbled an excuse, and left the building, as discreetly as a shadow moving through another, larger, shadow. A close call, but all part of the job.
Agent left the premises at 18:25. Last part of conversation not recorded, as agent was distracted. Agent waited outside. Subjects appeared at 18:55, leaving the premises by bicycle. Agent attempted to follow, but car refused to start. Have put in request for new car**.
* See expense report #AD-5783.
** See requisition #AK-3498. Car should be the right colour this time. I wanted orange! They gave me lemon green.


Here is a list of words Jacob is trying to sort:
>>> words = "It's almost Holidays and PyBites wishes You a Merry Christmas and a Happy 2019".split() >>> sorted(words) ['2019', 'Christmas', 'Happy', 'Holidays', "It's", 'Merry', 'PyBites', 'You', 'a', 'a', 'almost', 'and', 'and', 'wishes']
Hmm ... that year goes first. He actually wants words starting with a digit (first character) to go last!
Could you complete the function below to do this for him? So the result would be:
['a', 'a', 'almost', 'and', 'and', 'Christmas', 'Happy', 'Holidays', "It's", 'Merry', 'PyBites', 'wishes', 'You', '2019']
By the way, you can submit ideas/needs/wishes for Bites here. Cheers!
See you in the next Bite and keep calm and code in Python!


Tory MP Ross Thomson quits after 'grope' claim by Labour MP Paul Sweeney
Scottish Conservative MP Ross Thomson is to stand down after being accused of sexually assaulting a Labour MP in a Commons bar.
Mr Thomson said he had made the "hardest decision of my life" not to contest the seat for Aberdeen South at the general election.
Labour MP Paul Sweeney had said he reported Mr Thomson to Westminster's standards watchdog following the alleged incident last October.
Mr Thomson denies any wrongdoing.
But he said a number of "anonymous and malicious allegations" this year had made his life "a living hell".
'Political smear'
Mr Thomson, 32, said: "This is a political smear and I will continue to fight to clear my name. I will see this investigatory process through to a conclusion.
"I have suffered a level of personal abuse that has affected my health, my mental wellbeing and my staff. It has been a level of abuse that I never imagined possible."
He added: "I have therefore made the most difficult decision that I could ever make. I have decided that I will stand down as the Scottish Conservative and Unionist candidate for Aberdeen South."
Mr Sweeney, who is the MP for Glasgow North East, told the Scottish Mail on Sunday he was left feeling "mortified" by the alleged attack in the Strangers' Bar at Westminster.
According to the paper, Mr Sweeney said he was "paralysed" with shock after Mr Thomson "groped" him in the bar.
He said the alleged incident took place in October 2018 after he had invited a group of his old Glasgow University friends for a tour of the Commons.
They later went to the Strangers' Bar for a drink where he claims they were interrupted by Mr Thomson, who was "drunk to the point where he was barely able to stand up".
Mr Thomson then allegedly grabbed at Mr Sweeney through his clothes.
'Absolute confidentiality'
Mr Sweeney said he repeatedly told Mr Thomson to stop touching him and asked him to leave.
The Labour MP said that he later asked for advice from the Women's Aid charity before approaching the Standards watchdog.
A House of Commons spokeswoman said: "Parliament's Independent Complaints and Grievances Scheme (ICGS) operates on the basis of absolute confidentiality.
"Therefore we cannot provide answers about any complaint that may or may not have been made."
In February, Mr Thomson was publicly accused of groping a man in the same Commons bar. The Tory MP also strongly denies any wrongdoing relating to that alleged incident.
Mr Sweeney said he was finally speaking out in public more than a year after the alleged assault because the investigations had "barely progressed".
'Baseless claims'
A spokesman for the MP said: "This assault, which took place last October, was reported to the appropriate authorities after similar but entirely separate allegations were made by other men against Ross Thomson in February.
"Thomson's denials today fly in the face of what was witnessed by other MPs and visitors and show him to be utterly unrepentant."
Mr Thomson had issued a statement on Twitter on Sunday morning in which he strenuously denied Mr Sweeney's allegations, but insisted he would be a Tory candidate in the 12 December general election.
However, he later confirmed he was standing down from the job he "loved more than any other".
Mr Thomson, who has been an MP since 2017, said: "I always believed politics was about noble pursuits and doing what you believed to be best for your country.
"My experience is that our politics is now so poisonous that we will never attract good, honest and decent people in the first place.
"This has been without doubt the hardest decision of my life. I remain confident that the ongoing parliamentary standards process will find in my favour, and that these baseless claims will be shown up for what they are.
"As I have already said I will continue to explore all options available to me in response to the defamatory and damaging allegations made by Mr Sweeney."


CDF is released under the LGPL.
WebDetails offers consulting services and support to companies that require assistance in developing dashboards using the CDF, from email support to complete dashboard development.
Learn which files to create and what its content.
Select values in different ways and learn how return/forward them.
Give a better input to your reports.
Have the freedom to choose how you want to see the data.
Change the look and feel of your dashboards.
Interact with timeseries charts.
Create only one dashboard that can be used by colaborators with different roles.
Have an immediate idea about the evolution of your business.
Enrich how to interact with information through maps.
Build tables with visual impact.
Has immediate access and control over your data.


No i Gitara!
Adjoint to a dedicated website created for aspiring musicians signing up to polish their guitar techniques, I was tasked with the creation of a banner and a logo.
The emphasis was put on attracting attention while keeping a subtle, heartwarming and a familiar feel, highly nuanced with the musical instruments advertised to be learned by the use of illustration and wordplay. The banner was kept integral with the branding and additional information provided, yet keeping the relatively minimalistic style.
Adobe Illustrator/Photoshop. 2018


Welcome to my site! Here is the place for discussion, content and more!
Uploads
Project Ozone 2 Stream
Pubg Stream
Stream Highlights #1
Stream 2
Stream 1


Reports unnecessary nested character classes.
Example:
[a-c[x-z]]
After the quick-fix is applied:
[a-cx-z]
New in 2020.2


Welcome to the landing page for my project for the Web Application Development Module.
(Note, No actual login details are required. No personal information will be stored. This is purely for demonstration only.).


Graduated engineer in Mechanical engineering and Energetic from Ecole Polytechnique Universitaire de Marseille, France - I am an expert in the design and operation of processes, process modelling and control in the fields of energy, heat exchange systems and fluid mechanics - and I have acquired knowledge in the following fields: energy, heat and mass exchanges, thermal systems, fluid mechanics, computer modelling and simulation, uses of energy (renewable and fossil energy, combustion).
Actually, I was able to enhance my engineering studies in Sweden's Uppsala University focusing on renewable energy (wind and solar power, wave energy, and hydro electricity). During a year, I gained a broad knowledge of energy extraction while paying special attention to technical aspects, physical principles and the overall conditions for renewable energies in society.
Since 2008, I have gain expertise in wind resource assessment and project development while working for NORDEX, E.ON Technologies and Global Wind Power (GWP). With more than 5 years' experience, I have become an expert in WAsP and WindPRO modelling, long-term wind trend estimation, and wind park layout optimization.
Nowadays wind energy consultant, I offer consultancy services to the clients in connection with wind data analyses and related services. Global Wind Power is my main customer. Feel free to get in touch with me concerning:
- Good practices in Energy Production Assessments
- Requests for Wind data analyses and related services
- Job opportunity
Guillaume